SDC命令详解:使用write_script命令进行输出
相关阅读
SDC命令详解https://blog.csdn.net/weixin_45791458/category_12931432.html?spm=1001.2014.3001.5482
目录
指定所有设计
指定不包含反标延迟检查命令
指定不包含反标延迟命令
指定不包含时钟门控信息
指定完整库名
指定不换行
指定包含被断开的组合环
指定文件名
Multicorner-Multimode支持
注意事项
简单使用
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选项指定脚本文件的名称,如果不使用该选项,则默认只输出至标准输出。
Multicorner-Multimode支持
该命令仅对当前场景生效,换句话说只能在将当前场景中的属性设置命令输出为脚本文件。
关于场景的更多介绍,可以参考下面的博客。
Design Compiler:多工艺角和多工作模式(Multicorner-Multimode, MCMM)https://blog.csdn.net/weixin_45791458/article/details/149578771?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522e3267dcc7cc26380435f53994dc8b9b8%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=e3267dcc7cc26380435f53994dc8b9b8&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~rank_v31_ecpm-1-149578771-null-null.nonecase&utm_term=MCMM&spm=1018.2226.3001.4450
注意事项
1、某些属性(比如隐式size_only属性或隐式dont_touch属性)不支持输出,某些命令由于未设置属性也不支持输出,例如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命令后,输出的内容如下所示。
dcnxt_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]