微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 微电子和IC设计 > IC后端设计交流 > ungroup -flatten之后的generated_clock问题

ungroup -flatten之后的generated_clock问题

时间:10-02 整理:3721RD 点击:
目前手上的一个项目中出了个问题,在约束的时候建立了几个generated_clock,其中一个如下所示
create_generated_clock -name "dcac" -source [get_pins clkgen/clkout] \
-divide_by 2 -master_clock [get_clocks "wck"] [get_pins chain/dcac]
在正常通过一次compile之后report_clock的时候DC还能正常找到所有的时钟。
但是ungroup -flatten之后,这个dcac的generated_clock就找不到了,当用report_clock时,
里面的source内容显示找不到这个 时钟的root了,只是把每个用到该时钟的DFF的CK端标了出来,如下所示
{chain_ach_reg_1_/CK,chain_ach_reg_2_/CK, chain_ach_reg_3_/CK,chain_ach_reg_4_/CK...}
但是其他几个generated_clock还能够正常被找到,非常奇怪。
我不想再create一遍clock了,请高手帮帮忙,看看是什么问题导致的,该怎么解决?

只能自己顶自己了,别沉了下去了!
为什么没人回呢,来几个人讨论讨论吧!
ungroup, ungroup呀,是不是现在的同志们都不ungroup了?

ungroup,或者compile以后, hier 边界是找不到啊
一般 前端综合sdc是 clock是写在hier boundary上
后端要求是写在instance pin上,你如果要往后端走,还是要修改这个sdc的

那么就是说,如果要给后端的一个sdc的话,在ungroup之后必须重新建立所有的generated_clock?而且必须直接指向instance pin了?
但是有一些generated_clock在ungroup之后没有丢失,有一些丢失了又是什么原因呢?
另外弱弱的问一句,ICC和Encounter的CTS时候哪一个可以直接吃掉含有generated_clock的SDC。ICC和Encounter能不能直接从SDC的约束里面trace到每个clock的root pin呢

另外,说前端的clock定义在hier的边界上,那么是应该定义在用到该时钟的模块的输入上,还是定义在产生该时钟的模块的输出上呢?
是不是两者均可呢?会不会这两种情况下ungroup的效果不同呢?

个人觉得在输出module定义比较好吧,不是特别清楚,
ungroup的具体情况不太清楚,反正是打平了hier boundary, 得到更大的优化能力,
当然module的hier 结构是变化的,
后端要sdc clock 定义在instance pin上是为了避免后端的优化把该hier module给优化掉了,
这样clock就没有立脚点了,定义在instance pin上比较具体,不会优化掉,
一般dc的sdc 和给后端的sdc 还是有点区别的, 就定义点这点说 肯定是要你去gate level netlist
里面找具体的那点,然后改下,
icc,astro, edi都能支持generated_clock语句的,这个是基本语句,
指定了和master clock的关系, 他们自然就知道了他们的trace关系啊

unflatten之后,encounte会改变netlist的层次化结构,这时需要查看,clock pin的instance name有没层次变化,如有必须改成与encounter之后的instance name一致,否则工具就不找不到clock pin了。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top