-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. python3爬虫入门教程-总算懂得python3.4爬虫入门教程
  2. sql server 链接到oracle库,读取对应信息
  3. valueOf()、toString()
  4. 电商系统的商品流水记录
  5. 梅露可物语虚拟服务器,【图片】【萌新】主界面的使用方法(零基础版)【梅露可物语日服吧】_百度贴吧...
  6. 利用软碟通软件制作Ubuntu16.04系统启动盘
  7. android蓝牙设置名称流程,Android 8 设置蓝牙名称 流程
  8. opencv2.4.3通过不同方式访问图像像素
  9. Unity 5.x 游戏开发指南 HD版 final.pdf
  10. Kaggle实战之房价预测
  11. java zk_zk框架:zul文件,純Java或混合更好的性能
  12. VS2008 ~ VS2019下载地址
  13. ITSM (IT Service Management,IT服务管理 )
  14. 南华大学计算机考研真题,2021南华大学考研历年真题复习资料
  15. 驾驶车辆 档位与油门的关系
  16. Android9.0 紧急号码配置
  17. 字节跳动测开实习面试题
  18. 关于this.$XXXXXXX
  19. 小米K20pro刷international版
  20. word能保存html文件,Word可以保存为网页文件 教你来回转 Word转成网页,网页转Word...

热门文章

  1. 0027算法笔记——【回溯法】回溯法与装载问题
  2. 软件测试工程师发展方向,主要有哪些?
  3. tcpdump命令帮助和示例
  4. Android用yasea 推流异常AmfString cannot be cast to com.github.faucamp.simplertmp.amf.AmfNumber捕获和解决
  5. python画地图经纬度_【python】使用python按照一定格式批量输出,地图热力图经纬度格式生成器...
  6. Oracle 后台进程(六)PMON进程
  7. PHP isset() 和 empty() 的使用
  8. 中国科学院朱清时:量子意识(人人能懂版)
  9. 杰理之AUX/LINEIN 设计注意【篇】
  10. RTKLIB中RTK定位原理(一)