DC学习-第二章

Design Compiler 基础
本章提供了Design Compiler的基础知识。这里会向读者展示进阶的和基础的综合流程。同时会将从设计准备和库规范到编译策略的标准用户任务,优化和结果分析做为基础综合流程的一部分来演示。
本章包含以下部分:
 高层次设计流程
 运行Design Compiler
 对多核技术的支持
 对Multicorner-Multimode设计的支持
 License相关
 基本综合流程演示
 一次综合会话示例
注意:
虽然以下几个术语含义略有不同,但是在Design Compiler的文档中他们几乎是同义词:

Synthesis是指为用HDL编写的IC设计产生门级网表的过程。Synthesis包括了读取HDL源文件和对设计的优化。

Optimization是在综合过程中完成库中部件连接的步骤。这些部件是在满足设计的功能,时序,面积和功耗的条件下最优的匹配。

Compile是Design Compiler的命令,用于执行综合优化的过程。在将设计读入和执行了必要的任务后,用户可以使用compiler_ultra命令或者compile命令来生成门级网表。

高层次设计流程
在基本的高层次设计流程中,Design Compiler可以用于设计探索阶段和最终的设计完成阶段。在设计探索阶段,可以使用Design Compiler进行初步的或者默认设置的综合。在设计完成阶段,需要使用Design Compiler的全部功能进来完成设计综合。
图2-1 展示了高层次设计的流程。其中阴影部分就是在整个流程中用到Design Comiler来进行综合的地方。

图2-1 基本高层次设计流程

在使用图2-1所示的流程时,请参考以下步骤:
1. 从编写HDL(verilog或者VHDL)开始进行设计。好的代码风格更有利于Design Compiler的综合。
2. 设计探索和功能仿真同时进行。
 在设计探索阶段,使用Design Compiler来完成指定的设计目标(设计规则和优化约束)并且完成初步的,默认设置的综合(只使用Design Compiler的默认选项)。
 如果在设计探索阶段,在时序上没有达到15%的过约束目标。那么就需要修改你的设计目标和约束,或者改进你的HDL代码。然后重新进行设计探索和功能仿真。
 在功能仿真中,需要使用合适的仿真器来决定你的设计是否能完成需要的功能。
 如果设计无法完成要求的功能,那么就必须修改HDL代码并重复设计探索和功能仿真。
 一直执行设计探索和功能仿真知道设计的功能正确并且时序能够达到15%的过约束。
3. 通过使用Design Compiler来执行设计的综合以达到设计目标
在将设计综合成门级网表后,需要确保设计满足你的目标。如果设计没有满足你的目标,你需要生成不同的报告并分析他们来决定需要使用哪些技术来修正这些问题。
4. 在设计满足了功能,时序和其他的设计目标后,就可以进行物理设计了(在自己公司或者发送给制造商)
通过反标数据来分析物理设计的性能。如果结果没有满足你的设计目标,那么返回到步骤3。如果结果满足了你的设计目标,那么你的整个设计周期就可以结束了。

运行Design Compiler
本节为你运行Design Compiler提供了必要的基本信息。包括了一下几个部分:
 Design Compiler的接口
 Setup Files
 启动Design Compiler
 退出Design Compiler
 使用Command Log Files
 使用脚本文件
 获取licenses

Design Compile接口
Design Compiler为综合和时序分析提供了两种接口:de_shell命令行接口(或者shell)和Design Vision图形化用户接口。dc_shell命令行接口是纯文本环境,在这个环境中你可以在命令行提示窗口中输入命令。Design Vision是Synopsys 综合环境的GUI;用它进行可视化设计数据和分析结果。更多关于Design Vision的信息,请参考Design Vision User Guide。

你可以使用dctcl来和Design Compiler shell进行交互,dctcl是基于Tcl 语言的超集,包含了实现Design Compiler功能的特定命令。

