RTL编码(2)——模块优化

一、顶层模块的划分

        在RTL编码中,我们是以模块为单位进行设计的,模块之间的连接和嵌套关系对于电路结构有着很大的影响。一个好的系统设计中,我们应该使得模块尽量满足以下两个标准:

  • 顶层模块扁平化
  • 内部模块层次化

1.1 顶层模块扁平化

        顶层模块必须包括I/O单元、时钟产生电路、处理器核、存储器核、内建自测试单元、门控时钟等无法与其他模块一起综合的模块,这称为“扁平化”。扁平化的方式降低了综合与仿真的复
杂度,缺点是局部最优不等于全局最优,而且可能存在综合工具无法消除的冗余。

1.2 内部模块层次化

        对于复杂内部模块(如上图中的接口和功能模块),可以分成多个层次进行综合,这称为“层次化”。层次化设计可以得到更好的综合优化效果,但复杂度和运算量要大得多。

二、行为化与结构化划分

        我们以一个32位二选一选择器为例:

2.1 行为化描述

module mux32(input [31:0] out,input [31:0] a,input [31:0] b);wire sel;assign out = sel ? a : b;
endmodule

2.2 结构化描述

module mux32(input [31:0] out,input [31:0] a,input [31:0] b);wire sel;mux2_1L8 m0(out[7:0],a[7:0],b[7:0],sel);               //bit 7  through 0 mux2_1L8 m1(out[15:8],a[15:8],b[15:8],sel);            //bit 15 through 8mux2_1L8 m2(out[23:16],a[23:16],b[23:16],sel);         //bit 23 through 16 mux2_1L8 m3(out[31:24],a[31:24],b[31:24],sel);         //bit 31 through 24
endmodule

          行为化描述的优化程度高,但综合出的电路结构缺乏层次和对称性;结构化描述的综合效率高(特别是通用元件库能提供底层单元时),但优化程度依赖于底层单元的性能。 通常简单的底层模块用行为级描述来构造,然后以其为单元来组建上层较大的模块。尽量避免或尽量少地在同一个模块中混合使用行为化描述和结构化描述。

三、速度与面积的折中

        这里我们以加法器举例:

         逐次进位加法器 :Carry-Propagate Adder 串行计算进位,速度慢 (9个门延迟),用的逻辑门少。

       
        超前进位加法器 :Carry-look-ahead Adder,并行计算进位,速度快(4个门延迟),用的逻辑门多(因要增加超前进位计算逻辑)。
        
        大多数综合工具中,直接定义“+”综合出的就是逐次进位加法器。此时,为了改善性能,设计者就需要在设计库(如Synopsys DesignWare库)中调用性能更好的加法器单元(如超前进位加法器、进位保留加法器等)。

四、组合逻辑优化

4.1 组合逻辑与寄存器

        一般来说,我们要求模块输出或/和输入端要有寄存器。我们考虑以下的几种情况:

情况1

        差 出现纯组合逻辑模块(B),其输入和输出端都无寄存器,时序控制困难,可能无法综合。

情况2

         尚可 每个模块输入端有寄存器,时序可控,但前一模块的输出驱动强度和输出延迟可能受连线影响而无法预测。

情况3 

        尚可 每个模块的输出端有寄存器,时序可控,但后一模块的输入延时可能受连线影响而无法预测。

情况4

        尚可 对于模块间连线可能较长、信号频率较高的情况,模块输入无寄存器时可能对时序有不良影响。

情况5 

 

        最好 对于在版图设计过程中作为单元独立进行布局布线的模块,输入和输出都最好加以寄存器,以避免模块间连线延迟对于时序的不利影响,亦即将时序收敛性局限在模块内部。

4.2 关键路径中的组合逻辑

        模块尺寸不宜过大,譬如控制逻辑不超过5-10k门。在延时长的组合逻辑中插入寄存器,分解为若干较小的组合逻辑,可以提高电路的工作频率。

        模块的大小尽量一致,尽可能使寄存器间的组合逻辑延时均匀化,也有利于提高电路的工作频率。

