Чтобы узнать, как можно определить параметры блоков в проекте, и программно обновить некоторые параметры, чтобы модель была совместима с формированием кода HDL. Каждое руководство имеет уровень серьезности, который указывает уровень соответствия требованиям. Дополнительные сведения см. в разделе Рекомендации по моделированию HDL Уровни серьезности.
1.1.11
Рекомендуется
Для блоков «Константа» и «Коэффициент усиления», имеющих значительно большие значения или использующих значения параметров, значения «Константа» или «Коэффициент усиления» могут быть невидимыми в маске блока. Для повышения читаемости отрегулируйте размер блока так, чтобы значение параметра отображалось, как показано на рисунке.

Идентификатор руководства
1.1.12
Серьезность
Рекомендуется
Описание
Некоторые свойства блока HDL, такие как DistributedPipelining и SharingFactor может существенно повлиять на формирование кода 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 из модели, выполните команду showHdlBlockParams установить в значение off.
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')

1.1.13
Информативный
Для изменения параметров определенных блоков можно использовать функцию find_system с функцией set_param. Например, этот сценарий, который обнаруживает все блоки Constant с временем Sample, равным inf и изменяет его на -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