在设计中,由于时序路径中的逻辑单元本身存在驱动能力有限的问题,所以在满足时序要求的同时也要保证逻辑单元工作的稳定性,即逻辑单元驱动的负载不应该超过它所能控制的驱动范围。如下图所示。
可以通过设置时序设计规则约束来指导时序分析工具正确地评估单元是否能够在稳定的合理工作状态下工作。
时序设计规则约束包含如下三个方面。
1. 最大转换时间
所有的单元驱动能力是有限的,故其驱动的最大转换时间也是有限的。为了让所有的单元在正常的驱动力范围内工作,需要设置最大转化时间来控制单元的驱动力过载的问题,否则可能导致不能正常工作。
使用SDC命令set_max_transition来定义最大转换时间约束,命令示例如下。
set_max_transition 0.6 [all_outputs]
以上命令定义所有输出驱动器的最大转换时间为0.6ns。
2. 最大电容负载
单元驱动转换时间本质上取决于输出负载的大小,因此单元的驱动状态根本原因是受到输出端的负载影响。为了让设计中的所有单元都在正常的驱动力范围内工作,也可以设置单元输出端的最大电容负载,超过最大负载值的限制有可能会导致单元不能正常工作。
使用SDC命令set_max_capacitance来定义最大电容负载约束,命令示例如下。
set_max_capacitance 0.5 [all_outputs]
以上命令定义所有的输出驱动端的负载电容为0.5pF。
3. 最大扇出
扇出是指逻辑单元输出端直接连接的下级单元的输入端的个数。由于扇出直接影响负载的大小,所以为了让所有单元都能正常工作,可以设置输出端的最大扇出值,超过最大扇出值的限制就有可能导致单元不能正常工作。
使用SDC命令set_max_fanout来定义最大扇出约束,命令示例如下。
set_max_fanout 16 [all_outputs]
以上命令定义了所有输出驱动端的最大扇出值为16。