exponenta event banner

Модельные и отладочные сигналы контрольных точек с кодером HDL

В этом примере показано, как можно пометить сигналы как контрольные точки в модели Simulink™ и после генерации кода HDL отладить сигналы на верхнем уровне с помощью созданной модели или тестового стенда.

Зачем использовать контрольные точки?

Контрольные точки - это сигналы, которые можно использовать для простой отладки и наблюдения за результатами моделирования в различных точках модели Simulink™. В модели можно наблюдать сигналы, обозначенные как контрольные точки с помощью блока плавающей области. В Simulink™ можно обозначить любой сигнал в модели как контрольную точку.

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

Создание модели, совместимой с HDL

Прежде чем обозначать сигналы как контрольные точки и генерировать код HDL, убедитесь, что созданная модель совместима с генерацией кода HDL. См. раздел Создание модели Simulink, совместимой с HDL.

Для этого примера откройте hdlcoder_simulink_test_points модель, подготовленная для генерации кода HDL. DUT является включенной подсистемой, которая вычисляет два коэффициента на основе входных данных логики выбора и компаратора.

load_system('hdlcoder_test_points')
open_system('hdlcoder_test_points/DUT/MaJ Counter')
set_param('hdlcoder_test_points', 'SimulationCommand', 'update');

Назначение сигналов в качестве контрольных точек

Чтобы отладить внутренние сигналы в этой модели, отметьте их как контрольные точки одним из следующих способов:

  • В редакторе Simulink для открытия диалогового окна «Свойства сигнала» щелкните правой кнопкой мыши на сигнале и выберите «Свойства». Затем выберите Контрольная точка.

  • В командной строке установите дескриптор для выходного порта блока, а затем установите для параметра port StartPoint значение on.

Например, введите эти команды, чтобы обозначить выходной сигнал от логического акс-блока, который выполняет операцию ИЛИ в качестве контрольной точки.

portHandles = get_param('hdlcoder_test_points/DUT/MaJ Counter/Logical acc', 'portHandles');
outportHandle = portHandles.Outport;
set_param(outportHandle,'TestPoint','on');

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

set_param(outportHandle(2),'TestPoint','on');

Simulink™ отображает индикатор на каждом сигнале, для которого включена настройка контрольной точки. При навигации по модели отображаются три дополнительные контрольные точки. Эти контрольные точки находятся внутри подсистемы логики выбора, подсистемы сравнения и блоков подсистемы расчета коэффициентов.

Дополнительные сведения см. в разделе Настройка сигналов как контрольных точек.

Включить генерацию выходного порта DUT для контрольных точек

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

Включение генерации выходного порта DUT для hdlcoder_simulink_test_points модель:

  • В диалоговом окне Параметры конфигурации на вкладке Создание кода HDL > Глобальные настройки > Порты выберите Включить создание портов HDL DUT для контрольных точек.

  • В командной строке используйте команду EnableTestpoints собственность.

hdlset_param('hdlcoder_test_points','EnableTestpoints','on')

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

После включения генерации портов DUT можно запустить один из следующих рабочих процессов:

  • Создание кода HDL. Для развертывания кода на целевом FPGA используйте Generic ASIC/FPGA в Консультаторе по рабочим процессам HDL.

  • Сопоставьте порты тестовых точек с интерфейсами целевой платформы и создайте ядро IP HDL с помощью IP Core Generation или Simulink Real-Time FPGA I/O рабочие процессы, которые используют Xilinx Vivado или Altera Quartus II в качестве инструментов синтеза.

Формирование кода HDL и целевое назначение FPGA

Если требуется просмотреть сопоставление между портами тестовых точек в коде HDL и сигналами тестовых точек в модели, включите генерацию отчета о генерации кода. В отчете отображаются порты контрольных точек со ссылками на соответствующие сигналы контрольных точек в модели Simulink™.

Например, чтобы включить создание отчетов для hdlcoder_simulink_test_points модель:

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

  • Чтобы задать этот параметр в командной строке, используйте ResourceReport собственность.

hdlset_param('hdlcoder_test_points','ResourceReport','on')

Дополнительные сведения о создании отчетов см. в разделе Создание и использование отчетов о создании кода.

Для создания кода HDL:

  • Щелкните правой кнопкой мыши DUT Подсистема и выберите HDL Code > Generate HDL for Subsystem.

  • В командной строке запустите makehdl в подсистеме DUT.

Чтобы развернуть код на целевой платформе, используйте Generic ASIC/FPGA workflow-процесс. В помощнике по рабочим процессам HDL в задаче Задать целевое устройство и средство синтеза в поле Целевой рабочий процесс выберите Generic ASIC/FPGA, укажите инструмент «Синтез» и запустите рабочий процесс.

При создании кода кодер HDL открывает отчет о создании кода. Раздел Code Interface Report содержит ссылки на порты тестовых точек в Output Ports раздел.

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

Для просмотра портов контрольных точек в сгенерированном коде HDL откройте DUT.v файл.

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

Поколение ядра IP и таргетинг SoC

