时钟树问题 请教
对于上面这样的一个时钟网络,时钟a和时钟b经过了mux逻辑。
现在假设我在创建时钟数的时候:
create_clock a -period 10 [get_ports a]
create_clock b -period 10 [get_ports b]
这样来创建时钟树能不能创建,如果不可以为什么?怎么弄才可以
我之所以像这样创建时钟树,是因为我的设计中有正常模式和dft模式,因为dft模式的时钟和正常时钟在dft插入的时候一般都是通过mux进行选择控制的,我想这样将两个时候都进行时钟树的平衡就应该不会出现两种模式分开处理的时候遇到的setup和hold违例反复修复的过程。
直接創建mux 後面那個點開始就可以了
如
create_clock [get_pins "top/mux_clk/Y"]
同意楼上的
2楼和3楼根本就没答到关键点上来。
你所说的“正常模式和dft模式”,就是对应MMMC中的func和scan mode。
你在MMMC中func mode的sdc中定义create_clock a -period 10 [get_ports a](假设a 为正常clk)
在scan mode的sdc中的定义create_clock b -period 10 [get_ports b](假设b为scan clk)
就行了。
在ICC中,a和b两个clock,工具能自我穿过mux而去修func和scan的set和hold。
我觉得小编的意思,可能是这两个a b时钟都是有用的吗?还是有个用来测试的。
1.我想请教下,如果两个a b时钟是都是作为func的,那么create_clock是不是应该对a 和b分别定义?然后考虑要不要false path。最后在cts的约束用对不同的时钟root做两次CTS?
2.如果a和b的时钟,只有a是做func,b作为scan,那么应该如何约束呢?以及对于b的CTS应该如何做?是不是和两个都是func时钟的cts情况一样,分两个root做cts?
感谢解答,欢迎指正我的错误,谢谢。
你可以在mux的Y端定义clock去做tree, A和B端分别在function /scan mode 下去补
也可以分步做,先做function cts, 然后dont_touch_sub_tree, scan mode 下再单独去补mux B端
可以设set_clock_group -logic_exclusive
问题1:如果a b时钟都是func,create_clock应该对a 和b分别定义,是否设false path,参考涛哥的FAQ Q4.1。ICC的cmd
status compile_clock_tree[-clock_trees name_or_source_pin_list]Data Typesname_or_source_pin_listlist
name_or_source_pin_list是list,说明是可以对两个clock同时做tree的。不需要做两次cts。
问题2:如果a为func,b为scan,如我之前说的一个在func mode sdc中定义,一个在scan mode sdc中定义。个人经验不足,目前还没见过不用func clock做tree,而用scan clock做tree的。
我回答清楚你的问题了没?
学习了。