关键词不能为空

当前您在: 主页 > 英语 >

DC常用命令及脚本

作者:高考题库网
来源:https://www.bjmy2z.cn/gaokao
2021-02-14 00:51
tags:

-

2021年2月14日发(作者:兼职英文翻译)


利用


DC


进行综合设计



(2012-03-25 17:45:10)



转载




标签:




dc



综合



杂谈



DC


的 综合术语用于设计的


ASIC



EDA


工具往往是一套很复杂的软件,包括大量的工具和文档。同


时, 每个公司都有自己的一套术


...






一、预备知识



1.1



DC


的综合术语




用于设计的


ASIC



EDA


工具往往是一套很复杂的软件,包括大量的工 具和文档。同时,


每个公司都有自己的一套术语。只有理解了这些术语的含义才能很好的 掌握这些工艺。



1


设计和设计对象



设计是实现一定逻辑功能的电路的描述。


设计对象就是在设计中被


DC


命令、


属性和约束操作或控制的对象。


常用的设计中包括元件、


网络 、端口、引脚和时钟。另外,一个设计可能包括某个相同子设计或库元件的多个例化。


这 时候被例化的设计或库元件称作参考。



在一个设计中查找某个 对象的命令:


find


,这是在


DC< /p>


命令中很常用的命令。如:



