当前位置:   article > 正文

虚拟时钟(Virtual clock)_set_propagated_clock

set_propagated_clock

虚拟时钟(Virtual clock)

欢迎关注我的公众号:全栈芯片工程师

通常RTL设计要求对芯片/module的输入信号进行reg_in打拍处理,对芯片/module的输出也要求做reg_out打拍处理,这是良好的代码习惯,为时序收敛留下足够裕量,也避免顶层例化综合后的子模块时出现模块间IO时序不满足的情况。综合阶段可根据设计工艺需求,设置IO的input/output为时钟周期的40%-60%。

但是,芯片timing sign-off阶段会偶尔遇到IO时序少量违例,比如,输入reg的hold违例、输出reg的setup违例,本质原因是EDA时序分析工具会在输出输入外部假定一个理想化的不带clock propagation time的寄存器做时序分析。

比如,在set_propagated_clock命令后,下图左边寄存器的CLK1端就不带clock propagation time,而CLK2(与CLK1同频同相)就带insertion delay, 拥有时钟latency,这样输入IO的hold违例就可能发生,setup反而更容易满足。

同理,在set_propagated_clock命令后,输出IO的setup违例就可能发生,hold反而更容易满足。

以输出IO的register的setup建立时间为例,launch clock的data path上由于存在1.5ns的propagation time/clock latency,发生了时序违例。这是因为外部假定的register是没有propagation time/clock latency。而保持时间则反而容易满足。

 

虚拟时钟应运而生,那么创建虚拟时间有什么好处呢?

create_clock -name vclk -period 10,不用指定clk pin/port

set_input_delay  8  -clock vclk [get_ports  data_in]

set_output_delay 8 -clock vclk [get_ports  data_out]

EDA工具会基于虚拟时钟,根据芯片/模块内部时钟的实际insertion delay评估IO外部假定寄存器的propagation time,这样时序分析就可以规避不必要的“假”违例,当然也可以不指定virtual clock,只是每次分析时序时都需要检查并排除这种“假”违例,影响了工作效率。

欢迎关注我的公众号:全栈芯片工程师

欢迎关注我的公众号:

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/482781
推荐阅读
  

闽ICP备14008679号