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# 8183

SYNPLIFY : HDL (VHDL/Verilog) での ROM の推測方法

説明

キーワード : Asynchronous, select, rom, synplicity, 非同期, 選択

重要度 : 標準

概要 :
Synplify 5.3 の新機能の 1 つは ROM の推測です。
推測された ROM をザイリンクスの ROM プリミティブ、ROM16X1 および ROM32X1 にマップします。
ザイリンクス ROM プリミティブは、syn_romstyle という属性を使って推測されます。
現在は、select_rom だけが、この属性でサポートされています。 この属性は、次の例に示すように ROM の出力に設定されます。

注 : Synplicity 5.3 でテスト済みです。

ソリューション

1

VHDL の例

library IEEE;
use IEEE.std_logic_1164.all;
entity rom is
port ( a: in std_logic_vector(3 downto 0);
z: out std_logic_vector(3 downto 0)
);
attribute syn_romstyle : string;
attribute syn_romstyle of z : signal is "select_rom";
end rom;

architecture rtl of rom is
begin
process(a)
begin
case a is
when "0000" => z <= "1010";
when "0001" => z <= "0100";
when "0010" => z <= "0111";
when "0011" => z <= "0010";
when "0100" => z <= "0101";
when "0101" => z <= "1001";
when "0110" => z <= "1011";
when "1001" => z <= "0001";
when "1010" => z <= "1111";
when "1011" => z <= "0110";
when "1100" => z <= "1000";
when "1101" => z <= "1110";
when "1110" => z <= "1100";
when others => z <= "0000";
end case;
end process;
end rtl;

2

SDC の例:
Synplify では、VHDL/Verilog デザインを一度実行してから、[HDL Analyst] の [RTL] から [Hierarchical View] を選択します。
注 : ROM モジュール名の例: z_18[3:0]

[New Constraint File] アイコンをクリックし、[Attributes] タブを選択して、次の内容を入力します。
[Object] 列に z_18[3:0] (ROM インスタンス名)
[Attribute] 列に syn_romstyle
[Value] 列に select_rom

上記の入力内容を保存し、再度実行します。

あるいは、<filename>.sdc に次の行を入力します。
define_attribute {z_18[3:0]} syn_romstyle {select_rom}

3

Verilog の例 :

module testrom(a, z);
input [3:0] a;
output [3:0] z;

reg [3:0] z /* synthesis syn_romstyle = "select_rom" */;

always @(a)
begin
case(a)
4'b0000: z = 4'hA;
4'b0001: z = 4'h4;
4'b0010: z = 4'h7;
4'b0011: z = 4'h2;
4'b0100: z = 4'h5;
4'b0101: z = 4'h9;
4'b0110: z = 4'hB;
4'b1001: z = 4'h1;
4'b1010: z = 4'hF;
4'b1011: z = 4'h6;
4'b1100: z = 4'h8;
4'b1101: z = 4'hE;
4'b1110: z = 4'hC;
default : z = 4'h0;
endcase
end

endmodule

AR# 8183
作成日 11/30/1999
最終更新日 04/24/2007
ステータス アーカイブ
タイプ 一般