Ниже приведены рекомендации по моделированию DUT для создания кода HDL и тестовых инструментальных средств. Каждое руководство имеет уровень серьезности, который указывает уровень соответствия требованиям. Дополнительные сведения см. в разделе Рекомендации по моделированию HDL Уровни серьезности.
1.2.1
Очень рекомендуем
DUT - это подсистема, содержащая алгоритм, для которого требуется создать код. Как правило, подсистема верхнего уровня указывается в качестве DUT. См. также Модель разделения на DUT и испытательный стенд.
Рекомендуется использовать эти рекомендуемые параметры при проектировании подсистемы DUT для создания кода HDL.
Убедитесь, что DUT не является условно выполняемой подсистемой, такой как подсистема Enabled или Triggered. Чтобы убедиться в том, что в качестве DUT используется допустимая подсистема верхнего уровня, можно выполнить проверку модели HDL на наличие недопустимой подсистемы верхнего уровня.
Убедитесь, что архитектура HDL DUT не указана как BlackBox. См. раздел Подсистемы BlackBox.
Подключите выходные сигналы, которые не подключены к блоку терминатора. Дополнительные сведения см. в разделе Завершение вывода несвязанных блоков.
Для DUT, отличного от верхнего уровня, укажите DUT в качестве невиртуальной подсистемы перед созданием кода HDL, чтобы избежать численных несоответствий в результатах моделирования. Дополнительные сведения см. в разделе Использование различных типов подсистем.
Идентификатор руководства
1.2.2
Серьезность
Очень рекомендуем
Описание
В некоторых случаях части Simulink™ testbench могут содержать блоки Simscape™ или другие блоки из библиотеки Simulink, которые работают в непрерывное время выборки. Чтобы смоделировать эти блоки, необходимо указать параметр непрерывного решателя для модели. Заданные параметры решателя применяются ко всем блокам в модели. Это означает, что подсистема DUT использует непрерывный решатель, который не поддерживается для генерации кода HDL. Чтобы создать код HDL, преобразуйте подсистему DUT в ссылку на модель, а затем используйте дискретный решатель с фиксированным шагом для ссылочной модели. Поскольку родительская модель и ссылочная модель используют различные настройки решателя, необходимо преобразовать время выборки, вставив блоки удержания нулевого порядка и перехода скорости на границе DUT.
Например, откройте модель hdlcoder_testbench_continuous.slx. Модель использует ode45, которая является непрерывной настройкой решателя. Видно, что DUT является ссылочным блоком модели. Блоки удержания нулевого порядка и перехода скорости на границе преобразуют время выборки.
open_system('hdlcoder_testbench_continuous') set_param('hdlcoder_testbench_continuous','SimulationCommand','Update') get_param('hdlcoder_testbench_continuous', 'Solver')
ans =
'ode45'

Просмотр ссылочной модели hdlcoder_DUT_discrete, дважды щелкните значок DUT блок. Видно, что DUT использует настройку дискретного решателя.
open_system('hdlcoder_testbench_continuous/DUT') get_param('hdlcoder_DUT_discrete', 'Solver')
ans =
'FixedStepDiscrete'

1.2.3
Информативный
Можно повторно использовать предварительно проверенный IP-адрес RTL или вставить рукописный код HDL в среду моделирования Simulink ® с помощью следующих методов:
Импорт HDL Verilog
При наличии рукописного кода Verilog его можно импортировать в среду Simulink. В процессе импорта создается модель Simulink, функционально эквивалентная рукописному HDL-коду.
Импорт HDL поддерживает подмножество конструкций Verilog, которые можно использовать для импорта конструкции для создания модели Simulink. Дополнительные сведения см. в следующих разделах:
Подсистемы BlackBox
Подсистемы BlackBox можно использовать для вставки рукописного HDL-кода блока в модель Simulink. Затем можно интегрировать подсистемы BlackBox с другими блоками в модели Simulink, а затем создать код HDL.
Чтобы сделать подсистему BlackBox совместимой с другими блоками для генерации кода HDL и включить этот блок в модель, создайте блок в Simulink:
Назовите блок, используя то же имя, что и объект VHDL или модуль Verilog.
Определите одни и те же входы и выходы, включая те же типы, размеры и имена.
Определите одни и те же сигналы синхронизации, сброса и включения синхронизации. Один блок может иметь не более одного тактового сигнала, сигнала сброса и сигнала включения тактового сигнала.
Используйте одну частоту выборки для блока.
Укажите архитектуру блока как BlackBox в окне «Свойства блока HDL».
Дополнительные сведения см. в разделе Создание интерфейса черного ящика для подсистемы.
DocBlock в подсистемах BlackBox
Чтобы сохранить код HDL в модели, вместо отдельного файла используйте DocBlock для интеграции пользовательского кода HDL. В качестве текста в DocBlock можно использовать собственный рукописный код VHDL или Verilog.
Каждый DocBlock, содержащий пользовательский код HDL, включается в подсистему черного ящика, а подсистема черного ящика включается в DUT. На подсистему черного ящика создается один файл HDL. Дополнительные сведения см. в разделе Интеграция пользовательского кода HDL с помощью DocBlock.
Блоки косимуляции ЛПВП
При наличии имитатора ЛПВП, такого как Mentor Graphics ® ModelSim ® или Cadence Incisive ®, можно использовать блоки косимуляции ЛПВП (HDL Verifier) для моделирования кода ЛПВП для ЦВД с помощью этого имитатора ЛПВП.
Можно смоделировать код HDL для DUT в Simulink и создать экземпляр кода HDL в сгенерированном коде для DUT.