1、实验目的
(1)熟悉 IC Compiler GUI
(2)如何使用命令和变量
2、实验内容
(1)调用和退出集成电路编译器
(2)加载保存的设计
(3)配置“布局窗口”
(4)导航布局视图
(5)选择和查询布局对象。
(6)使用help、printvar和man获得关于命令和变量的帮助和附加信息
3、实验对象
IC Compiler以前放置的设计lab0_gui
4、实验过程
任务1:启动IC Compiler (集成电路编译器)
(1)登录UNIX环境
(2)删除一个图形用户界面窗口配置文件,此文件将存在——其目的是记住您在退出工具之前的最后一个图形用户界面窗口配置,以便下次调用工具时配置看起来相同。
在本实验中,需要从默认窗口配置开始。
(不必要的步骤,此处仅用于确保一致的实验室环境。)
UNIX% rm ~/.config/Synopsys/icc_shell.conf (3)进入实验目录lab0_gui
UNIX$ cd lab0_gui(4)从UNIX提示符启动IC Compiler,
UNIX$ icc_shell 此时xterm UNIX提示符变成 icc_shell >,IC Compiler shell命令提示符。
icc_shell>

(5)查看目录下的文件
icc_shell> ls 
.cmd文件记录所有命令,包括在集成电路编译器启动期间调用的初始化命令。
. log文件记录工具启动后的命令和命令输出。
note:Log文件的命名可以通过初始化文件.synopsys_dc.setup中的变量来定义。
(6)启动GUI
icc_shell> start_gui or gui_start 
一旦设计被加载,这个窗口可以显示原理图和逻辑层次结构浏览器
(7)从risc_chip MilkyWay设计库加载放置的单元格。如下:
(a)在MainWindow点击左上角黄色图标 “open design”
,或者使用菜单命令: File ->Open Design …
(b)“open design”里点击黄色文件夹图标,打开“Select Library”对话框。MilkyWay libraries有一个橙色的“L”图标,选择库文件夹risc_chip.mw,然后点击choose

(c)Open Design对话框的中间现在显示了存储的cel。由于列表中只有一个单元格(放置),它应该已经被选中(用蓝色突出显示)。单击OK打开它。一个名为LayoutWindow.1的新窗口打开。


在布局的外围,输入输出焊盘单元(浅蓝色矩形)在所有4个边上围绕着颜色明亮的中心或核心区域。
在内核和外围或输入输出焊盘区域之间,有绿色和红色金属环用于电源和接地(VDD/VSS)。还有穿过核心的垂直和水平VDD/VSS带,以实现更好的功率分配。
在核心区域的底部有两个内存宏。核心和外围布局以及电源布线是在设计规划阶段定义的。
在放置阶段,标准单元格已自动放置在水平放置行中(内存宏上方较暗的蓝色区域)。行和标准单元格的详细信息可能不可见。
一旦你知道如何缩放(任务2),你就能更好地看到标准单元格。
蓝色区域由水平延伸的窄金属线、VDD/VSS轨组成,用于向标准电池分配电能。
note:布局窗口有自己的一组菜单项。其中一些条目与主窗口共享,而另一些条目是布局窗口独有的。设计的大部分物理处理可以通过这个菜单系统的命令来完成。
任务2:导航布局视图
(1)熟悉布局窗口中的缩放和平移按钮( zoom and pan buttons)
平移和缩放时,请注意概览窗口(布局窗口左上角的小“上下文”窗口)中的黄色矩形是如何识别正在显示的设计区域的。

(2)当布局窗口LayoutWindow激活时(即当前选中),也可以使用“Hot keys”。例如,小写[F]或[Ctrl F]都对应于“缩放至适合所有”(或全图)。[Z]是放大。
(3) 可以通过两种方式找到其他Hot keys定义:将鼠标悬停在按钮上,会出现一个“气球帮助”,显示功能名称和键盘快捷键。
也可以下拉菜单Help ->Report Hotkey Bindings,将出现一个新视图,列出Hot keys定义。
要关闭此视图Window -> Close View or [Ctrl W]

(4)用鼠标“划”来平移和缩放
放大感兴趣的区域:[Z]和[Esc]。
现在点击并按住鼠标中键,同时上下移动指针并保持不动。笔画菜单出现在指针附近:

释放中间的按钮,设计应该缩放到适合显示窗口(“缩放适合所有”)。
要在向上(向左或向右)45°的方向上放大区域“笔画”(按下中间按钮移动鼠标)——视图应该放大到由笔画定义的矩形区域。
向下划45,缩小。东/西方向的笔划平移显示,以便笔划的起点移动到窗口的中心。
note:
可以使用get_gui_stroke_bindings和set_gui_stroke_binding命令来查询或定义自己的笔画。
““Hot keys”可以使用gui_set_hotkey来定义。
(5)键盘箭头键也可用于平移显示器北/南/东/西。
(6)如果您的鼠标有滚轮,它可以用来放大/缩小(2倍或X倍)鼠标指针区域。
任务3:控制图层可见性
通过“ View Settings”面板控制在查看窗口中哪些类型的对象是可见的和/或可选择的。
首先,确保在“ Options”下拉菜单下“Auto apply ”已被选中:这样选择会立即应用,而不必每次都单击“ Apply ”按钮。

