1、DC 学习-第一章 基本概念作者:未知 时间:2010-08-15 15:02:50 来自:网络转载 1.1 启动文件启动文件用来指定综合工具所需要的一些初始化信息。DC 使用名为“.synopsys_dc.setup”的启动文件,启动时,DC 会以下述顺序搜索并装载相应目录下的启动文件:1)、DC 的安装目录;2)、用户的 home 目录;3)、当前启动目录。注意:后装载的启动文件中的设置将覆盖先装载的启动文件中的相同设置。下面是一个 DC 启动文件的实例,它包含了几乎所有重要的设置,下文将结合该实例解释启动文件中各项设置的具体含义。例 1-1(一个 DC 启动文件):search_path
2、= search_path + “.”, synopsys_root + “/dw/sim_ver” search_path= search_path + “/risc32/synthesis/libraries” target_library= tcb773stc.db synthetic_library=dw_foundation.sldblink_library = “*”, dw_foundation.sldb, tcb773stc.db symbol_library = tcb773s.sdb synlib_wait_for_design_license = “DesignWare-
3、Foundation“alias rt “report_timing”designer= XXXXXcompany= “ASIC Lab, Fudan Univ.”search_path 指定了综合工具的搜索路径。target_library 为综合的目标库,它一般是由生产线提供的工艺相关的库。synthetic_library 是综合库,它包含了一些可综合的与工艺无关的 IP。dw_foundation.sldb 是Synopsys 提供的名为 Design Ware 的综合库,它包含了基本的算术运算逻辑、控制逻辑、可综合存储器等 IP,在综合是调用这些 IP 有助于提高电路性能和减少综合时
4、间。 link_library 是链接库,它是 DC 在解释综合后网表时用来参考的库。一般情况下,它和目标库相同;当使用综合库时,需要将该综合库加入链接库列表中。symbol_library 为指定的符号库。synlib_wait_for_design_license 用来获得 DesignWare-Foudation 的许可(license)。alias 语句与 UNIX 相似,它定义了命令的简称。最后的 designer 和 company 项则表明了设计者和所在公司。另外,在启动文件中用符号 “/*” 和 “*/” 进行注释。1.2 设计实体在 DC 中,总共有 8 种设计实体: 设计(
5、Design) :一种能完成一定逻辑功能的电路。设计中可以包含下一层的子设计。单元(Cell):设计中包含的子设计的实例。 参考(Reference) :单元的参考对象,即单元是参考的实例。端口(Port):设计的基本输入输出口。 管脚(Pin):单元的输入输出口。连线(Net):端口间及管脚间的互连信号。 时钟(Clock) :作为时钟信号源的管脚或端口。库(Library):直接与工艺相关的一组单元的集合。1.3 寻找设计实体在 DC 中使用 find 命令寻找设计实体,其语法为:find -hierarchy :上节所述的 8 种类型 :用来匹配的关键词,其中可带 “*” 统配符 -hi
6、erarchy:指令 DC 搜索所有设计层次例 1-2(find 命令的使用):find (cell, *U*)find (net, “*”)find (design, A_*, B_* -hierarchy)另外,使用 all_inputs()和 all_outputs()可以得到设计所有的输入端口和输出端口。1.4 编译器指示语句有时,可以利用 HDL 描述中的一些特定的注释语句来控制综合工具的工作,从而弥补仿真环境和综合环境之间的差异,这些注释语句称为编译器指示语句(Compiler Directives)。1.4.1 Verilog 编译器指示语句1) translate_off/ t
7、ranslate_on这组语句用来指示 DC 停止翻译 “/synopsys translate_off”之后的 Verilog 描述,直至出现 “/synopsys translate_on”。当 Verilog 代码钟含有供仿真用的不可综合语句时,这项功能能使代码方便地在仿真工具与综合工具之间移植。 例 1-3(translate_off/ translate_on 指示语句的使用):/synopsys translate_off/*仅供仿真用语句*/synopsys translate_on/*可综合语句*/2) parallel_case/ full_caseDC 可能使用带优先级的结
8、构来综合 Verilog 的 case 语句,为避免这种情况,可以使用“/synopsys parallel_case”指示 DC 将 case 语句综合为并行的多路选择器结构。例 1-4(parallel_case 指示语句的使用):always (state)begincase (state) /synopsys parallel_case2b00: new_state = 2b01;2b01: new_state = 2b10;2b10: new_state = 2b00;default: new_state = 2b00;endcaseend另外,Verilog 允许 case 语句不
9、覆盖所有可能情况,当这样的代码由 DC 综合时将产生锁存器。为避免这种情况,可以使用 “/synopsys full_case”指示 DC 所有可能已完全覆盖。例 1-5(full_case 指示语句的使用):always (sel or a1 or a2)begincase (sel) /synopsys full_case2b00: z = a1;2b01: z = a2;2b10: z = a1 endcaseend1.4.2 VHDL 编译器指示语句1) translate_off/ translate_on作用同 Verilog,注意需要使用符合 VHDL 语法的注释:-synops
10、ys translate_off-synopsys translate_on也可以使用:-pragma translate_off-pragma translate_on需要注意的是,在 VHDL 中使用了以上编译指示语句后,DC 仍会对 translate_off/on 之间的描述进行语法检查,若想避免这一点,可以改变以下变量的值:hdlin_translate_off_skip_text = true2) synthesis_off/ synthesis_on其作用和语法均类似于 translate_off 和 translate_on,只是它的作用不受上述变量控制。DC 学习-第二章 设
11、计入口作者:未知 时间:2010-08-15 15:04:19 来自:网络转载 2.1 软件的启动在 UNIX 下执行 dc_shell 即可启动 DC 的命令行界面,执行 design_analyzer& 即可启动相应的图形界面。启动以后的图形界面如图 2-1 所示。 在图形界面中若需要执行命令行,可以用 Setup-Command Window 菜单打开命令行功能,如图 2-2 所示。在软件启动时,启动文件中所定义的变量均已加载,若希望改变其他变量的值,可以在 Setup-Variable 中进行,如图 2-3 所示。2.2 设计的读入设计的读入有两种方法:analyze + elabor
12、ate 和 read。2.2.1 analyze + elaborateanalyze 命令用以分析、翻译 RTL 代码,并将中间结果存入指定的库中。其语法为:analyze-library -format -library :指定中间结果所存放的库,即 UNIX 下的一个目录,缺省为当前目录(WORK)-format :RTL 源文件的类型,即 Verilog 或 vhdl :所有需要分析的源文件名,若有多个文件,则用“”括起例 2-1 (将直接数字频率合成器的所有设计源文件读入 lib1 库中):hdlin_enable_presto = false /*禁止 Presto 编译器功能*/
13、define_design_lib lib1 -path “./lib1” /*将目录 ./lib1 映射为一个设计库*/analyze library lib1 format verilog croma.v, cromb.v, ddfs.v, froma.v, fromb.v在图形界面中,选择 File - Analyze,在弹出的 Analyze File 对话框的 File 域中填入源文件名,并在 Library 域中填入 “lib1”,选中 “Create New Library if it Doesnt Exist” 复选框,点 OK 即可(如图 2-4 所示)。 Elaborate
14、 命令用于为设计建立一个结构级的与工艺无关的描述,为下一步的工艺映射做好准备。命令的一般格式为:elaborate-library -architecture -parameters -update :需要描述的设计-library :设计的分析结果所在的库-architecture :需要分析的构造体,针对 VHDL 描述中同一个实体对应多个构造体的情况;对于 Verilog 描述,改选项可缺省或为 verilog -parameters :在这里给设计中的参数重新赋值,若省略则参数使用缺省值 -update:要求综合器自动更新所有过期的文件例 2-2 (将先前读入的设计产生结构级描述,并设
15、置相应的参数值):elaborate ddfs library lib1 architecture “verilog” parameters “PAL_sub = 32h20098ACB, NTSC_sub = 32h06F07BD6” update由于重置了参数值,顶层的设计名称变为 “ddfs_20098acb_06f07bd6”,为方便起见,将顶层设计名改为 “ddfs”:rename_design ddfs_20098acb_06f07bd6 ddfs在图形界面中,选择 File - Elaborate 菜单,在弹出的 “Elaborate Design” 对话框的Library 域中
16、选择 lib1,在 Design 域中选择 ddfs,填入相应的参数值并选择 “Re-Analyze Out-of-Date Libraries” 复选框后点 OK(如图 2-5 所示)。完成以上步骤后,即可看到所有成功读入的设计模块,如前所述,利用命令行将顶层设计名改为 “ddfs”。在图形界面中,双击 ddfs 设计即可看到该设计的符号描述(如图 2-6 所示);点击界面左栏中的与门标志按钮即可看到电路级描述(如图 2-7 所示),该描述是由 DC 生成的与工艺无关的中间结果,将来用户通过 Compile 命令将该结果映射到相应的工艺库上。点击界面左栏中的芯片标志按钮又可回到符号描述。 2
17、.2.2 read 命令使用 read 命令可以一步完成 analyze+elaborate 的工作,并且 read 命令还可以用来读取 db、EDIF等格式的设计(analyze+elaborate 仅能用于 VHDL 和 verilog)。但是,read 命令无法支持参数修改、VHDL 中的构造体选择等功能。该命令的语法为:read-format -format :源文件的类型,如 verilog, vhdl, edif, db 等 :所有需要读入的源文件名,若有多个文件,则用“”括起例 2-3 (利用 read 命令将读取直接数字频率合成器的所有设计源文件):read -format v
18、erilog croma.v, cromb.v, ddfs.v, froma.v, fromb.v在图形界面中,选择 File - Read 菜单,在弹出的 “Read File” 对话框中选择相应的文件打开即可(如图 2-8 所示)。2.3 链接在进一步工作之前,需要将设计中调用的子模块与链接库中定义的模块建立对应关系,这一过程叫做链接。这一过程可以利用 link 命令显式地完成,也可以将来综合时利用 compile 命令隐式地进行。推荐每次设计读入以后都用 link 命令执行一次链接。注意:由于该命令以及以后提到的大部分命令均对当前设计(current_design)进行操作,所以在执行该
19、命令前应正确设置 current_design 变量。例 2-4(链接直接数字频率合成器的顶层设计:ddfs):current_design ddfs /*将 ddfs 设置为当前设计*/link在图形界面中,单击选中 ddfs 模块,选择 Analysis - Link Design 菜单即可看到设计链接对话框。对话框中的 “Search Path” 和 “Link Library” 域就是用户在启动文件中定义的值。选中 “Search Memory First” 复选框将指示 DC 首先搜索内存来匹配相应的模块。设计链接菜单和对话框如图 2-9 所示。一般有两种情况可能导致链接过程出错:1
20、)、设计中所调用子模块的描述文件没有读入;2)、设计中使用了工艺库中的单元,但该工艺库没有加入链接库(link_library)或因为搜索路径(search_path)设置有误而导致 DC 无法正确定位链接库。2.4 实例唯一化当设计中的某个子模块被多次调用时就要对设计进行实例唯一化。实例唯一化就是将同一个子模块的多个实例生成为多个不同的子设计的过程。之所以要进行实例唯一化是因为 DC 在综合时可能使用不同的电路形式来实现同一个子模块的不同实例,从而这些实例在 DC 看来是一些不同的设计(尽管它们来源于同一个模块并且具有相同的逻辑功能)。使用 uniquify 命令可以完成实例唯一化的工作(该
21、命令对当前设计有效)。例 2-5(将 ddfs 设计进行实例唯一化):current_design ddfsuniquify在图形界面中,选中 ddfs 模块,选择 Edit - Uniquify - Hierarchy 菜单即可完成实例唯一化(如图 2-10 所示)。注意:若设计中不存在同一子模块被多次调用的情况(比如上例中的 ddfs 设计),可不必进行实例唯一化,但仍推荐进行。DC 学习-第三章 设计环境作者:未知 时间:2010-08-15 15:07:55 来自:网络转载 设计环境是指电路工作时的温度、电源电压等参数,以及输入驱动、输出负载、线上负载等情况。3.1 设置电路的工作环境
22、一般的工艺库将温度、电源电压、工艺偏差、互连模型等参数的影响均归结为工作环境(operating_conditions),采用 report_lib 命令可以列出工艺库中的各项参数(包括工作环境)。例 3-1(列出工艺库 tcb773stc 中的各项参数):report_lib tcb773stc生成报告的头部如下所示(其中黑体部分就是该工艺库中定义的工作环境):*Report : libraryLibrary: tcb773stcVersion: 2000.05-1Date : Jun 30 12:14:58 2002*Library Type : TechnologyTool Create
23、d : 1998.08Date Created : Fri Aug 27 14:02:39 EAT 1999 Library Version : 210Comments : Copyright TSMCTime Unit : 1nsCapacitive Load Unit : 1.000000pfPulling Resistance Unit : 1kilo-ohmVoltage Unit : 1VCurrent Unit : 1mAPower Unit : 1pWLeakage Power Unit : 1pWBus Naming Style : %s%d (default)Operatin
24、g Conditions:Name Library Process Temp Volt Interconnect Model-WCCOM tcb773stc 1.30 125.00 3.00 worst_case_treeNCCOM tcb773stc 1.00 25.00 3.30 balanced_treeBCCOM tcb773stc 0.76 0.00 3.60 best_case_tree注意:WCCOM 是 “Worst-Case-COMmercial” 的缩写;NCCOM 是 “Normal-Case-COMmercial” 的缩写;BCCOM 是 “Best-Case-COMm
25、ercial” 的缩写。set_operating_conditions 命令用来设置设计的工作环境(该命令对当前设计有效),其语法为:set_operating_conditions-library -library :定义工作环境的库,若当前仅读入唯一的目标库,则改选项可省略 :设置的工作环境例 3-2(将 ddfs 设计的工作环境设为 “WCCOM” ):current_design ddfsset_operating_conditions -library tcb773stc WCCOM在图形界面中,选中 ddfs 设计,选择 Attributes - Operating Enviro
26、nment - Operating Conditions 菜单,即弹出工作环境对话框。在此对话框中即可选择相应的工作环境(此例中选择 WCCOM)。这一过程如图 3-1 所示。 3.2 设置连线负载连线负载用来估算设计内部互连线上的寄生参数,从而估计由于连线造成的时间延迟,使得综合结果能够尽量接近实际中的物理情况。DC 中的连线负载设定包括两部分:连线负载大小和连线负载模式。3.2.1 设置连线负载大小一般的工艺库通过设计的规模来表征连线负载的大小,在使用时,根据实际设计的规模选用相应的连线负载即可。下文所示的是对 tcb773stc 运行 report_lib 而生成报告的一部分,他描述了该
27、库中可供选择的连线负载大小的种类以及各自对应的设计规模,例如:设计面积在 360000m2 到 810000m2 之间则对赢得连线负载为 TSMC16K。此外,相同的设计规模所对应的连线负载还有保守的(Conservative)和激进的(Aggressive)之分。 Wire Loading Model Selection Group:Name : WireAreaConSelection Wire load namemin area max area-0.00 360000.00 TSMC8K_Conservative360000.00 810000.00 TSMC16K_Conservat
28、ive810000.00 1690000.00 TSMC32K_Conservative1690000.00 3240000.00 TSMC64K_Conservative3240000.00 5760000.00 TSMC128K_ConservativeWire Loading Model Selection Group:Name : WireAreaAgrSelection Wire load namemin area max area-0.00 360000.00 TSMC8K_Aggresive360000.00 810000.00 TSMC16K_Aggresive810000.0
29、0 1690000.00 TSMC32K_Aggresive1690000.00 3240000.00 TSMC64K_Aggresive3240000.00 5760000.00 TSMC128K_AggresiveWire Loading Model Mode: segmented.使用 set_wire_load_model 命令来设置连线负载,其语法为:set_wire_load_model-name -library -name :设定的连线负载-library :定义工作环境的库,若当前尽读入唯一的目标库,则改选项可省略 :设定连线负载的对象例 3-3(将 ddfs 的连线负载设为
30、 TSMC8K_Conservative):set_wire_load_model name TSMC8K_Conservative -library tcb773stc ddfs在图形界面中,选中 ddfs 设计,选择 Attributes - Operating Environment - Wire Load 菜单,即弹出连线负载设置对话框。在此对话框中即可选择所需的连线负载(此例中选择TSMC8K_Conservative)。这一过程如图 3-2 所示。 3.2.2 设置连线负载模式连线负载模式规定了跨越多个模块层次的连线其连线负载的计算方式,DC 供支持三种连线负载模式: top:某一
31、模块的连线负载设为 top 模式意味着该模块及其子模块中所有连线的连线负载大小均取该模块的值 enclosed:某一模块的连线负载设为 enclosed 模式意味着该模块及其子模块中所有连线的连线负载大小的取值与恰好能完全包含该连线的最底层模块的连线负载大小一致。segmented:这是一种分段模式,意味着一根连线上不同段的连线负载不同,某一段地连线负载与恰好包含该段的最底层模块的连线负载大小一致。set_wire_load_mode 命令用来设置连线负载模式(该命令对当前设计有效),该命令的格式如下:set_wire_load_mode :连线负载模式的名称,为 “top”、“enclose
32、d”、“segmented”中的一项例 3-4(将 ddfs 的连线负载模式设为 top):current_design ddfsset_wire_load_mode top注意:该功能无法通过图形界面实现3.3 设置输出负载为了更精确地计算电路的延时,DC 需要知道设计的输出端驱动的负载大小(主要是电容)。用户可以通过 set_load 命令来为输出端设置负载(该命令对当前设计有效),其语法为:set_load :设定的负载电容值,必须为非负数,其单位在库文件中定义 :设定负载电容的对象,可以是输出口、输出管脚、互连线等例 3-5(将 ddfs 的所有输出口的输出负载设为 0.1pF)cur
33、rent_design ddfsset_load 0.1 all_ouputs()在图形界面中,进入 ddfs 设计的符号描述,选中一组输出端口,选择 Attributes - Operating Environment - Load 菜单。在弹出的 Load 对话框的 Capacitive load 域中填入 1.00 即可(如图 3-3 所示)。 3.4 设置输入驱动为了精确计算电路的延时,DC 还需知道设计输入端的驱动能力的情况。用户可以利用set_driving_cell 命令来指定一个驱动设计输入端的外部单元(该命令对当前设计有效),该命令的格式如下:set_driving_cell
34、-lib_cell -library -pin -no_design_rule-lib_cell :用于驱动设计输入端的外部单元名称-library :上述单元所在库的名称,若当前仅读入唯一的目标库且驱动单元就在该库中,则改选项可省略-pin :用于驱动设计输入端的外部单元管脚的名称 -no_design_rule:改选项要求 DC 忽略外部驱动单元管脚上的设计规则 :设置驱动的设计端口例 3-6(将 ddfs 的所有输入端的驱动单元设置为 DFF1 的管脚 Q,并忽略该管脚上的设计规则)current_design ddfsset_driving_cell lib_cell DFF1 pin
35、 Q no_design_rule all_inputs()注意:该项功能无法通过图形界面实现。由于通常情况下,设计的时钟和复位端都由驱动能力很大的单元或树形缓冲来驱动,所以可以用set_drive 命令将这两个端口的驱动设为无穷大(该命令对当前设计有效),命令语法为:set_drive :非负的驱动阻抗,该值越小表示驱动能力越大 :设置驱动能力的端口名例 3-7(将 ddfs 的时钟和复位端的驱动设为无穷大,即驱动阻抗设为零):current_design ddfsset_drive 0 clk, reset在图形界面中,进入 ddfs 设计的符号描述,选中其中一个输入端口,选择 Attri
36、butes - Operating Environment - Drive Strength 菜单。弹出 Drive Strength 对话框后,将 Rise Strength和 Fall Strength 域都设为 0 即可(如图 3-4 所示)。 DC 学习-第四章 设计约束作者:未知 时间:2010-08-15 15:09:34 来自:网络转载 设计约束描述了设计的目标,这里所说的设计目标主要包括时延目标和面积目标两部分,相应的,设计约束也由时延约束和面积约束两部分组成。4.1 时序电路的时延约束时序电路的时延约束主要包括时钟主频、输入延时、输出延时等内容。4.1.1 创建时钟在 DC
37、中使用 create_clock 命令创建系统时钟(该命令对当前设计有效),该命令的语法如下:create_clock-period -waveform :设计的时钟端口-period :时钟周期,单位一般为 ns-waveform :时钟上升沿和下降沿的时刻,从而决定时钟信号的占空比。一般上升沿的时刻设为 0例 4-1 (为 ddfs 设计创建一个 5ns 的时钟,时钟端口为 clk,占空比为 1:1)current_design ddfscreate_clock clk period 5 waveform 0 2.5由于时钟端的负载很大, DC 会使用 Buffer 来增加其驱动能力。但是
38、一般情况下,设计者都使用布局布线工具来完成这项工作,所以有必要指示 DC 不要对时钟网络进行修改,可以使用以下命令:set_dont_touch_network clk在图形界面中,进入 ddfs 的符号描述,选中其时钟端(clk),选择 Attributes - Clocks - Specify 菜单。在弹出的 Specify Clock 对话框的 Period 域中填入指定的周期值(本例中是 10),并选择 Dont Touch Network 复选框即可(如图 4-1 所示)。完成以上步骤后,可以在 ddfs 的 clk 端口上看到红色的方波标志(如图 4-2 所示)。 4.1.2 设置
39、输入延时输入延时的概念可用图 4-3 来解释。 在图 4-3 中,假设时钟周期为 Tc,外部逻辑中,触发器的传输延时为 Td,组合逻辑 M 的延时为 TM,待综合的逻辑中,组合逻辑 N 的延时为 TN,触发器的建立时间为 TS。则有:Tc = Td + TM + TN + Ts (1)即:TN + Ts = Tc ( Td + TM ) (2)当系统时钟设置完毕后,Tc 已经确定,对待综合模块的输入部分加以约束(即设定 TN+Ts 的值),可以通过设定 Td + TM 来实现。这里的 Td + TM 就是 DC 定义的(对于待综合模块的)输入延时。若外部逻辑是寄存器直接输出,则 TM = 0,
40、输入延时就是外部逻辑触发器的延时,一般为 1ns 或更小。在 DC 中,可以使用 set_input_delay 命令来设置输入延时(该命令对当前设计有效),其命令格式如下:set_input_delay-clock -max-min-clock :输入延时所参考(关联)的时钟-max:指定输入延时的最大值-min:指定输入延时的最小值:输入延时的大小,单位一般为 ns:设定输入延时的端口例 4-2(将 ddfs 设计的 mode 输入端的输入延时最大值设为 1ns,最小值设为 0,参考(关联)时钟为 clk):current_design ddfsset_input_delay clock
41、clk max 1 find (port, “mode”)set_input_delay clock clk min 0 find (port, “mode”)在图形界面中,进入 ddfs 的符号描述,选中 mode 端口,选择 Attribute - Operating Environment - Input Delay 菜单。在弹出的 Input Delay 对话框的关联时钟选择框中选择 clk,在 Max域中填入 1.00,在 Min 域中填入 0.00,并选中 Same Rise and Fall 复选框即可(如图 4-4 所示)。 4.1.3 设置输出延时输出延时的概念可以用图 4-
42、5 来说明。 在图 4-5 中,假设时钟周期为 Tc,外部逻辑中,触发器的建立时间为 TS,组合逻辑 M 的延时为 TM,待综合的逻辑中,组合逻辑 N 的延时为 TN,触发器的传输延时为 Td。则有:Tc = Td + TN + TM + Ts (1)即:Td + TN = Tc (TM + Ts ) (2)当系统时钟设置完毕后,Tc 已经确定,对待综合模块的输出部分加以约束(即设定 Td+TN 的值),可以通过设定 TM + Ts 来实现。这里的 TM + Ts 就是 DC 定义的(对于待综合模块的)输出延时。若待综合模块是寄存器直接输出,则 TN = 0,又由于触发器的传输延时(Td)基本
43、固定,所以待综合模块的输出部分可以不必约束,既可以不设输出延时。在 DC 中,可以使用 set_output_delay 命令来设置输出延时(该命令对当前设计有效),其命令格式如下:set_output_delay-clock -max-min所有参数、开关含义均与 set_input_delay 命令相同例 4-3(将 ddfs 设计所有输出端的输出延时最大、最小值设为 4ns,参考时钟为 clk):current_design ddfsset_output_delay clock clk 4 all_outputs()在图形界面中,进入 ddfs 的符号描述,选中一组输出端口,选择 Att
44、ribute - Operating Environment - Output Delay 菜单。弹出 Output Delay 对话框后,在关联时钟选择框内选择 clk,在Max 和 Min 域中填入 9.00,并选中 Same Rise and Fall 复选框即可(如图 4-6 所示)。对另外一组输出端口可同样设置。 4.2 组合电路的时延约束由于组合电路中不带有时钟,所以对它的时延约束主要是规定其输出端到输入端的最大时延,这可以通过 set_max_delay 来实现(该命令对当前设计有效),该命令的格式如下:set_max_delay-from -to :延时的大小,单位一般为 ns
45、-from :延时约束的起点-to :延时约束的终点例 4-4(将 16 位加法器设计所有输入端到所有输出端的最大延时设为 2ns):read adder_16.v /*读入 16 位加法器的设计源文件*/set_max_delay 2 from all_inputs() to all_outputs()在图形界面中,读入源文件后进入设计的符号描述,选中所有的输出端口,选择 Attributes - Optimizations Constraints - Timing Constraints 菜单,弹出 Timing Constraints 对话框后,在 Maximum - Rise 域中填入
46、 2.00,并选中 Same Rise and Fall 复选框即可(如图 4-7 所示)。 4.3 设计的面积约束使用 set_max_area 命令可以对设计的最大面积进行约束(该命令对当前设计有效),其命令格式为:set_max_area-ignore_tns-ignore_tns:忽略负时延裕量总和(TNS)来优化面积。DC 的缺省优化算法是先使 TNS 最小,在此基础上优化面积。使用该开关将使得 DC 忽略 TNS 而优先考虑面积优化:约束面积的大小,其单位由不同的工艺库决定例 4-5(将 ddfs 设计的面积约束设为 0,这将指示 DC 尽可能的优化面积):current_desi
47、gn ddfsset_max_area 0在图形界面中,选中 ddfs 设计,选择 Attributes - Optimizations Constraints - Design Constraints,弹出 Design Constraints 对话框后在 Max Area 域中填入 0 即可(如图 4-8 所示)。 DC 学习-第五章 设计的综合与结果报告作者:未知 时间:2010-08-15 15:12:15 来自:网络转载 5.1 设计综合设计综合使用 compile 命令进行(该命令对当前设计有效),该命令的格式如下:compile-map_effort low | medium |
48、 high-area_effort none | low | medium | high -incremental_mapping-map_effort:综合器映射的努力程度,有 low, medium, high 三个选项,缺省为 medium-area_effort:综合器面积优化的努力程度,有 low, medium, high 三个选项,缺省为同map_effort 的值-incremental_mapping:值是综合器在前一次综合结果的基础上进行进一步优化,不改变电路结构例 5-1(综合 ddfs 设计,各选项均使用缺省值):current_design ddfscompile在图形界面中,选中 ddfs 设计,选择 Tools - Design Optimization 菜单。在弹出的对话框中点OK 即可(如图 5-1 所示)。 综合过程中,屏幕上会显示综合的进程,如图 5-2 所示。其中第一栏为综合所花费的时间;第二栏为电路面积;第三栏为负的时延裕量;第四栏为所有负的时延裕量的总和(TNS);第五栏反映了设计规则的违反程度。从图 5-2 中可以看出,该电路的面积为 11