推荐答案
测试一下
题目
Please constrain the timing of clock andinput signal in the waveform, both are input pins for a chip. 请对下图中的输入时钟和输入数据进行…
参考答案与知识点
参考答案
对于输入时钟和输入数据的时序约束,首先需要对输入时钟引脚创建时钟对象,使用 create_clock 指定时钟周期、波形(上升沿、下降沿时间)。随后对输入数据设置 set_input_delay 约束,该约束描述数据在时钟沿之前或之后到达芯片输入引脚的时间窗口。
约束内容:
- 最大输入延迟(max input delay):代表数据相对于时钟沿的最晚到达时间,用于分析建立时间(setup)时序。
- 最小输入延迟(min input delay):代表数据相对于时钟沿的最早到达时间,用于分析保持时间(hold)时序。
延迟值由外部器件(如上一级芯片)的时序参数决定:通常 max_input_delay = T_co_max + T_flight_max,其中 T_co 是外部触发器时钟到输出延迟,T_flight 是 PCB 走线延迟;min_input_delay = T_co_min + T_flight_min。
如果波形图给出了数据变化与时钟沿的具体关系,则直接读取数据沿与时钟沿的时间差作为延迟约束值。若数据在时钟上升沿后一段时间稳定,则需将该时间差设为输入延迟。
常见错误:
1. 未先约束时钟直接设置输入延迟,导致静态时序分析(STA)无法参考时钟。
2. 混淆输入延迟方向:max 对应 setup check 时数据最晚到达,min 对应 hold check 时数据最早到达。
3. 忽略虚拟时钟:若输入数据与内部时钟不同源,需额外创建虚拟时钟作为参考。
4. 延迟值不含负值:若数据在时钟沿之前到达,输入延迟可为负,表示数据提前有效。
最终约束命令示例(SDC):
create_clock -name clk_in -period 10 [get_ports clk_pin]
set_input_delay -clock clk_in -max 2.0 [get_ports data_in]
set_input_delay -clock clk_in -min 0.5 [get_ports data_in]
涉及知识点
- 输入延迟约束(set_input_delay)
- 建立时间与保持时间分析
- 外部时序参数对内部约束的影响
- 虚拟时钟的应用场景
- 时钟约束(create_clock)