Инструкции по подсистеме DUT

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

Факторы по подсистеме DUT

Идентификатор руководства

1.2.1

Серьезность

Очень рекомендуем

Описание

DUT является Subsystem, которая содержит алгоритм, для которого вы хотите сгенерировать код. Обычно в качестве DUT задается Подсистема верхнего уровня. Смотрите также Модель разбиения на DUT и Испытательный стенд.

Рассмотрите использование этих рекомендуемых настроек при разработке Подсистемы DUT для генерации HDL-кода.

Преобразуйте подсистему DUT в Модель-ссылку для тестов с непрерывными блоками

Идентификатор руководства

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'

Вставка рукописного кода в окружение моделирования Simulink

Идентификатор руководства

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.

См. также

Функции

Похожие темы