dctcl命令语言提供了类似UNIX命令的功能。包括了变量,条件执行命令,和流程控制命令。你可以通过以下几种方法运行Design Compiler:
 在shell中互动的输入单个命令
 运行一个或者多个命令的脚本,这些脚本是命令的文本文件
 在Design Vision窗口的控制台命令行中互动的输入单个命令

你可以使用这种方法来补充菜单界面的Design Compiler命令的子集。更多关于Design Vision的信息,请参考Design Vision User Guide和Design Vision Help。

Setup Files
当你调用Design Compiler时,它会自动执行3个setup files中的命令。这些文件的名字都是一样,.synopsys_dc.setup,但是位于不同的目录。这些文件包含了初始化参数和变量,声明设计库以及诸如此类的命令。

Design Compiler会按照以下的顺序读取.synopsys_dc.setup文件:

  1. Synopsys根目录
  2. 你的HOME目录
  3. 当前工作目录(调用Design Compiler的目录)

表2-1 Setup Files
File 位置 功能
全系统
.synopsys_dc.setup文件 Synopsys 根目录
S Y N O P S Y S / a d m i n / s e t u p ) 该 文 件 包 含 了 S y n o p s y s 定 义 的 系 统 变 量 和 为 服 务 器 所 有 用 户 准 备 通 用 的 D e s i g n C o m p i l e r 的 安 装 信 息 。 只 有 整 个 系 统 的 管 理 员 可 以 更 改 这 个 文 件 。 注 意 : SYNOPSYS/admin/setup) 该文件包含了Synopsys定义的系统变量和为服务器所有用户准备通用的Design Compiler的安装信息。只有整个系统的管理员可以更改这个文件。 注意: SYNOPSYS/admin/setupSynopsysDesignCompilerSYNOPSYS是Design Compiler的 安装目录
用户定义
.synopsys_dc.setup文件 用户home目录 该文件包含了定义你对Design Compiler工作环境的偏好变量。这些变量会覆盖位于全系统setup文件中的对应变量。
设计中的
.synopsys_dc.setup文件 启动Design Compiler的工作目录 该文件包含了会影响该目录下所有设计优化的变量。如果需要使用该文件,必须从该目录调用Design Compiler。该文件的变量会覆盖用户定义和全系统的setup文件中对应的变量。
例2-1 展示了一个 .synopsys_dc.setup的例子

例2-1 .synopsys_dc.setup文件

启动 Design Compiler
启动Design Compiler,请在命令行中输入dc_shell。
你也可以在命令后带上多个选项,例如
 -checkout 可以访问除了基础功能之外的额外授权的功能
 -wait可以为check out额外licensed设置最长等待时间
 -f意味着在显示初始化dc_shell提示前执行脚本文件
 -x在执行启动时包含dc_shell的报告
 -no_init用于指定dc_shell不执行任何.synopsys_dc.setup 文件。仅当你希望包含command log或者其他脚本文件以便重新生成以前的dc_shell会话时,才使用该选项。
 -no_home_init用于指定dc_shell不执行home 目录下的.synopsys_dc.setup文件
 -no_local_init用于指定dc_shell不执行本地目录下的.synopsys_dc.setup文件
更详细的选项列表,请参考Design Compiler Command-Line Interface Guide和dc_shell man页面。
生成的命令提示符是
dc_shell>
在启动的时候,dc_shell会进行如下任务:

  1. 生成command log文件
  2. 读取并执行.synopsys_dc.setup 文件
  3. 分别执行由-x或者-f指定的脚本文件中的命令行
  4. 在调用dc_shell的窗口中显示程序头文件和dc_shell提示符。程序的头文件列出了你目前已取得licenses的所有功能。
    注意:
    在命令行输入dc_shell时需要用绝对路径,这点很重要。如果你使用性对路径(…\),Design Compiler无法访问位于根目录到库文件。

