Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

RTL スタイルのパラメーター

[コンフィギュレーション パラメーター] ダイアログ ボックスの [HDL コード生成][グローバル設定][コーディング スタイル] タブで、レジスタ転送ロジック (RTL) スタイルのパラメーターにアクセスします。

レジスタに "rising_edge/falling_edge" スタイルを使用

生成コードで VHDL® の関数 rising_edge または関数 falling_edge を使用してクロック遷移を検出するかどうかを指定します。

設定

既定の設定: オフ

オン

生成されたコードで関数 rising_edge または関数 falling_edge が使用されます。

たとえば、Unit Delay ブロックから生成された次のコードは、関数 rising_edge を使用して正のクロック遷移を検出します。

Unit_Delay1_process : PROCESS (clk, reset)
  BEGIN
    IF reset = '1' THEN
      Unit_Delay1_out1 <= (OTHERS => '0');
    ELSIF rising_edge(clk) THEN
      IF clk_enable = '1' THEN
        Unit_Delay1_out1 <= signed(x_in);
      END IF;
    END IF; 
  END PROCESS Unit_Delay1_process;

オフ

生成されたコードで 'event 構文が使用されます。

たとえば、Unit Delay ブロックから生成された次のコードは、clk'event AND clk = '1' を使用して正のクロック遷移を検出します。

Unit_Delay1_process : PROCESS (clk, reset)
  BEGIN
    IF reset = '1' THEN
      Unit_Delay1_out1 <= (OTHERS => '0');
    ELSIF clk'event AND clk = '1' THEN
      IF clk_enable = '1' THEN
        Unit_Delay1_out1 <= signed(x_in);
      END IF;
    END IF; 
  END PROCESS Unit_Delay1_process;

依存関係

このオプションは、ターゲット言語が VHDL の場合に有効になります。

コマンド ライン情報

プロパティ: UseRisingEdge
型: 文字ベクトル
値: 'on' | 'off'
既定の設定: 'off'

このプロパティを設定するには、関数 hdlset_param または makehdl を使用します。プロパティの値を表示するには、関数 hdlget_param を使用します。

中間信号を最小にする

デバッグを可能にしたり、コード カバレッジに HDL コードを最適化するかどうかを指定します。

設定

既定の設定: オフ

オン

中間信号を最小にしてコード カバレッジを最適化します。たとえば、この設定を "オフ" にすると、生成されたコードは次のようになります。

const3 <= to_signed(24, 7);
subtractor_sub_cast <= resize(const3, 8);
subtractor_sub_cast_1 <= resize(delayout, 8);
subtractor_sub_temp <= subtractor_sub_cast - subtractor_sub_cast_1;

この設定を "オン" にすると、HDL Coder™ は出力を次のように最適化します。

subtractor_sub_temp <= 24 - (resize(delayout, 8));

コード ジェネレーターは、中間信号の const3subtractor_sub_cast および subtractor_sub_cast_1 を削除します。

オフ

中間信号を維持することで、デバッグできるようコードを最適化します。

コマンド ライン情報

プロパティ: MinimizeIntermediateSignals
型: 文字ベクトル
値: 'on' | 'off'
既定の設定: 'off'

このプロパティを設定するには、関数 hdlset_param または makehdl を使用します。プロパティの値を表示するには、関数 hdlget_param を使用します。

VHDL コードでの For-Generate ループの展開

VHDL FOR-GENERATE ループを展開し、生成された VHDL コードから省略するかどうかを指定します。

設定

既定の設定: オフ

オン

生成された VHDL コードから FOR-GENERATE ループを展開して省略します (Verilog® コード内ではループは常に展開されます)。

オフ

生成された VHDL コード内に FOR-GENERATE ループを含めます。

コマンド ライン情報

プロパティ: LoopUnrolling
型: 文字ベクトル
値: 'on' | 'off'
既定の設定: 'off'

このプロパティを設定するには、関数 hdlset_param または makehdl を使用します。プロパティの値を表示するには、関数 hdlget_param を使用します。

一部の Simulink® ブロックでは、ターゲット言語を VHDL に設定すると、HDL コードは既定で FOR-GENERATE ループ構造を使用して生成されます。このような Simulink ブロックは以下のとおりです。

FOR-GENERATE ループを使用して生成されたコードは読みやすくなり、コードの行数が削減され、コード生成時間が短縮されます。たとえば、2 次元行列を 1 次元行列に形状変更するために生成された VHDL コードについて考えます。この例では、FOR-GENERATE ループを使用する場合と使用しない場合の Reshape ブロック用に生成されたコードを示します。

  • FOR-GENERATE ループを使用しない Reshape ブロック ([VHDL コードでのループ生成用に展開] が有効):

