数字集成系统设计——逻辑综合

2024-01-01 15:44

本文主要是介绍数字集成系统设计——逻辑综合,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

 

一、概述

1.1 综合的分类

1.2 逻辑综合的基本架构

1.3 逻辑综合的内部流程

1.3.1 RTL代码转译(Translation)

1.3.2 逻辑级优化(Optimization)

1.3.3 工艺映射(Mapping)

二、优化策略

2.1 资源共享

2.2 子表达式共享

2.3 时分复用

2.4 展平化与结构化

2.4.1 展平化(Flattening,亦称扁平化)

2.4.2 结构化(Structuring,亦称层次化)

2.5 逻辑重建

2.6 门级优化

2.7 针对建立-保持时间的策略


 

一、概述

综合是指自动将上一个设计层次的数据转换成下一个层次的设计数据,可大大减少人工消耗,提高设计效率、准确度和复用性。

1.1 综合的分类

  • 行为综合:将基于HDL描述的行为级代码自动转换为RTL级代码,只考虑逻辑不考虑延时,发展缓慢。
  • 逻辑综合:将基于HDL描述的RTL级代码自动转换为门级网表,所用连线延时是理论预估值,普遍使用(本节之后所称“综合”均指“逻辑综合”)。
  • 物理综合:将基于HDL描述的RTL级代码自动转换为门级网表,所用连线延时是布局布线后提取的真实值,运算量巨大。

1.2 逻辑综合的基本架构

3c4c5a6095174e708fae854beaa07c81.jpeg

综合优化目标
  • 速度:在不出现时序违例的前提下关键路径延时最短
  • 面积:在满足时序的条件下面积最小
  • 功耗:在满足时序的条件下功耗最低
常用逻辑综合工具
  • Synopsys的Design Compiler(DC)
  • Cadence的RTL Compiler、BuildGates

1.3 逻辑综合的内部流程

1.3.1 RTL代码转译(Translation)

基于通用元件库(如DC 的Design Ware),将RTL描述转换为门级布尔描述(DC用 Gtech通用网表表征),效果主要取决于RTL编码质量。

1.3.2 逻辑级优化(Optimization)

对布尔函数进行逻辑结构上的优化,效果主要取决于EDA工具。

1.3.3 工艺映射(Mapping)

基于工艺库和约束条件,将优化好的布尔函数转换成实际的门级逻辑电路,并完成门级优化。

二、优化策略

2.1 资源共享

不同的逻辑尽可能共享相同的代码、表达式或元件,以减少芯片的面积,但可能会降低速度。比如下面的这个例子:
1b67c12667fa41c1b74ebc49f012d6b3.jpeg
同样的逻辑功能,资源共享后元件数从5个减少到3个,而且选择器的复杂度低于加法器,从而显著减小了芯片面积,而延时没有变化。事实上,在RTL代码设计时也可以使用这样的技巧。

2.2 子表达式共享

5c9fedd52de349df91cbbf63d2c9ed4b.jpeg

2.3 时分复用

        原方案:需要4个乘法器、1个加法器、2组寄存器

42805dfacf9440df8ea6fd7a577323d2.jpeg

        时分复用方案:只需要1个乘法器、1个加法器、2个多路选择器和3组寄存器。如维持原有延时不变,需将时钟频率增加到原来的四倍

766351b8913e460d89a0e03819e56def.jpeg

2.4 展平化与结构化

2.4.1 展平化(Flattening,亦称扁平化)

将设计中所有的中间变量和结构转换为只有两级逻辑的乘积和形式,适用于随机逻辑(如指令译码)的优化。
4a7c5b391d2a42539f558f7a219df301.jpeg

2.4.2 结构化(Structuring,亦称层次化)

        人为地给设计增加中间变量和逻辑结构,适应于本身就有很强结构性的单元(如加法器、乘法器和算术单元等)

 6d48f023cfab461489f0c17698a37775.jpeg

2.5 逻辑重建

在保证逻辑功能不变的前提下,重新构造布尔关系,来改善性能。例如,重排延时不同的逻辑单元的前后位置,以减少关键路径的延时;减少内部高翻转率(单位时间内电平变化次数)节点数量,从而降低动态功耗。
3dfc5ec772e34d988fdc61ea956a5bdc.jpeg

2.6 门级优化

  • 输入重排:对于多输入逻辑门,将翻转率高的信号接到输入电容小的引脚,可以降低动态功耗
  • 门的合并:将翻转率较高的逻辑门合并到输入门中,可缩短二者之间的互连线,从而降低功耗
  • 门尺寸优化:缩小翻转率较高的门的尺寸,可通过减少节点电容来降低功耗,但延迟会有增加

2.7 针对建立-保持时间的策略

