Можно следовать этим инструкциям, чтобы изучить, как можно идентифицировать параметры блоков в проекте и программно обновить некоторые параметры так, чтобы модель была совместима для генерации HDL-кода. Каждая инструкция имеет уровень серьезности, который указывает на уровень требований податливости. Чтобы узнать больше, смотрите Уровни серьезности Руководств по моделированию HDL.
1.1.11
Рекомендуемый
Для блоков Constant и блоков Gain, которые имеют значительно большие значения или используют значения параметров, Constant или значения Gain не могут отобразиться в маске блока. Чтобы увеличить удобочитаемость, настройте размер блока так, чтобы значение параметров могло быть отображено как показано на рисунке.
ID инструкции
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 time 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