siliconsmart中设定loading、slew和margin
3、对于新添加的cell,它们的最大loading会在instance file 中指定,或者不指定,让工具自动生成。想知道这个最大loading的值需要很严格的设定吗?比如在layout中,driver strength 2 的输出级size 是driver strength 1的输出级size的1.6倍,然后driver strength 2的loading设置的是driver strength 1的2倍,这样可以吗,还是应该设为1.6倍呢?或者还有其他的要求?
做一个全新的库,没有reference lib 可以参考!有些参数值应该如何设定?
1)
Configure.tcl文件中,所有cell的max_transition一般情况都是一个值,这个值是如何得来的?是《user guide》里面的default值吗?可是《user guide》里面没有default_max_transition参数,只要liberty_max_transition。“用max_transition的值来设定max_tout的值”,怎么设定,是有什么理论吗?在《user guide》中,max_tout的default值,是1.2ns。
2)
另外,“siliconsmart自动找最大的loading”,我们会在Configure.tcl文件中设定:largest_load,smallest_load,default_load,这些值是不是用《user guide》中的default值就可以了?如果不是,要如何设定。还是根据自己做的cell,抽 RC 后,手动算?
3)
通常,我们会在cell的instance file中通过explicit_piints_load和explicit_points_slew来直接指定index值,一个index里面相邻的值都成一个倍数左右的关系,对于这些值的指定有什么要求吗?如果不在instance file中指定,siliconsmart就会根据largest_load,smallest_load和numsteps_load自动生成,但是我希望能指定,而不是自动生成。那么,指定的区间是怎么得出来的呢?
4)
最后,加margin,有一个命令叫add_margin,不过这个是加绝对的margin,有没有什么方法是给每一个value值加相对的margin?对于时序单元,比如DFF的setup和hold值一般会加margin,这个margin加多大,有什么可以参考的标准吗?
谢谢大家!
大师,你已经走在前面了,关于slew 和 load 的设置我也存在疑问,就是如何确定的.看过多个工艺的lib库,都不一样,有的很简单,线性分布,有的是非线性的,由于主要是re-char,所以搬用原来的就行。个人感觉只是对波形的采样点不同,误差应该不会很大,毕竟实际应用中的取值也是根据该波形进行的查表插值计算出来的。另外,除了user_guide,是否还有更好的资料参考?
我目前也只有user guide做参考,没有比较实用的参考资料啊,比如常见的error/warning等等……
另外,有几个文档也不错,Library Compile的那些个文档还是很有帮助的。
你有什么推荐的也发表下,学习中……
我另外还下了Static Timing Analysis For Nanometer Designs.pdf作为参考,里面对lib库的相关内容有比较细的描述。
请问一下,这个slew是什么意思?
就是transition
学习中