本文始于2024年3月,以Virtuoso 6.1.8-64b版本讲解”Copy”功能中各个设置项的作用,旨在让读者理解怎么合理并正确快速的进行Copy,并以范例进行演示。
2025.11.04:新增 3.6、3.7、3.8 小节,解决使用 Exact Hierarchy 功能进行copy 遇到的问题,并再次完善copy的方法,适应多种情景。
目录
1. 不同Copy界面设置介绍
1.1 Lib copy
1.2 Cell copy
2. 范例演示
2.1 范例调用关系展示
2.2 Lib copy演示
2.3 Cell/View copy演示
3. 问题与讨论
3.1 在LIB copy中,”Of Entire Library”并不能更改隔库cell库名称,那么有什么办法可以实现此功能?
3.2 在”XXX”场景的设置中,如果Skip栏中的基础库不被跳过,那copy出来的又是什么样的?
3.3 在Exact Hierarchy copy cell 界面中的Extra View一栏有什么其他作用吗?
3.4 为什么在cell栏中启动的copy cell界面中,选择Exact Hierarchy进行copy时,却起不到和Copy Wizard界面中Exact Hierarchy同样的效果?
3.7 当一个 Cell 中有很多不同的 Views 时,如何指定其中一个或多个 Views 名称进行 Copy?
3.8 在使用 Exact Hierarchy 功能进行copy 时,如何保证只 Copy 当前版图中各个Cell 使用的views,而不将其他不用views 一同copy?
先说重点:进行库或复杂较大模块的Hierarchy copy时,请先关闭所有打开的schematic和layout。
1. 不同Copy界面设置介绍
1.1 Library copy 相关界面说明,如下图;

a:原始库
b:目标库
c:
- 勾选Update Instance选项
Of New Copies Only:表示原始库中cell的库名称将更改为目标库的名称;
tips:如果原始库中的cell有隔库的调用情况,那么在使用Of New Copies Only方式时,不在原始库中的cell的库名称在copy到目标库中时还是维持之前库名称。
Of Entire Library:表示原始库中cell的库名称将更改为目标库名称;
按help文档中说,”Of Entire Library”也会同时更改隔库的cell中的库名称。但笔者目前测试发现与”Of New Copies Only”copy 方式效果一样。蛮奇怪的???

- 不勾选Update Instance选项
如果不勾选,那么目标库中cell的库名称将维持和原始库的库名称一致。
d:表示检查数据库的相关设置,默认不勾选。
1.2 Cell copy相关界面说明,如下图;

a:原始库
b:目标库
c:框中相关功能解释
- Copy Hierarchical 勾选时表示同时copy底层cell
- Skip Libraries 勾选时表示在copy底层cell时,可以由user指定哪些库中的cell需要copy和哪些库中的cell不需要copy;没有copy的cell将继续使用原始库的库名称,而被copy的cell的库名将变更为目标库名称。
tips1:可以点击Edit按钮编辑,默认Skip栏中会包含你当前所有的库,但你选中的库除外。
从下图可以看到选中的”KUAILE”库,不在Skip一栏。当然不在,不然你copy了寂寞。

tips2:此项只有在Copy Hierarchical勾选时才起作用。
- Exact Hierarchy 表明只copy指定的View中的底层cell,比如:一个cell中可能有很多个View,例如layout 、layout_bk、layout_old等等,当选定Exact Hierarchy时,可以在Copy Wizard(菜单栏Edit-Copy Wizard)中指定对应view。此时你copy的Hierarchical就都是你这个View下的cell。(这个功能在后期整理库的时候特别好用)

- Views To Copy 指定你当前copy的cell下view类型
d:参考”Library copy相关界面说明”
另:笔者测试过程中发现在Library copy界面中的”Of Entire Library”功能没起作用,但在Cell copy界面中却起到了作用。蛮奇怪的???
2. 范例演示
2.1 范例调用关系展示
创建2个库,调用关系如下图所示,通过不同的copy设置方式来观察对应的结果。

2.2 Library copy演示
分别使用”New Copies”和”Entire”方式Copy “KUAILE” 库,并观察”KUAILE_TOP”中调用cell的库名称的更改情况。
2.2.1 使用”New Copies”方式copy
可以看到当前库中的cell 的库名称已更改为新的目标库名,而隔库的cell “nor1” 的库名称未更改。

2.2.2 使用”Entire”方式copy
可以看到当前库中的cell 的库名称已更改为新的目标库名,而隔库的cell “nor1” 的库名称同样也没有更改。

当然要实现隔库cell的库名称更改,可以使用Change Library References…功能,见 3.1 小节。
2.3 Cell/View Copy
2.3.1 要copy的cell 只在当前库中进行copy
这个不多说,建议按如下方式设置copy即可

2.3.2 Copy cell 到一个新的库中,并将该cell中调用的所有cell一并copy到新的库中。
常见的”XXX”场景是:在完成一个模块的top层后,由于在layout期间调用cell混乱,有当前库中的cell也有当前库中备份的cell,又或有隔库的cell被调用,总之,完成后的top_cell中调用的cell足够混乱(真是头都要炸了!),但你又想只将top_cell中调用的cell能正确的copy到一个新库中。下面示范个技能,让你茅塞顿开!!!
请按如下图片操作;


