设计的多实例引用(Multiple Instances of a Design Reference)

本文介绍了在层次化设计中遇到的多实例引用问题及其解决方法,包括使用uniquify命令重新命名实例、Compile-Once-Don't-Touch方法以及ungroup命令等。每种方法都有其优缺点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、什么是“设计的多实例引用”

在层次化的设计中,我们会将一个设计例化多份,这些例化的instances就是设计的多实例引用。

比如在下图中,设计C被引用了两次(U2/U3和U2/U4)。

使用check_design -multiple_designs命令可以打印出设计中的多实例引用。

二、为什么要解决多实例引用

对于设计的实例而言,最终是要映射到物理单元上去的,因此它们工作环境可能是不相同的。如果我们只提供原始蓝图,显然是不够的。我们还需要为每个实例建立它们自己的数据库,存储属于它们自己的特有的信息。因此,DC在综合前,就必须要解决多实例引用的问题。

三、DC怎么解决多实例引用

1、uniquify命令

  • uniquify命令会将原始设计拷贝并重新命名。命名完成后,DC会将原始设计从内存中删除。因此,uniquify之后无法访问原始设计。
  • 在执行compile命令时,DC会自动地去调用uniquify。并基于当前的current_design的层次进行uniquify(dont_touch的优先级高于uniquify)。
  • 设计人员可以通过uniquify的-reference或-cell选项来主动生成unique copies。当然,此时会忽略dont_touch属性。

  • DC使用uniquify_naming_style变量(string类型)存储命名规则,默认的命名约定为%s_%d:

%s:subdesign的原始名字,或使用-base_name选项指定的名字。

%d:从小往大的计数值(0,1,2...)。

example:

prompt> current_design top
prompt> compile_ultra

  • 工具在compile时会自动调用uniquify,当然我们也可以手动执行uniquify。但是由于工具调用uniquify这一步骤是无法被关闭的。所以相当于uniquify被执行了两次,因此会导致工具运行更长的时间。所以手动uniquify意义不大。

2、Compile-Once-Don't-Touch方法

如果多个引用的工作环境基本相同。那么我们可以先将其中一个实例进行编译,在顶层编译时重复例化即可。

具体的步骤人如下:

  1. 挑选出多个引用中环境最差的那个作为代表;
  2. 编译它;
  3. 将所有引用设置set_dont_touch属性;
  4. 编译顶层设计。

example:

prompt> current_design top
prompt> characterize U2/U3
prompt> current_design C
prompt> compile_ultra
prompt> current_design top
prompt> set_dont_touch {U2/U3 U2/U4}
prompt> compile_ultra

  • 这种方式主要的缺点在于需要所有引用(instances)的环境基本相同;且设置set_dont_touch属性后不能ungroup。

3、ungroup命令

ungroup命令和uniquify命令比较类似,只不过更加暴力。它将设计的层次化结构全部去掉,输出一个flattened netlist

example:

prompt> current_design B
prompt> ungroup {U3 U4}
prompt> current_design top
prompt> compile_ultra

  • ungroup命令消耗更多的内存和更多的时间。
  • 提供了最好的综合结果
  • 显然,坏处就是破化了设计的层次化结构。

PS1.折腾大半天终于把innovus18安装好了,相对S家的软件安装,C家算是比较友好了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值