Можно следовать этим инструкциям, чтобы изучить некоторые лучшые практики о том, как можно смоделировать DUT для генерации испытательного стенда и HDL-кода. Каждая инструкция имеет уровень серьезности, который указывает на уровень требований податливости. Чтобы узнать больше, смотрите Уровни серьезности Руководств по моделированию HDL.
1.2.1
Строго рекомендуемый
DUT является Subsystem, который содержит алгоритм, для которого вы хотите сгенерировать код. Обычно вы задаете Подсистему верхнего уровня как DUT. См. также Модель Раздела в DUT и Испытательный стенд.
Рассмотрите использование этих рекомендуемых настроек, когда вы спроектируете Подсистему DUT для генерации HDL-кода.
Для DUT верхнего уровня:
Убедитесь, что DUT не является условно выполняемой подсистемой, такой как Enabled Subsystem или Triggered Subsystem. Чтобы проверить, что вы используете допустимый Subsystem верхнего уровня в качестве DUT, можно осуществить эту Проверку проверки модели HDL на недопустимую подсистему верхнего уровня.
Убедитесь, что HDL Architecture DUT не задан как BlackBox
. Смотрите подсистемы BlackBox.
Соедините выходные сигналы, которые не связаны с блоком Terminator. Чтобы узнать больше, смотрите Оконечный Несвязанный Блок Выходные параметры.
Убедитесь, что DUT не содержит блоки, которые вы комментируете через. HDL Coder™ не поддерживает генерацию кода для этих блоков. Можно прокомментировать блоки для генерации кода, когда выходные сигналы не использованы. См. также Используя, Комментируют и Комментарий Через Блоков.
Если вы используете Подсистему, которая является иерархически ниже Подсистемы верхнего уровня как DUT, и сгенерируйте HDL-код, HDL Coder преобразует его в модель - ссылку. После того, как вы генерируете HDL-код в hdlsrc
директория, вы видите модель Simulink® со ссылками на валидацию и cosimulation модель. В некоторых случаях это может привести к конфликтам на имена ссылочного файла и более длительное время генерации кода.
Для DUT неверхнего уровня:
Задайте DUT как невиртуальную Подсистему прежде, чем сгенерировать HDL-код, чтобы избежать числовых несоответствий в результатах симуляции. Чтобы узнать больше, смотрите Использование Различных Типов Подсистемы.
Оставьте HDL Architecture DUT к default
.
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'
1.2.3
Информативный
Можно снова использовать предварительно проверенный IP RTL или вставить рукописный HDL-код в среду моделирования Simulink при помощи этих методов:
Импорт HDL Verilog
Если вы написали от руки код Verilog, можно импортировать код в окружение Simulink. Процесс импорта генерирует модель Simulink, которая функционально эквивалентна вашему рукописному HDL-коду.
Импорт HDL поддерживает подмножество построений Verilog, которые можно использовать в импорте проекта, чтобы создать модель Simulink. Чтобы узнать больше, см.:
Подсистемы BlackBox
Можно использовать подсистемы BlackBox, чтобы вставить рукописный HDL-код для блока в модели Simulink. Можно затем интегрировать подсистемы BlackBox с другими блоками в модели Simulink и затем сгенерировать HDL-код.
Чтобы сделать BlackBox Subsystem совместимым с другими блоками для генерации HDL-кода и включать этот блок в вашу модель, создайте блок в Simulink:
Назовите блок с таким же именем как модуль сущности или Verilog VHDL.
Задайте те же вводы и выводы, включая те же типы, размеры и имена.
Задайте те же часы, сбросьте, и часы включают сигналы. Один блок может иметь не больше чем одни часы, сбросить, и часы включают сигнал.
Используйте одну частоту дискретизации в блоке.
Задайте Architecture блока как BlackBox
в свойствах блока HDL.
Чтобы узнать больше, смотрите, Генерируют Интерфейс Черного квадрата для Подсистемы.
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.