首页/新闻资讯/正文详情

Synthesis Attributes【中】

发布时间:2026/9/27 6:37:55 来源:云帆数科 栏目:资讯中心
Synthesis Attributes【中】
目录12.FSM_ENCODINGFSM_ENCODING Example (Verilog)FSM_ENCODING Example (VHDL)13.FSM_SAFE_STATEFSM_SAFE_STATE Example (Verilog)FSM_SAFE_STATE Example (VHDL)14.FULL_CASE(Verilog Only)FULL_CASE Example (Verilog)15.GATED_CLOCKGATED_CLOCK Example (Verilog)GATED_CLOCK Example (VHDL)16.IOBIOB Example (Verilog)IOB Example (VHDL)IOB Example (XDC)17.IO_BUFFER_TYPEIO_BUFFER_TYPE Example (Verilog)IO_BUFFER_TYPE Example (VHDL)18.KEEPKEEP Example (Verilog)KEEP Example (VHDL)19.KEEP_HIERARCHYKEEP_HIERARCHY Example (Verilog)On Module:On Instance:KEEP_HIERARCHY Example (VHDL)On Architecture:KEEP_HIERARCHY Example (XDC)On Instance:20.MARK_DEBUGSyntax (Verilog)Syntax Example (Verilog)Syntax (VHDL)Syntax Example (VHDL)Syntax (XDC)Syntax Example (XDC)以下内容直译于xilinx官方文档《UG901》如有错误欢迎批评指正。12.FSM_ENCODINGFSM-Encoding控制状态机的编码。通常Vivado工具根据默认规则为状态机选择一个编码方式这对大多数设计都是有利的。FSM-Encoding参数可设置在状态机寄存器上。其合法值包括“one_hot”、“sequential”、“johnson”、“gray”、“user_encoding”和“none”。默认值为“auto”此时工具将自动确定最佳编码方案。若选择“user_encoding”值则工具仍会推断状态机配置但会采用用户在RTL中指定的编码方式。在RTL和XDC上使用FSM_ENCODING Example (Verilog)(* fsm_encoding one_hot *) reg [7:0] my_state;FSM_ENCODING Example (VHDL)type count_state is (zero, one, two, three, four, five, six, seven);signal my_state : count_state;attribute fsm_encoding : string;attribute fsm_encoding of my_state : signal is sequential;13.FSM_SAFE_STATEFSM-safe_state指示Vivado合成在状态机中插入逻辑以检测是否存在非法状态然后在下一个时钟周期将其放入已知的、良好的状态。例如如果有一个使用“one_hot”编码的状态机而该状态机处于“0101”状态这是“one_hot”的非法状态则该状态机将能够恢复。在状态机寄存器上放置FSMSAFE_STATE属性。您可以在RTL或XDC中设置此属性。取值为auto_safe_state采用汉明码-3编码实现单比特翻转自动校正功能;reset_state通过汉明码-2检测单比特翻转强制状态机进入复位状态;power_on_state通过汉明码-2检测单比特翻转强制状态机进入开机状态;default_state强制状态机进入RTL中指定的默认状态——该状态可选自Verilog代码中case语句的default分支或VHDL代码中case语句的others分支。需注意要使该功能生效RTL中必须包含default或others状态。FSM_SAFE_STATE Example (Verilog)(* fsm_safe_state reset_state *) reg [7:0] my_state;FSM_SAFE_STATE Example (VHDL)type count_state is (zero, one, two, three, four, five, six, seven);signal my_state : count_state;attribute fsm_safe_state : string;attribute fsm_safe_state of my_state : signal is power_on_state;14.FULL_CASE(Verilog Only)FULLCASE指出所有可能的case取值都通过case、casex或casez语句指定。如果指定了case取值则Vivado综合不会为这些case取值创建额外逻辑。该属性应放置在case语句上。只能在RTL中设置。FULL_CASE Example (Verilog)(* full_case *)case select3’b100 : sig val1;3’b010 : sig val2;3’b001 : sig val3;endcase15.GATED_CLOCK门控时钟是一种通过使用逻辑门通常是AND或OR门来控制时钟信号是否传递到寄存器组的技术。其核心思想是如果一组寄存器暂时不需要工作就关掉它们的时钟以节省动态功耗因为时钟网络的翻转是芯片功耗的主要来源之一。Vivado综合流程支持时钟信号的门控转换。具体操作步骤如下在Vivado图形界面中启用开关控件指示工具执行时钟信号转换通过RTL属性指定门控逻辑中的时钟信号只需将该属性设置在对应信号或端口即可。控制 开关的具体操作步骤如下:选择Tools Settings Project Settings Synthesis在Options area将-gated_clock_conversion设置为以下其中一个值之一Off禁用门控时钟转换On若在RTL代码中设置了gated clock属性则会启用门控时钟转换。此选项可让您更精准地控制转换结果Auto当满足以下任一条件时将触发门控时钟转换-gated clock属性设置为true-Vivado综合流程能识别门控信号且存在有效的时钟约束条件。该选项允许工具自主决策。使用KEEP_HIERARCHY、DONT TOUCH和MARK_DEBUG等属性时应格外小心。如果将这些属性放置在需要更改以支持转换的层次结构或实例上它们可能会干扰门控时钟转换。GATED_CLOCK Example (Verilog)(* gated_clock true *) input clk;GATED_CLOCK Example (VHDL)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 true;end test;16.IOBIOB属性控制寄存器是否应进入I/O缓冲区。其值为TRUE或FALSE。将此属性放置在要放入I/O缓冲区的寄存器上。只能在RTL中设置此属性。IOB Example (Verilog)(* IOB true *) reg sig1;IOB Example (VHDL)signal sig1:std_logic;attribute IOB: string;attribute IOB of sig1 : signal is true;IOB Example (XDC)set_property IOB true [get_cells sig1]17.IO_BUFFER_TYPE在任意顶层端口上应用IO_BUFFER_TYPE属性以指示工具使用缓冲器。添加一个值为“NONE”的属性禁用输入或输出缓冲器的自动推断功能——这正是Vivado综合的默认行为。该属性仅支持在RTL中设置且只能在RTL中进行配置。IO_BUFFER_TYPE Example (Verilog)(* io_buffer_type none *) input in1;IO_BUFFER_TYPE Example (VHDL)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;18.KEEP使用KEEP属性可以防止信号被优化。该属性指示综合工具保留其放置的信号该信号将被放置在网表中。将KEEP与其他属性一起使用时要小心。如果其他属性与KEEP冲突通常KEEP属性优先。模块或实体的端口不支持KEEP属性。如果需要保留特定端口请使用-flatten_hierarchy none设置或者在模块或实体本身上放置DONT TOUCH。在无负载信号上使用KEEP属性时需谨慎。合成过程会保留这些信号从而导致流程后续出现的问题。取值为TRUE/FALSE取值为FALSE时不会强制删除信号。仅在RTL中设置此属性。KEEP属性不强制要求保留信号的位置和路径可以通过DONT TOUCH属性来实现。KEEP Example (Verilog)(* keep true *) wire sig1;assign sig1 in1 in2;assign out1 sig1 in2;KEEP Example (VHDL)signal sig1 : std_logic;attribute keep : string;attribute keep of sig1 : signal is true;........sig1 in1 and in2;out1 sig1 and in3;19.KEEP_HIERARCHY阻止 Vivado 综合工具在执行优化时展平Flatten 掉模块的边界。它强制工具将指定的模块或实例作为一个独立的、黑盒式的层级单元进行处理和优化。保留清晰的设计层次结构这对于调试Debug、团队协作、增量编译Incremental Compile 和模块化设计至关重要。KEEP_HIERARCHY Example (Verilog)On Module:(* keep_hierarchy yes *) module bottom (in1, in2, in3, in4, out1, out2);On Instance:(* keep_hierarchy yes *)bottom u0 (.in1(in1), .in2(in2), .out1(temp1));KEEP_HIERARCHY Example (VHDL)On Architecture:attribute keep_hierarchy : string;attribute keep_hierarchy of beh : entity is yes;KEEP_HIERARCHY Example (XDC)On Instance:set_property keep_hierarchy yes [get_cells u0]20.MARK_DEBUG告诉 Vivado 工具链综合、实现“请保留这个信号或网线不要优化掉它并使其可用于调试”此属性适用于网对象。Syntax (Verilog)To set this attribute, place the proper Verilog attribute syntax on the signal in question:(* MARK_DEBUG {TRUE|FALSE} *)Syntax Example (Verilog)// Marks an internal wire for debug(* MARK_DEBUG TRUE *) wire debug_wire,Syntax (VHDL)To set this attribute, place the proper VHDL attribute syntax on the signal in question.Declare the VHDL attribute as follows:attribute MARK_DEBUG : string;Specify the VHDL attribute as follows:attribute MARK_DEBUG of signal_name : signal is {TRUE|FALSE};Wheresignal_nameis an internal signal.Syntax Example (VHDL)signal debug_wire : std_logic;attribute MARK_DEBUG : string;-- Marks an internal wire for debugattribute MARK_DEBUG of debug_wire : signal is TRUE;Syntax (XDC)set_property MARK_DEBUG value [get_nets net_name]Wherenet_nameis a signal name.Syntax Example (XDC)# Marks an internal wire for debugset_property MARK_DEBUG TRUE [get_nets debug_wire]参考xilinx官方文档《UG901》

