关于多时钟的STA问题(base period)
创建多个时钟时(包括多个create_clock/create_generated_clock),产生base period扩展,怎么解决?
另外,如果多个时钟(采用counter产生),找不到master clock的路径,怎么办?
可能的情况太多,一一说清太费时间,把你的情况描述清楚
假设master clock为clk,并驱动2个DFF:cnt_div4_reg1,cnt_div4_reg0组成4分频电路,即cnt_div4_reg1/Q为4分频时钟,与clk同相。
同理,clk驱动3个DFF:cnt_div5_reg2,cnt_div5_reg1,cnt_div5_reg0组成5分频电路,即cnt_div5_reg2/Q为5分频时钟,与clk同相。
sdc大概是create_clock -name clk -p 10 -w {0,5}
create_generated_clock -name clk_div4 [get_pin nt_div4_reg1/Q] -source [get_pin clk] -divided_by 4
create_generated_clock -name clk_div5 [get_pin nt_div5_reg2/Q] -source [get_pin clk] -divided_by 5
我也试过,直接用-source [get_pin nt_div4_reg1/CK]。
问题:
1)找不到master clock。
2)clk周期会扩展至10*4*5.
-source 后面貌似要跟pin?
对,我是用get_pin的。语法本身是没有问题的。就是warning,generated clock无法找到master clock的path。我也试过-master clk选项。
create_generated_clock -name clk_div4 [get_pin cnt_div4_reg1/Q] -source [get_port clk] -divided_by 4
确认clk确实连到了cnt_div4_reg1的clk端
你确定div4和div5的时钟之间需要时序约束,而不是false path?
create_generated_clock时候,我直接用DFF的Pin(clk_div4_reg/CK和clk_div4_reg/Q)做的,所以连接关系没错。我也很奇怪,怎么就找不到master clock path,就1个DFF的CK和Q。
clk_div4和clk_div5确实设置了set_false_path,但是clk和clk_div4、clk_div5没设置false path。周期确实扩展了。
如果是clk与div4或者div5的关系,怎么周期会扩展至10*4*5
贴timing report上来
master clock path问题已经解决,是由于set_constant的问题,大意了。
周期扩展,问题还在,我明天再查查。
一般周期扩展都有哪些原因?是否有文档说明?
周期扩展一般是因为2个时钟周期不是整倍数造成的,DC/PT把它无限扩展下去,从中找最小的间距,用来check setup timing。就这么多,不需要什么文档。