vhdl延迟线实现属性

vhdl delay line implementation attribute

一个关于vhdl属性的新手问题。在这个LUT RAM上实现的128深8位延迟线,属性部分看不懂

entity srl_128_lutram is 
  generic ( 
    LENGTH     : integer := 128; 
    ADDRWIDTH : integer := 7; 
    WIDTH      : integer := 8); 
  port ( 
    CLK        : in  std_logic; 
    SHIFT_IN  : in  std_logic_vector(WIDTH-1 downto 0); 
    SHIFT_OUT : out std_logic_vector(WIDTH-1 downto 0)); 
end srl_128_lutram; 

architecture behavioral of srl_128_lutram is 

  signal CNTR : std_logic_vector(ADDRWIDTH-1 downto 0); 
  type ram_type is array (0 to LENGTH-2) of std_logic_vector(WIDTH-1 downto 0); 
  signal RAM : ram_type := (others => (others => ’0’)); 

  attribute ram_style : string; 
  attribute ram_style of RAM : signal is "distributed"; 

begin 

  counter : process (CLK) 
  begin 
    if CLK’event and CLK = ’1’ then 
       if CNTR = conv_std_logic_vector(LENGTH-2, ADDRWIDTH)  then 
         CNTR <= (others => ’0’); 
       else 
         CNTR <= CNTR + ’1’; 
       end if; 
    end if; 
  end process counter; 

  memory : process (CLK) 
  begin 
    if CLK’event and CLK = ’1’ then 
       RAM(conv_integer(CNTR)) <= SHIFT_IN; 
       SHIFT_OUT                 <= RAM(conv_integer(CNTR)); 
    end if; 
  end process memory; 

end behavioral;

我的问题是属性在这里的目的是什么?如果没有这两行会怎样?

编辑:
属性用于给合成器一些指令。 属性语法有点混乱,但你的行的含义如下:对于我的信号 RAM 使用属性 ram_style 与价值分布。该属性在后面的代码中永远不会用到,它已经给出了他的信息。

注意:属性因合成器而异。

旧:
属性 RAM_STYLE 为合成器提供了用于实现 RAM 的物理单元类型。

在您的情况下,它将选择 LUT ram。因此,它会消耗 FPGA 中总 LUT ram 资源的一些 LUT ram。您也可以使用块 RAM。

如果您不使用该属性,合成器将在这两个单元格之间自行选择(可能是出于资源和性能方面的考虑)。

来源https://www.xilinx.com/support/documentation/sw_manuals/xilinx2012_3/ug901-vivado-synthesis.pdf(第 36 页)