相对于布局布线后的网表,在综合出的网表中,路径的延迟总是偏短,故综合时应选择最慢情况来进行优化。因此
  • 如可供综合选用的单元库有慢库(slow,延时最长Max,最坏情况WC(Worst Case))和快库(fast,延时最短Min,最好情况BC(Best Case)),则选用慢库
  • 相对于保持时间(hold time),建立时间(set time)违例在综合时更容易出现,因此优化主要针对建立时间而非保持时间
  • 综合时消除保持时间违例会让面积急剧增大,而这种违例往往在布局布线后自动消失,因此在综合阶段可暂不消除保持时间违例。

 

这篇关于数字集成系统设计——逻辑综合的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/559738

相关文章

基于Python实现数字限制在指定范围内的五种方式

《基于Python实现数字限制在指定范围内的五种方式》在编程中,数字范围限制是常见需求,无论是游戏开发中的角色属性值、金融计算中的利率调整,还是传感器数据处理中的异常值过滤,都需要将数字控制在合理范围... 目录引言一、基础条件判断法二、数学运算巧解法三、装饰器模式法四、自定义类封装法五、NumPy数组处理

mybatisplus的逻辑删除过程

《mybatisplus的逻辑删除过程》:本文主要介绍mybatisplus的逻辑删除过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录myBATisplus的逻辑删除1、在配置文件中添加逻辑删除的字段2、在实体类上加上@TableLogic3、业务层正常删除即

Mysql中设计数据表的过程解析

《Mysql中设计数据表的过程解析》数据库约束通过NOTNULL、UNIQUE、DEFAULT、主键和外键等规则保障数据完整性,自动校验数据,减少人工错误,提升数据一致性和业务逻辑严谨性,本文介绍My... 目录1.引言2.NOT NULL——制定某列不可以存储NULL值2.UNIQUE——保证某一列的每一

MySQL逻辑删除与唯一索引冲突解决方案

《MySQL逻辑删除与唯一索引冲突解决方案》本文探讨MySQL逻辑删除与唯一索引冲突问题,提出四种解决方案:复合索引+时间戳、修改唯一字段、历史表、业务层校验,推荐方案1和方案3,适用于不同场景,感兴... 目录问题背景问题复现解决方案解决方案1.复合唯一索引 + 时间戳删除字段解决方案2:删除后修改唯一字

MyBatis设计SQL返回布尔值(Boolean)的常见方法

《MyBatis设计SQL返回布尔值(Boolean)的常见方法》这篇文章主要为大家详细介绍了MyBatis设计SQL返回布尔值(Boolean)的几种常见方法,文中的示例代码讲解详细,感兴趣的小伙伴... 目录方案一:使用COUNT查询存在性(推荐)方案二:条件表达式直接返回布尔方案三:存在性检查(EXI

Python实现特殊字符判断并去掉非字母和数字的特殊字符

《Python实现特殊字符判断并去掉非字母和数字的特殊字符》在Python中,可以通过多种方法来判断字符串中是否包含非字母、数字的特殊字符,并将这些特殊字符去掉,本文为大家整理了一些常用的,希望对大家... 目录1. 使用正则表达式判断字符串中是否包含特殊字符去掉字符串中的特殊字符2. 使用 str.isa

使用PyTorch实现手写数字识别功能

《使用PyTorch实现手写数字识别功能》在人工智能的世界里,计算机视觉是最具魅力的领域之一,通过PyTorch这一强大的深度学习框架,我们将在经典的MNIST数据集上,见证一个神经网络从零开始学会识... 目录当计算机学会“看”数字搭建开发环境MNIST数据集解析1. 认识手写数字数据库2. 数据预处理的

java字符串数字补齐位数详解

《java字符串数字补齐位数详解》:本文主要介绍java字符串数字补齐位数,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Java字符串数字补齐位数一、使用String.format()方法二、Apache Commons Lang库方法三、Java 11+的St

最新Spring Security实战教程之表单登录定制到处理逻辑的深度改造(最新推荐)

《最新SpringSecurity实战教程之表单登录定制到处理逻辑的深度改造(最新推荐)》本章节介绍了如何通过SpringSecurity实现从配置自定义登录页面、表单登录处理逻辑的配置,并简单模拟... 目录前言改造准备开始登录页改造自定义用户名密码登陆成功失败跳转问题自定义登出前后端分离适配方案结语前言

Java逻辑运算符之&&、|| 与&、 |的区别及应用

《Java逻辑运算符之&&、||与&、|的区别及应用》:本文主要介绍Java逻辑运算符之&&、||与&、|的区别及应用的相关资料,分别是&&、||与&、|,并探讨了它们在不同应用场景中... 目录前言一、基本概念与运算符介绍二、短路与与非短路与:&& 与 & 的区别1. &&:短路与(AND)2. &:非短