列出当前设 计的所有端口(


ports



:Dc_ shell>findport OR find(port,



*



)


列出所有包含



DW



字母的元件:


dc_shell>find (cell,


*DW*



)


列出


cba_core


库中的


AN2

门的所有接脚:


dc_shell>find(pin,cba_core/AN2


Read



format vhdl ./src/rtl/timer_


Read



format vhdl ./src/rtl/test_




Check_error



v


If(dc_shell_status= =1){exit 1}





Current_design test_top


Link




Check_error



v


If(dc_shell_status= =1){exit 1}





Include pass0/constraint/test_



Check_error



v


If(dc_shell_status= =1){exit 1}




Set_max_area 0.0000




Set_flatten false




Echo”***doing full compile for the partition ?test_top?***”



Sh date;


Compile



map_effort medium



Check_error



v


If(dc_shell_status= =1){exit 1}





Sh date;


Check_design


Compile_top_acs_partion=ture


Compile_top_all_paths=true



Echo”***doing boundary compile for the partition ?test_top?***”



Sh date;


Compile



top


Uniquify



Check_error



v


If(dc_shell_status= =1){exit 1}





Sh date;


Current_design test_top


Write



format db



hierarchy



output pass0/db/test_


Write



format verilog



hierarchy



output pass0/db/test_top.v


Write



format vhdl



hierarchy



output pass0/db/test_


Report_timing> pass0/report/test_


Report_area> pass0/report/test_


Report_constraints> pass0/report/test_


Report_qor> pass0/report/test_

< br>Report_constraints



all_vi olators



verbose>pass0/report /test_



quit


脚本文 件可以使用任何一个文本编辑工具产生或修改,


也可以在


dc_ shell


中执行


write_scirpt

< br>命令产生。


如,


下面的命令就是将设计的属性和约束等信 息保存到名为



的脚本文件。



Dc_shell>write_>


脚本文件的语法应该符合


dc_shell


命令的语法。


DC< /p>


提供了一个语法检查工具和一个上下文


检查工具,他们可以检查脚 本文件的语法和脚本文件的错误,并提供相应的错误信息。



语 法检查工具检查脚本文件的语法,


但是不执行其中的命令。


语法 检查实现的功能包括:



查预先定义的命令参数是否正确,


检查必须的参数是否存在、


文件重定向问题、


检查引用文


件中的命令的语法、按照


dc_shell


正常的使用方式执行赋值。要使用语法检查,我们必须对


该功能进行使 能,


此后每次引用或执行脚本前就会首先进行语法检查。在


dc _shell


中使能语


法检查功能的方法如下:



Dc_shell>syntax_check true


Syntax check on.


上下文检查工具检查上下 文的错误。


在执行一个脚本文件前,


我们应该对其进行上下文检 查。


上下文检查在检查每个命令的语法的同时,


还会读入设计、


检查设计和库文件是否有效、



件设法 齐全等。


其执行具体的功能包括:


检查设计对象和属性的合法性 ,


检查用户定义的属


性,检查变量是否存在,检查条件语句的条 件,检查循环语句,读入需要读入的文件,根据


命令重定向文件,检查库和库对象。


要使用上下文检查,


我们必须对该功能进行使能,

< br>此后


每次引用或执行脚本文件前就会进行上下文检查。使能命令如下。

< p>


Dc_shell>context_check true


Context check on.


最后,脚本文件的执行是比较简单的,可以通过两种方法:


< /p>



dc_shell


中,应该使用


include


命令执行脚本文,


inclu de


在启动


dc_shell


时,可以使用


-f


选项执行脚本文件,


dc_shell



f


在执行脚本前,如果我们激活了脚本语法检查和上下文检查,那么就会先进 行相应的检查。




二、准备


HDL


文件



输入


DC


的文件通常是


HDL

< br>文件,


HDL


的代码质量将直接影响综合的效果,因此在 编码中


必须考虑设计数据管理、设计划分和


HDL


代码的风格



2.1


、数据文件管理



首先,


由于综合过程中需要大量的数据和多种文件,


因此数据的管理就显得非常重要。


这种


管理通常设计两个部分, 设计数据控制和数据组织。控制设计数据主要是控制数据的创建、


维护、覆盖和删除等。 这和软件工程中的版本控制是基本一致的。在


DC


中对于不同类 型的


的文件,


一般有约定的扩展名。


在 控制数据的同时还必须注意对数据合理有效的组织,


一般,


在使 用


DC


综合的时候,


我们都会使用层次 化的目录结构来存放数据文件。


相对于不同的综


合策略,我们也 有两种不同的目录结构。






可以看出,


在应用自顶向下的综合策 略时,


由于综合是从顶层模块开始一次到各个模块,



以只需要一个综合目录。


而自底向上的综合则现对各个模块进行综合,< /p>


因此可能有多个综合


目录。




2.2


、设计划分


< br>对设计的合理划分可以改善综合的结果,


减少操作的时间,


简化约束文件和脚本文件。


划分


直接影响设计中模块的大小, 如果模块太小,相当于人为的制造了一个界限,将限制


DC


有< /p>


效的进行优化。另一方面,如果划分的模块太大,则会增加综合消耗的时间。



在划分的时候还要考虑设计的重用性,


主要应该注 意以下几点:


详细定义并记录设计的接口,


尽可能使接口标准化 ,编写参数化的代码。



通常,我们设计的划分一般使用以下策略:


< br>(


1


)将相关的组合逻辑划分在一起



2


)消除胶连逻辑

< p>



3


)模块的输出都应 该使用寄存器




4

< br>)按照设计目标进行划分



按照编译技术划分,


将设计中使用不同编译技术的部分划分到不同的模块。


特别使当设计中< /p>


既有高度结构化的逻辑(


ALU


),又有 随机逻辑时,应当将他们分开。因为对于结构化的


逻辑应该使用结构化编译,而对随机逻 辑,应该使用扁平化的编译。



可以将共享的资源划分到一起



将用户 定义的资源和他们驱动的逻辑划分到一起,


用户定义的资源包括用户定义的函数、



程、宏单元和


designware


元件。


DC


对于这些资源无法自动实现共享和 复制。因此,将他们


和它们所驱动的逻辑放在一起,我们就可以手工的插入多个元件来增 大驱动能力。



把顶层逻辑分成至少


3


级,将一些特殊的功能独立出来,如管脚、时钟、边界扫描和异步逻

辑等。



如下图所示,一般情况下,设计的最顶层是


