vivado GATED_CLOCK、IOB、IO_BUFFER_TYPE、KEEP、KEEP_HIERARCHY、MARK_DEBUG

Vivado合成允许门控时钟的转换。要执行此转换,请使用:

•Vivado IDE中的一个开关,指示工具尝试转换。

•GATED_CLOCK RTL属性或XDC属性,指示工具关于哪个信号在门控逻辑中是时钟。将此属性放置在作为时钟的信号或端口上。要控制开关:

1.选择工具>设置>项目设置>合成。

2.在“选项”区域中,将-gated_clock_conversion选项设置为以下选项之一价值观

•off:禁用门控时钟转换。

•开启:如果在RTL代码中设置了Gated_clock属性,则发生门控时钟转换。此选项使您能够更好地控制结果。

•自动:如果以下任一事件为真,则发生门控时钟转换:

•gated_clock属性设置为YES。

•Vivado合成可以检测门,并且存在有效的时钟约束集。这选项让工具做出决定。

GATED_CLOCK Verilog Example
(* gated_clock = "yes" *) input clk;
GATED_CLOCK VHDL Example
entity test is port (
in1, in2 : in std_logic_vector(9 downto 0);
en : in std_logic;
clk : in std_logic;
out1 : out std_logic_vector( 9 downto 0));
attribute gated_clock : string;
attribute gated_clock of clk : signal is "yes";
end test;
GATED_CLOCK XDC Example
set_property GATED_CLOCK yes [get_ports clk]

IOB属性控制寄存器是否应进入I/O缓冲区。值为TRUE或错误的将此属性放在I/O缓冲区中所需的寄存器上。此属性可以是仅在RTL中设置。

IOB Verilog Example
(* IOB = "true" *) reg sig1;
IOB VHDL Example
signal sig1:std_logic;
attribute IOB: string;
attribute IOB of sig1 : signal is "true";

在任何顶级端口上应用IO_BUFFER_TYPE属性以指示工具使用缓冲区。添加值为“NONE”的属性以禁用上缓冲区的自动推断输入或输出缓冲区,这是Vivado合成的默认行为。此属性仅支持,并且只能在RTL中设置。

IO_BUFFER_TYPE Verilog Example
(* io_buffer_type = "none" *) input in1;
IO_BUFFER_TYPE VHDL Example
entity test is port(
in1 : std_logic_vector (8 downto 0);
clk : std_logic;
out1 : std_logic_vector(8 downto 0));
attribute io_buffer_type : string;
attribute io_buffer_type of out1: signal is "none";
end test;

使用KEEP属性来防止优化或吸收信号转换为逻辑块。该属性指示合成工具保持其所放置的信号,并且该信号被放置在网表中。例如,如果一个信号是2位AND门的输出,并且它驱动另一个AND门KEEP属性可以用于防止该信号被合并到更大的LUT中包含两个AND门。

小心!将KEEP与其他属性一起使用时要小心。在其他属性与冲突的情况下KEEP,属性通常优先。KEEP通常也与时间约束一起使用。如果信号有时间限制通常会进行优化,KEEP会防止这种情况发生,并允许正确的计时规则习惯于

注意:模块或实体的端口不支持KEEP属性。

如果你需要保持具体端口,使用-plane_hierarch-none设置或在模块或实体上放置DONT_TOUCH它本身

小心!在无负载信号上使用KEEP属性时要小心。合成保持这些信号从而导致流程中稍后出现问题。

例如:

•当一个信号上有MAX_FANOUT属性,而第二个信号上则有KEEP属性时由第一个驱动的信号;第二个信号上的KEEP属性不允许扇出复制。

•对于RAM_STYLE=“块”,当寄存器上有KEEP时,需要成为RAM的一部分时,KEEP属性会阻止块RAM被推断出来。支持的KEEP值为:

•TRUE:保持信号。

•FALSE:允许Vivado合成进行优化。FALSE值不会强制工具移除信号。默认值为FALSE。

