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

news2024/11/24 6:34:18

一、顶层模块的划分

        在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 8
    mux2_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.coloradmin.cn/o/1292764.html

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

相关文章

基于springboot + vue的社区医院信息系统

qq(2829419543)获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:springboot 前端:采用vue技术开发 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件&#xf…

排序:快速排序(hoare版本)

目录 快速排序: 概念: 动画分析: 代码实现: 代码分析: 代码特性: 常见问题: 快速排序: 概念: 快速排序是Hoare于1962年提出的一种二叉树结构的交换排序方法&a…

LNMP网站架构分布式搭建部署(编译安装)

目录 一、数据库编译安装 二、nginx编译安装 三、php编译安装 三、通过nfs将三台不同的主机资源共享 四、基础测试 五、完成WordPress站点部署 六、完成bbs论坛站点部署 一、数据库编译安装 1、先下载安装包到/opt目录中,最好选择mysql-boost-5.7.44.tar.gz版…

Linux操作系统 中的用户管理,也就是关于用户的相关的操作与理解

目录 1 概念2 用户管理的类型3、模板目录4 查看历史命令5 相关文件6 创建用户useradd7 命令passwd 存储及shadow命令下的用户密码8 usermod命令(修改属性)9 密码设置10 删除命令userdel11 用户组的操作12 用户权限13 创建一个用户组,并且将这…

短视频账号矩阵系统源码搭建步骤包括以下几个方面:

短视频账号矩阵系统源码搭建步骤包括以下几个方面: 1. 确定账号类型和目标受众:确定要运营的短视频账号类型,如搞笑、美食、美妆等,并明确目标受众和定位。 2. 准备账号资料:准备相关资质和资料,如营业执照…

在Windows 11中,把iPhone照片和视频导出来又快又简单,无需第三方软件

如果你想将照片和视频从iPhone传输到Windows 11 PC,最快、最简单的方法是插入手机并执行自动导入。以下是操作方法。 如何将照片和视频从iPhone导入Windows 如果你用USB数据线将iPhone插入Windows PC,Windows 11可以像标准数码相机一样连接到它&#x…

nacos在win11无法正常启动,一闪而过,pause也不停止。【已解决】

问题一闪而过,无法抓屏。 1.首先排除配置文件和数据库问题; 2.问题及解决方法: 分析:startup.cmd在执行时,无法找到jdk; 解决方法:配置jdk到环境变量; 再次启动正常;

用Pandas轻松进行7项基本数据检查

大家好,作为一名数据工程师,面对糟糕的数据质量,可以使用Pandas执行快捷的数据质量检查。本文使用scikit-learn提供的California Housing数据集,进行基本数据检查。 一、California Housing数据集概述 【数据集】: …

黑苹果之显卡篇

一、什么是显卡 显卡GPU(Video card、Display card、Graphics card、Video adapter)是个人计算机基础的组成部分之一,将计算机系统需要的显示信息进行转换驱动显示器,并向显示器提供逐行或隔行扫描信号,控制显示器的正…

关键字volatile作用和用法

目录 一、多线程编程中的volatile关键字 二、嵌入式编程中的volatile关键字 三、 优化编译器优化 四、 指针类型转换 一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。 精确地说就是,…

【云原生-K8s】镜像漏洞安全扫描工具Trivy部署及使用

基础介绍基础描述Trivy特点 部署在线下载百度网盘下载安装 使用扫描nginx镜像扫描结果解析json格式输出 总结 基础介绍 基础描述 Trivy是一个开源的容器镜像漏洞扫描器,可以扫描常见的操作系统和应用程序依赖项的漏洞。它可以与Docker和Kubernetes集成,…

shell命令学习(1)——(待完善)

explainshell.com shell统计当前文件夹下的文件个数、目录个数Linux之shell常用命令(三) sort(排序)、uniq(处理重复字符) linux中shell将换行输入到文件中 shell脚本,将多行内容写入文件中 f…

springboot086靓车汽车销售网站

springboot086靓车汽车销售网站 成品项目已经更新!同学们可以打开链接查看!需要定做的及时联系我!专业团队定做!全程包售后! 2000套项目视频链接:https://pan.baidu.com/s/1N4L3zMQ9nNm8nvEVfIR2pg?pwd…

Javascript编程进阶 – 预定义函数

Javascript编程进阶 – 预定义函数 JavaScript Programming Advanced – Predefined Functions By JacksonML JavaScript引擎中包含了一组built-in functions(内建函数)。 本文简要介绍如何通过实践使用这些预定义函数并掌握传递参数和返回值。希望对您有所帮助。 JavaScri…

如何使用HadSky搭配内网穿透工具搭建个人论坛并发布至公网随时随地可访问

文章目录 前言1. 网站搭建1.1 网页下载和安装1.2 网页测试1.3 cpolar的安装和注册 2. 本地网页发布2.1 Cpolar临时数据隧道2.2 Cpolar稳定隧道(云端设置)2.3 Cpolar稳定隧道(本地设置)2.4 公网访问测试 总结 前言 经过多年的基础…

【我爱C语言】详解字符函数isdigit和字符串转换函数(atoi和snprintf实现互相转换字符串)三种strlen模拟实现

🌈write in front :🔍个人主页 : 啊森要自信的主页 ✏️真正相信奇迹的家伙,本身和奇迹一样了不起啊! 欢迎大家关注🔍点赞👍收藏⭐️留言📝>希望看完我的文章对你有小小的帮助&am…

使用Python实现轮盘赌选择法Roulette Wheel Selection Method in Python

一、引言 最近在手写遗传算法,想尝试解决一些优化问题。然而,在编码的过程中,自己发现了很多都不懂的问题。比如,交叉的操作,有单点交叉、两点交叉和多点交叉,具体选哪一种会更好呢?未知。还有交…

异常检测 | 基于孤立森林(Isolation Forest)的数据异常数据检测(结合t-SNE降维可视化)

异常检测 | MATLAB实现基于孤立森林的数据异常检测 目录 异常检测 | MATLAB实现基于孤立森林的数据异常检测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 Matlab实现基于孤立森林(Isolation Forest)的数据异常数据检测可视化(完整源码和数据) 基于孤立森林(…

好用免费的AI换脸5个工具

在当今社会的发展中,人工智能(Artificial Intelligence, AI)扮演着关键的角色,其应用领域不断扩展。作为AI的一个分支,换脸技术近年来备受欢迎。这项技术使得将一个人的面部特征迁移到另一个人的照片或视频成为可能。除…

【React】路由的基础使用

react-router-dom6的基础使用 1、安装依赖 npm i react-router-dom默认安装最新版本的 2、在src/router/index.js import { createBrowserRouter } from "react-router-dom"/* createBrowserRouter:[/home]--h5路由createHashRouter:[/#/ho…