Чтобы использовать эту функцию, ваша установка должна включать лицензию HDL Verifier™.
cosimulation модель является автоматически сгенерированной моделью Simulink®, сконфигурированной и для симуляции Simulink и для cosimulation вашего проекта с симулятором HDL. HDL Coder™ поддерживает автоматическую генерацию cosimulation модели как часть процесса генерации испытательного стенда.
cosimulation модель включает:
Поведенческая модель вашего проекта, понятого в Подсистеме Simulink.
Соответствующий блок HDL Cosimulation, сконфигурированный к cosimulate проект с помощью HDL Verifier. HDL Coder конфигурирует блок HDL Cosimulation для использования или с Mentor Graphics® ModelSim® или с Cadence Incisive®.
Данные о тестовом воздействии, вычисленные от стимула испытательного стенда, который вы задаете.
Определите объем блоков, которые позволяют вам наблюдать и сравнить DUT и HDL cosimulation выходные параметры и любая ошибка между этими сигналами.
Goto и От блоков, которые получают стимул и сигналы ответа от DUT и используют эти сигналы управлять cosimulation.
Механизм сравнения/утверждения, который сообщает о несоответствиях между исходным DUT вывод и cosimulation вывод.
В дополнение к сгенерированной модели HDL Coder генерирует скрипт TCL, который запускает и конфигурирует ваш cosimulation инструмент. Комментарии в часах документа файла скрипта, сбросе и другой синхронизации сигнализируют об информации, заданной кодером для cosimulation инструмента.
Этот пример демонстрирует процесс для генерации cosimulation модели. Модель в качестве примера, hdl_cosim_demo1
, реализует простое, умножают и накапливают (MAC) алгоритм. Откройте модель путем ввода имени в командной строке MATLAB®:
hdl_cosim_demo1
Следующие данные показывают модель верхнего уровня.
DUT является подсистемой MAC.
Генерация модели Cosimulation происходит во время генерации испытательного стенда. Как лучшая практика, сгенерируйте HDL-код прежде, чем сгенерировать испытательный стенд, можно следующим образом:
В панели HDL Code Generation диалогового окна Configuration Parameters выберите DUT для генерации кода. В этом случае это - hdl_cosim_demo1/MAC
.
Нажмите Apply.
Нажмите Generate. HDL Coder отображает сообщения о ходе выполнения, как показано в следующем листинге:
### Applying HDL Code Generation Control Statements ### Starting HDL Check. ### HDL Check Complete with 0 error, 0 warning and 0 message. ### Begin VHDL Code Generation ### Working on hdl_cosim_demo1/MAC as hdlsrc\MAC.vhd ### HDL Code Generation Complete.
Затем, сконфигурируйте опции испытательного стенда, чтобы включать генерацию cosimulation модели:
Выберите HDL Code Generation> панель Test Bench диалогового окна Configuration Parameters.
Установите флажок Cosimulation model. Затем выберите свой Simulation tool в выпадающем меню.
Сконфигурируйте требуемые опции испытательного стенда. HDL Coder записывает настройки опции в сгенерированном файле скрипта (см. Файл Скрипта Cosimulation).
Нажмите Apply.
Затем, сгенерируйте код испытательного стенда и cosimulation модель:
В нижней части панели Test Bench нажмите Generate Test Bench. HDL Coder отображает сообщения о ходе выполнения как показано в следующем листинге:
### Begin TestBench Generation ### Generating new cosimulation model: gm_hdl_cosim_demo1_mq0.mdl ### Generating new cosimulation tcl script: hdlsrc/gm_hdl_cosim_demo1_mq0_tcl.m ### Cosimulation Model Generation Complete. ### Generating Test bench: hdlsrc\MAC_tb.vhd ### Please wait ... ### HDL TestBench Generation Complete.
Когда генерация испытательного стенда завершается, HDL Coder открывает сгенерированную cosimulated модель. Следующие данные показывают сгенерированную модель.
Сохраните сгенерированную модель. Сгенерированная модель существует только в памяти, если вы не сохраняете его.
Как обозначено сообщениями генерации кода, HDL Coder генерирует следующие файлы в дополнение к обычному файлу испытательного стенда HDL:
cosimulation модель (gm_hdl_cosim_demo1_mq
)
Файл, который содержит TCL cosimulation скрипт и информация о настройках cosimulation модели (gm_hdl_cosim_demo1_mq_tcl.m
)
Сгенерированные имена файлов выводят от имени модели, как описано в Соглашениях о присвоении имен для Сгенерированных Моделей Cosimulation и Скриптов.
Следующий раздел, Структура Сгенерированной Модели, описывает функции модели. Прежде, чем запустить cosimulation, познакомьтесь с этими функциями.
Можно настроить и запустить cosimulation использующие средства управления, расположенные в сгенерированной модели. Этот раздел исследует модель, сгенерированную от подсистемы MAC в качестве примера.
Модель включает два параллельных пути прохождения сигнала. simulation path, расположенный в верхней половине окна модели, почти идентичен исходному DUT. Цель пути к симуляции состоит в том, чтобы выполнить нормальную симуляцию Simulink и обеспечить ссылочный сигнал для сравнения с результатами cosimulation. Следующие данные показывают путь к симуляции.
Эти две подсистемы маркировали ToCosimSrc
, и ToCosimSink
не изменяют производительность пути к симуляции. Их цель состоит в том, чтобы получить стимул и сигналы ответа DUT и направить их к и от HDL cosimulation блок (см. Сигнал Направить Между Симуляцией и Путями Cosimulation).
cosimulation path, расположенный в более низкой половине окна модели, содержит сгенерированный блок HDL Cosimulation. Следующие данные показывают cosimulation путь.
Подсистема FromCosimSrc
получает те же входные сигналы, которые управляют DUT. В модели gm_hdl_cosim_demo1_mq0
подсистема просто передает входные параметры на блок HDL Cosimulation. Сигналы некоторых других типов данных требуют последующей обработки на данном этапе (см. Сигнал Направить Между Симуляцией и Путями Cosimulation).
Подсистема Compare
в конце cosimulation пути сравнивает cosimulation вывод со ссылочным выводом, произведенным путем к симуляции. Если сравнение обнаруживает несоответствие, блок Assertion в подсистеме Compare
отображает предупреждающее сообщение. При желании можно отключить утверждения и управлять другими операциями подсистемы Compare
. Смотрите Утверждения Управления и Отображения Осциллографа для деталей.
HDL Coder заполняет блок HDL Cosimulation со скомпилированным интерфейсом I/O DUT. Следующие данные показывают панель Ports блока Mac_mq
HDL Cosimulation.
HDL Coder устанавливает Full HDL Name, Sample Time, Data Type и другие поля как требуется моделью. HDL Coder также конфигурирует другой HDL параметры блоков Cosimulation под панелями Tcl и Timescales.
HDL Coder конфигурирует сгенерированный блок HDL Cosimulation для метода связи Shared Memory
.
Когда вы дважды кликаете управление Средством моделирования Запуска, оно запускает выбранный cosimulation инструмент и передает в команде запуска инструменту. Значок Средства моделирования Запуска отображает команду запуска, как показано в следующей фигуре.
Команды выполнились, когда вы дважды кликаете запуск значка Средства моделирования Запуска и настраиваете cosimulation инструмент, но они не запускают фактический cosimulation. Запуск Cosimulation описывает, как запустить cosimulation со сгенерированной моделью.
Сгенерированная модель направляет сигналы между симуляцией и cosimulation использованием путей Goto и От блоков. Например, блоки Goto в подсистеме ToCosimSrc
направляют каждый входной сигнал DUT к соответствующему блоку From в подсистеме FromCosimSrc
. Следующие данные показывают Goto и От блоков в каждой подсистеме.
Предыдущие данные показывают простые скалярные входные параметры. Сигналы комплексных и векторных типов данных требуют последующей обработки. Смотрите Комплексные и Векторные Сигналы в Сгенерированной Модели Cosimulation для получения дополнительной информации.
Подсистема Compare
позволяет вам управлять отображением сигналов на осциллографах и предупреждающими сообщениями от утверждений. Следующие данные показывают подсистему Compare
для модели gm_hdl_cosim_demo1_mq0
.
Для каждого вывода DUT HDL Coder генерирует утверждение, проверяющее подсистему (Assert_OutN
). Подсистема вычисляет различие (err
) между исходным DUT, который вывод (dut ref
) и соответствующий cosimulation вывел (cosim
). Подсистема направляет результат сравнения к блоку Assertion. Если результатом сравнения не является нуль, блок Assertion сообщает о несоответствии.
Следующие данные показывают подсистему Assert_Out1
для модели gm_hdl_cosim_demo1_mq0
.
Эта подсистема также направляет dut ref
, cosim
и сигналы err
к Осциллографу для отображения в верхнем уровне модели.
По умолчанию сгенерированная cosimulation модель включает все утверждения и отображает все Осциллографы. Используйте кнопки на подсистеме Compare
, чтобы отключить утверждения или скрыть Осциллографы.
Сообщения утверждения являются предупреждениями и не останавливают симуляцию.
Запускать cosimulation со сгенерированной моделью:
Дважды кликните подсистему Compare
, чтобы сконфигурировать настройки утверждения и Осциллографы.
Если вы хотите отключить отображения Осциллографа или предупреждения утверждения прежде, чем запустить ваш cosimulation, используйте кнопки на подсистеме Compare
(показанный в следующей фигуре).
Дважды кликните управление Средством моделирования Запуска.
Управление Средством моделирования Запуска запускает ваш симулятор HDL (в этом случае, HDL Verifier для использования с Mentor Graphics ModelSim).
Симулятор HDL в свою очередь выполняет скрипт запуска. В этом случае скрипт запуска состоит из команд TCL, расположенных в gm_hdl_cosim_demo1_mq0_tcl.m
. Когда симулятор HDL закончил выполнять скрипт запуска, он отображает сообщение как следующее.
# Ready for cosimulation...
В Редакторе Simulink для сгенерированной модели запустите симуляцию.
Как выполнения cosimulation, симулятор HDL отображает сообщения как следующее.
# Running Simulink Cosimulation block. # Chip Name: --> hdl_cosim_demo1/MAC # Target language: --> vhdl # Target directory: --> hdlsrc # Fri Jun 05 4:26:34 PM Eastern Daylight Time 2009 # Simulation halt requested by foreign interface. # done
В конце cosimulation, если вы включили отображения Осциллографа, сравнить осциллограф отображает следующие сигналы:
cosim
: сигнал результата выводится блоком HDL Cosimulation.
dut ref
: ссылочный выходной сигнал DUT.
err
: различие (ошибка) между этими двумя выходными параметрами.
Следующие данные показывают эти сигналы.
Сгенерированный файл скрипта имеет два раздела:
Раздел комментария, что настройки модели документов, которые относятся к cosimulation.
Функция, которая хранит несколько строк кода TCL в переменную, tclCmds
. cosimulation инструменты выполняют эти команды, когда вы запускаете cosimulation.
Следующий листинг показывает раздел комментария файла скрипта, сгенерированного для модели hdl_cosim_demo1
:
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Auto generated cosimulation 'tclstart' script %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Source Model : hdl_cosim_demo1.mdl % Generated Model : gm_hdl_cosim_demo1.mdl % Cosimulation Model : gm_hdl_cosim_demo1_mq.mdl % % Source DUT : gm_hdl_cosim_demo1_mq/MAC % Cosimulation DUT : gm_hdl_cosim_demo1_mq/MAC_mq % % File Location : hdlsrc/gm_hdl_cosim_demo1_mq_tcl.m % Created : 2009-06-16 10:51:01 % % Generated by MATLAB 7.9 and HDL Coder 1.6 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % ClockName : clk % ResetName : reset % ClockEnableName : clk_enable % % ClockLowTime : 5ns % ClockHighTime : 5ns % ClockPeriod : 10ns % % ResetLength : 20ns % ClockEnableDelay : 10ns % HoldTime : 2ns %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % ModelBaseSampleTime : 1 % OverClockFactor : 1 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Mapping of DutBaseSampleTime to ClockPeriod % % N = (ClockPeriod / DutBaseSampleTime) * OverClockFactor % 1 sec in Simulink corresponds to 10ns in the HDL % Simulator(N = 10) % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % ResetHighAt : (ClockLowTime + ResetLength + HoldTime) % ResetRiseEdge : 27ns % ResetType : async % ResetAssertedLevel : 1 % % ClockEnableHighAt : (ClockLowTime + ResetLength + ClockEnableDelay + HoldTime) % ClockEnableRiseEdge : 37ns %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Раздел комментариев включает следующие подразделы:
Комментарии заголовка: Этот раздел документирует имена файлов для источника и сгенерированных моделей и источника и сгенерированного DUT.
Настройки испытательного стенда: Этот раздел документирует значения свойств makehdltb
, которые влияют на cosimulation образцовую генерацию. Сгенерированный скрипт TCL использует эти значения, чтобы инициализировать cosimulation инструмент.
Информация о шаге расчета: следующие два раздела документируют основной шаг расчета и фактор сверхдискретизации модели. HDL Coder использует ModelBaseSampleTime
и OverClockFactor
, чтобы сопоставить период часов модели к HDL cosimulation период часов.
Синхронизируйте, часы включают и сбрасывают формы волны: Этот раздел документирует вычисления рабочего цикла clk
, clk_enable
и сигналов reset
.
Следующий листинг показывает раздел команд TCL файла скрипта, сгенерированного для модели hdl_cosim_demo1
:
function tclCmds = gm_hdl_cosim_demo1_mq_tcl tclCmds = { 'do MAC_compile.do',...% Compile the generated code 'vsimulink work.MAC',...% Initiate cosimulation 'add wave /MAC/clk',...% Add wave commands for chip input signals 'add wave /MAC/reset',... 'add wave /MAC/clk_enable',... 'add wave /MAC/In1',... 'add wave /MAC/In2',... 'add wave /MAC/ce_out',...% Add wave commands for chip output signals 'add wave /MAC/Out1',... 'set UserTimeUnit ns',...% Set simulation time unit 'puts ""',... 'puts "Ready for cosimulation..."',... }; end
Входные сигналы комплексных или векторных типов данных требуют вставки дополнительных элементов в cosimulation путь. этот раздел описывает эти элементы.
Сгенерированная cosimulation модель автоматически повреждает комплексные входные параметры в действительные и мнимые части. Следующие данные показывают подсистему FromCosimSrc
, которая получает два комплексных входных сигнала. Подсистема повреждает входные параметры в действительные и мнимые части прежде, чем передать их подсистеме выходные параметры.
Модель поддерживает разделение действительных и мнимых компонентов в cosimulation пути. Подсистема Compare
выполняет отдельные сравнения и отдельные отображения осциллографа для действительных и мнимых компонентов сигнала.
Сгенерированная cosimulation модель сглаживает векторные входные параметры. Следующие данные показывают подсистему FromCosimSrc
, которая получает два векторных входных сигнала размерности 2. Подсистема сглаживает входные параметры в скаляры прежде, чем передать их подсистеме выходные параметры.
Чтобы сгенерировать cosimulation модель из командной строки, передайте свойство GenerateCosimModel
функции makehdltb
. GenerateCosimModel
берет одни из следующих значений свойств:
'ModelSim'
: сгенерируйте cosimulation модель, сконфигурированную для HDL Verifier для использования с Mentor Graphics ModelSim.
'Incisive'
: сгенерируйте cosimulation модель, сконфигурированную для HDL Verifier для использования с Острым Тактовым сигналом.
В следующей команде makehdltb
генерирует cosimulation модель, сконфигурированную для HDL Verifier для использования с Mentor Graphics ModelSim.
makehdltb('hdl_cosim_demo1/MAC','GenerateCosimModel','ModelSim');
Соглашение о присвоении имен для сгенерированных cosimulation моделей
prefix
_modelname_toolid_
suffix, где:
prefix
является строкой gm
.
modelname
является именем генерирующейся модели.
toolid
является идентификатором, указывающим на симулятор HDL, выбранный опцией Cosimulation model for use with:. Допустимыми строками toolid
является 'mq'
и 'in'
.
suffix является целым числом, которое предоставляет каждой сгенерированной модели уникальное имя. Суффикс постепенно увеличивается с каждой последовательной генерацией испытательного стенда для данной модели. Например, если исходным именем модели является test
, то последовательностью сгенерированных cosimulation имен модели является gm_test_toolid_0
, gm_test_toolid_1
, и так далее.
Соглашение о присвоении имен для сгенерированных cosimulation скриптов совпадает с этим для моделей, за исключением того, что расширением файла является .m
.
Когда вы конфигурируете модель для cosimulation образцовой генерации, наблюдаете следующие ограничения:
Явным образом задайте шаги расчета исходных блоков к DUT в пути к симуляции. Использование шага расчета по умолчанию (-1
) в исходных блоках может вызвать проблемы распространения шага расчета в cosimulation пути сгенерированной модели.
Программное обеспечение HDL Coder не поддерживает времена непрерывной выборки для cosimulation образцовой генерации. Не используйте шаги расчета 0
или Inf
в исходных блоках в пути к симуляции.
Если вы устанавливаете Clock Inputs на Multiple
, HDL Coder не поддерживает генерацию cosimulation модели.
Комбинаторные выходные пути (вызванный отсутствием регистров в сгенерированном коде) имеют задержку одного дополнительного цикла в cosimulation. Чтобы избежать несоответствия в сравнении между симуляцией и cosimulation выходными параметрами, опция Enable direct feedthrough на панели Ports блока HDL Cosimulation автоматически выбрана.
Также можно избежать задержки путем определения выходной конвейеризации (см. OutputPipeline). Это полностью укажет выходные параметры во время генерации кода.
Двойные типы данных не поддержаны для блока HDL Cosimulation. Избегайте использования двойных типов данных в пути к симуляции при генерации HDL-кода и cosimulation модели.