AR# 7822

Exemplar - Virtex/-E デバイスで SRL16 を推論する方法 (Verilog/VHDL)

説明

キーワード : SRL, inferring, 1999, 1e, 推論

重要度 : 標準

概要 :
最新バージョンの LeonardoSpectrum は、Virtex デザインで SRL16 の推論をサポートしています。
次の 2 つの変数で、この機能を制御します。

- SRL のマップを有効にする変数 (デフォルトは TRUE) :
set virtex_map_srl true

- SRL を 1 つのスライスにパックする変数 (デフォルトは TRUE) :
set virtex_map_srl_pack true

メモ :
- Synplify の場合、SRL はデフォルトでできる限りマップされます。
- パイプライン (サイクル) が 2 つ以下の場合、Synplify で SRL はマップされません。 この問題は、次のソフトウェア リリースで修正される予定です。

次のコーディング スタイルは、Exemplar および Synplify の両方に適用できます。

ソリューション

1

VHDL の例

メモ : このデザインでは、16 のパイプライン遅延を使用する 16 個の SRL16 が推論されます。

library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;

entity pipeline_delay is
generic (cycle : integer := 16;
width :integer := 16);
port (input :in std_logic_vector(width - 1 downto 0);
clk :in std_logic;
output :out std_logic_vector(width - 1 downto 0));
end pipeline_delay;

architecture behav of pipeline_delay is
type my_type is array (0 to cycle -1) of std_logic_vector(width -1 downto 0);
signal int_sig :my_type;

begin

main :process (clk)
begin
if clk'event and clk = '1' then
int_sig <= input & int_sig(0 to cycle - 2);
end if;
end process main;

output <= int_sig(cycle -1);

end behav;

2

Verilog の例

メモ : このデザインでは、4 つのパイプライン遅延を使用する 3 つの SRL16 が推論されます。

module srle_example (clk, enable, data_in, result);
parameter cycle=4;
parameter width = 3;

input clk, enable;
input [0:width] data_in;
output [0:width] result;

reg [0:width-1] shift [cycle-1:0];
integer i;

always @(posedge clk)
begin

if (enable == 1) begin
for (i = (cycle-1);i >0; i=i-1) shift[i] = shift[i-1];
shift[0] = data_in;
end
end
assign result = shift[cycle-1];
endmodule
AR# 7822
日付 04/24/2007
ステータス アーカイブ
種類 一般