Чтобы создать ядро IP HDL, откройте помощник по рабочим процессам HDL. В окне «Консультант»:

  1. На задании Set Target Device and Synthesis Tool (Задать целевое устройство и средство синтеза) в поле Target workflow (Целевой рабочий IP Core Generationи укажите целевую платформу, использующую Xilinx Vivado или Altera Quartus II в качестве инструмента синтеза. Если вы используете Simulink Real-Time FPGA I/O workflow-процесс, укажите целевую платформу, использующую Xilinx Vivado в качестве инструмента синтеза

  2. В задаче «Задать целевое ссылочное проектирование» можно указать стандартные ссылочные конструкции кодера HDL или пользовательскую ссылочную конструкцию, в которую требуется интегрировать ядро IP HDL. Если не указать уникальные имена для сигналов контрольных точек, выполнение этой задачи может завершиться неуспешно. Для устранения этой ошибки в подпанели Result выберите ссылку, чтобы создать уникальные имена для сигналов контрольных точек. Чтобы убедиться, что задача пройдена, повторно запустите задачу.

  3. В задаче Set Target Interface в таблице Target platform interface отображаются порты контрольных точек. Порты можно сопоставить с интерфейсами AXI4, AXI4-Lite или внешних портов. После выполнения этой задачи генератор кода сохраняет информацию о сопоставлении интерфейса тестовой точки на DUT. Чтобы просмотреть эту информацию, в разделе Свойства блока HDL для подсистемы DUT на вкладке «Целевая спецификация» выполните поиск свойства блока Эту информацию можно перезагрузить для DUT в последующих запусках рабочего процесса.

  4. На задании Generate RTL Code and IP Core щелкните правой кнопкой мыши и выберите Run to Selected Task, чтобы создать IP core. Генератор кода открывает отчет о генерации IP-ядра, в котором отображается сопоставление портов тестовых точек с интерфейсами.

При щелчке по ссылкам в портах контрольных точек генератор кода подсвечивает соответствующие сигналы, обозначенные в модели Simulink™ как контрольные точки.

При открытии сгенерированного исходного файла HDL отображаются сигналы контрольных точек, подключенные к оболочке ядра IP.

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

Чтобы узнать больше о IP Core Generation см. раздел Создание настраиваемого IP-ядра и Отчет о настраиваемом IP-ядре.

Отладка сигналов контрольных точек

После генерации кода HDL или ядра IP можно выполнить отладку сигналов контрольных точек.

При создании кода HDL для модели или выполнении Generic ASIC/FPGA для отладки сигналов контрольных точек, создания стенда HDL или использования созданной модели. Для открытия созданной модели в командной строке введите gm_hdlcoder_test_points.

В созданной модели отображаются контрольные точки на выходных портах DUT, подключенных к блоку Scope, который комментируется. Чтобы просмотреть результаты моделирования для этих сигналов, раскомментируйте блок Scope, а затем запустите моделирование. При навигации по сгенерированной модели можно увидеть, что генератор кода создает выходной порт в точке, где сигнал обозначен как контрольная точка. Затем кодер HDL передает эти порты в DUT в качестве дополнительных выходных портов.

Если запустить IP Core Generation workflow-процесс для задачи Создать модель интерфейса программного обеспечения (Generate Software Interface Model), генератор кода открывает модель интерфейса программного обеспечения (Software Interface model).

Для просмотра данных о сигналах контрольных точек от процессора ARM раскомментируйте блок Scope, а затем запустите модель программного интерфейса.

Соображения

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

  • При создании модели проверки видно, что генератор кода не сравнивает сигналы контрольных точек с портами контрольных точек на выходе. Вы по-прежнему можете наблюдать сигналы контрольных точек, не комментируя блок Scope и выполняя моделирование. Дополнительные сведения о сгенерированной модели и модели проверки см. в разделах Сгенерированная модель и Модель проверки.

  • При создании модели косимуляции отображаются порты контрольных точек, подключенные к блоку терминатора. Для проверки контрольных точек удалите блоки терминатора и подключите выходные порты к блоку области, а затем выполните косимуляцию. Вы также можете наблюдать формы сигналов в имитаторе ЛПВП, с помощью которого вы запускаете косимуляцию. Дополнительные сведения о косимуляции см. в разделе Создание модели косимуляции.

  • При открытии созданной модели отображается блок «Область» с комментариями по производительности.

  • Невозможно задать порядок портов для портов контрольных точек DUT. HDL Coder™ определяет порядок портов при создании кода.

  • Целевой рабочий процесс должен быть Generic ASIC/FPGA, IP Core Generation, или Simulink Real-Time FPGA I/O.

  • Если вы используете IP Core Generation или Simulink Real-Time FPGA I/O рабочие процессы, инструмент синтеза должен быть Xilinx Vivado или Altera Quartus II. Xilinx ISE не поддерживается.

  • Если вы используете IP Core Generation или Simulink Real-Time FPGA I/O рабочие процессы, порты тестовых точек сопоставляются интерфейсам AXI4, AXI4-Lite или внешних портов. Невозможно сопоставить порты с AXI4-Stream или AXI4-Stream видеоинтерфейсами.

Связанные темы