下面的例子展示了正确的指定包含Design Compiler安装路径的Synopsys 根目录的方法。
/tools/synopsys/2009.06/bin/dc_shell
下面的例子展示了错误的指定包含Design Compiler安装路径的Synopsys 根目录的方法。
…/…/2009.06/bin/dc_shell

退出 Design Compiler
用户可以在任何时间退出Design Compiler放回到操作系统。

注意:
在默认情况下,dc_shell在command.log会文件中保存对话信息。但是如果在启动工具后改变了sh_command_log_file的名字,会话信息可能会丢失。
同样的,dc_shell不会自动保存在主存中的设计文件。如果你需要在退出前保存这些设计文件,请使用write命令。例如,
dc_shell> write -format ddc -hierarchy -output my_design.ddc
可以采用以下几种方式退出dc_shell:
 输入quit
 输入exit
 输入control-d,如果你正在以交互的方式运行Design Compiler并且工具处于忙的状态。

在dc_shell中打开和关闭GUI
用户可以在会话的任何时候打开和关闭GUI。如果用户没有在开始进入dc_shell的时候打开GUI,那么可以通过在dc_shell提示符中输入gui_start来打开GUI。
打开GUI,
 输入gui_start命令
dc_shell> gui_start
 -gui选项可以在启动dc_shell的自动打开GUI。
% dc_shell –gui
可以通过以下一种方式关闭GUI:
 选择File>Close Gui
 输入gui_stop命令
dc_shell> gui_stop
如果希望再次打开GUI,直接在命令行接口找那个输入gui_start。

无论你是否在启动dc_shell的时候使用了-gui选项,DC都会从你HOME路径下的.synopsys_dv_prefs.tcl文件加载GUI偏好设置。当你打开GUI的时候,dc_shell会读取并执行.synopsys_dv_gui.tcl启动文件,打开Design Vision window,同时在控制台中显示dc_shell命令行提示符。

可以使用gui_write_window_image命令来保存GUI窗口的图像。用户可以指定图像的格式为BMP,JPG,XPM或者PNG。默认格式是PNG。用户也可以通过脚本在批处理模式下保存窗口图像。更多细节,请参考Design Vision Help和gui_write_window_image 的man页面。
更多关于GUI的信息,请参考Design Vision User Guide。

获取命令帮助
Design compiler提供了三个层次的命令帮助:
 命令列表
 命令使用帮助
 主题帮助
获取所有dc_shell命令的列表,请输入命令:
dc_shell> help
获取一个特定dc_shell命令的帮助,输入命令名字和-help,其语法如下
dc_shell> command_name -help
在dc_shell中获取话题帮助,输入
c_shell> man topic
其中topic是shell命令,变量或者变量组的名字。

在交互式的使用Design Compiler时使用man命令,用户可以获取关于相关话题的man页面。

使用Command Log 文件
Command log记录了Design Compiler生成的dc_shell命令,这些命令包含了setup file命令和变量分配。默认情况下,Design Compiler将这些command log写入到在启动dc_shell的目录下的command.log文件中。
用户可以通过使用.synopsys_dc.setup文件中的sh_command_log_file来改变command.log文件的名字。如果需要改变这些变量需要在启动Design Compiler前完成这些改变。如果你的自定义或者工程指定.synopsys_dc.setup文件没有包含这个变量,Design Compiler会自动创建command.log文件。
每次Design Compiler会话都会重写command log文件。可以通过移动和重命名command log文件,来保存它。Command log文件可以用来
 为特定的综合策略生成脚本
 记录设计探索的过程
 记录遇到的任何问题

使用Filename Log 文件
默认情况下,DesignCompiler会将已读取的文件名写入到调用dc_shell的目录中的filenames log。如果DesignCompiler异常终止,可以使用filenames log文件来识别保存错误的数据文件。用户可以通过.synopsys_dc.setup文件中的filename_log_file变量来指定filename log文件的名字。

