DC综合进阶问题——深入探讨脚本综合一些细节问题
(2)、对于set operation conditions这个的设定,现在一直使用的是“set_operation_conditions -analysis_type on_chip_variaton -library [get_libs {xxxx.db:xxxx}] -min xxx -max xxx”,也有看到一些项目里会去掉-analysis_type on_chip_variaton 这样的选项,这个也希望前辈能讲解一下~
(3)、对于set_wire_load_model 这个的选择一般选择在什么范围可以?是越小越好吗?
(4)、对于设定driving_cell器件,这个选择有什么需要考虑的呢?我看很多项目里都将这个设置在BUFX2或者BUFX4这个范围内?
(5)、对于时钟很慢的设计中如只有1MHz这样的情况,clock -priod 1000,这样情况下的latency、uncertainty、transition设定在什么范围比较好呢?因为论坛里有些大侠是说了一些经验值什么70%啊、30%啊什么的,但是如果像时钟周期很长的如本例中的1000又该如何去考虑和设定呢?补充如果工艺在.25um下
(6)、对于input delay、output delay、input transition、output transition一些关于input、output的设定对于我们Bankend人员可以向项目负责人那边询问些什么有用的值,比如像pad上的一些什么参数,然后根据这些我们又能怎么去设定呢?这个问题还望大神多多指点
(7)、最后想问问,我综合出来后用DC自带的时序检查工具查出来hold违例有很多,而且时序还是slack -4.24,想知道在综合时如何去修hold?之前用过set_fix_hold [list clk]因为设计中只有一个clk时钟,所以这样的方式并不是太理想,还望前辈能多给点儿建议
我只把我有把握的说下,工作一年多的来献丑了。
1.DC综合的确是采用的最差的工艺库,因为最差的条件都满足了,其它的条件肯定会满足啊,要做好最坏的打算,呵呵
6.这些信息的设置,一般是做DC的去设置,在时钟定义好之后,做DC的会设置好这些信息,然后DC会出来报告,至少DC出来的setup等timing信息要没有违例,或者几乎可以忽略,不然这些参数的设置就不合理。PT和后端的要紧密结合去做floorplan,后端做好一版floorplan之后,然后给做PT的去分析,修复各种违例。然后又交给后端的人再做floorplan,如此反复,直到所有的违例都清掉,如果有些timing无法休掉的话,PT可以选择性的放松某些路径的timing或者后端的去调整floorplan的大小。
7.hold一般在DC时是不需要管的,DC一般只关注setup,不过听我们后端的说,ICC好像看不到hold违例,hold只能在PT里面看到,PT里面修复hold是用fix_eco_timing命令修复的。没用过DC去修复timing,反正我司用的是PT修复timing。
谢谢clean_water的回答,不过很多问题还是没有解决,对于前面你的回答,我想说一下,不知道你公司数字部分分得那么细,我们这边后端是从DC——PR——PT——LVS&DRC,所以没有专门的DC部门,前端的数据也需要我们自己去整理,所以期待后面更多前辈的回答,不过还是很感谢你的交流
顶上来了~
其他的问题,请看陈小编每日一题。
说句公道话: ICC可以看得到holdviolation
每日一题里没有查到相关内容
唉~又要沉了
同问坐等大神
不好意思, 请问"每日一题"在哪?
我没有找到, 可否提供链接. 谢谢.
1. target_library是dc中mapping过程中的库,link_library是所有设计到的库。dc中不应该也无法考虑hold情况,所以只需要max库就可以了。当然你要加也可以,只是没有意思而已。
2. 同1,不考虑hold,你爱用什么都可以,这个指令是给PR和PT用的,你不用太在意。
3. 如果你能保证时钟频率很慢的情况下可以不用设置;如果不能保证timing一定满足,推荐使用最坏的,当然跑完一轮PR后反馈结果就大概知道了。
4. 这个跟模拟电路工程师说吧。不过经验是大部分他们给的驱动力都相当于数字电路X4的。
5. DC时钟都是理想的,不用考虑时钟的attribute。可能source latency有时需要考虑一下,这个是PR和PT考虑的东西。30%的是值uncertainy,这个跟wire_load_model差不多,都是给设计带来悲观的,到底悲观成什么样或是用什么方法,每个项目和每个公司不一样的,但是目的都一样,让设计更悲观以避免更多的反复。
6. input delay和output delay是根据设计估计出来的。其他是port的属性,这些要向模拟工程师要,具体代表什么意思要去看工艺库和书了,这里就不说了。
7. dc不修hold,没意义。就算在pr中修hold也要根据情况而定。hold还分好多种呢。
很感激兄台的指点,这里面就两点还想继续讨论一下,就是有关驱动这一块,我看兄台你有说到一般用BUFX4的来估算,我在项目中一般用的X2的大小的,主要是考虑到把设计尽量估计在很差的环境下,也希望能综合出好一些的网表,就这个想跟大家讨论一下,这个set_driving_cell是不是设置的越小越好呢?那样工具会尽量去满足,然后可以获得一个不错的netlist;
第二个有关最后一个问题提到的hold的问题,虽然我们知道hold在dc里可能不会去修,但是我想它在综合的时候dc还是会考虑到去优化的吧?就像为什么工具里有这样一条指令“compile -only_hold_time”,而且我发现综合完后跑PT的hold违例有-4点多,所以我想看能不能在约束上加紧一些,不知道这个hold违例一般控制在多少可以交给后端去做,估计如果违例太大也不行吧?
每日一题在哪里 我怎么没有找到啊?
再顶上去,看看还有没有大神指点啊~
过来看看。还有什么东西要学习啊
光看没用,多交流,探讨才是出路
clock uncertainty需要设置到30%么?太大了吧?
这个需要根据当时项目的具体要求视情况而定
正在学习综合!想问一下,关于综合后log等都需要看些什么东西?
主要看错误和警告啊
学习中。望大神继续补充
这东西必须大家一起讨论的,还望多写写自己的看法
标题
我是新手上路,很多问候还很迷糊。不敢乱发言,生怕误导了别人。我也刚发了一个贴子,从这贴子你应能看出我是很新的新手。有时间请帮我回答一下。不胜感激。
多多交流吧,我也是从这个论坛成长起来的,不过现在论坛已经衰落了,很多大神都走了,我估计也快了
顶上来了~
工作了一段时间,说下我对综合的理解吧,如果有不对的地方,欢迎大神指正。
(1)、对于综合来说,主要关心setup问题,貌似不关心hold问题,对网表做组大程度地setup优化,可以史电路可以工作在最快的时钟下,对于hold问题一般交给后端解决。
(2)、set operation conditions设定,芯片时序分析条件,一般来说设置成ocv,具体原因忘记了,不敢胡乱说,建议看一下dc或者pt的user guide,里面有详细的解释
(3)、set_wire_load_model是线的估算模型,90ns一下,库中的模型不再准确一般使用zero的模型,当然这种情况对于综合来说需要有更大的margin,90以上?不知道选择原则是什么,当年做90以上的项目时很懵懂。
(4)、driving_cell在时序分析阶段,模拟端口外部有个器件在驱动输入端口,一般来说选择驱动能力比较小的Burrer,个人认为对于module级综合可以使用这种方法,但是对于top级综合用这个就不准确了,因为实际芯片工作你不可能使用一个库里的器件驱动整个芯片?
(5)、时钟的latency、uncertainty、transition设定应该具体情况具体分析,如果1mhz的时钟设成30%,那就太大了,最好还是找下后端人员,不同的工艺节点这些值貌似不同,注意在设置uncertainty时别忘了加上pll的jetter。个人觉得latency在综合时只是个估算的结果,但是在post sta时需要在网表中将时钟路径报出来,替换估算的结果。
(6)、对于input delay、output delay、input transition、output transition这些值,一般来说在芯片项目开发之初对订下来芯片的外设都是什么,到外设手册上查找每个端口的时序,然后计算出来这些值。如果没有手册建议设上一个比较宽松的约束例如40%,如果没有约束对于DC来说它不知道怎么做极有可能乱做。
(7)、hold不要去管,大概看一下路径是否正常就好,如果不正常很有可能是约束的问题,建议修改掉,否则后端按照错误的约束优化电路就杯具了。
mark
mark
mark
mark
mark
看着大神们的讨论,挺不错的,学到很多,我在DC的时候,看违例报告,发现会出现很多hold违例的,老师也说DC的时候不用考虑这个,但是一直不理解为什么呢?
必须赞啊,解答很好
顶贴赚积分
看着三年前的帖子,,,,,,新得不能再新的新人,,,,实在是对DC不太懂啊,,,就没有模板吗?参数设置根据什么呢,到现在一脸蒙逼。