1.1. Precision RTL Synthesisのサポートについて
1.2. デザインフロー
1.3. インテル デバイスファミリーのサポート
1.4. Precision Synthesis生成ファイル
1.5. Precision Synthesisソフトウェアでのプロジェクトの作成およびコンパイル
1.6. Precision Synthesisデザインのマッピング
1.7. デザイン合成と結果の評価
1.8. インテルFPGA IPコアおよびアーキテクチャーに特有の機能のガイドライン
1.9. Mentor GraphicsPrecision*Synthesisサポート改訂履歴
1.8.1. IP Catalogによって生成されたVerilog HDLファイルを使用したIPコアのインスタンス化
1.8.2. IP Catalogによって生成されたVHDLファイルを使用したIPコアのインスタンス化
1.8.3. IP Catalogとパラメーター・エディターを使用した知的財産のインスタンス化
1.8.4. 生成されたVerilog HDLファイルを使用したブラックボックスIPファンクションのインスタンス化
1.8.5. 生成されたVHDLファイルを使用したブラックボックスIPファンクションのインスタンス化
1.8.6. HDLコードからのインテルFPGA IPコアの推測
2.10.1.1. IP Catalogによって生成されたVerilog HDLファイルを使用したインテル FPGA IPコアのインスタンス化
2.10.1.2. IP Catalogによって生成されたVHDLファイルを使用したインテル FPGA IPコアのインスタンス化
2.10.1.3. インスタンス化されたインテル FPGA IPコアに対するSynplifyのデフォルト動作の変更
2.10.1.4. IP Catalogとパラメーター・エディターを使用した知的財産のインスタンス化
2.10.1.5. 生成されたVerilog HDLファイルを使用したブラックボックス・コアのインスタンス化
2.10.1.6. 生成されたVerilogファイルを使用したブラックボックスIPコアのインスタンス化
2.10.1.7. ブラックボックスを作成するためのその他のSynplifyソフトウェアの属性
2.10.3.2. RAMの推測
HDLデザインからRAMブロックが推測された場合、Synplifyソフトウェアは、インテル FPGA IPコアを使用してデバイスのメモリー・アーキテクチャーをターゲットにします。 一部のデバイスでは、Synplifyソフトウェアは.vqmファイル内でIPコアをインスタンス化する代わりに、メモリーブロックのデバイス・プリミティブに直接マップします。
デザインでRAMを正常に推測するために、Synplifyソフトウェアに対する次のガイドラインに従ってください。
- アドレス行の幅は2ビット以上でなければなりません。
- メモリーでのリセットはサポートされていません。読み取り/書き込みポートを同期する必要があるか否かについては、デバイスファミリーのマニュアルを参照してください。
- ブロック割り当てを持つVerilog HDLステートメントの中には、RAMブロックにマップされないものがあります。したがって、Verilog HDLでRAMをモデル化するときはステートメントをブロックしないようにしてください。
一部のデバイスファミリーでは、syn_ramstyle属性で、推測されたRAMに使用する実装が指定されます。 syn_ramstyle属性をモジュールまたはRAMインスタンスにグローバルに適用して、registerまたはblock_ram値を指定することができます。 RAMの推測をオフにするには、属性値をregisterに設定します。
一部のインテル デバイスファミリーのRAMを推測する場合、Synplifyソフトウェアが追加のバイパスロジックを生成します。このロジックは、RTLシミュレーションと合成後シミュレーションとの間のハーフサイクル読み取り/書き込み動作の違いを解消するために生成されます。 RTLシミュレーションは、更新中のメモリーをクロックの正のエッジで示し、合成後シミュレーションは、更新中のメモリーをクロックの負のエッジで示します。バイパスロジックをなくすには、RAMの出力がレジスター化されている必要があります。このレジスターを追加することによって、RAMの出力はフル・クロック・サイクル後に現れますが、この時点までに更新が行われるので、バイパスロジックは不要になります。
TriMatrixメモリーブロックを備えたデバイスの場合、syn_ramstyle値をno_rw_checkに設定することで、グルーロジックの作成を無効にできます。syn_ramstyleをno_rw_checkに設定して、デュアルポート・モードでのグルーロジックの作成を無効にします。
推測されたデュアルポートRAMのVHDLコード
LIBRARY ieee;
USE ieee.std_logic_1164.all;
USE ieee.std_logic_signed.all;
ENTITY dualport_ram IS
PORT ( data_out: OUT STD_LOGIC_VECTOR (7 DOWNTO 0);
data_in: IN STD_LOGIC_VECTOR (7 DOWNTO 0)
wr_addr, rd_addr: IN STD_LOGIC_VECTOR (6 DOWNTO 0);
we: IN STD_LOGIC);
clk: IN STD_LOGIC);
END dualport_ram;
ARCHITECTURE ram_infer OF dualport_ram IS
TYPE Mem_Type IS ARRAY (127 DOWNTO 0) OF STD_LOGIC_VECOR (7 DOWNTO 0);
SIGNAL mem; Mem_Type;
SIGNAL addr_reg: STD_LOGIC_VECTOR (6 DOWNTO 0);
BEGIN
data_out <= mem (CONV_INTEGER(rd_addr));
PROCESS (clk, we, data_in) BEGIN
IF (clk='1' AND clk'EVENT) THEN
IF (we='1') THEN
mem(CONV_INTEGER(wr_addr)) <= data_in;
END IF;
END IF;
END PROCESS;
END ram_infer;
バイパスロジックを回避する推測されたデュアルポートRAMのVHDLコード
LIBRARY ieee;
USE ieee.std_logic_1164.all;
USE ieee.std_logic_signed.all;
ENTITY dualport_ram IS
PORT ( data_out: OUT STD_LOGIC_VECTOR (7 DOWNTO 0);
data_in: IN STD_LOGIC_VECTOR (7 DOWNTO 0)
wr_addr, rd_addr: IN STD_LOGIC_VECTOR (6 DOWNTO 0);
we: IN STD_LOGIC);
clk: IN STD_LOGIC);
END dualport_ram;
ARCHITECTURE ram_infer OF dualport_ram IS
TYPE Mem_Type IS ARRAY (127 DOWNTO 0) OF STD_LOGIC_VECOR (7 DOWNTO 0);
SIGNAL mem; Mem_Type;
SIGNAL addr_reg: STD_LOGIC_VECTOR (6 DOWNTO 0);
BEGIN
data_out <= mem (CONV_INTEGER(rd_addr));
PROCESS (clk, we, data_in) BEGIN
IF (clk='1' AND clk'EVENT) THEN
IF (we='1') THEN
mem(CONV_INTEGER(wr_addr)) <= data_in;
END IF;
END IF;
END PROCESS;
END ram_infer;