(a)Vis列:取消选中除单元格以外的所有内容。仅显示标准、宏和输入输出焊盘单元( standard-, macro- and IO padcells )。
(b)现在也检查Pin。显示电池的输入、输出和电源连接引脚。
(c)检查路线 Route,所有金属路线都变得清晰可见。由于设计尚未布线,因此只能看到电源/接地“预布线”(来自设计规划阶段)。您应该可以看到核心周围的电源环,以及穿过核心区域的垂直和水平带。
(d)检查 Labels。单元格和实例名称变得可见。通过单击左侧的“+”图标展开标签。检查Pin。放大其中一个标准单元格实例,它的pin名称现在可见。使视图适合窗口[F]。
(e)选择 Layers选项卡,该选项卡可用于逐层进一步“微调”可见性。在标有“METAL(14)”的行和标有“Shape”的列的交叉处,单击带有对角线的蓝色正方形。蓝色水平金属轨消失。METAL (= metal 1)
(f)让“metal 1”再次可见。
(g)选择“Objects ”选项卡,并重新应用上面面板中显示的原始可见性设置。
可以通过将指针悬停在其中一条带子上来确认你的发现。将出现一个“查询”窗口,显示有关对象的信息,包括其图层名称。
任务4:选择和查询对象
(1)选择对象:
为了能够选择对象,鼠标光标必须是一个箭头,表示“select mode”。如果光标没有处于选择模式,请单击arrow按钮或按[Esc]键。
(2)尝试用鼠标左键点击选择不同的单个对象。选中的对象将以白色高亮显示,并一直高亮显示,直到未选中,或者选择了另一个对象。
(3)取消选择所有对象:
通过点击布局中的空白区域
通过使用菜单Select ->Clear
通过输入 [Ctrl D]
(4)用左键“drag-and-draw”选择同一区域内的多个对象。选定绘制矩形内的所有对象。
(5)在鼠标左键点击选择的同时,按住[Ctrl]键保留选中的对象,并选择其他对象。
(6)通过反复点击鼠标左键,你可以循环使用“stacked”对象(多个对象叠加在一起),直到目标对象高亮显示。尝试一下,点击十字路口的红色水平,和绿色垂直电源/地环。
(7)放大到蓝色核心区域。通过在标准单元格周围拖动选择框来选择一些标准单元格。
(8)如果在其他明亮的物体中很难注意到高亮的(选中的)物体,可以降低未选中物体的“Brightnes”,从而增加对比度。“亮度”控制位于视图设置面板的顶部。将亮度降低到50%,以看到改善的对比度。
(9)查询对象:
默认情况下,当光标箭头悬停在一个对象上时,该对象会轻微高亮显示,左下角会出现一个查询“摘要”窗口,显示该对象的一些关键属性。
要获得“完整查询”,选择一个标准单元格,输入小写字母[Q]或使用菜单项:Select -> Query Selection。一个窗口将打开并列出所选单元格的所有属性值。
(10)单击右上角的“Hide”减号关闭查询窗口
(11)在 MainWindow o或 LayoutWindow 中使用File ->Close Design ,关闭LayoutWindow中的当前设计。如果出现Close Design ”对话框,单击“Discard All ”关闭设计而不保存它。
(12)您已经完成了GUI的使用。要关闭GUI,同时保持IC Compiler会话活动,输入:
stop_gui or gui_stop MainWindow现在关闭了,但是在UNIX窗口中IC Compiler shell仍然是活动的。
任务5:获取命令和变量的帮助
(1) IC Compiler支持命令名,变量名,文件名和命令选项“completion”通过[Tab]键。在IC Compiler命令shell窗口中尝试以下操作:
h[Tab]e[Tab] –v[Tab] help[Enter] (2)要查看命令(man)或变量的手册页,您需要输入确切的命令或变量名称。或者,您可以输入命令/变量的开始字符,然后使用command completion来查找剩余的字符。
如果您不确定确切的名称是什么,请对命令使用help,对变量使用printvar,并使用 * 通配符。以下是一些例子:
假设您正在寻找关于某个优化命令的更多信息。您不记得确切的命令名,但您知道它包含字符串“syn”(表示“synthesis”)。要列出包含此字符串的所有命令,请输入:
help *syn*从显示的命令列表中选择您感兴趣的命令,即psynopt。
(3)要列出psynopt的可用选项,请使用verbose选项:
help –verbose psynopt
or
help –v psynopt (4)要获得完整的help手册页—命令及其所有选项的详细描述,输入:
man psynopt
or
man psyno[Tab] (5)现在让我们假设你需要一个特定变量的帮助,但同样,你不记得它的确切名称,但它包含“library”。要列出所有包含此字符串的变量,输入:
printvar *library* 从列表中确定感兴趣的变量,即target_library。
注意,printvar命令还列出了每个变量的当前值。
(6)要获得该变量的完整帮助手册页,输入:
man target_library
or
man target_l[Tab] (7)最后,您还可以使用唯一的消息代码获得关于错误或警告消息的额外帮助,例如:
man PSYN-025 (8)退出IC Compiler shell:
exit or quit