使用脚本文件
用户可以通过将一系列dc_shell命令放置在一个文本文件中来生成命令脚本。任何dc_shell命令都可以在脚本文件中执行。
在dctcl中,在一行的开头用“#”表示注释,例如,

This is a comment

使用source命令来执行脚本文件。
更多关于脚本文件的信息,请参考Design Compiler Command-Line Interface Guide。

支持多核技术
Design Compiler的多核技术允许用户使用多核来减少工具的运行时间。在综合时,多核功能可以将大的优化任务切分成更小的任务以在多核上运行。

只有DC Ultra支持多核技术,DC Expert不支持多核技术。
使用多核功能
用户可以通过set_host_options命令来启动Design Compiler的多核功能。例如。使用6个core来运行,使用以下命令:
dc_shell>set_host_options –max_core 6
所有的compiler_ultra命令选项都支持多核。
注意:
如果可用的core少于通过set_host_options –max_core指定的core的数量,可能会降低综合性能。因为预测机的负载会变得困难。

如果当前处于多核模式,log file包含了类似于如下的信息提示:
Information: Running optimization using a maximum of 8 cores. (OPT-1500)
测量运行时间
使用执行过程中的wall clock来测量使用多核的加速时间。CPU time无法正确的指示多核的加速时间。
请使用report_qor命令来报告整个编译的wall clock时间,请参考下面的例子。该命令博爱高了wall clock时间的组合,将compiler_ultra和compiler_ultra –incremntal命令的运行组合起来。
dc_shell > report_qor


Report : qor
Design : TEST_TOP
Version: E-2010.12
Date : Sun Oct 24 02:02:17 2010



Hostname: machine
Compile CPU Statistics

Resource Sharing: 21.54
Logic Optimization: 182.63
Mapping Optimization: 230.79

Overall Compile Time: 631.32
Overall Compile Wall Clock Time: 288.11
用户也可以通过使用如下的clock 命令示例来检查wall clock 时间:
dc_shell> set_host_options -max_cores 2
dc_shell> set pre_compile_clock [clock seconds]
dc_shell> compile_ultra
dc_shell> set post_compile_clock [clock seconds]
dc_shell> set diff_clock [expr $post_compile_clock - $pre_compile_clock]
更多关于多核技术的信息,请参考set_host_option的man page。更多关于report_qor命令请参考“Using the report_qor Command” on page 12-18和report_qor的man page。

支持Multicorner-Multimode设计
设计常需要在多模式的情况下运行,譬如测试模式和备用模式。也需要在多操作条件下运行,有时候被称为corners。这种设计被称为multicorner-mulitmode设计。Design Compiler图形化界面可以同时分析和优化多模多cornet的交叉情形。Design Compiler图形化界面中的multicorner-mulitmode功能兼容机与Design Compiler和IC Compiler的流程。

使用create_scenario命令来定义模式和corners。Scenario定义通常包含了指定TLUPlus,操作条件和约束的命令。更多关于multicorner-mulitmode分析的设置细节,请参考“Optimizing Multicorner-Multimode Designs in Design Compiler Graphical” on page 10-149。

使用licenses
在使用licenses中,用户需要决定使用哪一个licenses并且需要知道如何获取和发布licenses
获取使用中的licenses列表
使用list_license命令来查看当前checked out的licenses。使用license_uset命令来决定已经checked out的license。例如,
dc_shell> license_users
bill@eng1 Design-Compiler
matt@eng2 Design-Compiler, DC-Ultra-Opt
2 users listed.
获取licenses
当你调用Design Compiler时,Synopsys Common Licensing软件自动checkout适当的license。举个例子,如果你读入了HDL设计,Synopsys Common Licensing会为适当的HDL编译器check out一个license。
如果你知道你所需要的工具的接口,你可以使用get_license命令来check out他们的licenses。这样就可以保证每一个license都是在你准备使用的时候是可用的。例如,
dc_shell> get_license HDL-Compiler
license在check out后会一致保持checkout的状态,直到你释放它或者退出dc_shell。
注意:
你必须拥有Dsign Vision的license来从dc_shell会话启动GUI。
启动license排队
Design Compiler有license排队的功能允许用户的应用在所有的license都被使用的情况下等待license有效。将SNPSLMD_QUEUQ这个环境变量设置为true来启动这个功能。下面的信息会被打印出来:
Information: License queuing is enabled. (DCSH-18)
当你启用license排队功能时,你可能会遇到这种情况,就是两个进程无限期等待另一个进程所占用的license。考虑一下情形:
 两个激活的进程,P1和P2,正在运行Design Compiler
 你有以下两个license:两个Design Compiler license,一个power Compiler license和一个HDL Compiler license