I/O


管脚。下一层包括边界扫描、时钟处理、异

步逻辑和核心逻辑。


增加这一层是为了


I/O


管脚例化的灵活性


.


将时钟处理独立出来是为了对< /p>


这部分进行详细的分析仿真。


将异步逻辑独立出来是为了可测性和 静态时序分析的问题限制


在一个比较小的范围之内。




设计划分的方法分为


HDL


划分和


DC


中的划分。


HDL


的划分就是根据上面一些原则通过


HDL


代码对设计进行划分。而


DC


中的划分是在

< p>
DC


中通过使用专门的命令,改变


HDL



的划分和层次的结构。


DC

< br>中提供了两个与此相关的命令:


group,ungroup





三、确定设计库



综合之前必须设定链 接库、目标库、


符号库和综合库。连接和目标库属于工艺库,


它 们定义


了半导体生产厂的工艺元件和其它信息。


符号库定义用于


design vision



design analyzer



的元件的符号表示



确定这些库是使用


DC


进行综合的前提条件,因此我们 必须掌握


DC


中库的命令的使用,以


便


DC


可以正确的使用库中的数据。



3.1


、工艺库


工艺库包括描述每个单元的功能和特性的信息。工艺库由半导体厂商提供和维护。



元件库包括元件名称、元件接脚名称、面积、时延信息、接脚负载。同时工艺库还定义了 实


现设计功能必须满足的条件。


这些条件也可以称作设计规则约 束。


除此之外,


工艺库还确定


了工艺的 工作条件和线载模型。



工艺库在


DC


中有下面一些用途:




1


)实现设计的功能,在


dc


综合过程中要将设计映射到某个工艺库,他们称作目标库。目


标库包括了所有用于生产 网表的元件以及设计工作条件的定义。



2



解析元件参考,在


dc


中用于解析元件参考的工艺库称为链接库。链接库中除了工艺库


外还可 能包括设计文件。




3


)计算时延和路径延时,链接库还定义了用于计算时延值和路径延时的时延模型




4


)计算消耗的功率

< p>



3.2


、设置库变量



在使用


dc


综合之前我们必须对库进行设置。具体的方 法是使用


dc_shell


中的变量来确定各

< br>种库。变量和库文件的定义见下表





在确定库的位置的时候,


我们可以使 用完整的路径也可以只用文件名。


如果只确定了文件名,


DC< /p>


会在


search_path


变量确定的 搜索路径中查找这个文件。



在设置工艺库和链接库的时候要注 意:链接库包括了工艺库和设计文件。因此,


link_library


变量的值是工艺库加上一个星号



*

< br>”


,


表示链接时,


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_progp agation(drive_3_table_3)(values(“0.1316,0.1331….”) )



)


……..



)


Timing()(related_pin:”B”;



……………..



)


:”A&B”;//


接脚的功能描述



Max_capatiance:0.00220


Min_capatiance:0.00220 //


输出引脚的设计规则



)


Pin(A)(direction:input;


Capacitance:0.012000;)


Pin(B )(direction:input;//


输入引脚的电器特性



Capacitance:0.010000;)


) < /p>


四、


DC


对设计的一些操作



4.1


、读入文件



下表列出了


DC


支持的所有文件类型





对于设计文件 ,


可以使用两种方法读入。


使用


rea d_file


命令或使用


analyze



elaborate


命令。


这两种 方法有一些区别。


简单的说,


前一种适用于各种类型的文件,< /p>


而后一种主要用于综合


VHDL



verilog


文件。但是使用后者有一些特殊的功能。具体说来,< /p>


analyze


的功能包括读



HDL


源文件,检查错误,产生独立于


HDL< /p>


的中间类型的


HDL


库对象,存储中间文 件。


如果一个设计执行的


analyze


命令,只需要在这个设计改变之后再执行该操作。


Elaborate



令根据


analyze


