exponenta event banner

Создание модели косимуляции

Требования

Что такое модель косимуляции?

Модель косимуляции - это автоматически генерируемая модель Simulink ®, настроенная как для моделирования Simulink, так и для косимуляции проекта с помощью имитатора HDL. ЛПВП Coder™ поддерживает автоматическое создание модели косимуляции в рамках процесса создания стенда .

Модель косимуляции включает в себя:

  • Поведенческая модель конструкции, реализованная в подсистеме Simulink.

  • Соответствующий блок косимуляции ЛПВП, сконфигурированный для косимуляции конструкции с использованием верификатора ЛПВП. Кодер HDL настраивает блок Cosimulation HDL для использования с Mentor Graphics ® ModelSim ® или Cadence Incisive ®.

  • Тестовые входные данные, рассчитанные на основе указанного стимула стенда.

  • Блоки объема, которые позволяют наблюдать и сравнивать выходы cosimulation DUT и HDL, и любую ошибку между этими сигналами.

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

  • Механизм сравнения/утверждения, который сообщает о расхождениях между исходным выходом DUT и выходом косимуляции.

В дополнение к созданной модели, кодер HDL генерирует сценарий TCL, который запускает и настраивает инструмент косимуляции. Комментарии в файле сценария, описывающие часы, сброс и другую информацию синхросигнала, определенную кодером для инструмента косимуляции.

Создание модели косимуляции из графического интерфейса пользователя

В этом примере показан процесс создания модели косимуляции. Пример модели, hdl_cosim_demo1, реализует простой алгоритм умножения и накопления (MAC). Откройте модель, введя имя в командной строке MATLAB ®:

hdl_cosim_demo1

На следующем рисунке показана модель верхнего уровня.

DUT является подсистемой MAC.

Формирование модели косимуляции происходит во время формирования испытательного стенда. Рекомендуется генерировать код HDL перед созданием тестового стенда следующим образом:

  1. На панели «Создание кода HDL» диалогового окна «Параметры конфигурации» выберите DUT для создания кода. В этом случае это hdl_cosim_demo1/MAC.

  2. Нажмите кнопку «Применить».

  3. Щелкните Создать (Generate). Кодер HDL отображает сообщения о ходе выполнения, как показано в следующем списке:

    ### 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.

Затем настройте параметры тестового стенда, чтобы включить создание модели косимуляции:

  1. Выберите в диалоговом окне «Параметры конфигурации» панель «Создание кода HDL» > «Испытательный стенд».

  2. Установите флажок Модель косимуляции (Cosimulation model). Затем выберите инструмент моделирования в раскрывающемся меню.

  3. Сконфигурируйте необходимые параметры тестового стенда. Кодер HDL записывает настройки параметров в созданный файл сценария (см. Файл сценария Cosimulation).

  4. Нажмите кнопку «Применить».

Затем создайте код испытательного стенда и модель косимуляции:

  1. В нижней части панели «Испытательный стенд» щелкните «Создать испытательный стенд». Кодер HDL отображает сообщения о ходе выполнения, как показано в следующем списке:

    ### 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.

    По завершении создания стенда для испытаний кодер ЛВП открывает созданную модель с косимулированным покрытием. На следующем рисунке показана созданная модель.

  2. Сохраните созданную модель. Созданная модель существует только в памяти, если ее не сохранить.

Как указано в сообщениях генерации кода, кодер HDL генерирует следующие файлы в дополнение к обычному тестовому файлу HDL:

  • Модель косимуляции (gm_hdl_cosim_demo1_mq)

  • Файл, содержащий сценарий косимуляции TCL и информацию о настройках модели косимуляции (gm_hdl_cosim_demo1_mq_tcl.m)

Сгенерированные имена файлов получаются из имени модели, как описано в разделе Соглашения по именованию для сгенерированных моделей и сценариев косимуляции.

В следующем разделе Структура созданной модели (Structure of the Generated Model) описываются элементы модели. Перед запуском косимуляции ознакомьтесь с этими функциями.

Структура созданной модели

Можно настроить и запустить косимуляцию с помощью элементов управления, расположенных в созданной модели. В этом разделе рассматривается модель, созданная из примера подсистемы MAC.

Траектория моделирования

Модель содержит два параллельных сигнальных тракта. Траектория моделирования, расположенная в верхней половине окна модели, почти идентична исходной DUT. Целью траектории моделирования является выполнение нормального моделирования Simulink и предоставление опорного сигнала для сравнения с результатами косимуляции. На следующем рисунке показан путь моделирования.

Маркировка двух подсистем ToCosimSrc и ToCosimSink не изменяйте производительность траектории моделирования. Их целью является захват стимулирующих и ответных сигналов DUT и маршрутизация их в блок косимуляции HDL и из него (см. Маршрутизация сигналов между путями моделирования и косимуляции).

Путь косимуляции

Путь косимуляции, расположенный в нижней половине окна модели, содержит сгенерированный блок косимуляции HDL. На следующем рисунке показан путь косимуляции.