相关推荐

如何选择合适的工业相机快门种类
如何选择合适的工业相机快门种类

在工业相机领域,常见的三种快门类型:全局快门(Global Shutter)、卷帘快门(Rolling Shutter)以及全局复位式卷帘快门(Global - reset rolling Shutter)。我们主要来讲讲全局快门&… · 2026/9/18 5:00:21

如何快速上手 Icecream-cpp:10 分钟掌握 C++ 调试新方式
如何快速上手 Icecream-cpp:10 分钟掌握 C++ 调试新方式

如何快速上手 Icecream-cpp:10 分钟掌握 C 调试新方式 【免费下载链接】icecream-cpp 🍦 Never use cout/printf to debug again 项目地址: https://gitcode.com/gh_mirrors/ic/icecream-cpp Icecream-cpp 是一款专为 C 开发者打造的调试工具&… · 2026/9/20 10:36:49

QQgroup-annual-report-analyzer开发者指南:自定义模板与扩展功能详解
QQgroup-annual-report-analyzer开发者指南:自定义模板与扩展功能详解

QQgroup-annual-report-analyzer开发者指南:自定义模板与扩展功能详解 【免费下载链接】QQgroup-annual-report-analyzer 一个用于分析QQ群聊记录并生成年度热词报告的工具。支持热词发现、趣味统计、可视化报告生成等功能。 项目地址: https://gitcode.com/gh_mi… · 2026/9/15 12:48:16