激活P1和P2,必须为他们分别check out一个Design Compiler license。假设P1已经获取了HDL Compiler license而且P2已经获取了Power Compiler license。如果P1和P2都试图从被其他进程占用的license,两个进程都要无限期的等待。SNPS_MAX_WAITTIME环境变量和SNPS_MAX_QUEUETIME环境变量帮助阻止这种情形发生。用户只有在SNPSLMD_QUEUE环境变量为true的时候才能使用这些环境变量。

SNPS_MAX_WAITTIM变量指定了获取第一个关键license的最长等待时间。例如,启动dc_shell。考虑以下情景:
你有两个Design-Compiler license,都已经被使用,并且你打算启动第三个dc_shell进程。排队功能在指定的等待时间内将最后的进程放在队列中。默认的等待时间是259200秒(或者72小时)。如果license在预定的时间没依然没有有效,你可以看到类似下面的信息:

Information: Timeout while waiting for feature ‘Design
Compiler’. (DCSH-17)

SNPS_MAX_QUEUETIME变量指定了在同一个dc_shell进程check out随后的license的最长等待时间。在成功check out第一个license启动dc_shell后,你可以使用这个变量。考虑一下情形:
你已经启动了Design Compiler并且正在运行一个需要DC-Ultra-Feature license的命令。排队功能会在指定的等待时间内尝试check out license。其默认等待时间是28800秒(也就是8小时)。在预定的时间内如果license依然无效,你会看到类似下面的信息:

Information: Timeout while waiting for feature
‘DC-Ultra-Features’. (DCSH-17)

当你在综合流程中进行设计时,排队功能可能会显示其他的如下的状态信息:
Information: Successfully checked out feature
‘DC-Ultra-Opt’. (DCSH-14)
Information: Started queuing for feature
‘DC-Ultra-Features’. (DCSH-15)
Information: Still waiting for feature ‘DC-Ultra-Features’.
(DCSH-16)

释放license
使用remove_license命令来释放你check out的license,例如:
dc_shell> remove_license HDL-Compiler

遵守基本综合流程
图2-2显示了基本综合流程。你可以同时在前面讨论的高级综合流程的设计探索阶段和设计完成阶段使用这种综合流程。
图2-2也列出了基本流程中每个步骤都会使用基本dc_shell命令。例如,用于将设计文件读入memory的analyze,elaborate和read_file命令。所有在图2-2中显示的命令都可以带option,但是途中没有显示这些options。

注意:
在“选择编译策略”中,自顶向下和由下而上并不是命令。他们指的是两种使用不同命令组合的常用编译策略。

下面的图2-2对流程中每个步骤进行了讨论,包括了在手册中可以获取更多信息的章节索引。

图2-2 基本综合流程

基本综合流程由以下步骤组成:
1、 开发HDL文件
Design Compiler的输入文件一般都是用譬如Verilog或者VHDL一类的HDL语言编写的。这些设计的描述需要仔细的编写以达到最好的综合结果。当编写HDL代码时,你需要考虑设计数据管理,设计分块和你的HDL代码风格。分块和代码风格会直接影响综合和优化的过程。

