Кодер поддерживает генерацию Simulink® Блоки косимуляции HDL. Можно использовать сгенерированные блоки HDL Cosimulation для косимуляции создания фильтра с помощью Simulink с Симулятором HDL. Для использования этой функции необходимо иметь лицензию HDL- Verifier™.
Сгенерированные блоки HDL Cosimulation сконфигурированы так, чтобы соответствовать интерфейсу порта и типа данных фильтра, выбранного для генерации кода. Соединяя блок HDL Cosimulation с моделью Simulink вместо фильтра, можно косимулировать свой проект с помощью нужных Симуляторов HDL.
Чтобы сгенерировать блоки HDL-косимуляции:
Выберите панель Test Bench в диалоговом окне Генерация HDL.
Выберите опцию Cosimulation blocks.
Когда эта опция выбрана, кодер генерирует и открывает модель Simulink, которая содержит блок HDL Cosimulation для каждого поддерживаемого Симулятора HDL.
Если вы хотите сгенерировать только блоки HDL Cosimulation (не генерируя HDL- испытательного стенда код), очистите HDL test bench.
Следующий рисунок показывает HDL test bench и Cosimulation blocks выбранные.
В диалоговом окне «Генерация HDL» нажмите кнопку Generate, чтобы сгенерировать HDL и испытательный стенд.
В сложение к обычным файлам кода кодер генерирует модель Simulink, содержащую блок HDL Cosimulation для каждого Симулятора HDL, поддерживаемого HDL Verifier.
Сгенерированная модель без названия и существует только в памяти. Обязательно сохраните его в целевой папке, если хотите сохранить модель и блоки для использования в будущих сеансах.
Для настройки параметров блоков HDL Cosimulation, таких как время, задержка и типы данных, смотрите Define HDL Cosimulation Block Interface (HDL Verifier).
Альтернатива командной строки: используйте generatehdl
функция со свойством GenerateCosimBlock
для генерации блоков HDL-косимуляции.
Примечание
Для использования этой функции необходимо иметь лицензию HDL Verifier.
Кодер генерирует модель Simulink, которая запускает симуляцию Simulink вашего создания фильтра, а также косимуляцию вашего проекта с Симулятором HDL. Модель сравнивает выходы фильтра Simulink с результатами симуляции HDL.
Сгенерированная модель включает в себя:
Поведенческая модель создания фильтра, реализованная в подсистеме Simulink. Подсистема реализует создание фильтра, используя основные блоки, такие как сумматоры и задержки.
Соответствующий блок HDL-косимуляции. Кодер конфигурирует этот блок, чтобы косимулировать создание фильтра с помощью Simulink с одним из следующих:
Менторская графика® ModelSim®
Каденция Incisive®
Тестовые воздействия, рассчитанные из указанного вами стимула испытательного стенда. Кодер сохраняет тестовые данные в переменном рабочем пространстве модели inputdata
. Блок From Workspace направляет тестовые данные в подсистему фильтра и блоки HDL Cosimulation.
Блок Scope, который позволяет вам наблюдать и сравнивать сигнал тестового воздействия с выходами блока Filter и HDL-косимуляции. Область возможностей также показывает различие (ошибку) между этими двумя выходами.
Генерация модели косимуляции требует зарегистрированных входных и/или выходов (см. Ограничения). Прежде чем генерировать модель, убедитесь, что ваша модель соответствует этому требованию, следующим образом:
Выберите панель Global Settings диалогового окна Генерация HDL.
На панели Global Settings перейдите на вкладку Ports. Появляются опции порта.
Выберите обе из следующих опций:
Add input register
Add output register
Чтобы сгенерировать модель:
В диалоговом окне Generate HDL сконфигурируйте другие параметры генерации кода и испытательного стенда в соответствии с требованиями вашего проекта.
Выберите панель Test bench диалогового окна Генерация HDL.
Выберите опцию Cosimulation model for use with:. Выбор этой опции включает соседнее раскрывающееся меню, где можно выбрать Mentor Graphics ModelSim
или Cadence Incisive
.
Используя раскрывающееся меню, выберите тип блока HDL Cosimulation, который необходимо использовать в сгенерированной модели. Выберите один из Mentor Graphics ModelSim
(по умолчанию) или Cadence Incisive
.
На следующем рисунке тип модели косимуляции Mentor Graphics ModelSim
, и сигнал стимула White noise response.
В диалоговом окне «Генерация HDL» нажмите кнопку Generate, чтобы сгенерировать HDL и испытательный стенд.
В дополнение к обычным файлам кода кодер генерирует и открывает модель Simulink. Следующий рисунок показывает модель, сгенерированную из строения кодера, показанной на предыдущем шаге.
Сгенерированная модель без названия и существует только в памяти. Обязательно сохраните его в целевой папке, если хотите сохранить модель и блоки для использования в будущих сеансах.
Для настройки параметров блоков HDL Cosimulation, таких как время, задержка и типы данных, смотрите Define HDL Cosimulation Block Interface (HDL Verifier).
Сгенерированная модель содержит следующие блоки:
Test Stimulus
: Это From Workspace блока маршруты тестовых данных в переменном рабочем пространстве модели inputdata
в подсистему фильтра и блоки HDL Cosimulation.
Filter
: Эта подсистема реализует поведенческую модель создания фильтра.
HDL Cosimulation
: Этот блок косимулирует сгенерированный HDL-код. Таблица HDL Параметры блока косимуляции описывает, как кодер конфигурирует параметры блоков косимуляции.
Reset Delay
: Команды Tcl, заданные в HDL Cosimulation
блок применить сигнал сброса. Сброс высокий на 0 нс и низкий на 22 нс (перед третьим поднимающимся ребром синхроимпульса). Симуляция Simulink начинает подавать вход с 0, 10, 20 нс. Reset Delay
блок добавляет задержку, так что первая выборка доступна для симуляции RTL, когда она готова после применения сброса.
HDL Latency
: Эта задержка представляет различие между задержкой симуляции RTL и поведенческим блоком Simulink.
Error
: Вычисляет различие между выходами Filter
блок и HDL Cosimulation
блок.
Abs
: Абсолютное значение расчета ошибки.
Error margin:
: Индикатор сравнения абсолютного значения ошибки с испытательным стендом значением запаса ошибки (см. «Установка запаса ошибки для оптимизированного кода фильтра»).
Scope
: Отображает входной сигнал, выходы от Filter
блок и HDL Cosimulation
блоки и различие (если она существует) между ними.
Start HDL Simulator
кнопка: Запускает программное обеспечение для косимуляции HDL.
Настройки блоков косимуляции HDL
Панель | Настройки |
---|---|
Ports | Имена портов: те же, что и имена в сгенерированном коде для фильтра. Типы данных ввода/вывода: Входной шаг расчета: Выходной шаг расчета: Тот же, что и Simulink фиксированный размер шага. |
Clocks | Имя порта синхроимпорта: то же, что и имя в сгенерированном коде для фильтра. Активное ребро синхроимпульса: Период: тот же, что и шаг расчета Simulink. |
Timescales | 1 секунда в Simulink соответствует 1 такту в симуляторе HDL |
Connection | Режим подключения: Метод соединения: |
Tcl (Команды предварительной симуляции) | force /Hlp/clk_enable 1; force /Hlp/reset 1 0 ns, 0 22 ns; puts ----------------------------------------- puts "Running Simulink Cosimulation block."; puts [clock format [clock seconds]] |
Tcl (Постсимуляции) | force /Hlp/reset 1 puts [clock format [clock seconds]] |
Сгенерированные настройки модели. Сгенерированная модель имеет следующие настройки без ограничений:
Solver: Discrete (no continuous states)
.
Type решателя: Fixed-step
.
Stop Time: Ts * StimLen
, где Ts
- это шаг расчета и StimLen
Simulink - длина стимула.
Sample Time Colors: включено
Port Data Types: включено
Hardware Implementation: ASIC/FPGA
Косимуляция, которая запускается, не сталкиваясь с ошибками, требует, чтобы выходы из сгенерированного HDL-кода были синхронными с часами. Перед генерацией кода убедитесь, что выбраны обе из следующих опций:
Add input register
Add output register
Если вы не выбираете одну из этих опций, кодер завершает генерацию модели с ошибкой. Однако генерация испытательного стенда кода завершена.
Кодер не поддерживает генерацию модели косимуляции, когда целевой язык является Verilog, и генерируются данные типа double.
Используйте generatehdl
function, передающая одно из следующих значений для свойства GenerateCosimModel
.
generatehdl(filtSysObj,'InputDataType',numerictype(1,16,15), ... 'GenerateCosimModel','Incisive');
generatehdl(filtSysObj,'InputDataType',numerictype(1,16,15), ... 'GenerateCosimModel','ModelSim');