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

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

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

ID инструкции

1.2.1

Серьезность

Строго рекомендуемый

Описание

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

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

Для DUT верхнего уровня:

Если вы используете Подсистему, которая является иерархически ниже Подсистемы верхнего уровня как DUT, и сгенерируйте HDL-код, HDL Coder преобразовывает его в модель - ссылку. После того, как вы сгенерируете HDL-код в директории hdlsrc, вы видите модель Simulink® со ссылками на валидацию и cosimulation модель. В некоторых случаях это может привести к конфликтам на имена ссылочного файла и более длительное время генерации кода.

Для DUT неверхнего уровня:

  • Задайте DUT как невиртуальную Подсистему прежде, чем сгенерировать HDL-код, чтобы избежать числовых несоответствий в результатах симуляции. Чтобы узнать больше, смотрите Использование Различных Типов Подсистемы.

  • Оставьте HDL Architecture DUT к default.

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

ID инструкции

1.2.2

Серьезность

Строго рекомендуемый

Описание

В некоторых случаях части испытательного стенда Simulink™ могут содержать блоки Simscape™ или другие блоки от Библиотеки Simulink, которые действуют во время непрерывной выборки. Чтобы моделировать эти блоки, необходимо задать непрерывную установку решателя для модели. Настройки решателя, которые вы задаете, применяются ко всем блокам в вашей модели. Это означает, что Подсистема DUT использует непрерывный решатель, который не поддержан для генерации HDL-кода. Чтобы сгенерировать HDL-код, преобразуйте Подсистему DUT в модель - ссылку, и затем используйте фиксированный шаг дискретный решатель для модели, на которую ссылаются. Как родительская модель и образцовые настройки другого решателя использования, на которые ссылаются, необходимо преобразовать шаг расчета путем вставки Нулевого Порядка, Содержат и блоки Перехода Уровня на контуре DUT.

Примечание: Чтобы избежать проблем, таких как файл эталонной модели confliction и более длительное время генерации кода, рекомендуется, чтобы вы избегали использования Подсистемы, которая является иерархически ниже Подсистемы верхнего уровня как 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'

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

ID инструкции

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:

    • Назовите блок с таким же именем как модуль сущности или Verilog VHDL.

    • Задайте те же вводы и выводы, включая те же типы, размеры и имена.

    • Задайте те же часы, сбросьте, и часы включают сигналы. Один блок может иметь не больше чем одни часы, сбросить, и часы включают сигнал.

    • Используйте одну частоту дискретизации для блока.

    • Задайте Architecture блока как BlackBox в HDL Block Properties.

    Чтобы узнать больше, смотрите, Генерируют Интерфейс Черного квадрата для Подсистемы.

  • DocBlock в подсистемах BlackBox

    Чтобы сохранить HDL-код с вашей моделью, вместо как отдельный файл, используют DocBlock, чтобы интегрировать пользовательский HDL-код. Можно использовать собственный рукописный код VHDL или Verilog в качестве текста в DocBlock.

    Вы включаете каждый DocBlock, который содержит пользовательский HDL-код путем размещения его в подсистему черного квадрата, и включая подсистему черного квадрата в DUT. Один файл HDL сгенерирован на подсистему черного квадрата. Для получения дополнительной информации смотрите, Интегрируют Пользовательский HDL-код Используя DocBlock.

  • HDL блоки Cosimulation

    Если у вас есть симулятор HDL, такой как Mentor Graphics® ModelSim® или Cadence Incisive®, можно использовать HDL блоки Cosimulation, чтобы моделировать HDL-код для DUT при помощи того симулятора HDL.

    Можно моделировать HDL-код для DUT в Simulink и инстанцировать HDL-кода в сгенерированном коде для DUT.

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

Функции

Похожие темы