注意:
这一步是包含在流程中的,但是实际上它并不是一个Design Compiler的步骤。你不需要用Design Compiler工具来编写HDL文件。
2、 指定库
你需要为Design Compiler通过link_library,target_library,symbol_library,和synthetic_library命令来指定link,target,symbol和synthetic库。
link和target library是technology libraries,这种库定义了半导体制造商的基本单元和相关信息的集合,该集合包含了单元名,单元引脚名,延迟参数,引脚复制,设计规则和操作条件。
symbol library定义了设计的原理图可视化的符号。如果你要使用Design Vision GUI,就需要使用这个library。
另外,你必须使用synthetic_library命令来指定特定license的DesignWare 库。(不必指定标准DesignWare库。)
3、读取设计
Design Compiler可以读取RTL文件也可以读取门级网标。Design Compiler使用HDL Compiler来读取Verilog和VHDL RTL设计。它有一个专业的网表读取器来读取Verilog和VHDL门级网表。这个专业的网表读取器比HDL Compiler读取网表更快而且会占用更少的memory。

Design Compiler提供了一下方式来读取设计文件:
 analyze和elaborate命令
 read_file命令
 read_vhdl和read_verilog命令。这些命令源于read_file –format VHDL和read_file –format verilig命令。
参考第五章,“使用Memory中的设计”。更多关于推荐的读取方法请参考,HDL Compiler文档。

4、定义设计环境
Design Compiler要求对需要综合的设计环境进行建模。该模型包含了外部操作条件(制造工艺,温度和电压),负载。驱动,散出和线负载模型。它直接影响了设计综合和优化的结果。通过图2-2的步骤中列出的set命令来定义设计环境。
参考第六章,“定义设计环境”。

5、设置设计约束
Design Compiler使用设计规则和优化约束来控制设计的综合。供应商技术库提供了设计规则来保证产出可以满足规范并且按照预期工作。典型的设计规则约束了transition times(set_max_transition),fanout loads(set_max_fanout)金额capacitances(set_max_capacitance)。这些规则指定了不允许违反technology要求。(当然你可以制定更叫严格的约束)。

优化约束为timing(clocks,clock skews,input delays和output delays)和area(最大面积)定义了设计目标。在优化过程中Design Compiler尝试在不违反设计规则的前提下去满足这些目标。通过例如图2-2中的步骤中列出的命令来定义这些约束。为了正确的优化设计,你必须设定一个真实的约束。

注意:
设计约束的设定受你选择的编译策略的影响。流程中的步骤5和6是互相依赖的。在第六步中讨论编译策略。

6、选择编译策略
可以用来优化层次结构设计的两种基本编译策略称为自顶向下和自下而上。

在自顶向下的策略中,顶层设计和他所有的子模块设计会被同时编译。所有的环境和约束设置都是为顶层设计定义的。虽然这种策略自动处理模块间的依赖关系,但是这种方法对大型的设计并不适用,因为所有的设计都必须同时驻存在内存中。

在自下而上的策略中,独立的子模块会被单独的约束和编译。在成功的编译后,设计会被赋予don’t_touch的属性来防止在接下来的编译中被进一步改变。然后编译过的子模块会被集合到一起来组成下一个更高结构的层次(任何一个高层次的设计可以包含未映射的逻辑),并且这些设计会被编译。这种编译过程会一直持续到顶层设计的综合完成。这种设计使得你可以编译大型的设计,因为Design Compiler不需要将所有未编译的自设计同时载入到内存中。但是,在每一个阶段你都必须估计模块间的约束,而且一般来说你都需要对编译进行迭代来改善这些预估,直到所有的自设计接口都稳定。

基于你特定的设计和特定的目标,每一种策略都有它自己的优缺点。你可以单独任何一种策略来处理整个设计,或者混合使用两种策略,为每个自设计使用最合适的策略。