FromCosimSrc подсистема принимает те же входные сигналы, что и DUT. В gm_hdl_cosim_demo1_mq0 , подсистема просто передает входные данные в блок косимуляции ЛПВП. Сигналы некоторых других типов данных требуют дальнейшей обработки на данном этапе (см. Маршрутизация сигналов между путями моделирования и косимуляции).

Compare подсистема в конце тракта косимуляции сравнивает выходной сигнал косимуляции с опорным выходным сигналом, полученным путем моделирования. Если сравнение обнаруживает расхождение, блок Assertion в Compare подсистема отображает предупреждающее сообщение. При необходимости можно отключить утверждения и управлять другими операциями Compare подсистема. Дополнительные сведения см. в разделе Управление утверждениями и отображениями объема.

Кодер HDL заполняет блок Cosimulation HDL скомпилированным интерфейсом ввода-вывода DUT. На следующем рисунке показана панель «Ports» (Порты) Mac_mq Блок косимуляции ЛВП.

Кодер HDL устанавливает полное имя HDL, время выборки, тип данных и другие поля в соответствии с требованиями модели. Кодер HDL также настраивает другие параметры блока Cosimulation HDL на панелях Timescales и Tcl.

Совет

Кодер HDL конфигурирует сгенерированный блок косимуляции HDL для Shared Memory СПОСОБ СОЕДИНЕНИЯ.

Пуск управления симулятором

При двойном щелчке на элементе управления Start Simulator запускает выбранный инструмент косимуляции и передает в инструмент команду запуска. Значок запуска симулятора отображает команду запуска, как показано на следующем рисунке.

Команды, выполняемые при двойном щелчке значка Запустить симулятор (Start Simulator), запускают и настраивают инструмент косимуляции, но не запускают фактическую косимуляцию. Запуск косимуляции описывает выполнение косимуляции с созданной моделью.

Маршрутизация сигналов между путями моделирования и косимуляции

Сгенерированная модель маршрутизирует сигналы между путями моделирования и косимуляции с использованием блоков Перейти к (Goto) и Из (From). Например, блоки Goto в ToCosimSrc подсистема маршрутизирует каждый входной сигнал DUT к соответствующему блоку From в FromCosimSrc подсистема. На следующих рисунках показаны блоки Goto и From в каждой подсистеме.

На предыдущих рисунках показаны простые скалярные входные данные. Сигналы сложных и векторных типов данных требуют дальнейшей обработки. Дополнительные сведения см. в разделе Комплексные и векторные сигналы в создаваемой модели косимуляции.

Управление утверждениями и отображением объема

Compare подсистема позволяет управлять отображением сигналов в областях и предупреждающими сообщениями из утверждений. На следующем рисунке показаны Compare подсистема для gm_hdl_cosim_demo1_mq0 модель.

