天天看点

ICC学习——LAB0A

ICC学习——LAB0A

文章目录

    • ICC学习——LAB0A
    • Task1 启动ICC
    • Task2 layout视图导航
    • Task3 控制图层的可见性
    • Task4 选择和查询对象
    • Task5 得到关于命令和变量的信息

从今天开始学习ICC lab guide,记录学习过程的一些小的细节,防止遗忘。内容以lab guide2010.12为主,穿插一些学习感悟。

学习目标:

1.熟悉ICC GUI

2.学习如何得到关于变量和变量的help信息

预期效果

1.打开并退出ICC

2.打开一个已保存的设计

3.配置layout窗口

4.浏览layout视图

5.选择并查询layout对象

6.使用help,printvar和man获取有关命令和变量的帮助和附加信息

Task1 启动ICC

1.登录linux(可以忽略)

2.启用ICC之前,删除GUI窗口配置文件window configuration。(这个文件保存了之前的ICC设置)

rm ~/.config/Synopsys/icc_shell.conf
           

rm:删除指令

cd ~:打开代码主目录,相互于当前登录的用户目录

比如我的服务器路径,~代表/home/soc/用户名

Note:删除窗口配置并不是必须的

3.从home目录更改到lab0_gui目录下

cd lab0_gui
           

4.在linux命令行下启动icc

icc_shell
           

5.查看当前目录下文件。在ICC shell中键入ls -la

icc_shell > ls -la
           

运行完后可以看到两个文件,一个是icc_shell.cmd,一个是.log

cmd包含所有ICC命令包含启动icc的命令。

log记录开启ICC后的命令和命令的输出。

Note:log文件的名字可以通过在.synopsys_dc.setup中定义。

ICC学习——LAB0A

6.打开ICC可视化界面

icc_shell > start_gui
           
ICC学习——LAB0A

短暂的等待后,一个ICC主窗口(Main Window)被打开。设计载入后,这个窗口可以展示原理图和逻辑层次。

Note:除了通过ICC_shell 键入命令,还可以直接在终端输入icc_shell -gui。

7.从risc_chip.mw(MilkWay的设计库)载入被放置的单元,分为以下几步:

a.在主窗口,点击黄色图标(左上方)或者使用菜单命令File —> Open Design

ICC学习——LAB0A

b.在Open Design窗口点击黄色文件夹,“Select Library”对话框被打开。MilkWay库倍一个橘黄色的“L”图标标记。选择库文件risc_chip.mw,并点击“choose”。

ICC学习——LAB0A

c.在“Open Design”对话框中展示了被存储的CELs。仅有一个单元放在列表中,已经被选中(蓝色高亮)。点击“OK”打开。一个新的layout窗口被打开了。

ICC学习——LAB0A
ICC学习——LAB0A

关于Cell View

MilkWay数据库包含同一单元的不同表示,称之为单元格的视图。

1.CEL view:诸如通孔,标准单元,宏或整个芯片物理结构的完整布局图,包含单元格的布局布线引脚和网表信息。

2.FRAM view:用于布局和布线的单元抽象表示。包含金属封锁,允许通过区域和单元格引脚。

3.Fill view:ICC中sign_off_metal_fill命令创建的金属填充视图,用于芯片物理实现,无逻辑功能。

4.CONN view:由PrimeRail或由ICC创建并由PrimeRail工具用于IR drop和EM的电源和地网络。

5.ERR view:ICC中验证命令发现的物理设计规则违规,如verify_zrt_route或signoff_drc

存储在MilkWay库中的物理设计至少包含CEL视图,CEL视图包含布局、布线和掩码生成所有的单元设计的信息。每个宏单元(macro)都具有CEL和FRAM view,FRAM用于布局布线,CEL视图用于芯片制造的掩模数据。

TLU+ <=> TLU plus

8.将main窗口放在前面,看窗口底部的命令文本,回答以下问题

问题1:打开placed cell时,执行了什么命令

(提示:向上翻动,知道找到它——在命令行内按上下键,查看之前输入的命令)

答案1:open_mw_cel placed

ICC学习——LAB0A

顺便看到了打开risc_chip.mw命令。open_mw_lib /位置/risc_chip.mw

ICC学习——LAB0A

查看命令文本对初学ICC命令很有帮助。也可以通过terminal窗口得到命令的执行和响应。

9.将“layout”窗口前置并且最大化窗口

ICC学习——LAB0A

10.点击小写的[F]键,使layout视图适应窗口