Reshape_output : PROCESS (In1_signed)
BEGIN
Reshape_out1(0) <= In1_signed(0, 0);
Reshape_out1(1) <= In1_signed(1, 0);
Reshape_out1(2) <= In1_signed(2, 0);
Reshape_out1(3) <= In1_signed(3, 0);
Reshape_out1(4) <= In1_signed(4, 0);
Reshape_out1(5) <= In1_signed(5, 0);
Reshape_out1(6) <= In1_signed(6, 0);
Reshape_out1(7) <= In1_signed(7, 0);
Reshape_out1(8) <= In1_signed(8, 0);
Reshape_out1(9) <= In1_signed(9, 0);
Reshape_out1(10) <= In1_signed(0, 1);
...

  • FOR-GENERATE ループを使用する Reshape ブロック ([VHDL コードでのループ生成用に展開] が無効):

Reshape_out1GEN_LABEL1: FOR d1 IN 0 TO 1 GENERATE
  Reshape_out1GEN_LABEL: FOR d0 IN 0 TO 9 GENERATE
     Reshape_out1(d0 + (d1*10)) <= In1_signed(d0, d1);
  END GENERATE;
END GENERATE;

ヒント

  • GENERATE ループをサポートしないコンピューターによる設計の自動化 (EDA) ツールを使用している場合、ループ展開オプションを選択して、生成される VHDL コードからループを省略します。

  • ループ展開オプションを設定しても、生成される VHDL コードのシミュレーションや合成から取得される結果には影響しません。

依存関係

このオプションは、ターゲット言語が VHDL の場合に有効になります。

マスクされたサブシステムからのパラメーター化された HDL コードの生成

調整可能なマスク パラメーターが同一で、値の異なっているサブシステムで再利用可能な HDL コードを生成します。

設定

既定の設定: オフ

オン

マスク パラメーターに異なる値をもつ、複数のマスク サブシステムについて、再利用可能な HDL ファイルを 1 つ生成します。HDL Coder では、スカラー、ベクトル、および行列の値がマスク パラメーターとしてサポートされます。HDL Coder は、共有可能で調整可能なマスク パラメーターをもつサブシステムを検出します。

サブシステム内では、表にリストされているブロックとパラメーターのみでマスク パラメーターを使用できます。

ブロック パラメーター制限
Constant ダイアログ ボックスの [メイン] タブの [定数値]なし
Gainダイアログ ボックスの [メイン] タブの [ゲイン][パラメーターのデータ型] はすべての Gain ブロックについて同じでなければなりません。
オフ

マスク サブシステムごとに個別の HDL ファイルを生成します。

コマンド ライン情報

プロパティ: MaskParameterAsGeneric
型: 文字ベクトル
値: 'on' | 'off'
既定の設定: 'off'

このプロパティを設定するには、関数 hdlset_param または makehdl を使用します。プロパティの値を表示するには、関数 hdlget_param を使用します。

マスク パラメーターの値の制限

  • 各値はスカラー、ベクトル、または行列でなければなりません。

  • 値は複素数であってはなりません。

  • 値は列挙データであってはなりません。

参考

サブシステムで再利用可能なコードの生成

列挙型エンコード スキーム

生成された HDL コード内で列挙型を表すエンコード スキームを指定します。

設定

既定の設定: default

[default][onehot][twohot][binary] のエンコード スキームを使用して、生成された HDL コード内で列挙型を表現します。

既定の設定

コード ジェネレーターは、Verilog では小数エンコードを、VHDL では VHDL ネイティブの列挙型を使用します。この例は、4 つのステートを持つ Stateflow® Chart における、このエンコード スキームの Verilog コードの抜粋です。

parameter 
is_Chart_IN_s_idle = 2'd0, 
is_Chart_IN_s_rx = 2'd1, 
is_Chart_IN_s_wait_0 = 2'd2, 
is_Chart_IN_s_wait_tb = 2'd3;

onehot

コード ジェネレーターは、1 ビットが high になるワンホット エンコード スキームを使用して、各列挙値を表現します。この例は、4 つのステートを持つ Stateflow Chart における、このエンコード スキームの Verilog コードの抜粋です。

parameter 
is_Chart_IN_s_idle = 4'b0001, 
is_Chart_IN_s_rx = 4'b0010, 
is_Chart_IN_s_wait_0 = 4'b0100, 
is_Chart_IN_s_wait_tb = 4'b1000;
このエンコード スキームは、64 を超える列挙値またはステート数をサポートしていません。

twohot

コード ジェネレーターは、2 ビットが high になるツーホット エンコード スキームを使用して、各列挙値を表現します。この例は、4 つのステートを持つ Stateflow Chart における、このエンコード スキームの Verilog コードの抜粋です。

parameter 
is_Chart_IN_s_idle = 4'b0011, 
is_Chart_IN_s_rx = 4'b0101, 
is_Chart_IN_s_wait_0 = 4'b0110, 
is_Chart_IN_s_wait_tb = 4'b1001;

binary

