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 を使用します。

For-Generate ループの展開

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

設定

既定の設定: オフ

オン

生成された HDL コードから FOR-GENERATE ループを展開して省略します。

オフ

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

コマンド ライン情報

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

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

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

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

  • FOR-GENERATE ループを使用しない Reshape ブロック ([For-Generate ループの展開] が有効):

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 ブロック ([For-Generate ループの展開] が無効):

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) ツールを使用している場合、ループ展開オプションを選択して、生成される HDL コードからループを省略します。

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

マスクされたサブシステムからのパラメーター化された 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 コード内で列挙型を表現します。

default

コード ジェネレーターは、Verilog および SystemVerilog では小数エンコードを、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 を使用します。

生成された HDL コード内のバス構造を保持

テスト対象の設計 (DUT) インターフェイスとさまざまなサブシステムレベルのインターフェイスで、バス信号の VHDL レコードまたは SystemVerilog 構造体のタイプを使用するコードを生成します。詳細については、Generate HDL Code with Record or Structure Types for Bus Signalsを参照してください。

設定

既定の設定: オフ

オン

HDL コードでバス信号のレコードまたは構造体のタイプを生成します。たとえば、このコードの抜粋は、In1Out1 がレコード タイプを使用して定義されるバス端子であるサブシステムに対して生成された VHDL コードを示しています。

ENTITY Subsystem IS
  PORT( clk          :   IN    std_logic;
        reset        :   IN    std_logic;
        In1          :   IN    BusObject_record;  -- record {double,double}
        Out1         :   OUT   BusObject_record  -- record {double,double}
        );
END Subsystem;
パッケージ ファイルは、データ型が double の 2 つのバス要素で構成されるレコード BusObject_record を定義します。

PACKAGE Subsystem_pkg IS
  TYPE BusObject_record IS RECORD
    signal1           : std_logic_vector(63 DOWNTO 0);
    signal2           : std_logic_vector(63 DOWNTO 0);
  END RECORD BusObject_record;

END Subsystem_pkg;

オフ

HDL Coder は、サブシステム インターフェイスでバス要素端子をフラット化します。次のコードの抜粋は、レコード タイプなしでサブシステムに対して生成された VHDL コードを示しています。

ENTITY Subsystem IS
  PORT( clk              :   IN    std_logic;
        reset            :   IN    std_logic;
        In1_signal1      :   IN    std_logic_vector(63 DOWNTO 0);  -- double
        In1_signal2      :   IN    std_logic_vector(63 DOWNTO 0);  -- double
        Out1_signal1     :   OUT   std_logic_vector(63 DOWNTO 0);  -- double
        Out1_signal2     :   OUT   std_logic_vector(63 DOWNTO 0)  -- double
        );
END Subsystem;

コマンド ライン情報

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

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

依存関係

このパラメーターを有効にするには、[ターゲット言語][VHDL] または [SystemVerilog] に設定します。

互換性の考慮事項

R2023b において、コンフィギュレーション パラメーター名が [バスのレコード タイプを生成] から [生成された HDL コード内のバス構造を保持] に変更されています。

参考

Generate HDL Code with Record or Structure Types for Bus Signals