非MCMM模式下如何才能保证两个corner下timing都满足
在55工艺下使用传统的综合方式遇到如下问题:
在worst case(ss_1.08_125)下综合的网表,timing clean,但是在(ss_1.08_m40)这个corner下有setup violation。
我们使用如下方法,均遇到问题。
1)在125 corner下使用compile_ultra -scan -gate_clock综合网表,在m40 corner下读入ddc文件,再做增量编译(compile_ultra -incr),会发生错误,认为之前综合使用的125库中的clock gate单元和m40库有冲突。
2 )在125 corner下使用compile_ultra -scan -gate_clock综合网表,在m40 corner下读入netlist文件,再做增量编译(compile_ultra -incr),但在插扫描链的时候,发现很多带clock gate的寄存器无法插到扫描链上。
3)在125 corner下使用compile_ultra -scan 综合网表,在m40 corner下读入netlist文件,再做增量编译(compile_ultra -gate_clock -incr),发现扫描链可以插上,但是timing达不到要求。
每一个corner有一个独立的db文件,每次更换corner都是重新读入db文件,重设$target_library。
请问在不使用MCMM流程的情况下,使用怎样的流程才可保证网表在ss_1.08_125和ss_1.08_m40两个corner下都满足timing的要求?
另外,是不是在DC综合时,我只需要保证在worst case(ss_1.08_125)下综合的网表,timing clean就可以了。而在(ss_1.08_m40)这个corner下的setup violation,用后端fix就可以了呢?
选一个最差的corner,(不一定是ss_1.08_125,也有可能是ss_1.08_m40,要事先测试下),再多加一点margin
多谢小编!
目前测试是,在ss_1.08_125corner下综合,在ss_1.08_m40下有timing违背;在ss_1.08_m40下综合,在ss_1.08_125corner有timing违背,而且较严重。是不是说如果仅从温度上考虑的话,不存在一个”最差“的corner?
已经加了适当的margin,再加大的话就会导致面积有较大的增加;MCMM的综合流程还不熟悉。
就目前而言,有没有较好的办法能使2个corner下都没有setup的违背?
还有另外一个叫我不解的地方,我用dc使用ccs库综合,结果放到pt里面,还是使用ccs库分析,结果发现有很多setup violation。
然后针对相同单元计算delay(report_delay_calculation)发现dc中所使用的查找表我在lib里面根本找不到,而且值偏小。pt使用的查找表可以在lib文件中找到。
知道这个可能是什么原因吗?
谢谢!十分感激!
不太清楚原因
DC可以使用nldm库代替ccs库
Design Compiler 不支持MCMM的,就像陈小编说的,选个看着最差的,留点margin做综合就可以了,不出意外的话另外一边的Violation也不大,然后放到APR工具的做MCMM的timing OPT吧, 一般都能收掉。
乖乖,MMMC是后端的事情好吧,
dc用一个比较差的corner综合就行了, wc或者wcl都行,不过由于低温反型效应,
wcl会比wc更差,建议用m40度的库综合,
后端会把其他corner fix的,hold不谈 ,setup 只有有一个corner(wc或wcl)fix了,
其他都好办,多留余量就行了
多谢各位!
现在准备加大点余量,125和m40再各跑一个结果比较下。
对, 我都是用wcl 来做综合的, wc不管的,
对, 我都是用wcl 来做综合的, wc不管的,
wcl 是什么意思?
worst case low temperature 啊 ,即 -40C 的SS corner,
低温反型很严重 , TSMC 这么叫的