时钟约束问题
时钟clk ,分频clk_div2,clk_div3,clk_div4分频时钟之间互斥,分频时钟与clk需要分析时序关系,分频位例化clk_buf
sdc:
create_clock -name clk -period 100 [get_ports clk]
create_gegerated_clock -name clk_div2 -source clk -master_clock clk [get_pins clk_buf/Y] -devide_by 2 -add
create_gegerated_clock -name clk_div3 -source clk -master_clock clk [get_pins clk_buf/Y] -devide_by 3 -add
create_gegerated_clock -name clk_div4 -source clk -master_clock clk [get_pins clk_buf/Y] -devide_by 4 -add
set_clock_groups -physically_exclusive -name phy_excl_2 -group[get_clocks clk_div2] -group [get_clocks clk_div3 clk_div4]
set_clock_groups -physically_exclusive -name phy_excl_3 -group[get_clocks clk_div3] -group [get_clocks clk_div2 clk_div4]
set_clock_groups -physically_exclusive -name phy_excl_4 -group[get_clocks clk_div4] -group [get_clocks clk_div2 clk_div3]
设置变量
set timing_enable_multiple_clocks_per_reg true
ptcheck_timing 时,检查出warning
Information: Checking 'unexpandable_clocks'
Warning: There is 1 clock set for which periods were not expandable.
Failed clocks setrelated clocks
-----------------------------------------------------------
1clk_div2
1clk_div3
1clk_div4
1clk
warning 可以忽略吗,还是怎么处理?
同一位置产生多个时钟,这种约束是否有问题啊?应该怎么约束?
投片在即,急啊,请大家帮忙救火~
你设计就只有这4个时钟么?
你用试一下:set_clock_groups -physically_exclusive -name phy_excl -group[get_clocks clk_div2] -group [get_clocks clk_div3] -group [get_clocks clk_div4]
按理说100和200,300,400不应该是unexpandable啊。
设计很多时钟,搞不定的拿上来讨论,没必要全部吧。
set_clock_groups -physically_exclusive -name phy_excl -group[get_clocks clk_div2] -group [get_clocks clk_div3] -group [get_clocks clk_div4]
这个命令试过了,结果一样的。
去掉clk_div3,clk_div4
老大,我不太明白啊
去掉clk_div3,clk_div4,只分析clk_div2吗?还能检查到所有的timing吗,还是通过别的什么方式检查?
另外,具体几分频是通过外部软件控制的, 所以各种分频都可能存在;时序路径含有正反沿,担心时序问题;
既然“分频时钟之间互斥”,只要在clk_div2下时序收敛,clk_div3,clk_div4自然就OK了
他既然说你的时钟unexpandable,意思就是2个时钟域之间不能得到一个最小公倍数的时钟周期. 比如时钟周期为1/3ns和1/7ns。你改一下时钟周期看看。
又或者只在clk_buf/Y处用create_clock定义个时钟看看,不要用create_generated_clock,各种方法试一下撒,解决以后才去看到底是哪里出问题了。
我试验了一下,如果2个时钟之间的最小公倍数过大的话才会发生unexpandable的情况。原因就是你设计中存在2个时钟的最小公倍数远远大于他们本身,或者一个时钟的周期远远大于另外一个时钟周期。
比如一个时钟周期为1000,另外一个为3333333333,就会报这个warning。具体看pt中:man PTE-052有详细解释。
分频时钟自己这样是没问题;可clk与clk_div2,clk与clk_div3,clk与clk_div4之间,好像不行哦。
例如:
clk_div2、clk_div3下降沿数据,clk上升沿来采;
clk_div2下降沿10ns, clk_div3下降沿15ns,clk上升沿20ns,分析结果就不一样了
谢谢楼上兄弟帮忙~
在clk_buf/Y create_clock还是不好办,
source delay 要根据实际来调,分频时钟设置还是个事。
你说的最小公倍数,应该是问题所在。
我实际设置的分频从clk_div 2 — 8,导致倍数很高。
PTE-016 informationbase period调到多少
PTE-053 warning :(设置clk_div8时,就多了这条warning)
pt limits the waveform expansion of the smallest period to be no more than 1000 times.
and the waveform expansion of the largest period to be no more than 101 times.
目前解决方法: clk_div8基本不用,决定不约束clk_div8了。不设置clk_div8,倍数就少了,就不会有expandable问题。
再次感谢大家帮忙~
老兄问题解决了吗,怎么解决的,能分享一下吗?谢谢