注意:
你所选择的编译策略会影响你对设计约束和设置的值得选择。流程中步骤5和步骤6是相互依赖的。设计约束会在步骤5中讨论。
参考步骤8,“优化设计”

7、综合和优化设计
使用compiler_ultra命令或者compiler命令来调用Design Compiler综合和优化进程。许多编译选项对于两个命令都是有效的。特别的是,compiler命令的map_effort选项被可以被设置为中或者高。

如果你要进行设计探索,使用中compile命令的map_effort选项进行默认编译。因为这个选项是默认的,你不需要在compiler命令中指定map_effort选项。在设计实现编译中,你可能会想将map_errort选项设置为高。你需要明智的使用这个选项,因为最终的编译过程是非常消耗CPU的。一般来说将map_effort设置为中就够用了。

对于时序约束比较紧张的设计,你可以调用单独的DC Ultra命令,compiler_ultra,来获取更高质量的结果。这个命令是timing-critical,高性能设计的按钮式解决方案,并且将DC Ultra策略封装到了一个单的的命令中。

参考第八章,“优化设计。”

8、分析和解决设计中的问题
Design Compiler可以为设计的综合和优化结果产生大量的报告,例如,面积,约束和时序报告。这些报告可以帮助用户分析和解决任何设计中的问题并提升综合结果。你可以使用check_design命令来检查综合的设计的坚实度。其他的check_命令也是可用的。
参考第12章,“分析和解决设计问题。”

9、保存设计的数据库
使用write命令可以保存综合的设计。请记住Design Compiler不会自动保存设计。

也可以综合过程中将设计属性和用到的约束保存在脚本文件中。脚本文件对于管理你的设计属性和约束是非常理想的选择。

参考“退出Design Compiler”部分和关于在Design Compiler文件命令行接口指南的脚本使用部分。

一个 Design Compiler会话例子
例子2-2展示了一个执行自顶向下编译的简单dctcl脚本。它使用了基本的综合流程。该脚本包含了指示流程中步骤的注释。部分脚本命令的选项和参数没有给出解释。尽管如此,从前面对基本综合流程的讨论,你可以开始理解这个自顶向下编译的例子。余下的章节会帮助你详细的理解这些命令。
注意:
只有set_driving_cell命令没有在基本综合设计流程的章节被讨论。set_driving_cell命令是一种为将要综合的设计的端口设置外部驱动可选的方式。
例2-2 自顶向下的编译脚本
/* specify the libraries /
set target_library my_lib.db
set symbol_library my_lib.sdb
set link_library [list "
" $target_library]
/* read the design /
read_verilog Adder16.v
/
define the design environment /
set_operating_conditions WCCOM
set_wire_load_model “10x10”
set_load 2.2 sout
set_load 1.5 cout
set_driving_cell -lib_cell FD1 [all_inputs]
set_drive 0 clk
/
set the optimization constraints /
create_clock clk -period 10
set_input_delay -max 1.35 -clock clk {ain bin}
set_input_delay -max 3.5 -clock clk cin
set_output_delay -max 2.4 -clock clk cout
set_max_area 0
/
map and optimize the design /
compile
/
analyze and debug the design /
report_constraint -all_violators
report_area
/
save the design database */
write -format ddc -hierarchy -output Adder16.ddc

你可以通过以下几种方式来执行这些命令:
输入dc_shell然后将例子中的命令按顺序输入。
输入dc_shell然后使用source命令执行脚本文件。
例如,如果你正在运行Design Compiler并且脚本名字叫run.tcl。你可以通过输入以下命令来执行脚本文件:
dc_shell> source run.tcl
从UNIX命令行通过使用dc_shell的-f选项来执行脚本
例如,脚本文件名为run.tcl。你可以通过在UNIX提示符中输入如下命令来调用Design Compiler并且同时执行脚本文件:
% dc_shell -f run.tcl

你可能感兴趣的:(DC学习)