Fork me on Gitee

(9)逻辑综合添加约束(时序、DRC)

一、前言

  dc综合是一个不断迭代的过程,如果设计的RTL代码不满足时序约束的需求,则需要重新进行修改,然后再去综合,一直迭代到时序满足需求。

二、面积约束

  面积约束指令:set_max_area 100

  面积约束的定义有三种,一种指的是两输入与非门的个数,一种是晶体管的个数,第三种是平方微米(实际面积)

三、时序路径约束

  目标:约束电路中的所有时序路径

  四种路径:输入到寄存器;寄存器到寄存器;寄存器到输出;输入直接到输出的路径

  get_ports:设计中的时钟端口,使用create_clock定义了时钟的周期10ns

  get_ports A:将输入延迟施加在A端口上

  max:该端口最大的延迟是多少(最大延迟通常用来计算建立时间)

  clock:该端口的延迟是针对哪个时钟域

  例:待综合的电路为右边红框中的电路,如何对其进行时序约束?

/*********************************************************************/

四、DRC约束

五、一个具体的tcl脚本

  注意这里dont_touch和理想网络的区别,dont_touch是让dc不综合

  将整个工程以ddc的形式保存,方便后续查询

  保存网表文件,用于之后的布局布线和后仿真

  需要保存sdf文件,该文件标注了用到的标准单元的延迟值,同时在后仿时也需要sdf文件

  保存报告:面积、约束违例、时序

  面积报告中包括时序电路面积、组合电路面积以及总面积

  时序报告主要观察建立时间和保持时间是否满足要求

  约束违例报告反应了逻辑综合过程中哪些约束没有达到要求

/*********************************************************************/

  重点讲一下时序报告

  主要包括:表头、数据发射路径、数据捕获路径、时序结果

  max说明是建立时间报告,若为min则说明是保持时间报告

  第一段是操作条件的信息,可以看到环境的选取和设置

  wire load model反映了线载模型的设置

  通常,时序报告给出的路径为关键路径,即延迟最大的路径,图中的path group为clk

  startpoint和endpoint给出了关键路径的起点和终点

   发射路径报告

  第一列:路径上经过的各个点

  第二列:Incr,指的是路径中每个点自身的延迟

  第三列:该路径累积的延迟值

  data arrival time:该路径结束的时间点

  捕获路径报告

  因为是建立时间路径,所以需要减去一个建立时间(library setup time)

  data required time:要求到达的时间点

  时序报告结果

  以一个slack的形式表示,对于建立时间,等于data required time-data arrival time。大于0表示满足时序要求,

/*********************************************************************/


附:

 

posted @ 2024-07-06 21:45  数字ic新人  阅读(13)  评论(0编辑  收藏  举报