4.3 模块按照不同的设计目标优化

        关键路径和非关键路径的逻辑最好分配到不同的模块中。将关键路径逻辑和非关键路径逻辑分配到不同的模块中,使得综合工具可以对关键路径逻辑进行速度优化,而对非关键路径逻辑进行面积优化。综合工具的优化基本上是针对模块的优化。

4.4 避免组合逻辑内出现反馈 

五、时钟与复位优化

5.1 时钟

        一般来说,在设计中我们推荐只使用单时钟沿(上升沿)。

  • 所有时序控制均使用上升沿触发的寄存器,有利于产生更优的综合结果。
  • 同时使用上升沿和下降沿触发,会使时钟周期分析复杂化,难以精确估计时钟频率,还可能使时钟抖动转化为时钟偏斜,同时增加门数
  • 若必须使用混合时钟沿,应将它们放在不同的模块中,同时明确给出时钟信号占空比要求,而且在综合和时序分析中确保其时序周期在最坏情况下也是正确的

5.2 复位

        相关内容可以阅读:

复位电路reset(同步复位,异步复位,异步复位同步释放电路)icon-default.png?t=N7T8https://blog.csdn.net/apple_53311083/article/details/132049729?spm=1001.2014.3001.5502

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

系列学习前端之第 3 章:一文精通 css

全套学习 HTMLCSSJavaScript 代码和笔记请下载网盘的资料: 链接: 百度网盘 请输入提取码 提取码: 6666 一、CSS基础 1. CSS简介 CSS 的全称为:层叠样式表 ( Cascading Style Sheets ) 。 CSS 也是一种标记语言,用于给 HTML 结构设…

使用arcpy移除遥感影像云层

先讲思路,然后上代码: 去除云层 思路1: 如果同一地理区域的多个图像,其中一些部分有丰富的云,而另一些部分没有云,则可以将它们组合起来,以便无云的部分替代多云的部分。这种方法很简单&…

C++ vector基本操作

目录 一、介绍 二、定义 三、迭代器 四、容量操作 1、size 2、capacity 3、empty 4、resize 5、reserve 总结(扩容机制) 五、增删查改 1、push_back & pop_back 2、find 3、insert 4、erase 5、swap 6、operator[] 一、介绍 vector…

前端CSS(层叠样式表)总结

CSS2总结 一、CSS基础 1. CSS简介 CSS 的全称为:层叠样式表 ( Cascading Style Sheets ) 。CSS 也是一种标记语言,用于给 HTML 结构设置样式,例如:文字大小、颜色、元素宽高等等。 简单理解: CSS 可以美化…

<软考>软件设计师-3程序设计语言基础(总结)

(一) 程序设计语言概述 1 程序设计语言的基本概念 1-1 程序设计语言的目的 程序设计语言是为了书写计算机程序而人为设计的符号语言,用于对计算过程进行描述、组织和推导。 1-2 程序语言分类 低级语言 : 机器语言(计算机硬件只能识别0和1的指令序列)&…

java设计模式学习之【装饰器模式】

文章目录 引言装饰器模式简介定义与用途实现方式 使用场景优势与劣势装饰器模式在Spring中的应用画图示例代码地址 引言 在日常生活中,我们常常对基本事物添加额外的装饰以增强其功能或美观。例如,给手机加一个保护壳来提升其防护能力,或者在…

SwiftUI 中创建一个自定义文件管理器只需4步!你敢信!?

概览 在 SwiftUI 中写一个自定义文件内容的管理器有多难呢? 答案可能超乎小伙伴们的想象:仅需4步!可谓是超级简单! 在本篇博文中,您将学到如下内容: 概览1. 第一步:定义文件类型2. 第二步&…

Dockerfile 指令的最佳实践

这些建议旨在帮助您创建一个高效且可维护的Dockerfile。 一、FROM 尽可能使用当前的官方镜像作为镜像的基础。Docker推荐Alpine镜像,因为它受到严格控制,体积小(目前不到6 MB),同时仍然是一个完整的Linux发行版。 FR…

从主从复制到哨兵模式(含Redis.config配置模板)

