本文转载自: FPGA入门到精通(微信号:weilaikejisaidao)微信公众号
Vivado综合工具支持多种属性设置,可以在RTL文件或XDC文件中进行设置。这些属性设置有助于指导综合工具的操作,生成相应的逻辑电路,用于指定的资源消耗,非常不错的一个方式。
本文将介绍Vivado综合工具支持的常用属性设置,并给出了Verilog示例,供大家参考。
1、RAM_DECOMP
RAM_DECOMP属性指示综合工具如何使用块RAM来实现大型RAM。该属性只有一个可配置值power,虽然可以降低功耗,但是会增加地址解码的时间。
(* ram_decomp = “power” *) reg [size-1:0] ram [1024-1:0]; //Verilog示例
set_property ram_decomp power [get_cells ram] #XDC示例
2、ROM_STYLE
ROM_STYLE属性指示综合工具如何实现ROM存储器。它可以设置为block(使用BRAM即块RAM来实现)或distributed(使用LUT搭建分布式ROM)。默认情况下,工具会自动选择实现方法。
(* rom_style = “distributed” *) reg [size-1:0] rom [1024-1:0];
3、SHREG_EXTRACT
SHREG_EXTRACT属性指示综合工具是否推断SRL结构(一种移位寄存器的实现结构)。当设置为NO时,不会推断SRL,设计中的移位寄存器会以寄存器组的形式实现。可以在RTL或XDC中进行设置,例如:
(* SHREG_EXTRACT = “no” *) reg [15:0] srl_r;
4、SRL_STYLE
SRL_STYLE属性用于指示综合工具如何推断设计中的SRL(仅支持静态移位寄存器)。可设置的值有:register(仅使用寄存器资源实现移位寄存器)、srl(使用SRL结构实现移位寄存器)、srl_reg(SRL尾部保留一个寄存器)、reg_srl(SRL头部保留一个寄存器)、reg_srl_reg(SRL的首尾各保留一个寄存器)和block(使用块RAM实现移位寄存器)。
注意,当同时使用SRL_STYLE和SHREG_EXTRACT属性时,后者具有更高的优先级。该属性仅适用于RTL设置。
(* SRL_STYLE = “register” *) reg [15:0] srl;
5、TRANSLATE_ON/OFF
TRANSLATE_ON/OFF属性用于指示综合工具忽略一段代码。该属性必须放在注释行中,并且注释必须以synthesis、synopsys、或pragma中的一个关键词为开头。需要注意的是,如果需要忽略的代码块会影响到设计功能,则仿真器仍会尝试执行这段代码,从而可能导致“mismatch”错误。该属性仅适用于RTL设置,例如:
// synthesis translate_off
…
// synthesis translate on
6、USE_DSP
USE_DSP属性旨在指示综合工具如何处理算术结构,默认情况下乘法器、乘加、乘减和乘累加类型的结构都会用DSP单元实现。虽然加法器、减法器和累加器也可以用DSP单元实现,但默认情况下会使用逻辑单元实现。通过使用USE_DSP属性,可以将这些算术结构设置为在DSP单元中实现。
该属性最初被称为USE_DSP48,但随着FPGA中新的DSP块引入,属性名称已更改为USE_DSP。尽管USE_DSP48仍然有效,但建议使用USE_DSP命令来指示综合工具使用DSP单元。
可用的参数值为logic、yes或no。logic指示异或结构使用DSP单元实现,而yes或no则指示是否将逻辑用DSP单元实现。可以在module、architecture、signal、component、entity等处申明该属性。例如:
(* use_dsp = “yes” *) module test(clk. in, out);