如何为网表综合定义自定义单元?
How to define a custom cell for netlist synthesis?
我目前正在研究 CPU 设计,我想在其中比较不同微体系结构的功率、速度和面积。这些微架构的区别仅在于不同组件的实例化,例如不同实现的 ALU 或寄存器文件。其中一些组件相当复杂,我无法以 HDL 代码的形式使用它们。因此,我们的想法是在 HDL 代码中将它们实例化为黑盒,然后让综合工具(Synopsys Design Compiler)将它们映射到 self-defined 个单元以获得网表。
现在的问题是:如何self-define 细胞用于合成?当然,我有一个可用的标准单元库,所以我只需要 "add" 那些额外的单元格到 link 库。我找不到在 DC shell 中定义它们的方法。所以我想我必须写一个额外的自由文件来加载和 link to.
有没有一种方法可以定义一个自由文件,我不必担心 header 东西,例如过程参数,只需要定义所需的单元格和 "add" 那些到现有库,以便它自动假定标准单元库中指定的所有工艺参数?
我认为在没有流片计划的情况下出于模拟目的而想要这样做的情况并不少见。我只是在网上或用户指南中找不到任何有用的信息。如果有人能指出正确的方向,我会很高兴。
我找到了解决办法。可以简单地编写一个仅包含自定义单元格描述的自由文件,然后在通过 update_lib
命令编译之前将其读入。这正是我想要的。
我目前正在研究 CPU 设计,我想在其中比较不同微体系结构的功率、速度和面积。这些微架构的区别仅在于不同组件的实例化,例如不同实现的 ALU 或寄存器文件。其中一些组件相当复杂,我无法以 HDL 代码的形式使用它们。因此,我们的想法是在 HDL 代码中将它们实例化为黑盒,然后让综合工具(Synopsys Design Compiler)将它们映射到 self-defined 个单元以获得网表。
现在的问题是:如何self-define 细胞用于合成?当然,我有一个可用的标准单元库,所以我只需要 "add" 那些额外的单元格到 link 库。我找不到在 DC shell 中定义它们的方法。所以我想我必须写一个额外的自由文件来加载和 link to.
有没有一种方法可以定义一个自由文件,我不必担心 header 东西,例如过程参数,只需要定义所需的单元格和 "add" 那些到现有库,以便它自动假定标准单元库中指定的所有工艺参数?
我认为在没有流片计划的情况下出于模拟目的而想要这样做的情况并不少见。我只是在网上或用户指南中找不到任何有用的信息。如果有人能指出正确的方向,我会很高兴。
我找到了解决办法。可以简单地编写一个仅包含自定义单元格描述的自由文件,然后在通过 update_lib
命令编译之前将其读入。这正是我想要的。