文章目录 前言一、主从复制1.概述2.作用3.模拟实践搭建场景模拟实践 二、哨兵模式1.概述2.配置使用3.优缺点4.sentinel.conf完整配置 总结 前言 从主从复制到哨兵模式。 一、主从复制 1.概述 主从复制,是指将一台 Redis 服务器的数据,复制到其他的 Red…

0010Java安卓程序设计-ssm基于安卓的掌上校园系统

文章目录 **摘要**目录系统实现5.2管理员功能模块开发环境 编程技术交流、源码分享、模板分享、网课分享 企鹅🐧裙:776871563 摘要 随着Internet的发展,人们的日常生活已经离不开网络。未来人们的生活与工作将变得越来越数字化,…

Livox_ros_driver2 消息 (msg) 类型对 SLAM 应用程序的适配

Title: Livox_ros_driver2 消息 (msg) 类型对 SLAM 应用程序的适配 文章目录 I 前言II. 查看 ROS 消息III. Livox ROS 驱动的消息类型IV. 适配修改应用程序V. 总结 I 前言 有时候, 拿到最新的 Livox 激光传感器, 比如 HAP, 原厂也提供了 ROS 驱动支持 livox_ros_drivers2 (htt…

UE蓝图 里的函数,编辑模式在Sequence里执行

在蓝图里创建CustomFunction ,把蓝图拖入Sequence ,添加事件 即可调用 如果需要在Sequence里K 蓝图里的变量,需要勾上向过场动画公开

JS中Map对象与object的区别

若想了解Map对象可以阅读本人这篇ES6初步了解Map Map对象与object有什么区别?让我为大家介绍一下吧! 共同点 二者都是以key-value的形式对数据进行存储 const obj {name:"zs",age:18}console.log(obj)let m new Map()m.set("name&quo…

《深入理解计算机系统》学习笔记 - 第三课 - 浮点数

Floating Point 浮点数 文章目录 Floating Point 浮点数分数二进制示例能代表的数浮点数的表示方式浮点数编码规格化值规格化值编码示例 非规格化的值特殊值 示例IEEE 编码的一些特殊属性四舍五入,相加,相乘四舍五入四舍五入的模式二进制数的四舍五入 浮…

带负离子的高速吹风筒方案介绍---【其利天下技术】

负离子吹风筒的产品概念,在吹风筒的产品系列里早就存在的。近年来,随着高速风筒的逐渐普及,产品商都开始把这些产品概念带了进来。一方面提升产品的核心竞争力,另一方面也是为了提升产品体验度,给用户带来不一样的产品…

夯实c基础

夯实c基础 区别: 图一的交换,(交换的是地址而不是两数)无法实现两数的交换。 题干以下程序的输出结果为( c  )。 void fun(int a, int b, int c){ ca*b; } void main( ){ int…

ssh安装和Gitee(码云)源码拉取

文章目录 安装ssh服务注册码云公钥设置码云账户SSH公钥安装git客户端和git-lfs源码获取 安装ssh服务 更新软件源: sudo apt-get update安装ssh服务 sudo apt-get install openssh-server检查ssh是否安装成功 which ssh输出: /usr/bin/ssh启动ssh 服…

虾皮定价公式:如何在Shopee上为您的商品设置合适的价格?

在Shopee这样的电商平台上销售商品,定价是一个至关重要的因素。一个合理的定价策略不仅可以吸引更多的买家,还可以确保您从每个商品中获得足够的利润。虾皮(Shopee)为卖家提供了一个简化的定价公式,考虑了多个因素&…

浅析AI智能视频监控技术在城市交通中的作用及意义

城市交通作为整个城市的整体脉络,每天都发挥着重要作用,为了最大程度地避免城市交通堵塞、提高城市交通效率,智能视频监控系统发挥了重要作用。具体表现在以下几个方面: 1、交通违规监管:TSINGSEE青犀智能视频监控系统…

【JavaScript】JS——Map数据类型

【JavaScript】JS——Map数据类型 什么是Map?特性Map与Object的比较 map的创建map的属性map相关方法map的遍历 什么是Map? 存储键值对的对象。 能够记住键的原始插入顺序任何值(对象或原始值)都可以作为键或值。 特性 Map中的一个键只能出现一次&am…