一、set_disable_clock_gating_check
set_disable_clock_gating_check对指定的cell/pin/lib_cell/lib_pin设置是否进行clock gating的时序检查。
对于工具插入或者手动插入的ICG std cell,工具都会自动进行检查;
对于非ICG的std cell,例如与门,或门以及手动搭建的latch+与门的结构,可以通过该命令来禁止或者启动时钟的gate端的时序检查。
二、write_sdc和write_script区别
1. write_sdc
write_sdc命令所生成的sdc文件是一个工业标准文件,可以被第三方的软件工具所识别。
代码如下(示例):
#希望写出的sdc中没有set_disable_clock_gating_check
write_sdc top.sdc
read_sdc top.sdc
2. write_script
write_script命令产生的是非标准sdc文件,对于set_disable_clock_gating_check等命令是Synopsys工具的命令,不属于标准sdc文件的范畴,建议使用write_script命令。因此write_script命令产生的非标准sdc文件只能用Synopsys公司的相关软件进行后端流程。
由上可知,使用write_sdc命令时,set_disable_clock_gating_check等指令不会被成功写入sdc文件,如果要将它们写入sdc文件,可使用write_script替换write_sdc命令;同样的,在后端工具读取sdc文件时,如果含有set_disable_clock_gating_check等指令时使用read_sdc命令时可能会说没有这个指令,建议使用source命令。
代码如下(示例):
#希望写出的sdc中有set_disable_clock_gating_check
write_script -output sdc.tcl
source -echo -verbose sdc.tcl
需要注意的是,一般DC写出来sdc用的是write_sdc,因为不确定后端用的是不是synopsys的后端工具;而PT里面读sdc时一般会用source,保证design提供的手写的sdc里面的全部指令都能够生效。