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

目录

 

一、概述

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)违例在综合时更容易出现,因此优化主要针对建立时间而非保持时间
  • 综合时消除保持时间违例会让面积急剧增大,而这种违例往往在布局布线后自动消失,因此在综合阶段可暂不消除保持时间违例。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/284177.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux之进程管理

什么是进程 在linux中每个执行的程序都称为一个进程,每个进程都分配一个ID号(pid进程号)。每个进程都可能以两种方式存在,即前台和后天。前台进程就是用户目前的屏幕上可以进行操作的。后台进程则是实际在操作,但屏幕…

AD教程 (二十一)模块化布局规划

AD教程 (二十一)模块化布局规划 原理图是按照我们的功能模块去进行排布划分的 利用交叉选择模式分屏快速进行模块化布局 分屏,选中任意文档,右击,点击垂直分割 交叉选择模式,点击工具,交叉选…

【模拟电路】软件Circuit JS

一、模拟电路软件Circuit JS 二、Circuit JS软件配置 三、Circuit JS 软件 常见的快捷键 四、Circuit JS软件基础使用 五、Circuit JS软件使用讲解 欧姆定律电阻的串联和并联电容器的充放电过程电感器和实现理想超导的概念电容阻止电压的突变,电感阻止电流的突变LR…

基于SpringBoot的校园二手闲置交易平台

基于SpringBoot的校园二手闲置交易平台的设计与实现~ 开发语言:Java数据库:MySQL技术:SpringBootMyBatis工具:IDEA/Ecilpse、Navicat、Maven 系统展示 主页 登录界面 管理员界面 摘要 本文基于Spring Boot框架设计并实现了一款…

buuctf-Misc 题目解答分解103-105

103.[GKCTF 2021]签到 追踪流发现类似flag 字符 f14g 下面有大量的是16进制字符 64306c455357644251306c6e51554e4a5a3046355355737764306c7154586c4a616b31355357704e65556c7154586c4a616b31355357704e65556c7154586c4a616b31355357704e65556c7154586c4a616b31355357704e655…

git rebase应用场景三

文章目录 git rebase应用场景三 git rebase应用场景三 在我们的开发分支中 假设我们修改一个文件 提交一个版本 再回到master分支 同时也去修改1.txt文件,提交一个版本 这样相当于master分支提交了一次,dev也提交了一次 然后回到dev分支 此时会报错…

【网络安全】upload靶场pass11-17思路

目录 Pass-11 Pass-12 Pass-13 Pass-14 Pass-15 Pass-16 Pass-17 🌈嗨!我是Filotimo__🌈。很高兴与大家相识,希望我的博客能对你有所帮助。 💡本文由Filotimo__✍️原创,首发于CSDN📚。 &#x…

gRPC之内置Trace

1、内置Trace grpc内置了客户端和服务端的请求追踪,基于golang.org/x/net/trace包实现,默认是开启状态,可以查看事 件和请求日志,对于基本的请求状态查看调试也是很有帮助的,客户端与服务端基本一致,这里…

Delphi6函数大全4-SysUtils.pas

Delphi6函数大全4-SysUtils.pas首部 function FormatFloat(const Format: string; Value: Extended): string; $[SysUtils.pas功能 返回浮点数类型以指定格式字符串Format转换成字符串说明 FormatFloat(,.00, 1234567890) 1,234,567,890.00参考 function …

element表格排序功能

官方展示 个人项目 可以分别对每一项数据进行筛选 注&#xff1a;筛选的数据不能是字符串类型必须是数字类型&#xff0c;否则筛选会乱排序 html <el-table :data"tableData" border height"600" style"width: 100%"><el-table-co…

实验六——cache模拟器实验

前言 本次实验的主要目的是熟悉cache的原理。加深对cache的映像规则、替换方法、cache命中与缺失的理解。通过实验对比分析映像规则对cache性能的影响。 实验内容一&#xff1a;熟悉模拟程序 阅读给出的cache模拟程序&#xff08;cachesimulator.cpp&#xff09;&#xff0c;…

Linux学习之系统编程1(关于读写系统函数)

写在前面&#xff1a; 我的Linux的学习之路非常坎坷。第一次学习Linux是在大一下的开学没多久&#xff0c;结果因为不会安装VMware就无疾而终了&#xff0c;可以说是没开始就失败了。第二次学习Linux是在大一下快放暑假&#xff08;那个时候刚刚过完考试周&#xff09;&#xf…

基于Java在线商城系统设计实现(源码+部署文档+讲解视频)

博主介绍&#xff1a; ✌至今服务客户已经1000、专注于Java技术领域、项目定制、技术答疑、开发工具、毕业项目实战 ✌&#x1f345; 文末获取源码联系 &#x1f345;&#x1f447;&#x1f3fb; 精彩专栏 推荐订阅 &#x1f447;&#x1f3fb; 不然下次找不到 Java项目精品实…

目标检测-Two Stage-Mask RCNN

文章目录 前言一、Mask RCNN的网络结构和流程二、Mask RCNN的创新点总结 前言 前文目标检测-Two Stage-Faster RCNN提到了Faster RCNN主要缺点是&#xff1a; ROI Pooling有两次量化操作&#xff0c;会引入误差影响精度 Mask RCNN针对这一缺点做了改进&#xff0c;此外Mask …

Airtest的iOS实用接口介绍

前段时间Airtest更新了1.3.0.1版本&#xff0c;里面涉及非常多的iOS功能新增和改动&#xff0c;今天想详细跟大家聊一下里面的iOS设备接口。 PS&#xff1a;本文示例均使用本地连接的iOS设备&#xff0c;Airtest版本为1.3.0.1 。 安装接口&#xff1a;install、install_app …

使用css实现 Typora markdown 标题自动编号

第一&#xff0c;找到主题文件夹 第二&#xff0c;复制下面代码放入 AutoNumber.css文件中 body {counter-reset: h1; }#write h1, .markdown-section h1 {counter-reset: h2; }#write h2, .markdown-section h2 {counter-reset: h3; }#write h3, .markdown-section h3 {counte…

2023 NCTF writeup

CRYPTO Sign 直接给了fx,gx&#xff0c;等于私钥给了&#xff0c;直接套代码&#xff0c;具体可以参考&#xff1a; https://0xffff.one/d/1424 fx [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…

linux调试笔记

文章目录 基本启动调试与附加进程断点程序运行控制tui模式查看堆栈与变量监视变量多线程调试 扩展自定义跳转命令解析自定义类型禁用动态库自动加载设置源码路径断点时执行命令gdbserver远程调试 gdb脚本QtCreator调试Linux下处理编译、运行时的一些问题undefined symbol问题-n…

【C# 技术】 C# 常用排序方式——自定义数据排序

C# 常用排序方式——自定义数据排序 前言 在最近的项目中经常会对C#中的数据进行排序&#xff0c;对于基本数据类型&#xff0c;其排序方式比较简单&#xff0c;只需要调用内置算法即可实现&#xff0c;但对于自定义数据类型以及自定义排序规则的情况实现起来就比较麻烦&…

.NET Core中灵活使用反射

前言 前段时间有朋友问道一个这样的问题&#xff0c;.NET Core中如何通过Attribute的元数据信息来调用标记的对应方法。我第一时间想到的就是通过C#反射获取带有Custom Attribute标记的类&#xff0c;然后通过依赖注入&#xff08;DI&#xff09;的方式获取对应服务的方法并通…