UPGRADE YOUR BROWSER

We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

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
作成日 10/06/1999
最終更新日 04/24/2007
ステータス アーカイブ
タイプ 一般