ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

芯动力——硬件加速设计方法 学习笔记 6.逻辑综合2

2021-09-05 18:05:44  阅读:203  来源: 互联网

标签:逻辑 set 笔记 时序 电路 模块 硬件加速 约束 优化


施加约束

时序约束

施加时序约束主要是为了保证电路中每一条时序路径都能够处于约束下。在约束后查看电路的setup time和hold time是否满足要求,如果不满足,那么就需要返回代码检查修改或是添加修改新的约束。

DC中我们能够施加的时序约束一般有以下几种:

指定时钟: create_clock period 20 [get_ports CLK]

设置don’t touch属性:set_dont_touch_network [get_clocks Clk]加上这一句主要是为了DC在综合时不对CLK信号进行优化,因为布线之后还会根据布线情况对时钟树进行专门的优化,所以不用在这里做。

约束input delay:set_input_delay -max 7.4 -clock Clk [get_ports A]

image-20210322152614603

input delay的值就是指外部电路的最大输入延时,在计算slack时,要将这个因素考虑进去,它主要影响setup time。

约束output delay:set_output_delay -max 5.4 -clock Clk [get_ports B]

DRC(Design Rule Constrains)

DRC约束主要由工艺库厂商提供,但是在实际中可以约束的更紧一点保证可靠性,DRC如果出现问题,将会直接影响流片。

set_max_transitiontransition time一般是指mos管充电或放电10%到90%的时间。这个值越小越严苛。

set_max_fanout设置最大扇出,这个值表征输入单元输入引脚相对于负载的值。

set_max_capacitance设置最大电容值。

环境约束

在施加完时序约束和DRC约束后,还有一些外部的环境因素会影响电路性能,主要包括外部供电电压的变化、外界的温度、电平转化时间(由驱动能力和负载决定)以及内部互联线的延时。

image-20210322174142111

上图就是依据这些环境问题需要施加的约束。

set_load可以约束输出pin的负载情况,能够更加准确的估计模块输出的时序

set_driving_cell允许用户自定义一个实际的外部驱动cell,使得transition time不为0,这样能够更加准确的估计输入电路的时序

温度、电压和工艺这些参数对时延的影响是由晶圆厂在特定条件下测定的,因此在工艺库中设定了几种工作模式供设计者进行选择,我们一般选择worst和best这两种条件下的参数进行综合,综合后的网表就可以进行后仿真了。

image-20210322174840729

set_wire_load_model可以选择线载模型,具体的指令参数不做介绍,这里我们需要了解的是线载模型这个概念,它主要包含了单位长度的连线的电容以及电阻值,也是由Foundary提供的,是由其他该工艺下流片的芯片连线延时统计得来的。

逻辑综合的优化

DC中还有一些优化策略,会对代码转换的电路进行优化,便于进行时序约束或者减少门电路数量。这些优化有的是自动进行的,有的是需要命令打开的,由于优化会修改实际电路,所以在综合后还需要通过formality进行一致性检查。

还有一些是我们在代码阶段就可以进行的优化,在代码阶段做好这些,有利于DC进行综合:

  1. 不要让一个组合电路穿越过多的模块

image-20210322180048102

如上图的这个电路,将一个组合逻辑电路分到了A、B、C三个模块,由于DC综合会保留模块的端口定义,所以在对这个组合逻辑电路进行优化的时候,会对A、B、C三个模块都进行优化,这就会带来不必要的延时和面积的增加(时序优化一般通过插buffer来进行)。所以,比较好的做法是像下面这样:

image-20210322180446052

  1. 寄存模块的输出

image-20210322180605016

代码或者综合的过程中,将所有的输出寄存起来。其实这样不但是最佳的优化结构,也可以简化时序约束(使得所有模块的输入延时相等)

  1. 不在顶层进行大量组合逻辑运算

image-20210322180712662

同第二条一样,在顶层进行的逻辑运算打乱了模块输出的寄存行为带来的时延相等的特性,不利于综合。

  1. 尽量控制模块的大小一致

image-20210322180936471

  1. 将同步逻辑与其他部分分离

将pad、扫描链等不可综合的部分放在整个同步逻辑电路的外部。

标签:逻辑,set,笔记,时序,电路,模块,硬件加速,约束,优化
来源: https://blog.csdn.net/hp741852/article/details/120118510

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有