您可以将此属性放置在任何信号、寄存器或导线上。

建议:仅在RTL中设置此属性。因为需要保留的信号通常在读取XDC文件之前进行了优化,在RTL中设置此属性可确保使用该属性。

注意:KEEP属性不会强制地点和路线保持信号。相反,这是使用DONT_TOUCH属性完成。

KEEP Verilog Example
(* keep = "true" *) wire sig1;
assign sig1 = in1 & in2;
assign out1 = sig1 & in2;
KEEP VHDL Example
signal sig1 : std_logic;
attribute keep : string;
attribute keep of sig1 : signal is "true";
....
....
sig1 <= in1 and in2;
out1 <= sig1 and in3;

KEEP_HIERARCHY用于防止沿层次边界进行优化。Vivado合成工具试图保持RTL中指定的相同通用层次结构,但为了更好结果质量(QoR)原因是它可以压平或修改它们。如果将KEEP_HIERARCHY放置在实例上,则合成工具会将边界保持在该实例上水平静态。这可能会影响QoR,也不应用于描述3的控制逻辑的模块-状态输出和I/O缓冲器。KEEP_HIERARCHY可以放置在模块中,或者架构级别或实例。此属性可以在RTL和XDC中设置。如果在中使用XDC,它只能放在实例上。

KEEP_HIERARCHY Verilog Example
On Module
(* keep_hierarchy = "yes" *) module bottom (in1, in2, in3, in4, out1, out2);
On Instance
(* keep_hierarchy = "yes" *) module bottom (in1, in2, in3, in4, out1, out2);
KEEP_HIERARCHY VHDL Example
On Architecture
attribute keep_hierarchy : string;
attribute keep_hierarchy of beh : entity is "yes";
KEEP_HIERARCHY XDC Example
On Instance
set_property keep_hierarchy yes [get_cells u0]

此属性适用于网络对象。一些网络可以具有专用连接或其他禁止用于调试目的的可见性的方面。MARK_DEBUG值为:“TRUE”或“FALSE”。

语法

Verilog语法

要设置此属性,请在有问题的信号上放置正确的Verilog属性语法:

(* MARK_DEBUG = "{TRUE|FALSE}" *)
Verilog Syntax Example
// Marks an internal wire for debug
(* MARK_DEBUG = "TRUE" *) wire debug_wire,

VHDL语法

若要设置此属性,请在有问题的信号上放置正确的VHDL属性语法。按如下方式声明VHDL属性:

attribute MARK_DEBUG : string;
按如下方式指定VHDL属性:
attribute MARK_DEBUG of signal_name : signal is "{TRUE|FALSE}";
其中signal_name是内部信号。
VHDL Syntax Example
signal debug_wire : std_logic;
attribute MARK_DEBUG : string;
-- Marks an internal wire for debug
attribute MARK_DEBUG of debug_wire : signal is "TRUE";
XDC Syntax
set_property MARK_DEBUG value [get_nets <net_name>]

XDC语法示例

通常,MARK_DEBUG的使用是基于层次结构的,可以用于任何详细的顺序元素,如RTL_REG。MARK_DEBUG属性用于网络。它是建议您同时使用get_nets和get_pins命令,如图所示,例如

set_property MARK_DEBUG true [get_nets -of [get_pins\ hier1/hier2/
<flop_name>/Q]]

该推荐使用确保MARK_DEBUG进入连接到该引脚的网络,无论其名称如何。

注意:如果将MARK_DEBUG应用于声明为bit_vector的信号的某个位,则整个总线将MARK_DEBUG属性。此外,如果将MARK_DEBUG放置在层次结构的引脚上,则保持了层次结构。

 
 

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

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

相关文章

ChatGPT 3.5与4.0:深入解析技术进步与性能提升的关键数据

