Вы можете следовать этим рекомендациям, чтобы узнать некоторые лучшие практики о том, как можно смоделировать DUT для HDL-кода и генерации теста. Каждое руководство имеет уровень серьезности, который указывает на уровень податливостей. Для получения дополнительной информации см. HDL-руководства по моделированию уровней серьезности.
1.2.1
Очень рекомендуем
DUT является Subsystem, которая содержит алгоритм, для которого вы хотите сгенерировать код. Обычно в качестве DUT задается Подсистема верхнего уровня. Смотрите также Модель разбиения на DUT и Испытательный стенд.
Рассмотрите использование этих рекомендуемых настроек при разработке Подсистемы DUT для генерации HDL-кода.
Убедитесь, что DUT не является подсистемой, выполняемой по условию, такой как Enabled Subsystem или Triggered Subsystem. Чтобы убедиться, что вы используете допустимую Subsystem верхнего уровня в качестве DUT, можно запустить проверку HDL-модели на недопустимую подсистему верхнего уровня.
Убедитесь, что HDL Architecture DUT не задан как BlackBox
. См. «Подсистемы BlackBox».
Соедините выходные сигналы, которые не связаны с блоком Terminator. Дополнительные сведения см. в разделе «Завершение выходов несоединенных блоков».
Для nontop DUT задайте DUT как невиртуальную Подсистему перед генерацией HDL-кода, чтобы избежать числовых несоответствий в результатах симуляции. Дополнительные сведения см. в разделе Использование различных типов подсистем.
Идентификатор руководства
1.2.2
Серьезность
Очень рекомендуем
Описание
В некоторых случаях части Simulink™ testbench могут содержать Simscape™ блоков или других блоков из библиотеки Simulink, которые работают в непрерывном шаге расчета. Чтобы симулировать эти блоки, вы должны задать непрерывную настройку решателя для вашей модели. Настройки решателя, которые вы задаете, применяются ко всем блокам в вашей модели. Это означает, что Подсистема DUT использует непрерывный решатель, который не поддерживается для генерации HDL-кода. Чтобы сгенерировать HDL-код, преобразуйте Подсистему DUT в модель-ссылку, а затем используйте дискретный решатель с фиксированным шагом для модели-ссылки. Когда родительская модель и модель-ссылка используют другой решатель настройки, вы должны преобразовать шаг расчета, вставив блоки Zero-Order Hold и Rate Transition в контур DUT.
Для примера откройте модель hdlcoder_testbench_continuous.slx
. Модель использует ode45
, который является непрерывной настройкой решателя. Вы видите, что DUT является блоком модели-ссылки. Блоки Hold-Order и Rate Transition в контурах преобразуют шаг расчета.
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
Информативный
Можно повторно использовать предварительно проверенный RTL IP или вставить рукописный HDL-код в Simulink® окружение моделирования с помощью следующих методов:
Импорт Verilog HDL
Если у вас есть рукописный код Verilog, можно импортировать код в окружение Simulink. Процесс импорта генерирует модель Simulink, которая функционально эквивалентна вашему рукописному HDL-коду.
Импорт HDL поддерживает подмножество конструкций Verilog, которые можно использовать для импорта проекта для создания модели Simulink. Для получения дополнительной информации см.:
Подсистемы BlackBox
Можно использовать подсистемы BlackBox, чтобы вставить рукописный HDL-код для блока в модель Simulink. Затем можно интегрировать подсистемы BlackBox с другими блоками в модели Simulink, а затем сгенерировать HDL-код.
Чтобы сделать Subsystem BlackBox совместимым с другими блоками для генерации HDL-кода и включить этот блок в свою модель, создайте блок в Simulink:
Назовите блок с помощью того же имени, что и модуль VHDL сущности или Verilog.
Задайте одинаковые входные и выходные входы, включая те же типы, размеры и имена.
Задайте те же сигналы синхронизации, сброса и включения синхроимпульса. Один блок может иметь не более одного сигналы тактовой частоты, сброс и сигнал разрешения действии по сигналу тактовой частоты.
Используйте одну частоту дискретизации для блока.
Задайте Architecture блока следующим BlackBox
в разделе Свойств блоков».
Дополнительные сведения см. в разделе «Генерация интерфейса черного ящика для подсистемы».
DocBlock в подсистемах BlackBox
Чтобы сохранить HDL-код в модели, вместо того, чтобы быть отдельным файлом, используйте DocBlock, чтобы интегрировать пользовательский HDL-код. В качестве текста в DocBlock можно использовать собственный рукописный VHDL или Verilog код.
Вы включаете каждый DocBlock, который содержит пользовательский HDL-код, помещая его в подсистему черного ящика и включая подсистему черного ящика в вашу DUT. По подсистеме черного ящика генерируется один файл HDL. Для получения дополнительной информации см. «Интеграция пользовательского HDL-кода с использованием DocBlock».
Блоки косимуляции HDL
Если у вас есть Симулятор HDL, такой как Mentor Graphics® ModelSim® или Cadence Incisive®можно использовать блоки HDL Cosimulation (HDL Verifier) для моделирования HDL-кода для DUT с помощью этого Симулятора HDL.
Можно симулировать HDL-код для DUT в Simulink и создать экземпляр HDL-кода в сгенерированном коде для DUT.