SDC命令详解:使用write_script命令进行输出

发布于:2025-07-31 ⋅ 阅读:(19) ⋅ 点赞:(0)

相关阅读

SDC输出命令https://blog.csdn.net/weixin_45791458/category_12993272.html?spm=1001.2014.3001.5482


        write_script命令用于将设计中的属性设置命令输出为脚本文件(其实它并不是一个SDC命令,归为此类只是为了方便管理),这包括所有的SDC命令(实际上所有的SDC命令都会设置相应属性,例如set_ideal_network命令设置了ideal_network_source属性),但不包括用户自定义属性。对于那些不能直接用特定命令设置的属性,将统一使用set_attribute命令设置。

        本文针对Design Compiler,但该命令同样存在于PrimeTime、IC Compiler等工具中,它们大致相同,略有差别。write_script命令的BNF范式(有关BNF范式,可以参考以往文章)为:

write_script  
    [-hierarchy]  
    [-no_annotated_check] [-no_annotated_delay] [-no_cg]  
    [-full_path_lib_names]  
    [-nosplit]  
    [-include loop_breaking]  
    [-output file_name]

指定所有设计

        -hierarchy选项指定为所有设计生成属性设置命令,如果不使用该选项,只会为当前设计生成属性设置命令。

指定不包含反标延迟检查命令

        -no_annotated_check选项指定脚本文件中不包含set_annotated_check命令。对于含有大量反标信息的设计,使用此选项可以避免生成过大的脚本文件。

指定不包含反标延迟命令

        -set_annotated_delay选项指定脚本文件中不包含set_annotated_delay命令。对于含有大量反标信息的设计,使用此选项可以避免生成过大的脚本文件。

指定不包含时钟门控信息

        -no_cg选项指定脚本文件中不包含Power Compiler中有关时钟门控的属性设置(通过set_attribute命令设置),这些属性有助于门控时钟单元的识别。

指定完整库名

        -full_path_lib_names选项指定库名以包含路径的方式写出。

指定不换行

        -nosplit选项指定当字段长度超出列宽时不进行换行(适合用diff比较或后处理)。

指定包含被断开的组合环

        -include loop_breaking选项指定为那些被断开的组合环输出set_disable_timing命令。

指定文件名

        -output选项指定脚本文件的名称,如果不使用该选项,则默认只输出至标准输出。

注意事项

        1、某些属性不支持输出,某些命令由于未设置属性也不支持输出,例如set_clock_gating_style、set_min_library等。

        2、对于Design Compiler而言,输出的设置命令可能与执行时不完全一样,这是因为综合过程中Design Compiler可能对设计进行解组、唯一化、重命名等优化操作(严格意义说,此时的设置命令对应的是综合后设计的属性,而不是综合前的),并且设置命令应该是参数展开的形式。 

简单使用

        假设执行了以下脚本文件,但不进行综合。

create_clock -period 10 [get_ports clk]
set_clock_latency -source 0.5  [get_clocks clk]
set_dont_touch [get_nets clk] 
set_attribute [get_nets in1] dont_touch true
set_load [expr 0.5+0.5] out // 输出时是以展开的形式
set_input_delay 0.5 -clock [get_clocks clk] [get_ports in*] // 输出时是以展开的形式

        使用write_script 命令后,输出的内容如下所示。

dc_shell> write_script 
Warning: Design 'top_module' has '1' unresolved references. For more detailed information, use the "link" command. (UID-341)
###################################################################

# Created by write_script -format dctcl on Wed Jul 30 18:50:23 2025

###################################################################

# Set the current_design #
current_design top_module

remove_wire_load_model
set_dont_touch [get_nets in1]           // 尽管使用set_attribute命令设置,但输出set_dont_touch命令
set_dont_touch [get_nets clk] 
set_load -pin_load 1 [get_ports out]
create_clock [get_ports clk]  -period 10  -waveform {0 5}
set_clock_latency -source 0.5  [get_clocks clk]
set_input_delay -clock clk  0.5  [get_ports in1]
set_input_delay -clock clk  0.5  [get_ports in2]
set_input_delay -clock clk  0.5  [get_ports in3]

网站公告

今日签到

点亮在社区的每一天
去签到