IC Compiler 实验一

 

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 

 


版权声明:本文为weixin_41788560原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。