Модель и Отладка сигналов тестовой точки с HDL Coder

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

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

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

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

Создайте HDL-совместимую модель

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

В данном примере откройте 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 Editor, чтобы открыть диалоговое окно Свойства, щелкните правой кнопкой мыши сигнал и выберите свойства. Затем выберите Тестовую точку.

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

Для примера введите эти команды, чтобы назначить сигнал выхода из блока Logical acc, который выполняет операцию OR в качестве тестовой точки.

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-код, чтобы отлаживать сигналы, которые обозначены как тестовые точки, включите генерацию порта DUT HDL для сигналов. Когда вы генерируете код для модели, HDL Coder™ распространяет эти сигналы в DUT как дополнительный выходной порт.

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

  • В диалоговом окне Параметров конфигурации на вкладке Генерации HDL-кода > Глобальные настройки > Порты выберите Enable HDL DUT port генерации for тестовых точек.

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

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

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

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

  • Сгенерируйте HDL-код. Чтобы развернуть код на целевой FPGA, используйте Generic ASIC/FPGA рабочий процесс в HDL Workflow Advisor.

  • Сопоставьте порты тестовых точек с интерфейсами целевой платформы и сгенерируйте HDL-IP-ядро при помощи 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-код > Сгенерировать HDL для подсистемы.

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

Чтобы развернуть код на целевой платформе, используйте Generic ASIC/FPGA рабочий процесс. В HDL Workflow Advisor, для задачи Set Target Device и Synthesis Tool, для целевого рабочего процесса, выберите Generic ASIC/FPGAзадайте инструмент «Синтез», а затем запустите рабочий процесс.

При генерации кода HDL Coder открывает отчет Code Generation. Раздел «Отчет по кодам» содержит ссылки на порты тестовых точек в Output Ports раздел.

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

Чтобы увидеть порты тестовых точек в сгенерированном HDL-коде, откройте DUT.v файл.

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

Генерация IP-ядра и адресация на однокристальные процессоры

Чтобы сгенерировать HDL-ядро IP, откройте HDL Workflow Advisor. В Advisor:

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

  2. В задаче Set Target Исходного проекта можно задать исходные проекты HDL Coder по умолчанию или пользовательский исходный проект, в которую необходимо интегрировать HDL-ядро IP. Если вы не задаете уникальные имена для тестовой точки сигналов, выполнение этой задачи может быть неудачным. Чтобы исправить эту ошибку, в подпанели Result выберите ссылку, чтобы сгенерировать уникальные имена для сигналов тестовой точки. Чтобы убедиться, что задача прошла, перезапустите задачу.

  3. В задаче Set Target Interface вы видите порты тестовых точек в таблице интерфейсов целевой платформы. Можно сопоставить порты с AXI4, AXI4-Lite или интерфейсами внешних портов. После запуска этой задачи генератор кода хранит информацию о отображении интерфейса testpoint в DUT. Чтобы просмотреть эти сведения, в HDL Block Properties for the DUT Subsystem, на вкладке Target Specification, проверьте свойство блок. Можно перезагрузить эту информацию для DUT через последующие запуски рабочего процесса.

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

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

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

Запустите рабочий процесс, чтобы сгенерировать модель Software Interface и интегрировать IP-ядро в целевой исходный проект, указанный в задаче Set Target Reference Design.

Чтобы узнать больше о IP Core Generation рабочий процесс, см. Пользовательские Генерация Ядра IP и Пользовательский Отчет о Ядре IP.

Отладка сигналов тестовой точки

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

Если вы сгенерированными HDL-кодами для своей модели или запустили Generic ASIC/FPGA рабочий процесс, чтобы отлаживать сигналы тестовой точки, генерировать HDL- испытательного стенда или использовать сгенерированную модель. Чтобы открыть сгенерированную модель, в командной строке введите gm_hdlcoder_test_points.

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

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

Чтобы наблюдать данные о сигналах тестовой точки от процессора ARM, раскомментируйте блок Возможностей, а затем запустите модель Software Interface.

Факторы

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

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

  • Если вы генерируете модель косимуляции, вы видите порты тестовой точки, соединенные с блоком Terminator. Чтобы наблюдать тестовые точки, удалите блоки Terminator и соедините выходные порты с блоком Scope, а затем запустите косимуляцию. Можно также наблюдать формы волны в симуляторе HDL, с которым вы запускаете косимуляцию. Чтобы узнать больше о косимуляции, см. «Генерация модели косимуляции».

  • Если вы открываете сгенерированную модель, вы видите блок 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 видеоинтерфейсами.

Похожие темы