之前和大家介绍过cell delay是如何计算的。那么,本文将着重和大家介绍一些timing lib中的各个参数定义是什么意思。会分以下几个部分介绍:库属性描述、时序弧介绍、环境描述、单元描述。之前介绍的cell delay template就是单元描述中的一部分。本文主要介绍库属性,后续部分将在另外几篇文章进行介绍。
Lib的结构如图1所示。
1、library group(见图2)
通过set_operating_conditions –library <库文件名>进行设置,表示该design使用了那一个library的参数进行timing、功耗等计算。
2、in_place_swap_mode(见图3)
在pr阶段,经常会发现工具将一些cell进行size up或者size down。那么,工具是怎么知道哪些cell是可以替换的呢。答案是in_place_swap_mode中定义了替换的准则。一般来说,规则有match_footprint和no_swapping。如果选择match_footpring,那么工具根据需要,可以将相同footprint,且替换和被替换的cell具有相同数量和名字的输入和输出端口。而如果设置为no_swapping,代表不可以进行swap操作。
像buffer的foot print为SCC_BUF(图4),那么工具将SCC_BUF一类的cell都当成同一类型的cell,可以进行swap操作。
3、delay_model
一般有generic_cmos(固定值)和table_lookup(非线性值)即look up table。目前,主流还是使用table_lookup非线性模型。
delay_model: table_lookup
查找表的计算前文已经提到过。没有看的小伙伴可以戳这里进行了解。
4、库文档资料(图5)
主要包含了库的版本、日期和注释。
5、单位定义(unit attributes)(图6)
定义了6个库级属性单位
#小编是一个入行多年的数字后端工程师,本身对编程方面比较感兴趣,在数字后端的脚本、flow上比较擅长,可以为大家提供答疑咨询服务。如有需求,可打开星球芯冰乐,获取更多知识干货分享与答疑服务。