Для каждого выхода DUT кодер HDL генерирует подсистему проверки утверждения (Assert_OutN ). Подсистема вычисляет разницу (errмежду исходными выходами DUT (dut ref) и соответствующий выход косимуляции (cosim). Подсистема направляет результат сравнения в блок Assertion. Если результат сравнения не равен нулю, блок утверждения сообщает о расхождении.

На следующем рисунке показаны Assert_Out1 подсистема для gm_hdl_cosim_demo1_mq0 модель.

Эта подсистема также маршрутизирует dut ref, cosim, и err сигналы в область для отображения на верхнем уровне модели.

По умолчанию созданная модель косимуляции включает все утверждения и отображает все области. Используйте кнопки на Compare для отключения утверждений или скрытия областей.

Совет

Сообщения утверждения являются предупреждениями и не останавливают моделирование.

Запуск косимуляции

Для запуска косимуляции с созданной моделью:

  1. Дважды щелкните значок Compare для настройки параметров Области и утверждения.

    Если перед запуском cosimulation необходимо отключить отображение области или подтверждение предупреждений, используйте кнопки на Compare подсистема (показана на следующем рисунке).

  2. Дважды щелкните элемент управления Start Simulator.

    Элемент управления Start Simulator запускает имитатор ЛПВП (в данном случае верификатор ЛПВП для использования с Mentor Graphics ModelSim).

    Имитатор ЛПВП в свою очередь выполняет сценарий запуска. В этом случае сценарий запуска состоит из команд РУД, расположенных в gm_hdl_cosim_demo1_mq0_tcl.m. Когда имитатор HDL завершает выполнение сценария запуска, отображается следующее сообщение.

    # Ready for cosimulation...
  3. В редакторе Simulink для созданной модели запустите моделирование.

    По мере выполнения косимуляции имитатор ЛПВП отображает следующие сообщения.

    # 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

    В конце косимуляции, если включено отображение Области (Scope), область сравнения отображает следующие сигналы:

    • cosim: Результирующий сигнал, выводимый блоком косимуляции ЛВП.

    • dut ref: Опорный выходной сигнал от DUT.

    • errРазница (ошибка) между этими двумя выходами.

    На следующем рисунке показаны эти сигналы.

Файл сценария Cosimulation

Созданный файл сценария имеет два раздела:

  • Раздел комментариев, в котором документируются параметры модели, относящиеся к косимуляции.

  • Функция, которая хранит несколько строк кода TCL в переменной, tclCmds. Эти команды выполняются инструментами косимуляции при запуске косимуляции.

Раздел комментариев к заголовку

В следующем списке показан раздел комментариев файла сценария, созданного для 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 значения свойств, влияющие на формирование модели косимуляции. Созданный сценарий TCL использует эти значения для инициализации инструмента косимуляции.

  • Информация о времени выборки: В следующих двух разделах задокументировано базовое время выборки и коэффициент избыточной выборки модели. Кодер HDL использует ModelBaseSampleTime и OverClockFactor для сопоставления периода синхронизации модели с периодом синхронизации косимуляции ЛПВП.

  • Синхросигналы, включение синхросигналов и сброс сигналов: В этом разделе представлены вычисления рабочего цикла 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

Сложные и векторные сигналы в генерируемой модели косимуляции

Входные сигналы комплексных или векторных типов данных требуют вставки дополнительных элементов в путь косимуляции. в этом разделе описываются эти элементы.

Сложные сигналы

Созданная модель косимуляции автоматически разбивает сложные входные данные на вещественные и мнимые части. На следующем рисунке показан FromCosimSrc подсистема, принимающая два комплексных входных сигнала. Подсистема разбивает входные данные на действительные и мнимые части перед передачей их на выходы подсистемы.

Модель поддерживает разделение вещественных и мнимых компонентов по всему пути косимуляции. Compare подсистема выполняет отдельные сравнения и отдельные отображения объема для реальной и мнимой составляющих сигнала.

Векторные сигналы

Созданная модель косимуляции сглаживает векторные входные данные. На следующем рисунке показан FromCosimSrc подсистема, принимающая два векторных входных сигнала размерности 2. Подсистема выравнивает входы в скаляры перед передачей их на выходы подсистемы.

Создание модели косимуляции из командной строки

Чтобы создать модель косимуляции из командной строки, передайте GenerateCosimModel к свойству makehdltb функция. GenerateCosimModel принимает одно из следующих значений свойства:

  • 'ModelSim' : создать модель косимуляции, настроенную для проверки HDL для использования с Mentor Graphics ModelSim.

  • 'Incisive': создание модели косимуляции, настроенной для HDL Verifier для использования с Cadence Incisive.

В следующей команде: makehdltb создает модель косимуляции, настроенную для проверки HDL для использования с Mentor Graphics ModelSim.

makehdltb('hdl_cosim_demo1/MAC','GenerateCosimModel','ModelSim');

Соглашения по именованию для созданных моделей и сценариев косимуляции

Соглашение об именовании для созданных моделей косимуляции:

prefix_modelname_toolid_суффикс, где:

  • prefix - строка gm.

  • modelname - имя генерирующей модели.

  • toolid - идентификатор, указывающий имитатор ЛПВП, выбранный моделью Cosimulation для использования с опцией:. Действительный toolid строки 'mq' и 'in'.

  • суффикс - целое число, предоставляющее каждой созданной модели уникальное имя. Суффикс увеличивается с каждым последующим созданием испытательного стенда для данной модели. Например, если исходное имя модели test, то последовательность сгенерированных имен модели косимуляции равна gm_test_toolid_0, gm_test_toolid_1и так далее.

Соглашение об именовании для сгенерированных сценариев косимуляции является тем же, что и для моделей, за исключением того, что расширение имени файла .m.

Ограничения для генерации модели косимуляции

При настройке модели для создания модели косимуляции соблюдайте следующие ограничения.

  • Явно укажите время выборки исходных блоков для DUT в пути моделирования. Использование времени выборки по умолчанию (-1) в исходных блоках может вызывать проблемы распространения времени выборки в пути косимуляции генерируемой модели.

  • Программное обеспечение HDL Coder не поддерживает непрерывное время выборки для генерации модели косимуляции. Не использовать время выборки 0 или Inf в исходных блоках в траектории моделирования.

  • Если для параметра «Входы синхросигналов» установлено значение Multiple, HDL Coder не поддерживает создание модели косимуляции.

  • Комбинаторные выходные пути (вызванные отсутствием регистров в генерируемом коде) имеют задержку в один дополнительный цикл при косимуляции. Во избежание расхождений при сравнении выходных данных моделирования и косимуляции автоматически выбирается опция Разрешить прямой проход на панели Порты блока косимуляции ЛВП.

    Кроме того, можно избежать задержки, указав конвейерную обработку выходных данных (см. OutputPipeline). Это будет полностью регистрировать выходные сигналы во время генерации кода.

  • Двойные типы данных не поддерживаются для блока косимуляции HDL. Избегайте использования двойных типов данных в пути моделирования при создании кода HDL и модели косимуляции.