大家好&#xff0c;欢迎来到我的博客&#xff01;今天我们将详细比较两个引人注目的ChatGPT版本——3.5和4.0&#xff0c;通过一些关键数据来深入解析它们之间的差异以及4.0版本的技术进步。 1. 模型规模与参数 ChatGPT 3.5&#xff1a; 参数数量&#xff1a;约1.7亿个模型层数…

后端创建订单

package com.java1234.entity;import io.jsonwebtoken.Claims;/*** jwt验证信息* author java1234_小锋* site www.java1234.com* company Java知识分享网* create 2019-08-13 上午 10:00*/ public class CheckResult {private int errCode;private boolean success;private Cl…

JUnit5单元测试框架提供的注解

目录 第一章、注释在类上的注解1.1&#xff09;JUnit5注释在类上的注解集成测试&#xff1a;SpringBootTest集成测试&#xff1a;ExtendWith(SpringExtension.class)单元测试&#xff1a;ExtendWith(MockitoExtension.class)切片测试:WebMvcTest和DataJpaTest<font colorred…

开源软件对技术以及行业发展的影响

开源软件和代码对技术发展和行业产生了广泛而深远的影响。以下是一些主要方面的深入分析&#xff1a; 1. 协作和共享&#xff1a; 技术发展&#xff1a; 开源项目提供了一个集体协作和共享的平台&#xff0c;吸引了全球各地的开发者共同参与。这种协同工作模式推动了技术的快…

OpencV入门讲解

OpenCV&#xff08;Open Source Computer Vision Library&#xff09;是一个开源的计算机视觉和机器学习软件库&#xff0c;它提供了丰富的功能&#xff0c;用于开发实时图像处理、视频分析、物体识别、机器学习等应用。以下是OpenCV入门的基本讲解&#xff1a; OpenCV的核心概…

Linux内核与驱动面试经典“小”问题集锦(5)

接前一篇文章&#xff1a;Linux内核与驱动面试经典“小”问题集锦&#xff08;4&#xff09; 问题6 问&#xff1a;mutex_lock和mutex_lock_interruptible的区别是什么&#xff1f; 备注&#xff1a;此问题也是笔者近期参加蔚来面试时遇到的一个问题。 答&#xff1a; 尽管…

前端JavaScript篇之数组的遍历方法有哪些?forEach和map方法有什么区别?

目录 数组的遍历方法有哪些&#xff1f;forEach和map方法有什么区别&#xff1f;forEach()map()filter()for…ofevery() 和 some()find() 和 findIndex()reduce() 和 reduceRight()forEach和map方法有什么区别总结 数组的遍历方法有哪些&#xff1f;forEach和map方法有什么区别…

【Unity】QFramework通用背包系统优化:使用Odin优化编辑器

前言 在学习凉鞋老师的课程《QFramework系统设计&#xff1a;通用背包系统》第四章时&#xff0c;笔者使用了Odin插件&#xff0c;对Item和ItemDatabase的SO文件进行了一些优化&#xff0c;使物品页面更加紧凑、更易拓展。 核心逻辑和功能没有改动&#xff0c;整体代码量减少…

深度学习(15)--PyTorch构建卷积神经网络

目录 一.PyTorch构建卷积神经网络(CNN)详细流程 二.graphviz torchviz使PyTorch网络可视化 2.1.可视化经典网络vgg16 2.2.可视化自己定义的网络 一.PyTorch构建卷积神经网络(CNN)详细流程 卷积神经网络&#xff08;Convolutional Neural Networks&#xff09;是一种深度学…

PHP入门指南:进阶篇

PHP入门指南&#xff1a;进阶篇 PHP入门指南&#xff1a;进阶篇1. 面向对象编程&#xff08;OOP&#xff09;1.1 类和对象的基本概念1.2 构造函数和析构函数1.3 属性和方法的访问控制1.4 继承与多态 2. 错误和异常处理2.1 错误处理机制2.2 异常处理机制2.3 自定义异常类 3. PHP…

k8s弃用docker后使用ctr导入镜像

很多公司的k8s安装比较早,在生产环境一般很少升级,因此还是老版本,在使用新版本的时候,容易陷入老版本的思维中,从而掉坑,这里记录一下整个排查过程,希望对遇到类似的同学起到一定的帮助。 k8s 抛弃弃用docker 学习容器技术的过程中,我看到有不少同学留言问 Kubernet…

公司大数据展示模板【大屏可视化项目案例-23】

文章目录 一.公司大数据展示模板【大屏可视化项目案例-23】1.1 项目背景1.2 项目效果截图二.项目页面分析2.1 呈现效果页面分析2.2 页面加载时隐藏加载动画2.3 样式布局三.本案例完整源码下载一.公司大数据展示模板【大屏可视化项目案例-23】 1.1 项目背景 随着业务规模的不断…

Hadoop搭建(完全分布式)

节点分布&#xff1a; bigdata-masterbigdata-slave1bigdata-salve2 NameNode NodeManager NodeManager SecondaryNameNodeDataNodeDataNodeResourceManagerNodeManagerDataNode 目录 一、jdk安装&#xff1a; 二、hadoop安装 一、jdk安装&#xff1a; jdk-8u212链接&am…

信息隐藏研究新动向

信息隐藏有三十年的研究历史&#xff0c;在隐写、数字水印、可逆数据隐藏等方面&#xff0c;国内外发展了一系列新技术与新方法。随着深度学习时代的来临&#xff0c;信息隐藏研究出现了新的变化。一方面&#xff0c;深度学习技术在信息隐藏的发展中发挥了重要作用&#xff1b;…

94.网游逆向分析与插件开发-游戏窗口化助手-地图数据获取的逆向分析与C++代码还原

内容参考于&#xff1a;易道云信息技术研究院VIP课 上一个内容&#xff1a;升级经验数据获取的逆向分析 码云地址&#xff08;游戏窗口化助手 分支&#xff09;&#xff1a;https://gitee.com/dye_your_fingers/sro_-ex.git 码云版本号&#xff1a;c4351a5b346d8953a1a8e3ec…

SpringCloud-Eureka原理分析

Eureka是Netflix开源的一款用于实现服务注册与发现的工具。在微服务架构中&#xff0c;服务的动态注册和发现是必不可少的组成部分&#xff0c;而Eureka正是为了解决这一问题而诞生的。 一、为何需要Eureka 在微服务架构中&#xff0c;服务之间的协同合作和高效通信是至关重要…

CentOS下安装vlc

一、引言 vlc是一跨多媒体播放器&#xff0c;可以播放本地媒体文件和网络串流&#xff0c;帮助我们排查音视频开发过程中遇到的问题。大部分情况下&#xff0c;我们只需要在Windows系统下安装vlc就可以了。但有一种情况是需要在Linux下安装vlc的&#xff1a;我们的音视频拉流软…

华为配置内部人员接入WLAN网络示例(802.1X认证)

配置内部人员接入WLAN网络示例&#xff08;802.1X认证&#xff09; 组网图形 图1 配置802.1X认证组网图 业务需求组网需求数据规划配置思路配置注意事项操作步骤配置文件 业务需求 用户接入WLAN网络&#xff0c;使用802.1X客户端进行认证&#xff0c;输入正确的用户名和密…

Day10案例演示

Day10案例演示 在 AppInfoScanner所在的文件中运行cmd&#xff0c;输入 python -m pip install -r requirements.txt安装环境 具体用法可移步&#xff1a;https://github.com/kelvinBen/AppInfoScanner 以下仅以android类型示范 python app.py android -i <Your apk fil…

【Git版本控制 02】分支管理

目录 一、创建分支 二、切换分支 三、合并分支 四、删除分支 五、合并冲突 六、分支策略 七、bug分支 一、创建分支 # 当前仓库只有 master 一个主分支 # 可通过 git branch 是进行分支管理的命令&#xff0c;可通过不同参数对分支进行查看、创建、删除(base) [rootloc…