本文始于2024年3月,以Virtuoso 6.1.8-64b版本讲解”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. 问题与讨论
先说重点:进行库或复杂较大模块的Hierarchy copy时,请先关闭所有打开的schematic和layout。
1. 不同Copy界面设置介绍
1.1 Library copy相关界面说明,如下图;
![](http://www.kaixinspace.com/wp-content/uploads/2024/05/1-1.jpg)
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 方式效果一样。蛮奇怪的???
![](http://www.kaixinspace.com/wp-content/uploads/2024/05/2-1.jpg)
- 不勾选Update Instance选项
如果不勾选,那么目标库中cell的库名称将维持和原始库的库名称一致。
d:表示检查数据库的相关设置,默认不勾选。
1.2 Cell copy相关界面说明,如下图;
![](http://www.kaixinspace.com/wp-content/uploads/2024/05/3-1.jpg)
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了寂寞。
![](http://www.kaixinspace.com/wp-content/uploads/2024/05/4-1.jpg)
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。(这个功能在后期整理库的时候特别好用)
![](http://www.kaixinspace.com/wp-content/uploads/2024/05/5-1.jpg)
- Views To Copy 指定你当前copy的cell下view类型
d:参考”Library copy相关界面说明”
另:笔者测试过程中发现在Library copy界面中的”Of Entire Library”功能没起作用,但在Cell copy界面中却起到了作用。蛮奇怪的???
2. 范例演示
2.1 范例调用关系展示
创建2个库,调用关系如下图所示,通过不同的copy设置方式来观察对应的结果。
![](http://www.kaixinspace.com/wp-content/uploads/2024/05/6-1.jpg)
2.2 Library copy演示
分别使用”New Copies”和”Entire”方式Copy “KUAILE” 库,并观察”KUAILE_TOP”中调用cell的库名称的更改情况。
2.2.1 使用”New Copies”方式copy
可以看到当前库中的cell 的库名称已更改为新的目标库名,而隔库的cell “nor1” 的库名称未更改。
![](http://www.kaixinspace.com/wp-content/uploads/2024/05/7-1.jpg)
2.2.2 使用”Entire”方式copy
可以看到当前库中的cell 的库名称已更改为新的目标库名,而隔库的cell “nor1” 的库名称同样也没有更改。
![](http://www.kaixinspace.com/wp-content/uploads/2024/05/8-1.jpg)
当然要实现隔库cell的库名称更改,可以使用Change Library References…功能,见问题与讨论1。
2.3 Cell/View Copy
2.3.1 要copy的cell 只在当前库中进行copy
这个不多说,建议按如下方式设置copy即可
![](http://www.kaixinspace.com/wp-content/uploads/2024/05/9-1.jpg)
2.3.2 Copy cell 到一个新的库中,并将该cell中调用的所有cell一并copy到新的库中。
常见的”XXX”场景是:在完成一个模块的top层后,由于在layout期间调用cell混乱,有当前库中的cell也有当前库中备份的cell,又或有隔库的cell被调用,总之,完成后的top_cell中调用的cell足够混乱(真是头都要炸了!),但你又想只将top_cell中调用的cell能正确的copy到一个新库中。下面示范个技能,让你茅塞顿开!!!
请按如下图片操作;
![](http://www.kaixinspace.com/wp-content/uploads/2024/05/10-1.jpg)
![](http://www.kaixinspace.com/wp-content/uploads/2024/05/11-1.jpg)
哇,可以看到真的只有”KUAILE_TOP”中所调用的cell被copy到新的库中了,并且新库中的各个cell的库名称都被自动更改为新的库名称了。此处应有掌声。
延续上述”XXX”场景:某些情况下,在我们”KUAILE_TOP” Cell 下可能不止有一个layout view,可能还有其他的view,例如:layout_bk1、layout_bk2…,如下图所示:
![](http://www.kaixinspace.com/wp-content/uploads/2024/05/12.jpg)
如果还是按”XXX”场景中的相关设置,会发现所有view中调用的cell,都会被copy到新的库中。然而大多数的时候我们只想copy某个特定view下的cell。此时我们就需要用到更高级的Exact Hierarchy功能了。
让我们在”KUAILE_TOP”下再创建一个新的View-“layout_bk1”,相关调用关系如下图:(注意看紫色字体增加的cell)
![](http://www.kaixinspace.com/wp-content/uploads/2024/05/13.jpg)
我们再来验证下,如果还是按”XXX”场景所示的设置进行copy,会出现什么情况。
可以看到”layout_bk1″中调用的”nandx2_new”和”nandx2_old”,也一同被copy到新的库中了;并且在”layout”这个view中的”nor1″也被copy到新库中了。显然这不是我们想要的结果。
![](http://www.kaixinspace.com/wp-content/uploads/2024/05/14.jpg)
2.3.3 使用Exact Hierarchy功能进行copy
- 依次选中”KUAILE”—”KUAILE_TOP”—”layout”,点击菜单栏Edit—Wizard;
![](http://www.kaixinspace.com/wp-content/uploads/2024/05/15-1.jpg)
可以看到只有”layout” view下调用的cell被copy到新的库中了。
![](http://www.kaixinspace.com/wp-content/uploads/2024/05/16.jpg)
- 按上述同样设置,依次选中”KUAILE”—”KUAILE_TOP”—”layout_bk1″
![](http://www.kaixinspace.com/wp-content/uploads/2024/05/17.jpg)
可以看到只有”layout_bk1″ view下调用的cell被copy到新的库中了。
![](http://www.kaixinspace.com/wp-content/uploads/2024/05/18.jpg)
至此本文重点出现了:在整理库时,请使用Exact Hierarchy功能进行copy。
3. 问题与讨论
问题1:在LIB copy中,”Of Entire Library”并不能更改隔库cell库名称,那么有什么办法可以实现此功能呢?
Ans:请使用Change Library References…功能即可;
![](http://www.kaixinspace.com/wp-content/uploads/2024/05/19.jpg)
![](http://www.kaixinspace.com/wp-content/uploads/2024/05/20.jpg)
问题2:在”XXX”场景的设置中,如果Skip栏中的基础库不被跳过,那copy出来的又是什么样的呢?请读者自行尝试。
Ans:很显然基础库中的cell将被copy,大多数是最基本的器件,mos,mom等,这也不是我们想要的结果吧。
问题3:在Exact Hierarchy copy cell 界面中的Extra View一栏有什么其他作用吗?
Ans:Names 一栏所填信息和Types功能相同,两者二选一即可。
![](http://www.kaixinspace.com/wp-content/uploads/2024/05/21.jpg)
问题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名。(真的是太方便了!)
![](http://www.kaixinspace.com/wp-content/uploads/2024/05/22.jpg)
问题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。
-END-
*以上内容仅供个人学习,切勿用于商业!!!
参考资料:
【1】Cadence Help.