Чтобы использовать эту функцию, ваша установка должна включать лицензию HDL Verifier™.
Убедитесь, что подсистема DUT не имеет никаких несвязанных выходных портов. Смотрите Оконечный Несвязанный Блок Выходные параметры и Использование Комментария Блоков.
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 выходными параметрами, опция Allow direct feedthrough на панели Ports блока HDL Cosimulation автоматически выбрана.
В качестве альтернативы можно избежать задержки путем определения выходной конвейеризации (см. OutputPipeline). Это полностью укажет выходные параметры во время генерации кода.
Двойные типы данных не поддержаны для блока HDL Cosimulation. Избегайте использования двойных типов данных в пути к симуляции при генерации HDL-кода и cosimulation модели.