dcsh commandsby Heng Ding May.docx
《dcsh commandsby Heng Ding May.docx》由会员分享,可在线阅读,更多相关《dcsh commandsby Heng Ding May.docx(14页珍藏版)》请在冰豆网上搜索。
![dcsh commandsby Heng Ding May.docx](https://file1.bdocx.com/fileroot1/2023-2/2/b94e400e-fb15-4eb6-8a59-727268c12331/b94e400e-fb15-4eb6-8a59-727268c123311.gif)
dcshcommandsbyHengDingMay
dc_shellcommandsummary
byHengDing,May2007
.synopsys_dc.setup
search_path=search_path+{“.”,synopsys_root+“/dw/sim_ver”}
search_path=search_path+{“~/risc32/synthesis/libraries”}
target_library={tcb773stc.db}
link_library={“*”,tcb773stc.db}
symbol_library={tcb773s.sdb}
aliasrt“report_timing”
designer=XXXXX
company=“ASICLab,FudanUniv.”
/*…*/注释
find
find
<实体类型>
<名称列表>
-hierarchy
●<实体类型>:
上节所述的8种类型
●<名称列表>:
用来匹配的关键词,其中可带“*”统配符
●-hierarchy:
指令DC搜索所有设计层次
例1-2(find命令的使用):
find(cell,*U*)
find(net,“*”)
find(design,{A_*,B_*}-hierarchy)
另外,使用all_inputs()和all_outputs()可以得到设计所有的输入端口和输出端口。
analyze
analyze
-library<库名称>
-format<文件类型>
<文件名列表>
●-library<库名称>:
指定中间结果所存放的库,即UNIX下的一个目录,缺省为当前目录(WORK)
●-format<文件类型>:
RTL源文件的类型,即Verilog或vhdl
●<文件名列表>:
所有需要分析的源文件名,若有多个文件,则用“{}”括起
例2-1(将直接数字频率合成器的所有设计源文件读入lib1库中):
hdlin_enable_presto=false/*禁止Presto编译器功能*/
define_design_liblib1-path“./lib1”/*将目录./lib1映射为一个设计库*/
analyze–librarylib1–formatverilog{croma.v,cromb.v,ddfs.v,froma.v,fromb.v}
elaborate
elaborate
<设计名>
-library<库名称>
-architecture<构造体名>
-parameters<参数列表>
-update
●<设计名>:
需要描述的设计
●-library<库名称>:
设计的分析结果所在的库
●-architecture<构造体名>:
需要分析的构造体,针对VHDL描述中同一个实体对应多个构造体的情况;对于Verilog描述,改选项可缺省或为verilog
●-parameters<参数列表>:
在这里给设计中的参数重新赋值,若省略则参数使用缺省值
●-update:
要求综合器自动更新所有过期的文件
例2-2(将先前读入的设计产生结构级描述,并设置相应的参数值):
elaborateddfs–librarylib1–architecture“verilog”–parameters“PAL_sub=32'h20098ACB,\NTSC_sub=32'h06F07BD6”–update
由于重置了参数值,顶层的设计名称变为“ddfs_20098acb_06f07bd6”,为方便起见,将顶层设计名改为“ddfs”:
rename_designddfs_20098acb_06f07bd6ddfs
read
read
-format<文件类型>
<文件列表>
●-format<文件类型>:
源文件的类型,如verilog,vhdl,edif,db等
●<文件列表>:
所有需要读入的源文件名,若有多个文件,则用“{}”括起
例2-3(利用read命令将读取直接数字频率合成器的所有设计源文件):
read-formatverilog{croma.v,cromb.v,ddfs.v,froma.v,fromb.v}
link
例2-4(链接直接数字频率合成器的顶层设计:
ddfs):
current_designddfs/*将ddfs设置为当前设计*/
link
一般有两种情况可能导致链接过程出错:
1)、设计中所调用子模块的描述文件没有读入;
2)、设计中使用了工艺库中的单元,但该工艺库没有加入链接库(link_library)或因为搜索路径(search_path)设置有误而导致DC无法正确定位链接库。
uniquify
例2-5(将ddfs设计进行实例唯一化):
current_designddfs
uniquify
report_lib
例3-1(列出工艺库tcb773stc中的各项参数):
report_libtcb773stc
set_operating_condition
set_operating_conditions
-library<库名称>
<工作环境名>
●-library<库名称>:
定义工作环境的库,若当前仅读入唯一的目标库,则改选项可省略
●<工作环境名>:
设置的工作环境
例3-2(将ddfs设计的工作环境设为“WCCOM”):
current_designddfs
set_operating_conditions-librarytcb773stcWCCOM
set_wire_load_model
set_wire_load_model
-name<连线负载名>
-library<库名称>
<对象列表>
●-name<连线负载名>:
设定的连线负载
●-library<库名称>:
定义工作环境的库,若当前尽读入唯一的目标库,则改选项可省略
●<对象列表>:
设定连线负载的对象
例3-3(将ddfs的连线负载设为TSMC8K_Conservative):
set_wire_load_model–nameTSMC8K_Conservative-librarytcb773stcddfs
set_wire_load_mode
set_wire_load_mode
<模式名>
●<模式名>:
连线负载模式的名称,为“top”、“enclosed”、“segmented”中的一项
例3-4(将ddfs的连线负载模式设为top):
current_designddfs
set_wire_load_modetop
set_load
set_load
<负载电容值>
<对象列表>
●<负载电容值>:
设定的负载电容值,必须为非负数,其单位在库文件中定义
●<对象列表>:
设定负载电容的对象,可以是输出口、输出管脚、互连线等
例3-5(将ddfs的所有输出口的输出负载设为0.1pF)
current_designddfs
set_load0.1all_ouputs()
set_driving_cell
set_driving_cell
-lib_cell<库单元名>
-library<库名称>
-pin<管脚名>
-no_design_rule
<端口名列表>
●-lib_cell<库单元名>:
用于驱动设计输入端的外部单元名称
●-library<库名称>:
上述单元所在库的名称,若当前仅读入唯一的目标库且驱动单元就在该库中,则改选项可省略
●-pin<管脚名>:
用于驱动设计输入端的外部单元管脚的名称
●-no_design_rule:
改选项要求DC忽略外部驱动单元管脚上的设计规则
●<端口名列表>:
设置驱动的设计端口
例3-6(将ddfs的所有输入端的驱动单元设置为DFF1的管脚Q,并忽略该管脚上的设计规则):
current_designddfs
set_driving_cell–lib_cellDFF1–pinQ–no_design_ruleall_inputs()
set_drive
set_drive
<阻抗>
<端口名列表>
●<阻抗>:
非负的驱动阻抗,该值越小表示驱动能力越大
●<端口名列表>:
设置驱动能力的端口名
例3-7(将ddfs的时钟和复位端的驱动设为无穷大,即驱动阻抗设为零):
current_designddfs
set_drive0{clk,reset}
如果你没有声明-rise或者–fall选项,两个同时都被设定
create_clock
create_clock
<端口名>
-period<周期>
-waveform<边沿列表>
●<端口名>:
设计的时钟端口
●-period<周期>:
时钟周期,单位一般为ns
●-waveform<边沿列表>:
时钟上升沿和下降沿的时刻,从而决定时钟信号的占空比。
一般上升沿的时刻设为0
例4-1(为ddfs设计创建一个5ns的时钟,时钟端口为clk,占空比为1:
1)
current_designddfs
create_clockclk–period5–waveform{02.5}
set_dont_touch_networkclk
set_dont_touch_networkclk
set_input_delay
set_input_delay
-clock<时钟名>
-max
-min
<延时值>
<端口名列表>
●-clock<时钟名>:
输入延时所参考(关联)的时钟
●-max:
指定输入延时的最大值
●-min:
指定输入延时的最小值
●<延时值>:
输入延时的大小,单位一般为ns
●<端口名列表>:
设定输入延时的端口
例4-2(将ddfs设计的mode输入端的输入延时最大值设为1ns,最小值设为0,参考(关联)时钟为clk):
current_designddfs
set_input_delay–clockclk–max1find(port,“mode”)
set_input_delay–clockclk–min0find(port,“mode”)
set_output_delay
set_output_delay
-clock<时钟名>
-max
-min
<延时值>
<端口名列表>
●所有参数、开关含义均与set_input_delay命令相同
例4-3(将ddfs设计所有输出端的输出延时最大、最小值设为4ns,参考时钟为clk):
current_designddfs
set_output_delay–clockclk4all_outputs()
set_max_delay
set_max_delay
<延时值>
-from<起点列表>
-to<终点列表>
●<延时值>:
延时的大小,单位一般为ns
●-from<起点列表>:
延时约束的起点
●-to<终点列表>:
延时约束的终点
例4-4(将16位加法器设计所有输入端到所有输出端的最大延时设为2ns):
readadder_16.v/*读入16位加法器的设计源文件*/
set_max_delay2–fromall_inputs()–toall_outputs()
set_max_area
set_max_area
-ignore_tns
<面积值>
●-ignore_tns:
忽略负时延裕量总和(TNS)来优化面积。
DC的缺省优化算法是先使TNS最小,在此基础上优化面积。
使用该开关将使得DC忽略TNS而优先考虑面积优化
●<面积值>:
约束面积的大小,其单位由不同的工艺库决定
例4-5(将ddfs设计的面积约束设为0,这将指示DC尽可能的优化面积):
current_designddfs
set_max_area0
compile
compile
-map_effortlow|medium|high
-area_effortnone|low|medium|high
-incremental_mapping
●-map_effort:
综合器映射的努力程度,有low,medium,high三个选项,缺省为medium
●-area_effort:
综合器面积优化的努力程度,有low,medium,high三个选项,缺省为同map_effort的值
●-incremental_mapping:
值是综合器在前一次综合结果的基础上进行进一步优化,不改变电路结构
例5-1(综合ddfs设计,各选项均使用缺省值):
current_designddfs
compile
例5-2(在刚才总和结果的基础上用高映射努力程度进行进一步优化):
current_designddfs
compile–map_efforthigh–incremental_mapping
report_timing
report_timing
-to<路径终点列表>
-from<路径起点列表>
-nworst<路径数>
●-to<路径终点列表>:
需要计算时延的路径的终点
●-from<路径起点列表>:
需要计算时延的路径的起点
●-nworst<路径数>:
报告的路径数(缺省为1,由时延裕量最小的路径开始报起)
注意:
缺省情况下,报告向屏幕输出,若要将报告写入文件,可在命令行后用“>”或“>>”引出文件名。
其中,“>”将新建一个文件,获将原文件覆盖;“>>”用于在原文件末尾填加。
例5-3(将ddfs设计中的时延信息输出到文件“./report/report1.rpt”中,共输出5条路径):
current_designddfs
report_timing–nworst5>“./report/report1.rpt”
report_area
例5-4(将ddfs设计中的面积信息添加到文件“./report/report1.rpt”中):
current_designddfs
report_area>>“./report/report1.rpt”
write
write
-format
-hierarchy
-output
<设计列表>
●-format:
指定保存的格式,可选的格式有:
db,edif,equation,lsi,mentor,pla,st,tdl,verilog,vhdl,xnf,缺省为db
●-hierarchy:
指令DC保存所有设计层次
●-output:
指定保存的文件名
●<设计列表>:
需要保存的设计
例6-1(将ddfs设计以db形式保存到“./mapped/ddfs.db”文件中,要求保存所有设计层次):
write–formatdb–hierarchy–output./mapped/ddfs.dbddfs
例6-2(将ddfs设计的门级网表以verilog形式保存到“./export/ddfs.v”文件中,要求保存所有设计层次):
write–formatverilog–hierarchy–output./export/ddfs.vddfs
write_sdf
write_sdf
-version<文件版本>
-instance<实例名>
<时序描述文件名>
●-version<文件版本>:
指定导出的SDF文件的版本,可选项有1.0和2.1,缺省为2.1版
●-instance<实例名>:
指定导出当前设计中某个实例的时序描述文件
●<时序描述文件名>:
导出的时序描述文件的文件名
例6-3(导出ddfs设计的时序描述到“./export/ddfs.sdf”中,版本为2.1):
current_designddfs
write_sdf./export/ddfs.sdf
write_constraints
write_constraints
-output<文件名>
-format
-max_paths<路径数>
-max_path_timing
-from<起点列表>
-to<终点列表>
●-output<文件名>:
导出的时序约束文件名
●-format:
时序约束文件的格式,可选项有:
synopsys,sdf,sdf-v2.1
●-max_paths<路径数>:
时序约束文件所包含的路径数,缺省为1
●-max_path_timing:
指令DC导出示延最大的路径
●-from<起点列表>:
路径的起点列表
●-to<终点列表>:
路径的终点列表
例6-4(导出ddfs设计的时序约束到“./export/ddfs_constraint.sdf”中,版本为sdf2.1版,要求导出5条时延最大的路径):
current_designddfs
write_constraints–output./export/ddfs_contraint.sdf–formatsdf-v2.1–max_paths5\
–max_path_timing