解决了库的问题,开始上手跑lab了。在做lab的过程中,会补充一些相关的知识点和自己的学习笔记,加深理解,防止遗忘。
LAB0:熟悉ICC图形界面
- LAB 0A
- 1. 启动ICC
- 2. Layout视图导航
- 3. 控制图层的可见性
- 4. 选择和查询对象
- 5. 获取命令和变量的信息
- LAB 0B
- 1. 配置窗口
- 2. 平移和缩放的历史记录
- 3. 选择列表、高亮显示和查询
- 4. 分析时序路径
- 5. 窗口管理
- 登录到Linux环境(安装好虚拟机,登录即可)
- 启动ICC之前,需要删除GUI窗口配置文件,因为这个文件保存了之前的GUI窗口设置(删除窗口配置并非必要操作)
rm ~/.config/Synopsys/icc_shell.conf
- 从当前目录更改到lab0_gui目录
cd lab0_gui
- 在Linux命令行下启动ICC
icc_shell
- 查看当前目录下的文件(其中-la表示将所有文件列出来)
icc_shell > ls -la
运行完后可以看到两个文件,分别是 .cmd(命令文件)和 .log(输出日志文件)。
其中,cmd文件记录所有命令和启动ICC调用的命令;log文件记录工具启动后的命令和命令的输出。
注:log文件命名可以在库设置文件 .synopsys_dc.setup 中定义。
- 打开ICC图形界面
icc_shell > start_gui #或 icc_shell -gui
-
从risc_chip.mw(MilkWay设计库)加载被放置的单元,步骤如下:
a. 在主窗口中,点击左上角的黄色图标(如下图),或使用菜单命令File-Open Design
b. 在“Open Design”对话框中单击黄色文件夹图标,打开“Select Library”对话框。选择MilkWay库中带有橙色“L”图标的库文件(risc_ship.mw),并点击“choose”按钮(如下图)。
c. 在“OpenDesign”对话框中显示了被存储的CEL。由于列表中只有一个单元,已经被选中(蓝色高亮显示),点击“OK”,打开Layout窗口,如下图:
-
将Main窗口放在前面,查看窗口底部的命令记录,回答以下问题:
问题1:执行了什么命令去打开placed cell?(提示:在命令行内按上下键,查看之前输入的命令)
答案:open_mw_cel placed.(如下图)
注:查看命令文本对初学ICC命令者非常有用。 -
将Layout窗口前置,并使窗口最大化。
-
点击小写 [ F ] 键,使布局图处于窗口最大化,如下图:
现在看到的是CEL design的布局图,属于rsic_chip.mw设计库的一部分。在layout的外围,IO PAD单元(浅蓝色矩形)围绕在core(色彩鲜亮)的四周。在core和IO PAD区域之间有绿色和红色的金属线组成环状,叫做power ring(由一根VSS和一根VDD组成)。
为了更好的进行供电,在core内会有纵横交错的straps(如上图)。其作用是为了将电源输送到芯片内部各个macro上,减小IR drop。
图中紫色的方框是标准单元,其放置在row上。蓝色的金属线条是power rail,主要给标准单元供电。
注:row是由site组成的,一般是site的整数倍,它对std cell的摆放起着限制作用。site定义的是最小的布局单位,如下图:
2. Layout视图导航
- 首先熟悉一下Layout窗口的缩放 (zoom)和平移(shift+p)按钮。在平移和缩放时,注意Overview Window窗口中黄色矩形的变化。
注:点击“Selection Tool”(白色箭头图标)或按[Esc]键,退出缩放和平移模式,此时光标变成“箭头”形状。
问题2:带有 " 2 " 的放大镜图标和带有 " + "的图标有什么区别?
回答:“2”表示放大两倍,“+”表示普通放大。 - 当Layout窗口被打开时,快捷键和热键均可使用。小写字母 [ f ] 或 [ Ctrl+F ] 对应于 " zoom fit all " 功能(全视图)。[ Z ] 表示 " zoom in " (放大)功能。
- 其他热键的定义,可以通过下面两种方式来了解:
a. 将鼠标悬停在按钮上,将出现一个 " 帮助气泡 ",显示该按钮的功能名称和键盘快捷键。
b. 通过Help—Report Hotkey Bindings路径,将会打开一个新窗口,列出热键的定义。可以通过该窗口右上角的 " X " 或 [ Ctrl+w ] 来关闭这个窗口。 - 少数人喜欢用鼠标进行 " 平移 " 和 " 缩放 " ,而不是快捷键或按钮。
具体使用方法:按住鼠标中键(约3秒),会出现功能菜单,然后移动鼠标进行选择即可,如下图:
- 键盘方向键也可以用来进行平移操作。
- 鼠标滚轮也可以用来进行缩放操作(每滑一次,都进行放大/缩小两倍)
在view setting面板,可控制对象的是可视性/可选择性,如下图:
接下来,我们将一次打开一些关键对象的可视性,以便清楚的看到它们所代表的内容。首先,在 " 设置 " 的下拉菜单中,选择 " Auto apply"(确保选择立刻生效)。
a. 在Vis栏(可视化),取消所有选项,保留cell(只显示std cell、macro、IO PAD),如下图:
b. 再选择Pin,可以发现输入、输出和电源连接引脚被显示出来,如下图:
c. 检查route,所有的金属线都可见,如下图。(因为设计还未布线,目前只能看到电源地的 " 预布线 ",如power ring、power straps、power rail)
d. 检查标签。(单元和实例的名字变得可见,通过点击左边的 " + "图标展开标签。检查Pin,利用 [ Z ] 查看标准单元,会发现它的Pin名字变得可见,按 [ F ] 键将视图适合于窗口)
e. 选择Layers选项卡,可以在图层的基础上进一步微调可见性。(在metaL(14)行和 " shape "列的交叉处,点击带有对角线的蓝色正方形,蓝色水平的金属线消失了)
f. 在点击一次,使得metal1再次可见。
g. 选择Objects选项卡,并重新应用初始的设置。
问题3:可视性Vis和可选择Sel栏有什么区别?
回答:“Vis”表示可视,显示对象。“Sel”表示可选择,只有可视的才可选中。
h. 选择Layer选项卡,使用颜色和填充模式回答一下问题:
问题4:红色水平power straps在哪一层?写出名称和编号
回答:metaL3(22)
问题5:绿色的垂直power straps在哪一层1?写出名称和编号
回答:metaL4(26)
可以通过将鼠标悬停在straps上,在左下角会出现一个query窗口,它会显示关于对象的详细信息。(tip:也可通过小写的[q]键,查询详细信息)
- 选择对象:想要选择对象,鼠标光标必须是箭头,表示 " 选择模式 "。若光标不是箭头形式,可通过点击 " 箭头 " 按钮或 [ Esc ] 键获得。
- 用鼠标左键点击不同的单个对象,选中的对象将以白色高亮显示,直到取消选中或选中其他对象。
- 下面将介绍3种方法来取消所有选中的对象:
a. 单击Layout中的任意空白区域(简单高效)
b. 使用菜单 " Select "— " clear "
c. 输入 [ Ctrl+D ] - 用鼠标左键绘制一个矩形,来选择同一区域内的多个对象。
- 按住 Ctrl 键,用鼠标左键选择其他对象,可保留当前选中的对象,并选择其他对象。
- 当多个对象叠加时,可通过多次单击鼠标左键,直到所有对象被高亮显示。也可点击红色水平straps和绿色垂直straps的交叉处。
- 放大Layer到蓝色的核心区域,可通过拖到选择框来选择一些std cells。
- 若被高亮显示(选中)的单元很难被显示,可通过降低未选中单元的亮度,来增加对比度,突出选中单元。如下图:
- 查询对象,有两种方法如下:
a. 一般情况下,当鼠标悬停在对象上时,对象会微亮显示,左下角会出现一个窗口,显示对象的一些关键信息。
b. 若要获得完整查询,先选中对象,然后输入小写字母 [ q ] 或使用菜单 " Select—Query Select ",进行查询。 - 通过点击右上角的 "— "(隐藏)按钮来关闭查询窗口。
- 关闭Layout窗口。从主窗口或Layout窗口点击 " File—Close design ",来关闭当前的Layout。若出现 " 关闭设计 " 窗口,单击 " Discad All " 来关闭设计且不保存。
- 关闭GUI命令。(ICC工具还处于打开状态)
stop_gui #或 gui_stop
5. 获取命令和变量的信息
- ICC可通过 [ Tab ] 键来补全命令名、变量名、文件名和命令选项。在ICC shell命令行中尝试以下操作:
h[TAB]e[TAB]-v[TAB] help[Ennter]
- 若要查看命令或变量的手册页,需要输入完整的命令或变量名称。在不确定准确的名称是什么时,可以使用help命令结合通配符 " * ",来查找命令,变量用printvar进行查找。
如:若想寻找关于某个优化命令的更多信息,但不记得具体的命令名,只记得它包含字符串 " syn "(synthesis)。可以使用下面命令列出所有包含此字符串的命令:
help *syn*
从显示的命令列表中,选取你想要的命令即可。
- 若要列出psynopt的option,使用verbose选项。
help -verbose psynopt #或 help -v psynopt
- 使用man命令,获得完整的命令及其所有选项的详细描述
man psynopt #或 man psyno[Tab]
- 查找变量:printvar。(从列表中找到目标library)
printvar *library*
- 用man获得变量的完整帮助手册。
man target_library #或 man target_l[Tab]
- man还可以查询错误信息。(输入报错编号即可)
man PSYN-025
- 最后,退出ICC工具。
exit #或 quit
LAB 0B 1. 配置窗口
- 将当前目录改为lab0_gui,并调用ICC GUI
cd lab0_gui icc_shell -gui
- 从risc_chip.mw设计库中加载被放置的单元。(File—Open Design)
ICC中有多个窗口,如Main Window和Layout Window(还有更多)。这些顶层窗口可以有多个 " 视图 " 或子窗口。默认情况下。Layout Window包含一个 " 视图窗口 " (微型单元格视图)窗口和一个 " 视图设置 " 面板。这些子窗口和视图可以按照自己喜欢的方式任意摆放,可以通过以下方法来实现。 - 右击View Setting面板的顶部边缘(两条水平线)来取消视图设置面板的固定,并选择 " 浮动 ",此时面板可以移动到任何位置。
- 右键面板顶部边缘,选择Dock再次停靠面板。
- 关闭View Setting面板的方法:单击面板右上角的 " Hide "图标,或右键单击顶部边缘并选择 " Hide "。
- 重新打开View Setting窗口的方法,单击 [ F8 ] 键。
- 在一个布局窗口中显示多个 " 布局视图 “。” View—New Layout View " 打开新的布局视图。通过 " Window—Tile Views " 或 " Cascade Views " 实现级联或平铺。如下图
- 关闭其中一个布局视图。点击一个视图右上角的 " X " 即可。
- 若工具栏中没有 " history buttons ",右键单击工具栏,选择 " Zoom and Pan History " ,则会添加到工具栏中。
- 更改工具栏的默认位置。用鼠标左键点击 " 双垂直栏 " 进行拖动。
- 选择列表:
放大到布局的蓝色核心区域,并选择4或5个std cells。 - 把亮度降到50%。
- 将选择单元以列表形式显示出来:路径:Select—Select List。
- 使用 " Select/Deselect " 从列表中删除所选择的单元。可以使用 " Shift/Ctrl " 选择多个单元。
- 高亮对象:
找到工具栏中的 " 黄色矩形 " 图标,点击下拉菜单并选择红色,然后点击 " 笔状 " 图标,来高亮的选择单元。输入 [ Ctrl+L ] 键调出列表。若想看到单元高亮的颜色,只能取消选择单元或单击空白区域。
问题1:选择列表窗口中是否包含高亮显示的对象?
回答:这个列表只跟踪被选中的对象,而不包含高亮显示对象。
通过单击 " 清除高亮显示 " 按钮或 [ Ctrl+M ] 来清除高亮对象。 - 查询对象:
a. 默认情况下,光标悬停在单元上,左下角会出现一个窗口,显示该对象的一些关键属性。
b. 获得完整信息,输入小写字母 [ q ] 或Select—Query Selection路径。 - 关闭查询窗口,单击右上角的 " Hide " 按钮。
- 若想查询多个对象,点击工具栏中 " i " 图标,或 [ Ctrl+Q ],光标变成 " i " 形状,按 [ Esc ] 退出查询工具。
- 最后一种查找对象信息方法:" Edit—Properties " 或 [ Ctrl+R ] ,该方法也可以更改对象的属性。(标准单元)
- 点击向左向右蓝色箭头,依次选择每个项目,再选择 " All " 框,查看所有选择项的相同属性。
- 取消属性对话框去, [ Ctrl+D ] ,并输入 [ f ] ,亮度调至100%。
- 高亮显示关键路径:选择下图中的Path Slack。
- 单击弹出对话框中的 " Reload " 。
- 单击警告框中的 " 确定 " 按钮。
- 单击Paths Slack中的 " OK " 按钮。可以看到多条彩色的线条,其中最关键路径(最不松弛)用粉色高亮显示,在命名为IO PAD_0处结束。
- 在布局图和原理图之间显示:选择上面提到的IO PAD_0。
- 输入 [ Ctrl+` ] ,将Main Window前置并最大化。
- 选择Schematic—New Path Schematic View—Of Selected Logic。可以看到一个IO pad缓冲器。
- 双击原理图窗口实现最大化,并输入[F]键。选中显示的门,然后右键选择 " Next Fanin/Fanpot Level " 可以看到门单元(双击门好像也可以实现)。
- 取消原理图中选中的对象(白色高亮显示):单击背景区域或输入 [ Ctrl+D ] 。
- 在原理图中,点击右边的缓冲器(IO pad_0),Layout中的IO PAD_0也高亮显示。
- 在原理图中,使用 Crtl 或者鼠标左键的矩形,选中不同的对象,在Layout中也将高亮显示。
- 观看整个路径。右击初始逻辑门,选择 " Add Logic—Paths ",在弹出的对话框中,点击OK,就会显示最关键(最坏)路径。
- 生成整个设计的原理图:首先按 [ Ctrl+D ] 清除Main Window中选中的对象,再选择菜单栏中的Schematic—New Design Schematic View。将打开显示顶层原理图的窗口。
- 这个原理图包含了一个顶层实例I_RISC_CORE,及一些逻辑门。点击该instance(原理图左侧矩形),检查右下角 " Cell " 的名称以确认该实例被选中(如上图)。双击I_RISC_CORE内部,可向下遍历层次结构并查看其原理图。
- 返回顶层原理图级别,单击 " 向上 " 图标。
- 使用Timing Window进行时序分析:用于显示分析Paths Slack列表来检查设计的时间质量。
在Main Window窗口中选择Window—New Timing Analysis Window,然后点击 " OK " ,打开Timing Window对话框。 - 使新窗口最大化。拖到松弛列表,将其向右展开,可以调整列宽和排序。
- 左键单击列表中Slack最小的路径,蓝色高亮显示。在Layout窗口和Main窗口,关键路径均高亮显示(白色)。
- 在Timing窗口可生成直方图、原理图和定时分析器。
单击Schematic按钮,高亮显示路径的示意图将在出现在新窗口(右上角)或新选项卡中。单击Histogram按钮,将出现一组直方图对话框。 [ Ctrl+D ] 清除高亮显示路径。
- 可以同时打开多个Main 窗口、Layout窗口和Timing窗口,也可以打开多个设计,并进行切换。(使用 [ Ctrl+` ] 进行切换)
- 在Main窗口或Layout窗口中使用File—Exit—Discard All退出ICC工具。
总结:
1. 熟悉ICC图形界面的简单操作:
a. ICC的启动与退出(启动:icc_shell/icc_shell -gui;退出:exit)
b. 学会如何去加载设计(若出现打开设计失败,查看是否解压环境有问题)
c. 熟悉Layout窗口的缩放和平移操作(多种方法,如滚动滑轮、命令 Z 或 f、及对应的图标)
d. 学会使用View Setting面板,控制对象的可视性
e. 学会选择和查询对象(选择:鼠标左键单击,或右键拉出矩形框选;查询:悬停在对象上或输入 q 键)
f. 学会获取命令和变量的信息(Tab补全命令, help 和 man 可获取命令与变量的详细信息,这两个会经常用到)
2. 深入了解ICC 图形界面的附加特性:
a. 学会配置GUI 的窗口(拖动面板进行位置摆放,打开多个Layout窗口)
b. 学会将选中对象以列表形式显示出来,并进行高亮显示和信息查询
c. 学会如何去分析时序路径(个人认为这一块比较重要,应着重关注)



