Design Compiler:层次模型(Block Abstraction)的简介 相关阅读Design Compilerhttps://blog.csdn.net/weixin_45791458/category_12738116.html?spm1001.2014.3001.5482Design Compiler的综合策略大致可以分为三种一种是自上而下(Top-Down)即一次性读入整个顶层设计及所有子模块应用顶层约束然后统一综合这适合设计规模较小或计算资源充足时一种是自下而上(Bottom-Up)即各个子模块单独约束、单独综合最后再综合顶层设计这适合超大设计或受到内存限制时两种策略的结合是一种更常见的综合方法。本文将讨论在自下而上综合过程中使用层次模型或者说抽象块的情况与此对应的是在自下而上综合过程中不使用层次模型即使用完整的子模块模型即使子模块已提前综合这也会导致内存需求上升。曾经的层次模型分为两种最初的接口逻辑模型(Interface Logic Model, ILM)和以及抽象块(Block Abstraction Model, BAM)但自2014版本后接口逻辑模型不再被Design Compiler、IC Compiler等工具支持。对于接口逻辑模型模块会被建模为一个不完整的模块其中仅包含该模块所需的接口逻辑以及用户手动与接口逻辑关联的逻辑所有内部逻辑都会被移除。抽象块是接口逻辑模型的拓展与接口逻辑模型使用单独的ddc文件表示移除了内部逻辑的模块不同它将完整的模块和接口逻辑一起保存在同一个ddc文件中但接口逻辑会被标记如果指定使用抽象块只加载接口逻辑如果不指定则还是使用完整的模块。需要注意的是IC Compiler只能使用在IC Compiler中创建的抽象块而Design Compiler可以使用在Design Compiler以及IC Compiler中创建的抽象块。图1展示了一个抽象块的转换过程其中与接口时序路径相关的逻辑被保留(in2reg、reg2out、in2out)而触发器间时序路径的逻辑则被删除(reg2reg)。图1 抽象块的转换默认情况下抽象块包含以下网表对象输入端口到输出端口、输入端口到触发器以及触发器到输出端口这三种数据路径上的单元、线网。连接到接口触发器的时钟路径包括主时钟到生成时钟之间的逻辑及其最大和最小的时钟路径上的单元、线网。接口线网上的附加载单元(Side-load Cell)图2展示了附加载单元的定义。图2 附加载单元从图2中可以看出附加载单元U1属于触发器到触发器数据路径但由于其影响了接口线网的寄生参数因此也被保留在抽象块中。单元U0既可以看做触发器到触发器数据路径的一部分也可以看做触发器到输出端口数据路径的一部分因此也被保留在抽象块中。图3展示了抽象块中包含的元素着重强调了时钟树。填充部分是接口数据路径和时钟路径上的元素斜线部分是附加载单元虚线部分的元素则不会包含在模型中。图3 抽象块中包含的元素在自下而上综合过程中还可以使用PrimeTime导出的Extracted Timing Model(ETM)进行综合此时子模块类似存储器那样以.db格式存在该模型准确度不如抽象块高但速度最快。