产生 的中间文件产生一个与工艺无关的设计。


这个操作还将


HDL< /p>


中的算术操


作用于


DESIGN WARE


库中的元件替代,同时确定总线的宽度。



当设计读入内存之后,


它将转换为


synops ys


内部数据库的格式。


DC


之后的综 合优化过程都


是对内存中的设计执行的。




1


)链接



对于一个完整的设计,


必须把所有的库元件和他们对应的设计参 考链接起来。


对于每一个设


计,


还必须 有一个参考来衔接子设计和链接库。


这一过程称为链接设计或参考解析。


换句话


说,


链接就是要在链接库中找到设计中使用的所 有元件和子设计,


保证设计的完整。


如果不

能正确的链接,则无法进行以后的综合等操作。



DC


通过一下步骤完成参考解析:


首先,


它确定 哪个库元件和子设计在当前的设计中被使用。


然后,它在链接库中定位这些参考。最后, 把定位好的参考和设计链接起来。如图。



链接的操作可以自动 进行,也可以手工完成。当使用一些


DC


命令,如


compile


时会自动进


行链接。如果需要,也可 以使用


link


命令进行手工链接。





2


)对设 计和设计对象的操作




这些操作时< /p>


DC


中的一些基本操作,和其它


EDA< /p>


软件中的操作类似,如生成新设计、拷贝


设计、重新命名等。其中 比较重要的有以下几种:



设置当前设计。在

< br>DC


中,我们应当注意当前设计的概念,因为大多数的命令都是针对当前


设计进行的。一般说来,


如果成功的读入了一个设计之后,这个设计就会 作为当前设计。另


外,如果指定了一个当前设计,可以使用


cu rrent_design


命令。



列 出设计和设计对象。使用


list_designs


命令来列出 内存中的设计,其中带



*



为当前设计。


下表也列出了显示设计对象信息的一些命令。





< p>
改变设计的层次,在


DC


中我们可以改变


HDL


所描述的设计层次关系。首先,使用


re port_hierarchy


命令可以显示设计当前的层次关系。然后,使用


group


可以将一些元件或子


设计组合起来, 增加一个逻辑层次。或使用


ungroup


名去掉一个逻辑层次 。



编辑设计,使用下表列出的命令可以对设计对象进行编辑, 如生成,删除等。



Creat_cell


生成一个元件



Remove_cell


删除一个元件



Create_net


生成一个网络



Connect_net


连接一个网络



Disconnect_net


断开一个网络



Remove_net


删除一个网络



Create_port


生成一个端口



Remove_port


删除一个端口



Create_bus


生成一个总线



Remove_bus


删除一个总线



4.2


、属性的处理



属性描述了设计数据库中对象逻辑的电气、


物理和其它特性。

< br>一个属性通常都是附加给一个


设计对象并存储于设计数据库中。

< br>


DC


中,我们可以设置和使用以下一些对象的属性



整个设计



设计对象,如时钟,网络和端口



设计中的子设计或元件的例化



工艺库,库元件



< p>
属性有自己的名称、类型和值。属性一般有以下几种类型:串、数或是逻辑。属性可以是

< p>
DC


预设的,这些属性可以被


DC


识别;也可以是用户定义的。一些属性是只读的,其值由


DC

< br>设置,用户无法修改,另一些是用户可以自己修改的。



例如,我们经常使用



dout_touch

< br>”


属性,它可以付给网络,单元,端口或设计。而当我们需


要设置这个属性的时候,需要专门的命令:


set_dont_touch


而对于一般的属性,可以使用命令


set_attribute


来设置。



Design Compiler


综合脚本常用命令和模板



(2012-03-25 17:47:12)



转载




标签:



分类:


微电子



dc



综合



script



杂谈



参照自己的设计,以及自己的工 艺信息,适当修改下面的


Constraints




Run


Script


等的脚本,添


加一些相 关的约束语句,就可以运行了详细


...


