ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

静态时序分析:ideal_clock、propagated_clock以及generated_clock的关系及其延迟计算规则(二)

静态时序分析:ideal_clock、propagated_clock以及generated_clock的关系及其延迟计算规则(二) 相关阅读静态时序分析https://blog.csdn.net/weixin_45791458/category_12567571.html?spm1001.2014.3001.5482生成时钟上一节中我们讨论了理想时钟和传播时钟的创建和使用本节将讨论生成时钟及其与理想时钟和传播时钟的关系。图1所示的是一个简单的例子两个级联的D触发器使用一个分频时钟作为它们的时钟。图1 简单的例子下面使用create_clock命令在输入端口clk处创建一个理想时钟图2是此时起点为q1_int_reg的建立时间时序报告。create_clock -period 10 [get_clocks clk]图2 建立时间时序报告可以看出此时显示时序路径尚未约束这是因为输入端口clk处的时钟无法从一个分频D触发器的时钟端传播至其输出端除了作为集成门控单元(ICG)使用的锁存器的时钟引脚外。这种情况下需要在分频D触发器的输出端定义一个生成时钟当然直接定义一个时钟也可以但这是有缺陷的。下面使用create_generated_clock命令创建一个二分频的生成时钟指定的源引脚应该是主时钟的一个扇出引脚此处指定为分频D触发器的时钟端指定的源对象为分频D触发器的输出端。图3是此时的时钟报告。create_generated_clock -divide_by 2 [get_pins q_div_reg/Q] -source [get_pins q_div_reg/CK] -name clk_div2图3 时钟报告此时的建立时间时序报告如图4所示可以看到这里已经成功用二分频时钟进行约束了。图4 建立时钟时序报告需要注意的是使用create_generated_clock命令创建的生成时钟和使用create_clock命令创建的时钟一样也是一个理想时钟它拥有自己独立的源延迟和网络延迟它们都是使用set_clock_latency命令进行设置的。可以使用set_propagated_clock命令将一个理想的生成时钟转化为一个传播的生成时钟。考虑三者之间的组合在已经了解三种时钟后下面考虑这三者之间的组合组合情况详见下表。主时钟生成时钟生成时钟是否指定源延迟总延迟不包含在其中的延迟都会被忽略理想理想否生成时钟网络延迟如有指定理想理想是生成时钟源延迟生成时钟网络延迟如有指定理想传播否生成时钟网络延迟真实理想传播是生成时钟源延迟生成时钟网络延迟真实传播理想否主时钟源延迟如有指定主时钟网络延迟真实由主时钟源对象到生成时钟源对象的时钟路径计算得出生成时钟网络延迟如有指定传播理想是生成时钟源延迟生成时钟网络延迟如有指定传播传播否主时钟源延迟如有指定主时钟网络延迟真实由主时钟源对象到生成时钟源对象的时钟路径计算得出生成时钟网络延迟真实传播传播是生成时钟源延迟生成时钟网络延迟真实下面将对以上情况分别举例说明以图1为例且各自独立。理想主时钟理想生成时钟生成时钟不指定源延迟使用以下命令进行约束此时的时钟报告如图5所示建立时间时序报告如图6所示。create_clock -period 10 [get_ports clk] create_generated_clock -divide_by 2 [get_pins q_div_reg/Q] -source [get_pins q_div_reg/CK] -name clk_div2 set_clock_latency 0.5 [get_clocks clk_div2]图5 时钟报告图6 建立时间时序报告理想主时钟理想生成时钟生成时钟指定源延迟使用以下命令进行约束此时的时钟报告如图7所示建立时间时序报告如图8所示。create_clock -period 10 [get_ports clk] create_generated_clock -divide_by 2 [get_pins q_div_reg/Q] -source [get_pins q_div_reg/CK] -name clk_div2 set_clock_latency 0.5 [get_clocks clk_div2] set_clock_latency -source 1 [get_clocks clk_div2]图7 时钟报告图8 建立时间时序报告理想主时钟传播生成时钟生成时钟不指定源延迟使用以下命令进行约束注意为了引入互连延迟使用了非理想的线负载模型此时的时钟报告如图9所示建立时间时序报告如图10所示此处使用了-path full_clock选项和-significant_digits 7选项以便于观察细节。create_clock -period 10 [get_ports clk] create_generated_clock -divide_by 2 [get_pins q_div_reg/Q] -source [get_pins q_div_reg/CK] -name clk_div2 set_propagated_clock [get_clocks clk_div2] set_wire_load_model -name tsmc13_wl50 -library fast图9 时钟报告图10 建立时间时序报告理想主时钟传播生成时钟生成时钟指定源延迟使用以下命令进行约束注意为了引入互连延迟使用了非理想的线负载模型此时的时钟报告如图11所示建立时间时序报告如图12所示此处使用了-path full_clock选项和-significant_digits 7选项以便于观察细节。create_clock -period 10 [get_ports clk] create_generated_clock -divide_by 2 [get_pins q_div_reg/Q] -source [get_pins q_div_reg/CK] -name clk_div2 set_propagated_clock [get_clocks clk_div2] set_clock_latency -source 1 [get_clocks clk_div2] set_wire_load_model -name tsmc13_wl50 -library fast图11 时钟报告图12 建立时间时序报告传播主时钟理想生成时钟生成时钟不指定源延迟使用以下命令进行约束注意为了引入互连延迟使用了非理想的线负载模型此时的时钟报告如图13所示建立时间时序报告如图14所示此处使用了-significant_digits 7选项以便于观察细节。create_clock -period 10 [get_ports clk] create_generated_clock -divide_by 2 [get_pins q_div_reg/Q] -source [get_pins q_div_reg/CK] -name clk_div2 set_propagated_clock [get_clocks clk] set_clock_latency -source 1 [get_clocks clk] set_clock_latency 0.5 [get_clocks clk_div2] set_wire_load_model -name tsmc13_wl50 -library fast图13 时钟报告图14 建立时间时序报告传播主时钟理想生成时钟生成时钟指定源延迟使用以下命令进行约束此时的时钟报告如图15所示建立时间时序报告如图16所示此处使用了-significant_digits 7选项以便于观察细节。create_clock -period 10 [get_ports clk] create_generated_clock -divide_by 2 [get_pins q_div_reg/Q] -source [get_pins q_div_reg/CK] -name clk_div2 set_propagated_clock [get_clocks clk] set_clock_latency -source 1 [get_clocks clk] set_clock_latency 0.5 [get_clocks clk_div2] set_clock_latency -source 0.3 [get_clocks clk_div2]图15 时钟报告图16 建立时间时序报告传播主时钟传播生成时钟生成时钟不指定源延迟最常使用使用以下命令进行约束注意为了引入互连延迟使用了非理想的线负载模型此时的时钟报告如图17所示建立时间时序报告如图18所示此处使用了-path full_clock_expanded选项和-significant_digits 7选项以便于观察细节。create_clock -period 10 [get_ports clk] create_generated_clock -divide_by 2 [get_pins q_div_reg/Q] -source [get_pins q_div_reg/CK] -name clk_div2 set_propagated_clock [get_clocks clk] set_propagated_clock [get_clocks clk_div2] set_clock_latency -source 1 [get_clocks clk] set_wire_load_model -name tsmc13_wl50 -library fast图17 时钟报告图18 建立时间时序报告
返回列表