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));
コード ジェネレーターは、中間信号の
const3
、subtractor_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 コード内で列挙型を表現します。
default
コード ジェネレーターは、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
を使用します。
バスのレコード タイプの生成
テスト対象の設計 (DUT) インターフェイスとさまざまなサブシステムレベルのインターフェイスで、バス信号の VHDL 構造レコード タイプを使用するコードを生成します。詳細については、Generate VHDL Code with Record Types for Bus Signalsを参照してください。
設定
既定の設定: オフ
オン
VHDL コードでバス信号のレコード タイプを生成します。たとえば、このコードの抜粋は、
In1
とOut1
がレコード タイプを使用して定義されるバス端子であるサブシステムに対して生成された 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]
に設定します。