参照自己的设计,以及自己的工艺信息,适当修改下面的


Constraints




Run


Script


等的脚


本,添加一些相 关的约束语句,就可以运行了



详细的命令请参照


DC


的官方


User Guide


等相关资料





Invoking Design Compiler


Unix% design_vision


# Interactive GUI, WLM mode


Unix% design_vision



topographical


# Interactive GUI, Topographical mode


Unix% dc_shell-t


# Interactive shell, WLM mode


Unix% dc_shell-t



topographical


# Interactive shell, Topographical mode


Unix% dc_shell-t



f | tee



i


# Batch mode



.synopsys_


set search_path “$$search_path libs cons unmapped rtl”



set synthetic_library dw_


set target_library


set link_library “* $$target_library $$synthetic_library ”



set symbol_library


define_design_lib WORK



path ./work


set_svf


set_vsdc


history keep 200


set sh_enable_page_mode false


set cache_write .


set cache_read $$cache_write


suppress_message {LINT-28 LINT-32 LINT-33 UID-401}


set alib_library_analysis_path [get_unix_variable HOME]


alias h history


alias rc “report_constraint


-


all_violators”




TCL Commands and Constructs


set PER 2.0 # Define a variable and its value


echo $$PER # Variable substitution à


2.0


set MARG 0.95


expr $$PER * $$MARG # expr: *, /, +, -, >, <, =, <=, >=


set pci_ports [get_ports A] # Imbedded command


set pci_ports [get_ports “Y??M Z*”]


# Wildcards


echo “Effctv P =


# Soft quotes à


1.9



[expr $$PERIOD * $$MARGIN]”



echo {Effctv P = # Hard quotes



[expr $$PERIOD * $$MARGIN]} # à


Effctv P = [expr $$PER * $$MARG]


# Comment line


set COMMENT in_line; # In-line comment


set MY_DESIGNS {B1.v ... B26.v}


# foreach loop


foreach DESIGN $$MY_DESIGNS {



read_verilog $$DESIGN


}


for {set i 1} {$$i < 27} {incr i} { # for loop



read_verilog BLOCK_$$i.v


}



Helpful UNIX-like DC-shell commands


pwd


cd


ls


history


!!


!7


!report


sh


printenv


get_unix_variable ARCH




Constraints


reset_design


set_max_area 0


create_clock -period 2



name Main_Clk [get_ports Clk1]


create_clock



period 2.5



waveform {2 3.5} [get_ports Clk2]


create_clock



period 3.5



name V_Clk; # VIRTUAL clock


set_clock_uncertainty



setup 0.14 [get_clocks *]


set_clock_uncertainty



setup 0.21



from [get_clocks Main_Clk]



to [get_clocks Clk2]


set_clock_latency



max 0.6 [get_clocks Main_Clk]


set_clock_latency



source



max 0.3 [get_clocks Main_Clk]


set_clock_transition 0.08 [get_clocks Main_Clk]


set_input_delay -max 0.6 -clock Main_Clk [all_inputs]


set_input_delay



max 0.3



clock Clk2



clock_fall


–add_delay [get_ports “B E”]



set_input_delay -max 0.5 -clock


–network_latency_included V_Clk [get_ports “A C F”]



set_output_delay -max 0.8 -clock



source_latency_included Main_Clk [all_outputs]


set_output_delay -max 1.1 -


clock V_Clk [get_ports “OUT2 OUT7]



set_max_capacitance 1.2 [all_inputs]


set_load 0.080


[all_outputs]


set_load [expr [load_of slow_proc/NAND2_3/A] * 4] [get_ports OUT3]


set_load 0.12 [all_inputs]


set_input_transition 0.12 [remove_from_collection [all_inputs][get_ports B]]


set_driving_cell



lib_cell FD1



pin Q [get_ports B]


set_operating_conditions



max WCCOM


set auto_wire_load_selection false


set_wire_load_model



name 1.6MGates


