《DC常用命令及脚本》由会员分享,可在线阅读,更多相关《DC常用命令及脚本(30页珍藏版)》请在金锄头文库上搜索。
1、利用DC进行综合设计(2012-03-25 17:45:10) 转载标签: dc综合杂谈DC的综合术语用于设计的ASIC的EDA工具往往是一套很复杂的软件,包括大量的工具和文档。同时,每个公司都有自己的一套术.一、预备知识1.1、DC的综合术语用于设计的ASIC的EDA工具往往是一套很复杂的软件,包括大量的工具和文档。同时,每个公司都有自己的一套术语。只有理解了这些术语的含义才能很好的掌握这些工艺。1 设计和设计对象设计是实现一定逻辑功能的电路的描述。设计对象就是在设计中被DC命令、属性和约束操作或控制的对象。常用的设计中包括元件、网络、端口、引脚和时钟。另外,一个设计可能包括某个相同子设计或
2、库元件的多个例化。这时候被例化的设计或库元件称作参考。在一个设计中查找某个对象的命令:find,这是在DC命令中很常用的命令。如:列出当前设计的所有端口(ports):Dc_shellfindport OR find(port,”*”)列出所有包含”DW”字母的元件:dc_shellfind (cell,”*DW*”)列出cba_core库中的AN2门的所有接脚:dc_shellfind(pin,cba_core/AN2Read format vhdl ./src/rtl/timer_tugw.vhdRead format vhdl ./src/rtl/test_top.vhdCheck_er
3、ror vIf(dc_shell_status= =1)exit 1Current_design test_topLinkCheck_error vIf(dc_shell_status= =1)exit 1Include pass0/constraint/test_top.conCheck_error vIf(dc_shell_status= =1)exit 1Set_max_area 0.0000Set_flatten falseEcho”*doing full compile for the partition test_top*”Sh date;Compile map_effort me
4、diumCheck_error vIf(dc_shell_status= =1)exit 1Sh date;Check_designCompile_top_acs_partion=tureCompile_top_all_paths=trueEcho”*doing boundary compile for the partition test_top*”Sh date;Compile topUniquifyCheck_error vIf(dc_shell_status= =1)exit 1Sh date;Current_design test_topWrite format db hierarc
5、hy output pass0/db/test_top.dbWrite format verilog hierarchy output pass0/db/test_top.vWrite format vhdl hierarchy output pass0/db/test_top.vhdReport_timing pass0/report/test_top.timReport_area pass0/report/test_top.areaReport_constraints pass0/report/test_top.cstrReport_qor pass0/report/test_top.qo
6、rReport_constraintsall_violatorsverbosepass0/report/test_top.vioquit脚本文件可以使用任何一个文本编辑工具产生或修改,也可以在dc_shell中执行write_scirpt命令产生。如,下面的命令就是将设计的属性和约束等信息保存到名为test.scr的脚本文件。Dc_shellwrite_test.scr脚本文件的语法应该符合dc_shell命令的语法。DC提供了一个语法检查工具和一个上下文检查工具,他们可以检查脚本文件的语法和脚本文件的错误,并提供相应的错误信息。语法检查工具检查脚本文件的语法,但是不执行其中的命令。语法检查实
7、现的功能包括:检查预先定义的命令参数是否正确,检查必须的参数是否存在、文件重定向问题、检查引用文件中的命令的语法、按照dc_shell正常的使用方式执行赋值。要使用语法检查,我们必须对该功能进行使能,此后每次引用或执行脚本前就会首先进行语法检查。在dc_shell中使能语法检查功能的方法如下:Dc_shellsyntax_check trueSyntax check on.上下文检查工具检查上下文的错误。在执行一个脚本文件前,我们应该对其进行上下文检查。上下文检查在检查每个命令的语法的同时,还会读入设计、检查设计和库文件是否有效、文件设法齐全等。其执行具体的功能包括:检查设计对象和属性的合法性
8、,检查用户定义的属性,检查变量是否存在,检查条件语句的条件,检查循环语句,读入需要读入的文件,根据命令重定向文件,检查库和库对象。要使用上下文检查,我们必须对该功能进行使能,此后每次引用或执行脚本文件前就会进行上下文检查。使能命令如下。Dc_shellcontext_check trueContext check on.最后,脚本文件的执行是比较简单的,可以通过两种方法:在dc_shell中,应该使用include命令执行脚本文,include在启动dc_shell时,可以使用-f选项执行脚本文件,dc_shell f 在执行脚本前,如果我们激活了脚本语法检查和上下文检查,那么就会先进行相应的
9、检查。二、准备HDL文件输入DC的文件通常是HDL文件,HDL的代码质量将直接影响综合的效果,因此在编码中必须考虑设计数据管理、设计划分和HDL代码的风格2.1、数据文件管理首先,由于综合过程中需要大量的数据和多种文件,因此数据的管理就显得非常重要。这种管理通常设计两个部分,设计数据控制和数据组织。控制设计数据主要是控制数据的创建、维护、覆盖和删除等。这和软件工程中的版本控制是基本一致的。在DC中对于不同类型的的文件,一般有约定的扩展名。在控制数据的同时还必须注意对数据合理有效的组织,一般,在使用DC综合的时候,我们都会使用层次化的目录结构来存放数据文件。相对于不同的综合策略,我们也有两种不同
10、的目录结构。可以看出,在应用自顶向下的综合策略时,由于综合是从顶层模块开始一次到各个模块,所以只需要一个综合目录。而自底向上的综合则现对各个模块进行综合,因此可能有多个综合目录。2.2、设计划分对设计的合理划分可以改善综合的结果,减少操作的时间,简化约束文件和脚本文件。划分直接影响设计中模块的大小,如果模块太小,相当于人为的制造了一个界限,将限制DC有效的进行优化。另一方面,如果划分的模块太大,则会增加综合消耗的时间。在划分的时候还要考虑设计的重用性,主要应该注意以下几点:详细定义并记录设计的接口,尽可能使接口标准化,编写参数化的代码。通常,我们设计的划分一般使用以下策略:(1)将相关的组合逻
11、辑划分在一起(2)消除胶连逻辑(3)模块的输出都应该使用寄存器(4)按照设计目标进行划分按照编译技术划分,将设计中使用不同编译技术的部分划分到不同的模块。特别使当设计中既有高度结构化的逻辑(ALU),又有随机逻辑时,应当将他们分开。因为对于结构化的逻辑应该使用结构化编译,而对随机逻辑,应该使用扁平化的编译。可以将共享的资源划分到一起将用户定义的资源和他们驱动的逻辑划分到一起,用户定义的资源包括用户定义的函数、过程、宏单元和designware元件。DC对于这些资源无法自动实现共享和复制。因此,将他们和它们所驱动的逻辑放在一起,我们就可以手工的插入多个元件来增大驱动能力。把顶层逻辑分成至少3级,
12、将一些特殊的功能独立出来,如管脚、时钟、边界扫描和异步逻辑等。如下图所示,一般情况下,设计的最顶层是I/O管脚。下一层包括边界扫描、时钟处理、异步逻辑和核心逻辑。增加这一层是为了I/O管脚例化的灵活性.将时钟处理独立出来是为了对这部分进行详细的分析仿真。将异步逻辑独立出来是为了可测性和静态时序分析的问题限制在一个比较小的范围之内。设计划分的方法分为HDL划分和DC中的划分。HDL的划分就是根据上面一些原则通过HDL代码对设计进行划分。而DC中的划分是在DC中通过使用专门的命令,改变HDL中的划分和层次的结构。DC中提供了两个与此相关的命令:group,ungroup 。三、确定设计库综合之前必
13、须设定链接库、目标库、符号库和综合库。连接和目标库属于工艺库,它们定义了半导体生产厂的工艺元件和其它信息。符号库定义用于design vision 或design analyzer 中的元件的符号表示确定这些库是使用DC进行综合的前提条件,因此我们必须掌握DC中库的命令的使用,以便DC可以正确的使用库中的数据。3.1、工艺库工艺库包括描述每个单元的功能和特性的信息。工艺库由半导体厂商提供和维护。元件库包括元件名称、元件接脚名称、面积、时延信息、接脚负载。同时工艺库还定义了实现设计功能必须满足的条件。这些条件也可以称作设计规则约束。除此之外,工艺库还确定了工艺的工作条件和线载模型。工艺库在DC中
14、有下面一些用途:(1)实现设计的功能,在dc综合过程中要将设计映射到某个工艺库,他们称作目标库。目标库包括了所有用于生产网表的元件以及设计工作条件的定义。(2)解析元件参考,在dc中用于解析元件参考的工艺库称为链接库。链接库中除了工艺库外还可能包括设计文件。(3)计算时延和路径延时,链接库还定义了用于计算时延值和路径延时的时延模型(4)计算消耗的功率3.2、设置库变量在使用dc综合之前我们必须对库进行设置。具体的方法是使用dc_shell中的变量来确定各种库。变量和库文件的定义见下表在确定库的位置的时候,我们可以使用完整的路径也可以只用文件名。如果只确定了文件名,DC会在search_path
15、变量确定的搜索路径中查找这个文件。在设置工艺库和链接库的时候要注意:链接库包括了工艺库和设计文件。因此,link_library变量的值是工艺库加上一个星号“*”,表示链接时,DC既搜索工艺库,也搜索调入内存中的设计文件。除了设置库变量,DC还支持各种对库的操作,如:读入和保存库,列出使用的库,显示库的内容,确定库的对象甚至直接对库对象进行操作。如下为一个工艺库的例子:Cell(AND2 3)/元件名称(area:8.000;/元件面积Pin(Y)(direction :output;Timing()(Related_pin:”A”;Timing_sence:positive_unate;Rise_propagation(drive_3 table_1)(values(“0.2626,0.2607.”) /接脚延时Fall_progpagation