RTL编码(3)——语句优化与布线优化

目录

一、语句优化

1.1 if与case

1.1.1 条件语句避免出现锁存器

1.1.2 if与case语句综合效果的差异

1.2 阻塞赋值与非阻塞赋值

1.3 算法改进

1.3.1 算法改进提升速度

1.3.2 算法改进缩小面积 

二、布线优化

2.1 热点

2.2 瓶颈

2.3 广播

三、总结 


一、语句优化

1.1 if与case

1.1.1 条件语句避免出现锁存器

        在If或case语句中,必须列举出所有可能的条件分支,并给所有的输出信号赋值, 否则综合时就会出现不期望的锁存器(而非多路选择器),这相当于在纯组合逻辑中出现了时序逻辑,是无法综合的(通常综合器会对不期望产生的锁存器发出警告)。

        简单说就是if要记得写else,case要记得写default。

1.1.2 if与case语句综合效果的差异

1.2 阻塞赋值与非阻塞赋值

  • 阻塞赋值(不适合时序逻辑):按顺序执行语句,执行完块才结束。容易产生RTL级仿真与门级仿真不一致、信号间的竞争冒险等问题。
  • 非阻塞赋值(适合时序逻辑):块结束时同时执行各语句赋值操作,不会产生冲突。
        使用上简单说就是:在always块中,组合逻辑使用阻塞赋值,时序逻辑使用非阻塞赋值,同一个always块中不要混合使用阻塞和非阻塞赋值。对于同一个赋值对象,不能既使用阻塞赋值,又使用非阻塞赋值。

1.3 算法改进

1.3.1 算法改进提升速度

        这里我们举一个简单的例子,我们需求是比较A、B、C、D四个输入,找到其中最大的一个作为输出Largest

方法一:递进法。逻辑深度为3个比较器和3个选择器,关键路径长,不同的输入到输出的延时不同

方法二:二分法,逻辑深度为2个比较器和2个选择器,关键路径短,速度比递进法提高了近30%,而所用部件总数未变。

 

1.3.2 算法改进缩小面积 

        假设我们的需求是:选择两个乘积之一

        方案1:8位变量In1与In2相乘形成第一个积A,In1和In3相乘形成第二个积B,然后用MultSelect选择输出哪一个积到C。需要两个8位乘法器和1个16位二选一选择器。
wire [15:0] A,B,C;
wire [7:0]  In1,In2,In3;
wire MultSelect;assign  A = In1 * In2;
assign  B = In1 * In3;
assign  C = MultSelect ? A : B;

        方案2:先根据MultSelect选择In2还是In3,然后与In1相乘,可得到相同的积到C。只需要1个8位乘法器和1个8位二选一选择器,面积比方案1小了很多。

wire [15:0] C;
wire [7:0] In1,In2,In3,InSelect;
wire MultSelect;assign InSelect = MultSelect ? In2 : In3;
assign C = In1 * InSelect;

        对于面积较大的复杂单元(加法器、乘法器、移位寄存器、选择器、比较器、有限状态机等),设计时可通过算法改进或结构优化来减少其使用数量和复杂度。

二、布线优化

        在设计流程中,RTL设计距离布线阶段较远,但对布线仍然有着显著的影响。 这里我们介绍几种情况:

2.1 热点

        热点:某局部模块有大量的输入管脚,如多位输入的选择器( MUX)

        对策如下:

 

2.2 瓶颈

        瓶颈:有硬核(如微处理器、存储器)而且相距较近等原因,导致局部面积的布线资源非常有限

        对策如下:

 

2.3 广播

        广播:某局部模块的信号需要广泛分配且对时间敏感,如时钟、复位、扫描等

         对策如下:

三、总结 

        本文主要介绍了RTL编码过程中的语句优化和布线优化的内容,其中语句优化主要介绍了if和case语句使用的注意事项,阻塞与非阻塞语句的使用以及算法对于综合的影响。布线优化主要介绍了热点,瓶颈,广播三种情况及其解决方法。

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

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

