FPGA线上课程平台|最全栈的FPGA学习平台|FPGA工程师认证培训
登录
首页-所有问题-其他-正文

数字IC笔试题中,关于‘时序约束(SDC)’的编写,除了时钟、输入延迟、输出延迟,通常还会考察哪些复杂场景的约束?

嵌入式小白菜嵌入式小白菜
其他
4小时前
0
0
0
准备数字IC笔试,时序约束是必考。基础的create_clock, set_input_delay, set_output_delay都会了。但题目往往更复杂,比如:如何约束衍生时钟(generated clock)?如何约束多周期路径(set_multicycle_path)?如何约束虚假路径(set_false_path)?以及面对异步时钟域接口时该如何写约束?希望有例题解析。
嵌入式小白菜

嵌入式小白菜

这家伙真懒,几个字都不愿写!
1600
分享:
作为材料/物理专业的硕士,想转行进入‘芯片制造(工艺集成)’领域,需要自学补充哪些核心的半导体工艺知识和技能?上一篇
使用MATLAB/Simulink的HDL Coder进行FPGA开发,从算法仿真到生成RTL代码,在实际工程中的可靠性和效率如何?下一篇
回答列表总数:6
  • 硅农预备役2024

    硅农预备役2024

    哈,我笔试时就栽在虚拟时钟(virtual clock)上过!这个经常考。比如输入信号来自一个外部芯片,其时钟和片内时钟不同频但同源,这时用create_clock -name v_clk -period 15(在端口上不存在,是虚拟的)来建模外部时钟,再set_input_delay -clock v_clk -max 4 [get_ports data_in]。

    还有对复位或异步控制路径的约束,常用set_false_path,因为复位是异步的,不需要检查时序。但如果是同步复位,就要用set_multicycle_path吗?不一定,看设计。笔试可能会给个电路图让你判断。

    另外,时序例外中,set_disable_timing也偶尔考,用来打断特定单元内部的时序弧,比如打破组合逻辑环。但实际中慎用。

    关于复杂场景,我建议你重点理解衍生时钟的-source和-master_pin区别,多周期路径的hold调整原理,以及set_clock_groups的三种模式(asynchronous, exclusive, logically_exclusive)。笔试大题常把这些混在一起,让你写完整约束。比如一个系统有PLL生成多个时钟,还有门控时钟,要求约束所有时钟和跨时钟域。步骤是先定义主时钟,再定义生成时钟,然后对异步组用set_clock_groups,最后对特定多周期路径设例外。

    2小时前
  • FPGA学员1

    FPGA学员1

    笔试里SDC的复杂场景,除了你说的那几个,我当年还常遇到对输入输出端口的组合逻辑路径约束,比如set_max_delay/set_min_delay。还有对某些特定路径做例外约束,比如set_case_analysis,用来约束测试模式或功能模式下的时钟。另外,数据路径和时钟路径上的不确定性set_clock_uncertainty也常考,包括jitter和skew的建模。

    给你个衍生时钟的例子吧:假设主时钟clk,在某个寄存器Q端通过二分频得到clk_div2。约束是 create_clock -name clk -period 10 [get_ports clk]; create_generated_clock -name clk_div2 -source [get_ports clk] -divide_by 2 [get_pins reg/Q]。这里-source一定要指向主时钟的源头,不是时钟网络点。

    多周期路径的例题:一个使能信号每两个时钟周期才变化一次,从寄存器A到寄存器B,都在clk下。约束是 set_multicycle_path -from [get_cells A] -to [get_cells B] -setup 2; set_multicycle_path -from [get_cells A] -to [get_cells B] -hold 1。注意hold的调整是setup值减1,这是易错点。

    异步时钟域约束就是set_false_path -from [get_clocks clkA] -to [get_clocks clkB]。笔试可能会问为什么不用set_clock_groups,其实set_clock_groups -asynchronous更规范,能双向切断。

    2小时前
  • 逻辑电路小白

    逻辑电路小白

    我笔试时就栽在过虚假路径和多周期路径的细节上。除了上面提到的,还有几个易错点:一是衍生时钟的-edges参数容易写错,要对照源时钟边沿序号(1开始);二是多周期路径的-setup和-hold选项,如果只写-setup 2,hold检查默认会变成1,但有时题目要求hold也保持2周期,就得显式加上-hold 1;三是异步时钟组约束,如果设计中有多个异步时钟,最好用-group分清楚,避免过度约束。另外,笔试还可能考到输入输出延迟的复杂情况,比如相对于某个衍生时钟的延迟,或者输出端口同时驱动多个时钟域的情况,这时候要用-add_delay。建议找些真题练手,重点看答案里约束的顺序和参数写法,实际写的时候别漏了get_clocks这类命令,工具认的是对象不是字符串。

    3小时前
  • 电子工程学生

    电子工程学生

    笔试里除了基础约束,衍生时钟、多周期路径、虚假路径和异步时钟域处理确实是高频考点。衍生时钟约束用 create_generated_clock,要明确指定源时钟、生成方式和分频/倍频关系。比如一个时钟clk_div2由主时钟clk的下降沿触发二分频,约束可以写:create_generated_clock -name clk_div2 -source [get_ports clk] -divide_by 2 -edges {2 4 6} [get_ports clk_div2]。多周期路径约束常出现在计数器或慢速控制路径,用set_multicycle_path指定setup和hold的周期数,注意hold检查通常比setup少一个周期。虚假路径用于那些不需要时序检查的路径,比如测试逻辑或跨域异步信号,直接用set_false_path -from [get_clocks clkA] -to [get_clocks clkB]就能屏蔽检查。异步时钟域接口约束一般用set_clock_groups -asynchronous把时钟设为异步组,避免工具做时序分析。笔试例题常给个分频电路或跨时钟模块,让你补全约束,重点就是理清时钟关系和路径需求。

    3小时前
  • Verilog小白学逻辑

    Verilog小白学逻辑

    老哥,准备笔试是吧?光会基础命令确实不够,出题人就喜欢用这些复杂场景卡人。我当年面试就被问过。除了你提到的,我再补充几个高频考点:1. 对输入输出延迟的例外约束,比如某个端口是异步的,或者它的数据有效窗口很特别,需要单独设false path或max/min delay。2. 对时钟不确定性(set_clock_uncertainty)的设置,特别是用于建模时钟抖动或额外裕量。3. 对时序路径进行细分约束,比如从某个时钟域到另一个时钟域的所有路径,可以用set_false_path -from [get_clocks clkA] -to [get_clocks clkB]。例题解析我简单说一个常见的:一个模块里,主时钟clk 100MHz,产生了一个使能信号每4个周期有效一次,用来驱动另一个寄存器。问怎么约束这个使能信号相关的路径?这其实就是一个隐含的多周期路径问题。对于那个使能信号控制的数据路径,其建立时间检查可以放宽到4个周期,但保持时间检查可能还是1个周期(取决于设计)。约束可以写:set_multicycle_path 4 -setup -from [get_clocks clk] -to [get_registers 受使能控制的寄存器]。然后通常要跟一条 set_multicycle_path 3 -hold ... 来调整保持时间检查。这里数字容易错,一定要理解原理。异步时钟域约束更简单粗暴,直接 set_clock_groups -asynchronous -group {clkA} -group {clkB}。笔试时写清楚这个,基本分就拿到了。

    4小时前
  • 电子工程学生

    电子工程学生

    笔试里时序约束的复杂场景,除了你说的衍生时钟、多周期、虚假路径、异步时钟域,还经常考到时钟组(set_clock_groups)和最大最小延迟(set_max_delay / set_min_delay)。衍生时钟的约束关键是搞清楚源时钟和分频/倍频关系,用create_generated_clock。多周期路径要明确是建立时间还是保持时间需要放宽,set_multicycle_path 的 -setup 和 -hold 参数别搞反。虚假路径用于那些实际不需要检查时序的路径,比如测试逻辑。异步时钟域处理的核心是声明它们之间没有时序关系,用set_clock_groups -asynchronous 或者set_false_path。例题的话,你可以搜一下往年各大公司的笔试题,很多都公开的,重点看怎么分析场景并写出正确约束语句。

    4小时前
我要回答answer.notCanPublish
回答被采纳奖励100个积分
FPGA线上课程平台|最全栈的FPGA学习平台|FPGA工程师认证培训
请先登录