質問: compiledportwidths プロパティと compiledportdimensions プロパティの使用法、制限、および出力形式は何ですか? compiledportwidths プロパティと compiledportdimensions プロパティの使用方法、制限事項、出力形式を教えてください。
回答: compiledportwidths と compiledportdimensions は、コマンドラインからモデル内の信号のサイズと次元を取得するために用います。 これらの情報は次のようにして取得します。 >> mymodel([],[],[],'compile'); >> s = get_param(gcb,'compiledportwidths'); >> mymodel([],[],[],'term'); compiledportwidths と compiledportdimensions はほとんど同じですが、compiledportdimensions は信号のサイズ(整数値)ではなく、次元を示す一連の数値を出力します(詳細は後述します)。compiledportwidths の場合、上記の get_param でえられた構造体 s は以下の形式になります。 s.input = [各入力ポートに対応する信号サイズ(整数値)のベクトル] s.output = [各出力ポートに対応する信号サイズ(整数値)のベクトル] s.state = [信号サイズ(整数値)のスカラー(state のポートは1つしかないためです)] s.enable = [信号サイズ(整数値)のスカラー] s.trigger= [信号サイズ(整数値)のスカラー] 追加の注意事項 (1) get_param(gcb,'compiledportwidths')は、ポートブロック、仮想ブロック(mux, demux, ...)など、あらゆるブロックに対して呼び出すことができます。 (2) gcbが出力ポートを持つトリガ(イネーブル)ブロックの場合、s のoutputフィールド(s.output)にはトリガ(イネーブル)ブロックの出力ポートの信号サイズが格納されます。 (3) gcbが出力ポートを持たないトリガ(イネーブル)ブロックの場合、s は空になります。 (4) gcbがトリガ(イネーブル)ブロックを含むサブシステム(出力ポートの有無は問わない)である場合、's'のトリガ(イネーブル)フィールド、すなわちs.trigger(s.enable)には、トリガ(イネーブル)ポートの端子幅が入ります。 (5) (i)ブロックダイアグラムをコンパイルする前、または (ii)シミュレーションが完了した後に実行された場合、 get_paramを実行すると、sは空の構造体(0x0)となります。 (6)gcbのinitfcnとstartfcnがこのパラメータを取得するように設定されている場合、 (i)initfcn は空の構造体を返します。 (ii) startfcn は空でない構造体を返します。 (7) compiledportwidthsを持つバス信号の場合、 (i) 非バーチャルバスは1x1信号として扱われます。 (ii) バーチャルバスは、それらの合成信号のサイズの合計としてカウントされます。 (8) compiledportdimensions (i) 各信号が一次元の場合は、その信号の値のペアを与える。多次元の場合は、次元数とその次元の値を記載します。例えば、1x1の信号は[1 1]と記載されますが、2x4x5の信号は[3 2 4 5]と記載されます。 (ii) バーチャルバスは、[-2 n s1 s2 s3 ...]の形式で記載されます。ここで、nは仮想バス内の信号の数、sは信号です。例えば、1x1と2x2x2の2つの信号を持つ仮想バスは、[-2 2 1 1 3 2 2 2]のように記載されます。 (iii) 非バーチャルバスは、[1 1]が返ります。