Идентифицируйте и программно измените и отобразите параметры блоков HDL

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

Настройте размеры постоянных и получите блоки для идентификации параметров

ID инструкции

1.1.11

Серьезность

Рекомендуемый

Описание

Для блоков Constant и блоков Gain, которые имеют значительно большие значения или используют значения параметров, Constant или значения Gain не могут отобразиться в маске блока. Чтобы увеличить удобочитаемость, настройте размер блока так, чтобы значение параметров могло быть отображено как показано на рисунке.

Отобразите Параметры, которые Влияют на генерацию HDL-кода

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')

Измените Параметры блоков при помощи find_system и set_param

ID инструкции

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

Смотрите также

Функции

Похожие темы