ComfyUI提示词反推:从图像逆向解构CLIP语义
ComfyUI提示词反推:从图像逆向解构CLIP语义

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/27 6:37:52

XCVU13P FPGA开发环境配置全指南
XCVU13P FPGA开发环境配置全指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/27 6:37:46

MySQL基础笔记
MySQL基础笔记

一、数据库类型 1.关系型数据库:二维表格模型 如:MySQL、Oracle、DB2、SQLServer、SQLite等 2.非关系型数据库:Not only SQL(NoSQL),key-value键值对模型 如:Redis、Hbase、MongoDB等 二、My… · 2026/9/27 6:37:46

STM32调试失败的根源:BOOT0/NRST时序与SWD信号完整性
STM32调试失败的根源:BOOT0/NRST时序与SWD信号完整性

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/27 6:37:46

Agent 开发也需要做减法
Agent 开发也需要做减法

这个算不上一个完整的技术分享,只能算是心得感悟。背景最近在做一个智能体客服的项目,依照要求,先制作了一个可点击的知识树,知识树直接以卡片的形式显示在前端,可以直接点击;随后开始完成 AI 回复相关的功… · 2026/9/27 6:37:46

3个实战案例教你解决那里可以做工作室做网站难题
3个实战案例教你解决那里可以做工作室做网站难题

3个实战案例教你解决那里可以做工作室做网站难题 自己不会代码,但老板明天就要看官网?别慌,这种“赶鸭子上架”的局,我在华北圈子里见得太多了。很多市场小伙伴一搜“那里可以做工作室做网站”,其实心里真正纠结的不是地点,而是… · 2026/9/27 6:37:40

MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现

简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01

汕头网站建设制作厂家避坑指南:5大注意事项救急
汕头网站建设制作厂家避坑指南:5大注意事项救急

汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01

多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习

简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01

MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现

简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01

汕头网站建设制作厂家避坑指南:5大注意事项救急
汕头网站建设制作厂家避坑指南:5大注意事项救急

汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01

多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习

简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码