相关文章

STM32的BKP与RTC简介

芯片的供电引脚 引脚表橙色的是芯片的供电引脚,其中VSS/VDD是芯片内部数字部分的供电,VSSA/VDDA是芯片内部模拟部分的供电,这4组以VDD开头的供电都是系统的主电源,正常使用时,全部都要接3.3V的电源上,VBAT是…

这是最后的战役了

不变因子 初等因子 行列式因子 smith标准型 酉矩阵 H-阵等等 A H A A^H A AHA 就是 H-阵 正定H阵的性质 若 A A A 为正定的H-阵. 存在可逆矩阵 Q Q Q, 使得 A Q H Q AQ^H Q AQHQ.存在 P P P, 使得 P H A P I P^HAPI PHAPI.A的特征值大于0. Q − 1 A Q Q^{…

springboot3远程调用

RPC 两个服务器之间的调用 远程请求 内部服务之间的调用 可以通过 cloud 注册中心 openfeign等 外部服务的调用 http请求 外部协议 api:远程接口 sdk:本地调用 调用阿里云的天气请求

T5论文个人记录

参考&转载自: 介绍Google推出的大一统模型—T5_谷歌大模型_深度之眼的博客-CSDN博客 T5 和 mT5-CSDN博客 T5:Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer(万字长文略解T5)_t5论文…

关于前端原生技术-Jsonp的理解与简述

【版权声明】未经博主同意,谢绝转载!(请尊重原创,博主保留追究权) https://blog.csdn.net/m0_69908381/article/details/134777717 出自【进步*于辰的博客】 在学习了Jsoup这个知识点之后,发觉js的这一特点…

易错C语言选择题

1.void main() {int a2,b5; printf("a%%d,b%%d\n"); } 结果为:() A. a%2,b%5 B. a2,b5 C. a%%d,b%%d D. a%d,b%d 答案:D 2.若有说明&#x…

react Hooks实现原理

Fiber 上篇文章fiber简单理解记录了react fiber架构,Hooks是基于fiber链表来实现的。阅读以下内容时建议先了解react fiber。 jsx -> render function -> vdom -> fiber树 -> dom vdom 转 fiber 的过程称为 recocile。diff算法就是在recocile这个过程…

零基础快速搭建一个属于自己的网站或博客

博客网站是众多的网站类型中应用属于比较频繁的一种,另外一种就是企业网站。今天我就给大家来分享一些常用的免费个人博客网站系统以及如何搭建一个属于自己的个人博客网站!! 好了,废话不多说,直接上才艺! …

ELK(六)—Filebeat安装部署

目录 一、介绍1.1特点1.2使用原因1.3结构图1.4工作流程 二、安装部署2.1下载2.2启动2.3监控日志文件2.4自定义字段 三、连接Elasticsearch四、工作原理 一、介绍 Filebeat是一个轻量级的日志和文件数据收集器,属于Elastic Stack(ELK Stack)中…

华为数通---配置Smart Link主备备份示例

定义 Smart Link,又叫做备份链路。一个Smart Link由两个接口组成,其中一个接口作为另一个的备份。Smart Link常用于双上行组网,提供可靠高效的备份和快速的切换机制。 目的 下游设备连接到上游设备,当使用单上行方式时&…

深度学习疲劳检测 驾驶行为检测 - python opencv cnn 计算机竞赛

文章目录 0 前言1 课题背景2 相关技术2.1 Dlib人脸识别库2.2 疲劳检测算法2.3 YOLOV5算法 3 效果展示3.1 眨眼3.2 打哈欠3.3 使用手机检测3.4 抽烟检测3.5 喝水检测 4 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 **基于深度学习加…

React聚焦渲染速度

目录 一、引言 二、React.js的渲染速度机制 虚拟DOM Diff算法 三、优化React.js的渲染速度 避免不必要的重新渲染 使用合适的数据结构和算法 使用React Profiler工具进行性能分析 四、实际案例分析 五、总结 一、引言 在当今的Web开发领域,React.js无疑是…