Main Content

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

HDL ブロック パラメーターの特定とプログラムによる変更と表示

これらのガイドラインは、設計に含まれるブロック パラメーターを特定し、それらのパラメーターの一部を HDL コード生成と互換性があるモデルになるようにプログラムで更新する方法を示したものです。各ガイドラインに準拠要件のレベルを示す重大度レベルが割り当てられています。詳細については、HDL モデリング ガイドラインの重大度レベルを参照してください。

パラメーターを特定するための Constant ブロックと Gain ブロックのサイズ調整

ガイドライン ID

1.1.11

重大度

推奨

説明

Constant ブロックや Gain ブロックの値が非常に大きい場合やパラメーター値を使用している場合、[Constant][Gain] の値がブロック マスクに表示されないことがあります。可読性を高めるには、次の図に示すように、パラメーター値が表示される大きさにブロックのサイズを調整します。

HDL コード生成に影響するパラメーターの表示

ガイドライン ID

1.1.12

重大度

推奨

説明

DistributedPipeliningSharingFactor などの特定の HDL ブロック プロパティは、HDL コード生成に大きく影響することがあります。ブロック プロパティを特定のブロックまたはサブシステムに対して有効にする場合は、Simulink™ ブロック線図のそのブロックの横にブロック プロパティを注釈として付けることをお勧めします。モデルに注釈を付けるときは、--HDL-- のような区切り記号を使用して注釈とブロック名を区切ります。

たとえば、モデル hdlcoder_block_annotation_HDL_params.slx を開きます。

open_system('hdlcoder_block_annotation_HDL_params')
set_param('hdlcoder_block_annotation_HDL_params','SimulationCommand','Update')

この DUT サブシステムは単純な乗算と加算の演算を実行します。

open_system('hdlcoder_block_annotation_HDL_params/DUT')

このモデルには HDL ブロック パラメーターが保存されています。パラメーターを表示するには、関数 hdlsaveparams を使用します。

hdlsaveparams('hdlcoder_block_annotation_HDL_params/DUT')
%% Set Model 'hdlcoder_block_annotation_HDL_params' HDL parameters
hdlset_param('hdlcoder_block_annotation_HDL_params', 'GenerateCoSimModel', 'ModelSim');
hdlset_param('hdlcoder_block_annotation_HDL_params', 'GenerateValidationModel', 'on');
hdlset_param('hdlcoder_block_annotation_HDL_params', 'HierarchicalDistPipelining', 'on');
hdlset_param('hdlcoder_block_annotation_HDL_params', 'MaskParameterAsGeneric', 'on');
hdlset_param('hdlcoder_block_annotation_HDL_params', 'MinimizeClockEnables', 'on');
hdlset_param('hdlcoder_block_annotation_HDL_params', 'MinimizeIntermediateSignals', 'on');
hdlset_param('hdlcoder_block_annotation_HDL_params', 'OptimizationReport', 'on');
hdlset_param('hdlcoder_block_annotation_HDL_params', 'ResetType', 'Synchronous');
hdlset_param('hdlcoder_block_annotation_HDL_params', 'ResourceReport', 'on');
hdlset_param('hdlcoder_block_annotation_HDL_params', 'TargetLanguage', 'Verilog');
hdlset_param('hdlcoder_block_annotation_HDL_params', 'Traceability', 'on');

% Set SubSystem HDL parameters
hdlset_param('hdlcoder_block_annotation_HDL_params/DUT', 'DistributedPipelining', 'on');
hdlset_param('hdlcoder_block_annotation_HDL_params/DUT', 'InputPipeline', 1);
hdlset_param('hdlcoder_block_annotation_HDL_params/DUT', 'OutputPipeline', 3);

% Set Sum HDL parameters
hdlset_param('hdlcoder_block_annotation_HDL_params/DUT/Add', 'InputPipeline', 1);
hdlset_param('hdlcoder_block_annotation_HDL_params/DUT/Add', 'OutputPipeline', 1);

% Set Product HDL parameters
hdlset_param('hdlcoder_block_annotation_HDL_params/DUT/Product', 'InputPipeline', 2);
hdlset_param('hdlcoder_block_annotation_HDL_params/DUT/Product', 'OutputPipeline', 1);

モデルに保存されている HDL ブロック パラメーターをモデルに注釈として付けるには、この例に付属の showHdlBlockParams スクリプトを使用します。

showHdlBlockParams('hdlcoder_block_annotation_HDL_params/DUT','on')
Add block annotation for hdlcoder_block_annotation_HDL_params/DUT. 
 ----HDL----\nDistributedPipelining = on\nInputPipeline = 1\nOutputPipeline = 3 


Add block annotation for hdlcoder_block_annotation_HDL_params/DUT/Add. 
 ----HDL----\nInputPipeline = 1\nOutputPipeline = 1 


Add block annotation for hdlcoder_block_annotation_HDL_params/DUT/Product. 
 ----HDL----\nInputPipeline = 2\nOutputPipeline = 1 


open_system('hdlcoder_block_annotation_HDL_params')

open_system('hdlcoder_block_annotation_HDL_params/DUT')

HDL ブロック パラメーターの注釈をモデルから削除するには、showHdlBlockParamsoff に設定して実行します。

showHdlBlockParams('hdlcoder_block_annotation_HDL_params/DUT','off')
HDL block annotations for hdlcoder_block_annotation_HDL_params/DUT are removed
HDL block annotations for hdlcoder_block_annotation_HDL_params/DUT/In1 are removed
HDL block annotations for hdlcoder_block_annotation_HDL_params/DUT/In2 are removed
HDL block annotations for hdlcoder_block_annotation_HDL_params/DUT/In3 are removed
HDL block annotations for hdlcoder_block_annotation_HDL_params/DUT/Add are removed
HDL block annotations for hdlcoder_block_annotation_HDL_params/DUT/Product are removed
HDL block annotations for hdlcoder_block_annotation_HDL_params/DUT/Out1 are removed
open_system('hdlcoder_block_annotation_HDL_params')

open_system('hdlcoder_block_annotation_HDL_params/DUT')

find_system と set_param を使用したブロック パラメーターの変更

ガイドライン ID

1.1.13

重大度

情報

説明

特定のブロックのパラメーターを変更するには、関数 find_system と関数 set_param を組み合わせて使用します。たとえば、次のスクリプトは、[サンプル時間]inf であるすべての Constant ブロックを検出し、その値を -1 に変更します。

modelname = ‘sfir_fixed’;
open_system (modelname)

% Detect all Constant blocks in the model
blockConstant = find_system(bdroot, 'blocktype', 'Constant')
 
% Detect the Constant blocks with sample time [inf], and change to [-1]
for  n  =  1:numel(blockConstant)
        sTime = get_param(blockConstant{n},'SampleTime') 
        if strcmp(lower(sTime), 'inf')
            set_param(blockConstant{n}, 'SampleTime', '-1')
    end
end

参考

関数

関連するトピック