vivado DSP_FOLDING、DSP_FOLDING_FASTCLOCK、EXTRACT_ENABLE、EXTRACT_RESET、FSM_ENCODING、FSM_SAFE_STATE

DSP_FOLDING

DSP_FOLDING属性控制Vivado合成是否折叠两个MAC结构通过加法器连接到一个DSP基元中。

DSP__FOLDING的值为:

•是:该工具转换MAC结构。

•否:该工具不转换MAC结构。

仅RTL支持DSP_FOLDING。它应该放在模块/实体/体系结构上包含MAC结构的逻辑的一部分。

DSP_FLODING Verilog示例

(* dsp_folding = "yes" *) module top .....
DSP_FOLDING VHDL Example
attribute dsp_folding : string;
attribute dsp_folding of my_entity : entity is "yes";

DSP_VOLDING_FASTCLOCK属性告诉工具哪个端口应该成为新端口使用DSP折叠时更快的时钟。

DSP_FILEDING_FASTCLOCK的值为:

•是:该工具使用此端口连接到新时钟。

•否:该工具不使用此端口。

仅RTL支持DSP_FOLDING_FASTCLOCK。仅将此属性放置在端口或端号上。DSP_FILEDING_FASTCLOCK Verilog示例

(* dsp_folding_fastclock = "yes" *) input clk_fast;
DSP_FOLDING_FASTCLOCK VHDL Example
attribute dsp_folding_fastclock : string;
attribute dsp_folding_fastclock of clk_fast : signal is "yes";

EXTRACT_ENABLE控制寄存器是否推断启用。通常,Vivado工具提取或不提取基于启发法的功能,这些启发法通常有利于最大数量的设计。在里面如果Vivado的行为不符合要求,则该属性将覆盖默认行为工具的。

如果触发器的CE引脚有一个不需要的使能,此属性可以强制它D输入逻辑。相反,如果工具没有推断RTL中指定的启用,则属性可以告诉工具将该使能移动到触发器的CE引脚。EXTRACT_ENABLE放置在寄存器上,并且在RTL和XDC中受支持。可能需要的布尔值:yes和no。

EXTRACT_ENABLE Verilog示例

(* extract_enable = "yes" *) reg my_reg;
EXTRACT_ENABLE VHDL Example
signal my_reg : std_logic;
attribute extract_enable : string;
attribute extract_enable of my_reg: signal is "no";
EXTRACT_ENABLE XDC Example
set_property EXTRACT_ENABLE yes [get_cells my_reg]

EXTRACT_RESET控制寄存器是否推断重置。通常,Vivado工具提取或不提取基于启发法提取重置,这通常有利于大多数设计。在Vivado没有以所需的方式运行,此属性将覆盖工具的默认行为。如果不希望的同步复位进入触发器,这个属性可以迫使它进入D输入逻辑。相反,如果工具没有推断RTL中指定的重置,则此属性可以命令工具将重置移动到触发器的专用重置。此属性只能与一起使用同步复位;不支持异步重置。EXTRACT_RESET放置在寄存器上,并在RTL和XDC中受支持。它可能需要布尔值:是或否。值为否表示重置不会转到的R引脚寄存器,但通过逻辑路由到寄存器的D引脚。值为yes表示复位直接进入寄存器的R引脚。

EXTRACT_RESET Verilog Example
(* extract_reset = "yes" *) reg my_reg;
EXTRACT_RESET VHDL Example
signal my_reg : std_logic;
attribute extract_reset : string;
attribute extract_reset of my_reg: signal is "no";
EXTRACT_RESET XDC Example
set_property EXTRACT_RESET yes [get_cells my_reg]

FSM_ENCODING控制状态机上的编码。通常,Vivado工具选择基于启发式的状态机编码协议,对大多数设计都做得最好。某些设计类型可以更好地与特定的编码协议配合使用。FSM_ENCODING可以放置在状态机寄存器上。这方面的法律价值是one_hot、sequential、johnson、gray、user_encoding和none。自动值是默认值,并允许该工具确定最佳编码。user_encoding值告诉工具仍然推断状态机,但使用用户在RTL中给出的编码。FSM_ENCODING属性可以在RTL或XDC中设置。

FSM_ENCODING Verilog示例

(* fsm_encoding = "one_hot" *) reg [7:0] my_state;
FSM_ENCODING VHDL Example
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";

FSM_SAFE_STATE指示Vivado合成将逻辑插入检测的状态机存在非法状态,在下一个时钟周期将其置于已知的良好状态。例如,如果有一个状态机具有“one_hot”编码,并且它位于“0101”中state(这对于“one_hot”来说是非法的),则状态机将能够恢复。放置状态机寄存器上的FSM_SAFE_STATE属性。您可以在中设置此属性RTL或XDC中。

FSM_SAFE_STATE的合法值为:

•auto_safe_state:使用Hamming-3编码对一位/翻转进行自动校正。

•reset_state:使用Hamming-2编码强制状态机进入重置状态检测一个比特/翻转。

•power_on_state:使用Hamming-2强制状态机进入开机状态一比特/翻转的编码检测。

•default_state:强制状态机进入RTL中指定的默认状态:

在Veri中case语句的默认分支中指定

FSM_SAFE_STATE Verilog Example
(* fsm_safe_state = "reset_state" *) reg [7:0] my_state;
FSM_SAFE_STATE VHDL Example
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";

FULL_CASE(仅限Verilog)

FULL_CASE表示在CASE、casex或casez中指定所有可能的大小写值

陈述如果指定了大小写值,Vivado不会为大小写值创建额外的逻辑合成此属性位于case语句上。

重要!因为此属性会影响编译器,并且可以更改的逻辑行为设计,它只能在RTL中设置。

FULL_CASE Verilog Example
(* full_case *)
case select
3’b100 : sig = val1;
3’b010 : sig = val2;
3’b001 : sig = val3;
endcase
  • 12
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cckkppll

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值