Design Compiler:层次模型(Block Abstraction)的简介
2026/6/22 23:56:57 网站建设 项目流程

相关阅读

Design Compilerhttps://blog.csdn.net/weixin_45791458/category_12738116.html?spm=1001.2014.3001.5482


Design 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格式存在,该模型准确度不如抽象块高,但速度最快。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询