你现在看的是叫作placed的layout CEL视图,属于risc_chip.mw设计库的一部分。

在layout的外部,IO pad单元(浅蓝色矩形)

ICC学习——LAB0A

在core区域的四周。core是色彩鲜艳的。

ICC学习——LAB0A

在core和IO pad区域之间有绿色和红色的金属环,叫作power ring,一个VSS,一个VDD。

ICC学习——LAB0A
ICC学习——LAB0A

为了更好进行供电,在core区域有垂直和水平的VDD/VSS straps。

ICC学习——LAB0A

核的底部有两个RAM macro。

ICC学习——LAB0A

在设计规划阶段确定了核心和外围布局以及电源布线

core,io cell,power routing

在placement阶段,标准单元放置到水平放置行内(RAM上面的深蓝色区域)

ICC学习——LAB0A

利用Task2中的zoom 操作可以看到标准单元

ICC学习——LAB0A

蓝色区域是由狭窄水平走向的金属线组成,叫作VSS/VDD rails,主要作用将power传到标准单元上。

ICC学习——LAB0A
ICC学习——LAB0A

power ring:一周的电源

power straps:类似于ring但是在core内,垂直和水平电源。

power rail:将电源供到单元上,VSS,VDD交替排列,形成水平放置列,中间摆放标准单元。

Note:Layout window有自己的菜单,一些与主窗口共享,其它的一些由Layout Window独有。大多数的物理设计都通过Layout window来形成。

Task2 layout视图导航

1.花几分钟熟悉zoom(缩放)和pan(平移)按钮,当缩放和平移时观察Overview Window中的黄色矩形变化。

Overview Window:在layout window的左上角。

ICC学习——LAB0A
ICC学习——LAB0A

提示:layoutwindow有快捷zoom,pan工具,选择工具进行不同的操作,点击白色箭头或ESC退出zoom和pan模式。

ICC学习——LAB0A

问题2:带有2的放大按钮和带有+的放大按钮的不同,

回答:2是放大两倍,+是常规放大。

2.“快捷键/热键”是可获得的,当layout窗口运行时。

小写字母[F]/[Ctrl + F]:相当于zoom fit all(全景图)

Z:相当于zoom in放大功能。

zoom in模式下可以拉一个橘黄色的矩形,放大此区域。

3.可以找到其他热键,通过以下两种方式:

方式1:悬停鼠标在按钮上,出现一个“帮助气泡”,气泡力会介绍功能名和键盘快捷键。

ICC学习——LAB0A

方式2:可以在菜单中找到,路径:Help —> Report Hotkey Bindings。一个新的视图出现,列出热键的定义。关闭这个view可以通过Windows —> close view / [Ctrl + W]

ICC学习——LAB0A
ICC学习——LAB0A
ICC学习——LAB0A

4.鼠标手势操作,个人用的比较少。更喜欢用GUI的按钮和键盘热键。

介绍鼠标手势操作方法:点击鼠标中键并按住,同时上下移动指针,手势操作菜单就会出现在指针附近。

ICC学习——LAB0A

上左/右45°,放大选中的矩形区域

5.键盘上的上/下/左/右也可以用来平移操作

6.如果鼠标有滚轮,也可以用zoom in/out,在鼠标指针附近的区域。

Task3 控制图层的可见性

在view setting窗口,可以控制/查看对象是可视的/可选择的

ICC学习——LAB0A

以下步骤,将一次打开打开关键对象的可见性,清楚看到他们代表的内容。首先需要在设置的下拉菜单中选中“Auto apply”(保证选择立刻生效,而不用等待)

ICC学习——LAB0A
ICC学习——LAB0A

a.在Vis列(可视化),取消所有的对象,仅保留Cell。

只有标准单元,Macro,IO pad被展示

ICC学习——LAB0A
ICC学习——LAB0A
ICC学习——LAB0A

b.选择Pin。输入输出电源连接引脚被展示

ICC学习——LAB0A
ICC学习——LAB0A

c.查看Route。所有金属线可视化

因为设计还没有布线,只有电源/地的预布线(在Floor阶段做的电源布线),应该可以看到power ring和水平垂直的power straps 也可以看到power rail

ICC学习——LAB0A

d.检测Labels(标签)。单元和实例的名字变得可见。通过点击左侧的“+”将Labels展开。利用Z查看标准单元,会发现它的引脚名字变得可见。按[F]将窗口置于中间

ICC学习——LAB0A
ICC学习——LAB0A