コード ジェネレーターは、バイナリ エンコード スキームを使用して、各列挙値を表現します。この例は、4 つのステートを持つ Stateflow Chart における、このエンコード スキームの Verilog コードの抜粋です。

parameter 
is_Chart_IN_s_idle = 2'b00, 
is_Chart_IN_s_rx = 2'b01, 
is_Chart_IN_s_wait_0 = 2'b10, 
is_Chart_IN_s_wait_tb = 2'b11;

VHDL の場合、生成されたコードは CONSTANT 型を使用して、既定ではない列挙値をエンコードします。たとえば、このコードの抜粋は、4 つのステートを持つ Stateflow Chart にツーホット エンコード スキームを使用したときに生成される VHDL コードです。

 PACKAGE s_pkg IS
  -- Constants
  -- Two-hot encoded enumeration values for type state_type_is_Chart
  CONSTANT IN_s_idle         : std_logic_vector(3 DOWNTO 0) := 
    "0011";
  CONSTANT IN_s_rx           : std_logic_vector(3 DOWNTO 0) := 
    "0101";
  CONSTANT IN_s_wait_0       : std_logic_vector(3 DOWNTO 0) := 
    "0110";
  CONSTANT IN_s_wait_tb      : std_logic_vector(3 DOWNTO 0) := 
    "1001";

END s_pkg;

コマンド ライン情報

プロパティ: EnumEncodingScheme
型: 文字ベクトル
値: 'default' | 'onehot' | 'twohot''binary'
既定の設定: 'default'

このプロパティを設定するには、関数 hdlset_param または makehdl を使用します。プロパティの値を表示するには、関数 hdlget_param を使用します。

スカラー化された端子名のインデックス付け

スカラー化されたベクトル端子の名前の開始インデックスを指定します。例については、生成された VHDL コードのベクトル端子のスカラー化を参照してください。

設定

既定の設定: Zero-based

Zero-based

スカラー化されたベクトル端子の名前の開始インデックスを 0 にします。たとえば、uint16 型の 1x10 のベクトルである入力 u をスカラー化した場合、生成された HDL コードの抜粋は次のようになります。

ENTITY Subsystem IS
  PORT( u_0        :   IN    std_logic_vector(15 DOWNTO 0);  -- uint16
        u_1        :   IN    std_logic_vector(15 DOWNTO 0);  -- uint16
        u_2        :   IN    std_logic_vector(15 DOWNTO 0);  -- uint16
        u_3        :   IN    std_logic_vector(15 DOWNTO 0);  -- uint16
        u_4        :   IN    std_logic_vector(15 DOWNTO 0);  -- uint16
        u_5        :   IN    std_logic_vector(15 DOWNTO 0);  -- uint16
        u_6        :   IN    std_logic_vector(15 DOWNTO 0);  -- uint16
        u_7        :   IN    std_logic_vector(15 DOWNTO 0);  -- uint16
        u_8        :   IN    std_logic_vector(15 DOWNTO 0);  -- uint16
        u_9        :   IN    std_logic_vector(15 DOWNTO 0);  -- uint16
        );
END Subsystem;

One-based

スカラー化されたベクトル端子の名前の開始インデックスを 1 にします。たとえば、uint16 型の 1x10 のベクトルである入力 u をスカラー化した場合、生成された HDL コードの抜粋は次のようになります。

ENTITY Subsystem IS
  PORT( u_1      :   IN    std_logic_vector(15 DOWNTO 0);  -- uint16
        u_2      :   IN    std_logic_vector(15 DOWNTO 0);  -- uint16
        u_3      :   IN    std_logic_vector(15 DOWNTO 0);  -- uint16
        u_4      :   IN    std_logic_vector(15 DOWNTO 0);  -- uint16
        u_5      :   IN    std_logic_vector(15 DOWNTO 0);  -- uint16
        u_6      :   IN    std_logic_vector(15 DOWNTO 0);  -- uint16
        u_7      :   IN    std_logic_vector(15 DOWNTO 0);  -- uint16
        u_8      :   IN    std_logic_vector(15 DOWNTO 0);  -- uint16
        u_9      :   IN    std_logic_vector(15 DOWNTO 0);  -- uint16
        u_10     :   IN    std_logic_vector(15 DOWNTO 0);  -- uint16
        );
END Subsystem;

依存関係

このオプションは、モデル コンフィギュレーション パラメーター [端子のスカラー化][オン] または [DUT レベル] に設定されている場合に適用されます。詳細については、トリガー信号とスカラー化の使用とテスト ポイント DUT 端子生成のパラメーターの [端子のスカラー化] の節を参照してください。

コマンド ライン情報

プロパティ: ScalarizedPortIndexing
型: 文字ベクトル
値: 'Zero-based' | 'One-based'
既定の設定: 'Zero-based'

このプロパティを設定するには、関数 hdlset_param または makehdl を使用します。プロパティの値を表示するには、関数 hdlget_param を使用します。