set_wire_load_mode enclosed


set_wire_load_model


–name 200KGates [get_designs “SUB1 SUB2”]



set_wire_load_model



name 3.2MGates [get_ports IN_A]


set_port_fanout_number 8 [get_ports IN_A]


set_false_path -from [get_clocks Asynch_CLKA] -to [get_clocks Asynch_CLKB]


set_multicycle_path



setup 4



from



from A_reg -through U_Mult/Out



to B_reg


set_multicycle_path



hold 3



from



from A_reg -through U_Mult/Out



to B_reg


set_isolate_ports



type inverter [all_outputs]


set_ideal_network [get_ports reset* select*]


set_ideal_network [get_pins FF_SET_reg/Q]


set_ideal_network



no_propagate [get_nets CTRL]


set_ideal_latency 1.4 [get_ports reset* select*]


set_ideal_transition 0.5 [get_pins FF_SET_reg/Q]


set_scan_configuration -style




Checking and Removing Constraints and Directives


report_clock; report_clock -skew


report_design


report_port



verbose


report_wire_load


report_path_groups


report_timing_requirements (



ignored)


report_auto_ungroup


report_isolate_ports


write_script



output <>


check_timing


reset_path



from FF1_reg


remove_clock


remove_clock_transition


remove_clock_uncertainty


remove_input_delay


remove_output_delay


remove_driving_cell


remove_wire_load_model




Syntax Checking


Unix% dcprocheck constr_



Physical Constraints



Topographical Mode


set_aspect_ratio


set_utilization


set_placement_area


set_rectilinear_outline


set_port_side


set_port_location


set_cell_location


create_placement_keepout



Misc. Reports



# Generate A library report file


read_db library_


list_libs


redirect



file reports/ {report_lib }


report_hierarchy [-noleaf]



# Arithmetic implementation and

-


-


-


-


-


-


-


-



本文更新与2021-02-14 00:51,由作者提供,不代表本网站立场,转载请注明出处:https://www.bjmy2z.cn/gaokao/653728.html

DC常用命令及脚本的相关文章

  • 爱心与尊严的高中作文题库

    1.关于爱心和尊严的作文八百字 我们不必怀疑富翁的捐助,毕竟普施爱心,善莫大焉,它是一 种美;我们也不必指责苛求受捐者的冷漠的拒绝,因为人总是有尊 严的,这也是一种美。

    小学作文
  • 爱心与尊严高中作文题库

    1.关于爱心和尊严的作文八百字 我们不必怀疑富翁的捐助,毕竟普施爱心,善莫大焉,它是一 种美;我们也不必指责苛求受捐者的冷漠的拒绝,因为人总是有尊 严的,这也是一种美。

    小学作文
  • 爱心与尊重的作文题库

    1.作文关爱与尊重议论文 如果说没有爱就没有教育的话,那么离开了尊重同样也谈不上教育。 因为每一位孩子都渴望得到他人的尊重,尤其是教师的尊重。可是在现实生活中,不时会有

    小学作文
  • 爱心责任100字作文题库

    1.有关爱心,坚持,责任的作文题库各三个 一则150字左右 (要事例) “胜不骄,败不馁”这句话我常听外婆说起。 这句名言的意思是说胜利了抄不骄傲,失败了不气馁。我真正体会到它

    小学作文
  • 爱心责任心的作文题库

    1.有关爱心,坚持,责任的作文题库各三个 一则150字左右 (要事例) “胜不骄,败不馁”这句话我常听外婆说起。 这句名言的意思是说胜利了抄不骄傲,失败了不气馁。我真正体会到它

    小学作文
  • 爱心责任作文题库

    1.有关爱心,坚持,责任的作文题库各三个 一则150字左右 (要事例) “胜不骄,败不馁”这句话我常听外婆说起。 这句名言的意思是说胜利了抄不骄傲,失败了不气馁。我真正体会到它

    小学作文