当前位置: 首页 > news >正文

时序优化学习笔记

0.代码对应的底层调用

if-else的判定条件需要LUT实现,累加器的进位需要靠CARRY实现。

1.逻辑级数的概念

简单来讲就是组合逻辑串联的个数

逻辑级数查询命令

report_design_analysis -logic_level_distribution

-logic_level_dist_paths 5000 -name design_analysis_prePlace

 2.逻辑级数优化

第一步优化----拆分大位宽累加器

将32位的计数器拆分成两个16位的计数器

通过这一步我们可以发现:

1、CARRY4是4输入的,如果累加器或计数器的位宽每超过4就会多消耗一个CARRY4:

比如:例1中,计数器定义32bit,最后消耗了8个进位链;而例2优化成16bit后,就只消耗4个进位链了。

2、正常情况下,布线延时与逻辑延时整体是接近1:1,当降低逻辑级数,减少了逻辑延时,也相应的减少了布线延时

第二步优化----简化if-else判定条件

if-else 的逻辑判定条件使用的是组合逻辑。

if-else 判定条件涉及多位宽数据对比,以及多条件嵌套都会增加实现该判定功能的组合逻辑复杂度。

对于大位宽的判定,可以插入flag寄存器,再用flag作为判断条件进行if-else判断。

判定条件如果是 a_cnt ==  b_cnt,可以做成flag

a_cnt == 0,可以做成|a_cnt;同理全f 可以做成&a_cnt

第三步优化----拆分赋值表达式(面积换速度)

例如:S = A + B+ C ;

可以设计成:

S1 = A+B ;

S = S1+C 。

参考

逻辑级数与逻辑延时优化实战

相关文章:

  • Matlab 基于专家pid控制的时滞系统
  • Vue 计算属性与 Data 属性同名问题深度解析
  • vue computed 计算属性简述
  • 【Leetcode】138.随机链表的复制
  • Windows的tftp udp 69端口被占用,通过netstat查询
  • Feedback-Guided Autonomous Driving
  • Spring Cloud Gateway 生产级实践:高可用 API 网关架构与流量治理解析
  • QT 磁盘文件 教程04-创建目录、删除目录、遍历目录
  • OpenEuler kinit报错找不到文件的解决办法
  • js给后端发送请求的方式有哪些
  • 软考中级-数据库-5.1 计算机网络概述与网络硬件基础
  • Mmybatis xml 连接数据库的方法
  • PyTorch 深度学习实战(13):Proximal Policy Optimization (PPO) 算法
  • Oracle Data Guard(数据保护)详解
  • Python print() 打印多个变量时,可变对象和不可变对象的区别
  • 图论入门【数据结构基础】:什么是图?如何表示图?
  • Linux IP 配置
  • 完全托管的DeepSeek-R1模型正式登陆Amazon Bedrock:安全部署与使用指南
  • 【系统架构设计师】操作系统 - 文件管理 ② ( 位示图 | 空闲区域 管理 | 位号 | 字号 )
  • Flask 模版引擎的语法
  • 证监会:坚决拥护党中央对王建军进行纪律审查和监察调查的决定
  • 马上评丨上热搜的协和“4+4”模式,如何面对舆论审视
  • 4月人文社科联合书单|天文学家的椅子
  • 费高云调研党的建设工作:营造风清气正劲足的政治生态
  • AI观察|算力饥渴与泡沫
  • 国家能源局:支持民营企业参股投资核电项目