Рассмотрите использование этих рекомендуемых настроек, когда вы создадите свою модель иерархически и сгенерируете HDL-код для вашего проекта. Каждая инструкция имеет уровень серьезности, который указывает на уровень требований соответствия. Чтобы узнать больше, смотрите Уровни серьезности Руководств по моделированию HDL.
ID инструкции
1.2.4
Серьезность
Обязательный
Описание
Рекомендуется, чтобы вы постарались не непосредственно соединять блоки Константа с выходными портами Подсистемы. Инструменты синтеза могут оптимизировать и удалить константы и создать неподключенные порты.
Если вы используете типы данных с плавающей точкой с режимом Native Floating Point
, включенным, и вводите постоянные значения арифметическому оператору, такие как блок Add, HDL Coder™ заменяет блок Add на блок Constant при генерации кода. Эта оптимизация может привести к блоку Constant, непосредственно соединенному с выходным портом. Поэтому рекомендуется, чтобы вы избежали таких построений моделирования. См. также Упрощают Постоянные Операции и Уменьшают Сложность Проекта в HDL Coder.
Например, откройте модель hdlcoder_constant_subsystem_boundary.slx
. DUT содержит две подсистемы Constant_subsys1
и Constant_subsys2
, выходные параметры которого являются входными параметрами к третьей Подсистеме. Constant_subsys1
содержит блоки Константа, непосредственно соединенные с выходными портами, и Constant_subsys2
содержит блоки Константа, которые имеют один типы данных как входные параметры к блоку Add.
load_system('hdlcoder_constant_subsystem_boundary.slx') set_param('hdlcoder_constant_subsystem_boundary','SimulationCommand','Update') open_system('hdlcoder_constant_subsystem_boundary/DUT/Constant_subsys1')
open_system('hdlcoder_constant_subsystem_boundary/DUT/Constant_subsys2')
Когда Constant_subsys2
использует один типы данных, и модели включили режим Native Floating Point
, когда вы генерируете HDL-код для DUT, Constant_subsys2
становится кандидатом на оптимизацию это simplfies постоянные операции. Когда вы открываете сгенерированную модель, вы видите блок Constant, непосредственно соединенный с выходным портом.
open_system('gm_hdlcoder_constant_subsystem_boundary.slx') set_param('gm_hdlcoder_constant_subsystem_boundary','SimulationCommand','Update') open_system('gm_hdlcoder_constant_subsystem_boundary/DUT/Constant_subsys2')
ID инструкции
1.2.5
Серьезность
Рекомендуемый
Описание
Сгенерировать параметризованный HDL-код для блоков Усиления и Константа:
Подсистема, которая содержит блоки Усиления и Константа, должна быть подсистемой маскированной. Блоки Усиления и Константа используют эти значения параметров маски. Вы задаете параметры маски Подсистемы в диалоговом окне Mask Editor.
Подсистемой, которая содержит блоки Усиления и Константа, должна быть Атомарная подсистема. Чтобы сделать Подсистему Атомарной подсистемой, щелкните правой кнопкой по той Подсистеме и выберите Treat как атомарный модуль.
Включите Генерировать параметризованный HDL-код из установки подсистемы маскированной в диалоговом окне Configuration Parameters или установите MaskParameterAsGeneric
на on
в командной строке с помощью makehdl
или hdlset_param
.
Для примера откройте модель hdlcoder_masked_subsystem
. Подсистема Top
содержит две атомарных подсистемы маскированных MASKSUB
и MASKSUB1
, которые подобны, но для значений параметров маскированных.
load_system('hdlcoder_masked_subsystems') set_param('hdlcoder_masked_subsystems', 'SimulationCommand', 'Update') open_system('hdlcoder_masked_subsystems/TOP')
Модели включили установку MaskParameterAsGeneric
. Эта установка соответствует Тому, чтобы генерировать параметризованный HDL-код от подсистемы маскированной, устанавливающей, который включен в командной строке.
hdlsaveparams('hdlcoder_masked_subsystems')
%% Set Model 'hdlcoder_masked_subsystems' HDL parameters hdlset_param('hdlcoder_masked_subsystems', 'HDLSubsystem', 'hdlcoder_masked_subsystems/TOP'); hdlset_param('hdlcoder_masked_subsystems', 'MaskParameterAsGeneric', 'on');
Чтобы сгенерировать код VHDL для Подсистемы Top
, запустите эту команду:
makehdl('hdlcoder_masked_subsystem/TOP')
В сгенерированном коде вы видите, что HDL Coder™ генерирует один файл HDL MaskedSub
с различными параметрами маскированными, сопоставленными с типичными портами.
-- ------------------------------------------------------------- -- -- File Name: hdlsrc\hdlcoder_masked_subsystems\TOP.vhd -- Created: 2018-10-08 13:30:02 -- -- Generated by MATLAB 9.6 and HDL Coder 3.13 -- -- -- ------------------------------------------------------------- -- -- ARCHITECTURE rtl OF TOP IS -- Component Declarations COMPONENT MASKSUB GENERIC( m : integer; b : integer ); PORT( x : IN std_logic_vector(7 DOWNTO 0); -- uint8 y : OUT std_logic_vector(16 DOWNTO 0) -- ufix17 ); END COMPONENT; -- Component Configuration Statements FOR ALL : MASKSUB USE ENTITY work.MASKSUB(rtl); -- Signals SIGNAL MASKSUB_out1 : std_logic_vector(16 DOWNTO 0); -- ufix17 SIGNAL MASKSUB1_out1 : std_logic_vector(16 DOWNTO 0); -- ufix17 BEGIN u_MASKSUB : MASKSUB GENERIC MAP( m => 5, b => 2 ) PORT MAP( x => In1, -- uint8 y => MASKSUB_out1 -- ufix17 ); u_MASKSUB1 : MASKSUB GENERIC MAP( m => 6, b => 4 ) PORT MAP( x => In1, -- uint8 y => MASKSUB1_out1 -- ufix17 ); Out1 <= MASKSUB_out1; Out2 <= MASKSUB1_out1; END rtl;