story · 2020年10月10日

基于innovus的全加器数字芯片物理实现(step by step)

环境设置

创建一个单独的目录(例如,innovus)。创建子目录synthlib

1、 将full\_adder\_pads\_syn.v移动到synth目录

10eb074c45f537a0a764e232cb1ec48.png

我们可以看出来这是一个综合后gale-level的verilog门级网表。

2、将osu05\_stdcells.lef移动到lib目录

640.png

读入设计



1.在Unix提示符后,键入:innovus

2.出现innovus工具窗口时,在菜单栏选择File->Import Design 读入设计

1.jpg

单击 [...]读入Verilog网表文件

03f8a97078fb32fa8c13e33f50c4988.png

1.      单击**“>>”**按钮展开窗口以显示目录

2.png

选择文件full\_adder\_pads\_syn.v并单击Add按钮将其添加到Netlist文件列表中。

3.png

6.对于Top Cell,选择**“Auto Assign”**

4.jpg

对于Technology/Physical Libraries,选择**“LEF文件”。单击[...]**按钮打开LEF文件

5.jpg

使用与读入Verilog Netlist文件相同的方法,选择文件lib/ osu05\_stdcells.lef

6.png

对于Power,输入以下内容:

a. Power Nets: vdd
b. Ground Nets: gnd

7.jpg

点击 OK

保存和恢复设计



NOTE:切记要及时保存你的设计选择File, Save Design

8.jpg

在Save Design窗口中,选择数据类型:innovus。程序将分配一个扩展名为*** .enc**的默认文件名。可以更改名称,但不要更改扩展名。

9.jpg

要加载已保存的innovus文件,请执行File, Restore Design。 在“Restore Design”窗口中,选择数据类型:innovus。选择要还原的文件。

10.jpg

Floorplanning



在innovus工具菜单栏中,选择Floorplan,Specify Floorplan

11.jpg

1.在“Basic”选项卡中,选择以下选项:

Core Margins  - 选择Core to IO Boundary并设置为100

2.单击“OK”
12.png
13.jpg

Power Planning

在innovus工具菜单栏中,选择Power,Connect Global Nets以进行全局电源网络连接

14.png

1. 在Power Ground Connection中。

a、在Connect区域中,选择Pin

b、“Scope”区域中,选择“Apply All

2.对于每个net( vdd和gnd),执行以下操作:

a、在以下框中输入net名称(vdd或gnd):

i. To Global Net
        ii. Pin Name(s)

b、 单击“Add to List”按钮

3.单击“Apply”,然后单击“Cancel

112.jpg

Power Rings

在innovus工具菜单栏中,选择Power->Power Planning->Add Rings

113.png

对于Net(s),输入vdd和gnd,如下所示:

a、单击[...]框进行Net Selection

b、从Possible Nets列中选择vdd和gnd

C。单击“Add”以复制到“Chosen Nets”列

d。单击OK

115.jpg

Ring Configuration中,选择metal1作为TopBottommetal2作为LeftRight

a、宽度为8

b、间距为1

C、Offset为 “Center in channel

单击“OK
ee4e7663c435829950ba3629202dee7.png

Power Stripes



在innovus工具菜单栏中,选择Power->Power Planning->Add Stripes

1. Basic

对于Net(s),输入vdd和gnd nets,如下所示:

12.png

单击[...]框以获取“Net Selection”窗口

Possible Nets列中选择vdd和gnd

单击“Add”以复制到“Chosen Nets”列

单击OK

111.png

Set Configuration中,选择Layer metal2和Direction vertical。宽度应为8、间距为1

在“Set Pattern”中,将“Set-to-set”设置为100

First/Last Stripe中,设置从左到右相对于core或选定区域的距离为20

12.jpg

Advanced选项

Set Snap wire center to routing grid设置为Grid

13.png

单击“OK

14.jpg

将电源连接到Standard Cell Rows

在innovus工具菜单栏中,选择Route-> Special Route,然后单击“OK”。生成power(vdd)和gnd(gnd)给standard cell rows供电。

15.jpg

Placing the Standard Cells

在innovus工具菜单栏中,选择“Place”,“Standard Cells”

16.png

选择“Run Full Placement”和“Include Pre-Place Optimization

单击“OK”

放置Standard Cells后,在innovus窗口中更改为“Physical View”以查看placement结果

18.jpg

Routing



在innovus工具菜单栏中,选择Route->NanoRoute->Route,点击Ok

13.jpg

添加Filler Cells



现在我们已完成我们设计的placementrouting,我们将添加Filler Cells。选择Place->Physical Cell->Add Filler。

55.jpg

Add Filler窗口中,输入Cell Name “FILL”并选中Mark Fixed。单击ok

56.jpg

推荐阅读

想了解更多内容,欢迎关注芯片数字实验室专栏,由于工具,你可以专注在更重要的事情上。
推荐阅读
关注数
12313
内容数
219
前瞻性的眼光,和持之以恒的学习~
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息