哇,可以看到真的只有”KUAILE_TOP”中所调用的cell被copy到新的库中了,并且新库中的各个cell的库名称都被自动更改为新的库名称了。此处应有掌声。
延续上述”XXX”场景:某些情况下,在我们”KUAILE_TOP” Cell 下可能不止有一个layout view,可能还有其他的view,例如:layout_bk1、layout_bk2…,如下图所示:

如果还是按”XXX”场景中的相关设置,会发现所有view中调用的cell,都会被copy到新的库中。然而大多数的时候我们只想copy某个特定view下的cell。此时我们就需要用到更高级的Exact Hierarchy功能了。
让我们在”KUAILE_TOP”下再创建一个新的View-“layout_bk1”,相关调用关系如下图:(注意看紫色字体增加的cell)

我们再来验证下,如果还是按”XXX”场景所示的设置进行copy,会出现什么情况。
可以看到”layout_bk1″中调用的”nandx2_new”和”nandx2_old”,也一同被copy到新的库中了;并且在”layout”这个view中的”nor1″也被copy到新库中了。显然这不是我们想要的结果。

2.3.3 使用Exact Hierarchy功能进行copy
- 依次选中”KUAILE”—”KUAILE_TOP”—”layout”,点击菜单栏Edit—Wizard;

可以看到只有”layout” view下调用的cell被copy到新的库中了。

- 按上述同样设置,依次选中”KUAILE”—”KUAILE_TOP”—”layout_bk1″

可以看到只有”layout_bk1″ view下调用的cell被copy到新的库中了。

至此本文重点出现了:在整理库时,请使用Exact Hierarchy功能进行 Copy !!!
3. 问题与讨论
3.1 在LIB copy中,”Of Entire Library”并不能更改隔库cell库名称,那么有什么办法可以实现此功能?
Ans:请使用Change Library References…功能即可;


3.2 上文”XXX“场景的设置中,如果Skip栏中的基础库不被跳过,那copy出来的又是什么样的?请读者自行尝试。
Ans:很显然基础库中的cell将被copy,大多数是最基本的器件,mos,mom等,这也不是我们想要的结果吧。
3.3 在Exact Hierarchy copy cell 界面中的Extra View一栏有什么其他作用吗?
Ans:Names 一栏所填信息和Types功能相同,两者二选一即可。

3.4 为什么在cell栏中启动的copy cell界面中,选择Exact Hierarchy进行copy时,却起不到和Copy Wizard界面中Exact Hierarchy同样的效果?(把下面答案栏选中即可见)
Ans:因为Exact Hierarchy是针对View来进行copy的,所以你需要在Copy view界面中,选择Exact Hierarchy才会有效果。
另外:推荐大家使用Copy Wizard进行复杂的cell,进行copy,因为它可以实时的看到具体copy的cell;而且在”To Cell” 栏中双击对应cell,它还能修改cell的名称,例如,后缀删除等,以便获得更清晰的cell名。(真的是太方便了!)

3.5 在 2.2 小节”Cell Copy相关界面说明”中,有说“笔者测试过程中发现在Library copy界面中的Of Entire Library功能没起作用,但在Cell copy界面中却起到了作用。蛮奇怪的”,具体是怎么在Cell copy中起作用的,能举例说明下吗?
Ans:库 a 中有2个cell分别为b和c,其中c被b调用;如果c以”Of Entire Library”方式copy为c_1后,b中之前调用的c,也同时会被更改为c_1。
3.6 在使用 2.3.3 小节的方法 copy 完后,有发现在新的库(目标库)中,同一个 Cell 被copy了两次,并且此 cell name 后面有不同的后缀名,如下图。出现这种情况,原因是什么?怎么解决?

Ans:这是因为“COMP_BIAS”,这个Cell 存在于不同的 copy 库中,当我们在 Copy Wizard 界面点击 Check Files 时,会出现对应的 Copy Problems 对话框,然后点击 Fix Errors,于是Cell 被重命名,导致被复制了两次。
正确处理方式是:点击 Check Files 后,不点击 Fix Errors, 然后到版图中查找具体调用该cell的库名称(查找方法请点击这里),将 Copy Wizard 界面的冲突的库不勾选即可解决此问题。


3.7 当一个 Cell 中有很多不同的 Views 时,如何指定其中一个或多个 Views 名称进行 Copy?
Ans:请使用 Copy Wizard 中的 By View 选项功能(如下图),但此种方法只能 copy 当前 Cell 层的views,而不能进行 Hierarchical Copy。

3.8 在使用 Exact Hierarchy 功能进行copy 时,如何保证只 Copy 当前版图中各个Cell 使用的views,而不将其他不用views 一同copy?
Ans:可以参考 3.6 小节中的方法,将没有用到的views 在 Copy Wizard 界面中不勾选,需要手动确认。但对于版图中存在大量cell调用非 “layout”的views 来说效率非常的低,至于是否有其他自动的方法,maybe “Copy Wizard 界面中的“By Configuration”功能可以,但目前笔者暂未弄清此功能如何使用,如您知道此功能用法,又或有更好的方法,欢迎来信交流。

-END-
*以上内容仅供个人学习,切勿用于商业!!!
参考资料:
【1】Cadence Help.