design compiler中的drc规则详解

design compiler中的drc规则详解

  • DRC是什么?
  • DRC分类
  • 各个DRC的含义
  • 写在最后

DRC是什么?

  1. 本文讨论的DRC即是Design Rule Constraint,而不是Design Rule Check,后者是物理端或者后端的一个关键步骤。

DRC分类

  1. DRC为DC中的一个约束大类,另一类即是我们熟悉的一些优化类的约束,例如时钟跑多快,面积多大,以及功耗如何等。
  2. 一般来讲,Foundry厂提供的库文件会默认一个初始的DRC。
  3. DRC主要分类三大类,一类为最大XXX约束,包括最大电容,最大扇出,最大过渡时间。一类为cell的退化约束,还有一类为最小电容。

各个DRC的含义

  1. 最大电容的概念很好理解,Design Compiler综合时会遵从一个线网最大电容的上限原则,连接到某个wire上的电容总大小不能超过该值。一般情况下,我们初版综合脚本不会设置该值,原因是其默认值是按照我们的逻辑库和操作条件去抽取的,即便不去设置,也会存在该默认值,当然,部分特殊情况下需要手动再去设置一次,命令为set_max_capacitance,单位可以用report_units命令去报一下。
  2. 最大过渡时间也很好理解,这个概念是针对wire来讲的,即驱动该wire的pin改变逻辑值需要的最长时间。同理,逻辑库会默认有一个最大过渡时间,当然也可以重设,通过set_max_transition这条命令。同理,其遵从“最小原则”,按照min(逻辑库设置值,手动设置值)来进行综合计算。
  3. 最大扇出,大多数库,例如tsmc,smic,umc等,都会有一个默认的最大扇出限制,一般情况下不需要手动设置,极个别情况下需要去设置一个更保守的最大扇出。
  4. cell退化,这个概念比较生涩,即部分逻辑库会根据输入的pin的transition time的一个函数来计算得到一个最大电容,若设置了cell degradation这个值,实际综合时dc会尽可能将线网的最大电容负载小于这个值。一般情况下不会使用。
  5. 最小电容的概念为存在于综合后的cell的最小电容值,也就是一个下限值,若低于该下限,一般情况下,dc会通过resize的策略去解决该violation。当然,resize本身也是解决时序违例的一种办法。

写在最后

  1. 事在人为,全力以赴!

你可能感兴趣的:(design,compiler,synopsys,综合)