e.选择Layer选项,通过一层层微调可视性,在METAL(14)行和shape的交界处点击带有对角线的蓝色正方形,随后蓝色的水平金属rail消失。(METAL(14)就是metal 1)

ICC学习——LAB0A
ICC学习——LAB0A
ICC学习——LAB0A

f.再点击一次,使得metal1可见(即rail 可见)

g.选择Objects选项,重新应用起始的设置。

问题3:上面的Vis和Sel列有什么区别?

回答:Vis:可视,使对象可以被看到。SEl:可选择,当点击是可以选中的。

不可视的不可被选中。

7.选择Layer选项,使用颜色和填充图案回答以下问题:

ICC学习——LAB0A

问题4:红色水平电源strapes位于哪一层?它的名字和编号

回答:METAL3(22)

点击完后红色strap消失

ICC学习——LAB0A

问题5:绿色垂直电源strapes位于哪一层?名字和编号

回答:METAL4(26)

ICC学习——LAB0A

8.通过鼠标悬停在straps上,出现一个query窗口,并核对你的答案。query:查询,query窗口有相关Layer图层。

ICC学习——LAB0A
ICC学习——LAB0A

query:包含单元名,引脚数,是否被fix(什么叫fix),形状,所在层,宽度,长度,endcap等。

Task4 选择和查询对象

1.选择对象

想要选择对象,鼠标必须是一个箭头,代表选择模式。

可以通过点击箭头按钮,或者[ESC]键。

2.用鼠标左键选择不同的单个对象。选择对象以白色高亮显示,直到取消选中或者选中其它对象,白色消失。

3.取消所有选择的对象,有3种方法。

a.点击Layout空白处(常用这种方法,简单实用)

b.菜单Select —> clear

c.键盘快捷键[Ctrl + D]

4.选中一个区域的多个对象。用左键拖放一个矩形,选中矩形的单元。

ICC学习——LAB0A

5.保持目前被选择的对象,增加其它对象。按住Ctrl,鼠标左键选择其它对象,类似Windows

ICC学习——LAB0A

6.多个对象叠加时,通过左键不断点击,直到所需对象高亮。可以尝试通过点击红色的straps和绿色straps交叉位置。

ICC学习——LAB0A

7.放大蓝色核心区域。通过在周围拖动选择框选择一些标准单元。

8.增加选择单元和未选择单元的对比度,可以调节Brightness到50%,增加对比度。亮度位于视图面板顶部,或者view setting中。

ICC学习——LAB0A
ICC学习——LAB0A
ICC学习——LAB0A

9.查询对象

鼠标悬停,对象被轻微高亮,左下角出现一个查询窗口。

显示对象的一些关键属性。

想要获得一个完整查询,选择一个单元有两种方法。

a.小写字母q

b.菜单Select —> Query Slection

会打开一个窗口列出所有特征值。

ICC学习——LAB0A

10.点击右上角的隐藏按钮关闭查询窗口。

11.关闭Layout窗口。从Main Window或Layout窗口点击File —> Close design,关闭当前的layout。然后点击对话框中的Discad All,关闭界面并不保存。

12.关闭GUI命令

stop_gui或gui_stop
           

Task5 得到关于命令和变量的信息

1.ICC可以通过[Tab]键补全变量名,命令名,文件名和命令选项。ICC shell尝试以下命令:

h[Tab]e[Tab] -v[Tab] help[Enter]

help -verbose help

ICC学习——LAB0A

2.想要查看命令和变量的manpage(手册页),需要完整的命令或者变量

在不清楚命令或变量精确名字时使用help结合*通配符。help查命令,printvar查变量

如:假如正在寻找某个优化命令的更多信息。不记得确切的名称,但知道syn字符(synthesis),使用下面命令列出所有包含syn命令,

help *syn*
           

从展示的命令中选取一个,如psynopt

ICC学习——LAB0A

3.help -verbose psynopt

或help -v psynopt

help选项,-verbose,指详细选项

ICC学习——LAB0A

4.使用man命令,查看命令和它的选项

“man psynopt” or “man psyn[Tab]”

ICC学习——LAB0A

5.printvar 查找变量

printvar *library*
           

从包含library列表找到想找的变量target.library

printvar也会列出变量值

ICC学习——LAB0A

6.man查看命令manpage

man target_library 
man target_l[Tab]
           
ICC学习——LAB0A

7.man可以查询错误信息

man PSYN-025
           
ICC学习——LAB0A

工具报错编号PSYN-025

8.退出ICC_shell:

exit
quit
           

至此Lab0A完成。