相关阅读
SDC命令详解
https://blog.csdn.net/weixin_45791458/category_12931432.html?spm=1001.2014.3001.5482
目录
应用变量无法保存在ddc文件中,也无法使用write_script命令输出,write_app_var命令用于将当前设计中的应用变量设置命令输出为脚本文件(其实它并不是一个SDC命令,归为此类只是为了方便管理)。
本文针对Design Compiler,但该命令同样存在于PrimeTime、IC Compiler等工具中,它们大致相同,略有差别。write_app_var命令的BNF范式(有关BNF范式,可以参考以往文章)为:
write_app_var
-output file
[-all | -only_changed_vars]
[pattern]
//注:该命令的选项和参数顺序任意
指定文件名
-output选项指定脚本文件的名称,该选项是必须的。
指定全部应用变量
-all选项指定输出全部应用变量。-all选项和-only_changed_vars选项是互斥的,只能使用其中一个。
指定仅输出已更改的应用变量
-only_changed_vars选项指定只输出已更改的应用变量,该行为是默认的。-all选项和-only_changed_vars选项是互斥的,只能使用其中一个。
指定patterns参数
patterns参数用于指定一个字符串,支持使用通配符,模式串中可以包含*(匹配0至多个字符)和?(匹配1个字符)。当不使用模式串时,默认输出所有应用变量。
Multicorner-Multimode支持
该命令对所有场景生效。
关于场景的更多介绍,可以参考下面的博客。
简单使用
假设执行了以下脚本文件。
dcnxt_shell> set_app_var search_path ". ./src ./libs"
dcnxt_shell> set_app_var target_library "class.db"
dcnxt_shell> set_app_var link_library "* class.db"
dcnxt_shell> set_app_var symbol_library "class.sdb"
使用write_app_var命令后,输出的脚本文件内容如下所示。
set_app_var __ek_tcl_prompt1 {dcnxt_shell> }
set_app_var acs_global_user_compile_strategy_script default
set_app_var acs_override_script_suffix scr
set_app_var acs_work_dir /home/zhangchen/DCNXT_2021.06/lab1
set_app_var arch_init_path /opt/Synopsys/syn/W-2024.09-SP5/linux64/motif/syn/uid
set_app_var bus_dimension_separator_style {][}
set_app_var bus_naming_style {%s[%d]}
set_app_var check_error_list {CMD-004 CMD-006 CMD-007 CMD-008 CMD-009 CMD-010 CMD-011 CMD-012 CMD-014 CMD-015 CMD-016 CMD-019 CMD-026 CMD-031 CMD-037 DB-1 DCSH-11 DES-001 ACS-193 FILE-1 FILE-2 FILE-3 FILE-4 LINK-7 LINT-7 LINT-20 LNK-023 OPT-100 OPT-101 OPT-102 OPT-114 OPT-124 OPT-127 OPT-128 OPT-155 OPT-157 OPT-181 OPT-462 UI-11 UI-14 UI-15 UI-16 UI-17 UI-19 UI-20 UI-21 UI-22 UI-23 UI-40 UI-41 UID-4 UID-6 UID-7 UID-8 UID-9 UID-13 UID-14 UID-15 UID-19 UID-20 UID-25 UID-27 UID-28 UID-29 UID-30 UID-32 UID-58 UID-87 UID-103 UID-109 UID-270 UID-272 UID-403 UID-440 UID-444 UIO-2 UIO-3 UIO-4 UIO-25 UIO-65 UIO-66 UIO-75 UIO-94 UIO-95 EQN-6 EQN-11 EQN-15 EQN-16 EQN-18 EQN-20}
set_app_var compile_hold_reduce_cell_count false
set_app_var found_arch_apollo 0
set_app_var found_x11_vendor_string_apollo 0
set_app_var gui_preset_directory /home/zhangchen/.synopsys_dc_gui/presets
set_app_var hdlin_always_fsm_complete FALSE
set_app_var hdlin_enable_elaborate_update true
set_app_var hdlin_enable_rtldrc_info false
set_app_var hdlin_failsafe_fsm TRUE
set_app_var hdlin_generate_operator_sharing_data FALSE
set_app_var hdlin_vhdl93_concat TRUE
set_app_var ilm_preserve_core_constraints false
set_app_var isatty 1
set_app_var link_path {* class.db}
set_app_var motif_files /opt/Synopsys/syn/W-2024.09-SP5/admin/setup
set_app_var mw_use_pdb_lib_format false
set_app_var search_path {. ./src ./libs}
set_app_var set_svf_enable true
set_app_var site_info_file /opt/Synopsys/syn/W-2024.09-SP5/admin/license/site_info
set_app_var symbol_library class.sdb
set_app_var synlib_library_list {DW01 DW02 DW03 DW04 DW05 DW06 DW07}
set_app_var target_library class.db
set_app_var test_allow_clock_reconvergence true
set_app_var test_bsd_control_cell_drive_limit 0
set_app_var test_bsd_manufacturer_id 0
set_app_var test_bsd_part_number 0
set_app_var test_bsd_version_number 0
set_app_var test_bsdl_max_line_length 80
set_app_var test_default_min_fault_coverage 95
set_app_var test_user_defined_instruction_naming_style USER%d
set_app_var timing_report_attributes {dont_touch dont_use map_only size_only ideal_net infeasible_paths}
set_app_var vhdllib_architecture VITAL
set_app_var vhdllib_logic_system ieee-1164
set_app_var vhdllib_tb_x_eq_dontcare FALSE
set_app_var vhdlout_follow_vector_direction TRUE
set_app_var vhdlout_use_packages IEEE.std_logic_1164
set_app_var view_analyze_file_suffix {v vhd vhdl}
set_app_var view_arch_types {sparcOS5 hpux10 rs6000 sgimips}
set_app_var view_execute_script_suffix {.script .scr .dcs .dcv .dc .con .tcl}
set_app_var view_independent_dialogs { "test_report" " Test Reports " "report_print" " Report " "report_options" " Report Options " "report_win" " Report Output " "manual_page" " Manual Page " }
set_app_var view_read_file_suffix {db gdb sdb edif eqn fnc lsi mif NET pla st tdl v vhd vhdl xnf}
set_app_var view_script_submenu_items {"DA to SGE Transfer" write_sge}
set_app_var view_write_file_suffix {gdb db sdb do edif eqn fnc lsi NET neted pla st tdl v vhd vhdl xnf}
set_app_var write_test_formats {synopsys tssi_ascii tds verilog vhdl wgl}
set_app_var xterm_executable xterm
除了设置的四个应用变量外,其余的应用变量都是Design Compiler的三个默认配置文件中设置的,具体情况如下面的博客所示。
Design Compiler:默认配置文件
https://blog.csdn.net/weixin_45791458/article/details/144016186?ops_request_misc=%257B%2522request%255Fid%2522%253A%25221666e53b1cc47fa33221748141f1b551%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=1666e53b1cc47fa33221748141f1b551&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~rank_v31_ecpm-4-144016186-null-null.nonecase&utm_term=-no_init&spm=1018.2226.3001.4450 启动Design Compiler时添加-no_init选项即可禁止默认设置文件的读取和执行,此时的结果如下所示。
set_app_var __ek_tcl_prompt1 {dcnxt_shell> }
set_app_var gui_preset_directory /home/zhangchen/.synopsys_dc_gui/presets
set_app_var isatty 1
set_app_var link_path {* class.db}
set_app_var search_path {. ./src ./libs}
set_app_var symbol_library class.sdb
set_app_var target_library class.db