-keep_equivalent_registers即保留等效寄存器,所谓等效寄存器是指共享输入端口(输入时钟端口clk和输入数据端口rst)的寄存器。

勾选它时,意味着Vivado不会对等效寄存器进行优化;

不勾选它时(默认情况),意味着Vivado会合并等效寄存器。

Settings -> Synthesis中可看到设置位置,如下图,默认不勾选。

测试代码

module top(input rst_n,input clk,output reg rst_rep1,output reg rst_rep2
);always @(posedge clk)beginrst_rep1 <= rst_n;rst_rep2 <= rst_n;endendmodule

这里的rst_rep1和rst_rep2就是等效寄存器的输出。

以下几个原理图不带IBUF和OBUF,是因为是综合设置中将综合选项中More Options设置为-mode out_of_context了,见下图:

不勾选keep_equivalent_registers时

执行综合后,打开Schematic,如下图:

当不勾选keep_equivalent_registers时,意味着不保留等效寄存器,意味着等效寄存器会合并,合并意味着减少触发器FF的使用。

为便于理解,可以和勾选keep_equivalent_registers时的Schematic做对比。

勾选keep_equivalent_registers时

执行综合后,打开Schematic,如下图:

上图中rst_rep1_reg和rst_rep2_reg即是等效寄存器,因为它们共用了输入时钟端口clk和输入复位端口rst_n。

当勾选keep_equivalent_registers时,意味着保留等效寄存器,意味着不会对等效寄存器进行优化,等效寄存器的好处在于可以有效的降低扇出,坏处是增加了触发器FF的使用数量。既然等效寄存器有好有坏,直接勾选或者不勾选keep_equivalent_register​s都太简单粗暴了,一个好的处理方式是:

​默认不勾选keep_equivalent_registers,并且使用keep或者DONT_TOUCH来保留等效寄存器,确保不被优化。

和KEEP不同,DONT_TOUCH可以保证​ ​Vivado​​在任何阶段都不会对设定对象进行优化。

KEEP测试代码

module top(rst_n,clk,rst_rep1,rst_rep2
);input rst_n;input clk;(* keep = "TRUE" *) output reg rst_rep1;(* keep = "TRUE" *) output reg rst_rep2;always @(posedge clk)beginrst_rep1 <= rst_n;rst_rep2 <= rst_n;endendmodule

综合后的原理图如下,可以看出等效寄存器被keep保留了。

DONT_TOUCH测试代码

module top(rst_n,clk,rst_rep1,rst_rep2
);input rst_n;input clk;(* DONT_TOUCH = "TRUE" *) output reg rst_rep1;(* DONT_TOUCH = "TRUE" *) output reg rst_rep2;always @(posedge clk)beginrst_rep1 <= rst_n;rst_rep2 <= rst_n;endendmodule

综合后的原理图如下,可以看出don't touch等效寄存器生效了。

Vivado综合设置之-keep_equivalent_registers相关推荐

  1. Vivado综合设置之-gated_clock_conversion

    本文验证-gated_clock_conversion设置为on或off时,给Schematic带来的差异. -gated_clock_conversion设置为on时,用于移除门控时钟,门控时钟是由 ...

  2. 【vivado学习六】 Vivado综合

    世界上一成不变的东西,只有"任何事物都是在不断变化的"这条真理. -- 斯里兰卡 [vivado学习六] Vivado综合 在 Flow Navigator 中点击设置, 然后选择 ...

  3. Vivado 综合约束实用命令(更新中……)

    引言 本文记录一些用于 Vivado 综合约束的实用命令,欢迎补充~ 本文会适当结合一些特定设计进行解释,并结合相关工程进行具体的综合实现分析,不只是理论知识还有实际操作. 演示使用的Vivado 版 ...

  4. 【蜂鸟E203的FPGA验证】Chap.8 Vivado综合与性能分析-Vivado性能分析

    [蜂鸟E203的FPGA验证]Chap.8 Vivado综合与性能分析-Vivado性能分析 综合后资源利用率分析 2. 综合后功耗与功耗优化 3. 综合后布局布线实现 4. 综合后静态时序分析 前言 ...

  5. 关于vivado综合出现“cannot open include file”

    使用vivado综合工具在'synthesis'阶段出现"cannot open include file" 可以使用2种方式来解决 1.不要将 include.v 文件添加到项目 ...

  6. vivado 综合报错 “ incorrect freePtr. Call out of sequence? “

    vivado 综合报错 " incorrect freePtr. Call out of sequence? " 很多FPGA的初学者或者第一次使用Viado作为开发工具的同学经常 ...

  7. xml控制html样式,XML与CSS综合设置实例

    XML与CSS综合设置实例 HTTP代码如下: @charset "utf-8"; @charset "utf-8"; bookname{ display:bl ...

  8. (80)Vivado综合约束方法

    (80)Vivado综合约束方法 1 文章目录 1)文章目录 2)时序约束引言 3)FPGA时序约束课程介绍 4)Vivado综合约束方法 5)技术交流 6)参考资料 2 时序约束引言 1)什么是静态 ...

  9. css设置背景颜色/背景图像/背景图像平铺/背景图像位置/背景图像固定显示/综合设置元素背景的方法(学习笔记)

    一.设置背景颜色 在CSS当中,网页元素的背景颜色使用background-color属性来设置,和文本颜色的用法类似. 用法 <style>h2{color:red;backround- ...

最新文章

  1. 为什么要低温保存_渔之歌科普课堂:冷冻食品为什么要规定零下18摄氏度冷藏?...
  2. 使用Celery踩过的坑
  3. spring boot项目打包成war并在tomcat上运行的步骤
  4. oracle修改数据库国际字符集,Oracle修改数据库字符集
  5. 四年级上册数学计算机笔记,四年级数学下册笔记整理
  6. jQuery-Selectors(选择器)的使用(一、基本篇)
  7. chain.doFilter(request,response)含义
  8. 研究生怎么看 ,怎么写论文
  9. H3C nqa 配置
  10. 关于shopex网店系统和网店助理的几点优化建议
  11. android 绘画笔迹回放_android画板笔锋实现
  12. 优矿-python计算上证50之间的相关系数
  13. 将图片进行base64 编码后的数据进行读取,以io流的方式传给前台并显示出来并且不断刷新图片
  14. 【CP2K教程(二)】WO3的投影态密度和能带结构
  15. android web3j 代币查询_ERC20代币转账以及余额查询--java(web3j)
  16. ibus五笔造词、删词功能
  17. 迅雷下载器-FDM,看2019新年大电影
  18. 混合牛奶(春季每日一题 9)
  19. java 最大子序列和
  20. 2022安全员-B证考试题及在线模拟考试

热门文章

  1. C语言—猜数字游戏的实现
  2. 【学习笔记-时间序列预测】prophet-使用.3节日与特殊事件
  3. Linux系统结构和文件管理
  4. 【连载】【FPGA黑金开发板】Verilog HDL那些事儿--PS2解码(九)
  5. 原来RA是Router Advertisement的意思
  6. 安卓桌面软件哪个好_Mac桌面壁纸软件哪个好?7款好用的mac壁纸软件推荐,从此告别壁纸荒...
  7. 彻底禁用停用杀死WIN10的自动更新
  8. 双系统电脑如何将两个系统安装到一个分区
  9. 数据可视化实战:实验报告
  10. 约翰·卡马克(John Carmack的全名是John D. Carmack II)