很多新入行的小伙伴们可能直接将综合生成的网表直接用于APR了。但实际上,综合用到的sdc很多命令在APR的时候是不适用的。
比如set_wire_load_model,这条命令是让工具根据wire load模型去计算net上的delay。由于综合的时候,并没有进行布局布线,net的长度也不知道。通过wire load模型,工具可以根据fanout数量去估算net的长度,进而去计算delay。而这种估算模型,在实际的布局布线是非常不准确的。因此,在APR的时候,需要将这个命令去除掉,采用工具自带的rc引擎去抽取net上的RC,计算net delay。
另外像set_clock_latency,这条命令是设置clock tree的latency。但在APR时,我们会做CTS,clock tree会变成一个实际值,而不是命令涉资的set_clock_latency,因此这条命令也是不需要的。
还有其他一些命令,如set_max_transition/set_max_capacitance/set_timing_derate,这些设置约束的命令,其实在APR的不同阶段也是不一样的,也不可以采用综合时设定的值。
我们可以通过脚本对综合后的sdc进行处理,使之成为APR的sdc。