SDC命令详解:使用write_sdc命令进行输出
相关阅读
SDC命令详解https://blog.csdn.net/weixin_45791458/category_12931432.html?spm=1001.2014.3001.5482
write_sdc命令用于将设计中的约束以Synopsys Design Constraints(SDC)格式输出为脚本文件(其实它并不是一个SDC命令,归为此类只是为了方便管理),在某些情况下,需要以文本形式导出一个设计的SDC约束(比如当Design Compiler配合非Synopsys的后端工具时)。
本文针对Design Compiler,但该命令同样存在于PrimeTime、IC Compiler等工具中,它们大致相同,略有差别。write_sdc命令的BNF范式(有关BNF范式,可以参考以往文章)为:
write_sdcfile_name[-nosplit][-version sdc_version]//注:该命令的选项和参数顺序任意
指定文件名
可以指定输出SDC文件的名称
指定不换行
-nosplit选项指定不自动换行(字段不换行,适合用diff比较或后处理)。
指定SDC版本
-version选项可以指定SDC版本,可以从1.2到目前最新的2.2(一条set sdc_version命令会被写入输出的文件中)。
注意事项
1、该命令只能输出SDC命令,下面的博客给出了这些命令的集合,对于非SDC命令(例如set_dont_touch),不会包含在输出文件中。
SDC命令详解:SDC命令大全(持续更新)https://chenzhang.blog.csdn.net/article/details/134188262?spm=1001.2014.3001.5502 2、如果使用了新版本的SDC命令,但使用-version选项指定了老版本,则这些命令不会包含在输出文件中。
3、对于Design Compiler而言,输出的SDC命令可能与执行时不完全一样,这是因为综合过程中Design Compiler可能对设计进行解组、唯一化、重命名等优化操作(严格意义说,此时的SDC命令指的是应用于综合后设计的约束,而不是综合前的),并且SDC命令应该是参数展开的形式。
简单使用
假设使用了以下SDC文件进行约束,但不进行综合。
create_clock -period 10 [get_ports clk]
set_clock_latency -source 0.5 [get_clocks clk]
set_dont_touch [get_ports clk] // 非SDC命令
set_load [expr 0.5+0.5] out1 // 输出时是以展开的形式
set_input_delay 0.5 -clock [get_clocks clk] [get_ports in*] // 输出时是以展开的形式
使用write_sdc命令后,输出的SDC文件内容如下所示。
dc_shell> write_sdc
#################################################################### Created by write_sdc on Wed Jun 25 21:07:40 2025###################################################################
set sdc_version 2.1set_load -pin_load 1 [get_ports out1]
create_clock -name 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]