最近算是搞清楚了有关这两个概念的一些细节的东西。
1,我们通常可以看到制造商会提供3个库,fast.db,slow.db,typical.db,那么这三个库有什么区别呢?为什么要搞出3个库呢?
据我最近的理解(应该是正确的),这3个库分别代表了3中operating conditions,用这3个操作条件制作了3个相应的库。那么有的读者就问了,既然库就代表了operating conditions,那么为什么还要设置operating conditions,通常使用dc命令,set_operating_condition -max -min 进行设置呢?通常设置这个操作条件就是为了分析setup 和 hold time的,也就是说使用那种条件进行setup分析,使用哪种条件进行hold分析。
先把这一点说了,如果是设置了一个目标库,而你设置的操作条件不是这个库的默认操作条件,那么工具会自动根据你的条件和库默认的条件,再加上k-factors算出你设置操作条件下的delay。
举例:
set target_library {slow.db};
set link_library {* slow.db}
set_operating_conditions -max slow -max_lib slow -min fast -min_lib fast
#这一句说明,在分析setup 的时候,使用条件slow,而在进行hold分析的时候,使用 #条件fast
set_min_library slow.db -min_version fast.db
#这一句说明,在进行hold分析的时候,如果能够在fast.db中找到slow.db中对应的cell,那么就使用fast.db中的timing 参数进行hold分析,如果找不到就使用slow.db中timing参数进行分析。
#假如找不到,就使用slow.db中delay再进行操作条件的处理来进行时序分析。
#找到了以后,就使用fast.db中delay参数进行分析,当然也要对操作条件fast进行处#理,如果发现操作条件fast和fast.db中的操作条件相同,那么处理以后的timing参##数,就是fast.db中的参数,就可以进行hold分析了。
分析结束。
文章评论(0条评论)
登录后参与讨论