微电子学实验室实验教程ASIC综合器软件——DesignCompiler实验2006-7DesignCompiler实验第2页,共24页前言DesignCompiler(简称DC)是synopsys公司的ASIC综合器产品,它可以完成将硬件描述语言所做的RTL级描述自动转换成优化的门级网表。DC得到全球60多个半导体厂商、380多个工艺库的支持。Synopsys的逻辑综合工具DC占据91%的市场份额。DC是工业界标准的逻辑综合工具,也是Synopsys最核心的产品。它使IC设计者在最短的时间内最佳的利用硅片完成设计。它根据设计描述和约束条件并针对特定的工艺库将输入的VHDL或者Verilog的RTL描述自动综合出一个优化的门级电路。它可以接受多种输入格式,如硬件描述语言、原理图和网表等,并产生多种性能报告,在缩短设计时间的同时提高设计性能。本实验对DC软件的使用进行简单的介绍,熟悉和掌握综合器软件使用中的基本概念和术语,了解如何对数字电路施加约束,掌握同步数字电路设计、约束和优化的方法,了解时钟的概念,理解同步电路静态时序分析(STA)的方法和时序报告。西安交通大学微电子学实验室第1页,共24页实验1setup和synthesis流程实验准备有两种界面可以运行DesignCompiler:1)命令行界面,dc_shell-xg-t;2)图形用户界面(GUI),DesignVision。本次实验主要运用GUI模式。图1.1给出了RTL逻辑综合的直观概念和简要流程。在DC中,总共有8种设计对象:z设计(Design):一种能完成一定逻辑功能的电路。设计中可以包含下一层的子设计。z单元(Cell):设计中包含的子设计的实例。z参考(Reference):单元的参考对象,即单元是参考的实例。z端口(Port):设计的基本输入输出口。z管脚(Pin):单元的输入输出口。z连线(Net):端口间及管脚间的互连线。z时钟(Clock):作为时钟信号源的管脚或端口。z库(Library):直接与工艺相关的一组单元的集合。图1.1RTL逻辑综合的直观概念和简要流程。DesignCompiler实验第2页,共24页检查.synopsys_dc.setup文件DC使用名为“.synopsys_dc.setup”的启动文件,用来指定综合工具所需要的一些初始化信息。启动时,DC会以下述顺序搜索并装载相应目录下的启动文件:1)、DC的安装目录;2)、用户的home目录;3)、当前启动目录。1.将实验文件拷至自己的工作目录:uunniixx%%ccdd~~uunniixx%%ccpp––rr//ccaadd//LLaabbss//ssyynnooppssyyss//ddcc//DDCC__11__22000044..1122..//2.进入risc_design文件夹。用文本编辑器或者文本编辑命令vi打开.synopsys_dc.setup文件。uunniixx%%ccddDDCC__11__22000044..1122//rriisscc__ddeessiiggnnuunniixx%%llss––aa3.检查以下语句是否在.synopsys_dc.setup文件中。settarget_librarycore_slow.dbsetlink_library*core_slow.dbsetsymbol_librarycore.sdbsetsh_enable_line_editingtrueztarget_library用于设置综合时所要映射的库,target_library中包含有单元电路的延迟信息,DC综合时就是根据target_library中给出的单元电路的延迟信息来计算路径的延迟。zlink_library是链接库,它是DC在解释综合后网表时用来参考的库。一般情况下,它和目标库相同;当使用综合库时,需要将该综合库加入链接库列表中。注意:在link_library的设置中必须包含’*’,表示DC在引用实例化模块或者单元电路时首先搜索已经调进DCmemory的模块和单元电路,如果在linklibrary中不包含’*’,DC就不会使用DCmemory中已有的模块,因此,会出现无法匹配的模块或单元电路的警告信息(unresolveddesignreference)。zsymbol_library为指定的符号库。symbol_library是定义了单元电路显示的Schematic的库。用户如果想启动design_analyzer或design_vision来查看、分析电路时需要设置symbol_library。zsynthetic_library是DesignWare综合库,在初始化DC的时候,不需要设置标准的DesignWare库standard.sldb用于实现HDL描述的运算符,对于扩展的DesignWare,需要在synthetic_library中设置,同时需要在link_library中设置相应的库以使得在链接的时候DC可以搜索到相应运算符的实现。zsearch_path指定了综合工具的搜索路径。图1.2给出了实验将要用到的文件夹risc_design的结构。实验的HDL源代码(sourcecode)已经被转换为ddc格式,保存在子文件夹unmapped下。注意:在所有实验中,都必须在文件夹下risc_design启动DesignCompiler。西安交通大学微电子学实验室第3页,共24页启动designvision1.在risc_design目录下启动designvision。留意LOG区域的信息”StartingshellinXGmode…”risc_designsynopsys.setuprisc_designdesign_vision-xg2.选择菜单File—Setup,检查库是否设置正确。点击Cancel关闭窗口。图1.2文件夹risc_design的结构图1.3designvision图形用户界面(GUI)DesignCompiler实验第4页,共24页3.在启动designvision的Terminal窗口,输入以下命令进一步确认库设置变量(librarysetupvariable)。design_vision-xg-tprintvartarget_librarydesign_vision-xg-tprintvarlink_librarydesign_vision-xg-tprintvarsymbol_librarydesign_vision-xg-tprintvarsearch_path读入文件1.选择菜单File—Read或者直接点击,双击文件夹unmapped/,选中PRGRM_CNT_TOP.ddc并打开。在Hier.1窗口你将看到PRGRM_CNT_TOP,I_PRGRM_FSM,I_PRGRM_DECODE,I_PRGRM_CNT的图标。2.选择菜单File—LinkDesign—OK,查看LOG区域有无warning或error信息。3.在designvision图形用户界面下方或在启动designvision的Terminal窗口,输入以下命令,观察LOG区域。图1.5Hier.1窗口图1.4库设置对话框西安交通大学微电子学实验室第5页,共24页design_vision-xg-tlist_designsdesign_vision-xg-tlist_libs熟悉Designs-,Symbol-,Schematic-视图1.Designs视图:左键单击选中PRGRM_CNT_TOP,在窗口右下方将观察到:。2.Symbol视图:单击工具栏黄色图标,进入Symbol视图。3.Schematic视图:单击工具栏黄色图标,进入Schematic视图。4.现在图形用户界面有三个窗口,最大化其中的一个,点击中不同的按钮,可以显示不同的窗口。5.显示Hier.1窗口,在LogicHierarchy窗口分别选中I_PRGRM_FSM,图1.6Symbol视图图1.7Schematic视图DesignCompiler实验第6页,共24页I_PRGRM_DECODE,I_PRGRM_CNT,单击工具栏黄色图标和,显示它们的Symbol和Schematic视图。6.除PRGRM_CNT_TOPSchematic视图外,关闭其它视图窗口。双击标有PRGRM_CNT的块(BLOCK),点击工具栏图标回到PRGRM_CNT_TOPSchematic视图。用Script文件加约束1.打开PGRRM_CNT_TOPSymbol视图。2.选择菜单File—ExecuteScript...,弹出对话框。选中/scripts文件夹下的example.tcl文件,选中Echocommands选项,然后点击Open。example.tcl文件中设置了以下内容:1)时钟周期4ns,时钟歪斜(skew)0.35ns;2)除时钟Clk端口(port)外,其它所有输入端口由库单元fdef1a2驱动;3)除时钟Clk端口外,其它所有输入端口最大输入延迟(maxinputdelay)为2.0ns;4)所有输出端口最大输出延迟为2.0ns;5)所有输出端口负载为15×ssc_core_slow/and2a1/A,表示负载是ssc_core_slow库中and2a1单元的管脚A负载的15倍;6)互连线负载模型为5KGATES;7)最大面积为2000。电路的面积单位有可能是2输入与非门、晶体管或um2。目标库到底用哪种面积单位,需要咨询库的供应商。ssc_core_slow中单元and2a1的面积是12.54。图1.8用Script文件加约束对话框西安交通大学微电子学实验室第7页,共24页编译(compile)1.在designvision窗口下方输入:design_vision-xg-tcompile2.观察I_PRGRM_FSM,I_PRGRM_DECODE,I_PRGRM_CNT的Schematic视图。时序(Timing)和面积(Area)报告1.返回到PRGRM_CNT_TOPSymbol视图。2.将鼠标停留在工具栏柱状图图标上,将会出现关于图标作用的提示,点击PathSlackHistogram图标,弹出对话框,直接点OK。3.在启动designvision的Terminal窗口输入:design_vision-xg-treport_constraint–all_violators记录以下信息:最大延迟(MaxDelay):LargestViolation(Slack)__________________________最大面积(MaxArea):ActualArea______________________________________注意:你也可以分别用report_timing和report_area命令来报告最大延迟和最大面积。4.显示PRGRM_CNT_TOPSchematic视图。5.选择菜单View—Hihglight—CriticalPath,显示最关键路径。6.取消highlight选择:View—Hihglight—ClearAll(Ctrl+M)。保存设计1.返回到PRGRM_CNT_TOPSymbol视图。2.选择菜单File—SaveAs,弹出对话框。双击文件夹/mapped,确认SaveAllDesignsInHierarchy按钮被选中。输入my_first_design.ddc,点击save。DesignCompiler实验第8页,共24页3.选择history按钮,点击按钮SaveContentsAs,将命令历史保存在risc_design文件夹下,命名为run_dvxg.txt。退出designvision1.选择菜单File—RemoveAllDesigns,清除designvision内存中的所有设计(design)文件。2.在designvision图形用户界面