Этот пример показывает, как можно отметить сигналы как тестовые точки в модели Simulink™ и, после генерации HDL-кода, отладить сигналы в верхнем уровне с помощью сгенерированной модели или испытательного стенда.
Тестовые точки являются сигналами, что можно использовать, чтобы легко отладить и наблюдать результаты симуляции в различных точках в модели Simulink™. Можно наблюдать сигналы, определяемые как тестовые точки с блоком Floating Scope в модели. В Simulink™ можно определять любой сигнал в модели как тестовая точка.
После генерации кода можно наблюдать сигналы тестовой точки в выходных портах DUT и дальнейшей отладке сгенерированный код в нисходящих рабочих процессах. Эта возможность делает отладку вашего проекта легче, потому что генератор кода может распространить сигналы тестовой точки глубоко в иерархии подсистемы к выходным портам DUT.
Прежде чем вы будете определять сигналы как тестовые точки и будете генерировать HDL-код, убедитесь, что модель, которую вы создаете, совместима для генерации HDL-кода. Смотрите Создают Совместимую с HDL Модель Simulink.
В данном примере откройте модель hdlcoder_simulink_test_points
, которая была подготовлена к генерации HDL-кода. DUT является Enabled Подсистема, которая вычисляет два коэффициента на основе входных параметров от Логики Выбора и Компаратора.
load_system('hdlcoder_test_points') open_system('hdlcoder_test_points/DUT/MaJ Counter') set_param('hdlcoder_test_points', 'SimulationCommand', 'update');
Чтобы отладить внутренние сигналы в этой модели, отметьте их как тестовые точки любым из этих способов:
В Редакторе Simulink, чтобы открыть диалоговое окно Signal Properties, щелкают правой кнопкой по сигналу и выбирают Properties. Затем выберите Test Point.
В командной строке получите указатель на выходной порт блока, и затем установите параметр порта TestPoint на 'on'.
Например, введите эти команды, чтобы определять выходной сигнал Логического блока 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™ отображает индикатор на каждом сигнале, для которого вы включаете установку Тестовой точки. Если вы перемещаетесь по модели, вы видите три дополнительных тестовых точки. Эти тестовые точки в подсистеме Логики Выбора, Подсистеме Компаратора и Вычислить Содействующих блоках Subsystem.
Чтобы узнать больше, смотрите Тестовые точки.
Прежде чем вы сгенерируете HDL-код, чтобы отладить сигналы, которые определяются как тестовые точки, включают генерацию порта HDL DUT для сигналов. Когда вы генерируете код для модели, HDL Coder™ распространяет эти сигналы к DUT как дополнительный выходной порт.
Включить генерацию выходного порта DUT для модели hdlcoder_simulink_test_points
:
В диалоговом окне Configuration Parameters, на вкладке HDL Code Generation> Global Settings> Ports, избранной генерации порта Enable HDL DUT для тестовых точек.
В командной строке используйте свойство EnableTestpoints
.
hdlset_param('hdlcoder_test_points','EnableTestpoints','on')
Чтобы узнать больше об этом параметре, смотрите, Включают HDL Генерацию Порта DUT для Тестовых точек.
После того, как вы включите генерацию порта DUT, можно запустить любой из этих рабочих процессов:
Сгенерируйте HDL-код. Чтобы развернуть код на целевой FPGA, используйте рабочий процесс Generic ASIC/FPGA
в HDL Workflow Advisor.
Сопоставьте порты тестовой точки с интерфейсами целевой платформы и сгенерируйте ядро IP HDL при помощи IP Core Generation
или рабочих процессов Simulink Real-Time FPGA I/O
, которые используют Xilinx Vivado
или Altera Quartus II
как инструменты синтеза.
Если вы хотите видеть отображение между портами тестовой точки в HDL-коде и сигналами тестовой точки в вашей модели, включите генерацию отчета генерации кода. Отчет отображает порты тестовой точки со ссылками на соответствующие сигналы тестовой точки в вашей модели Simulink™.
Например, чтобы включить генерацию отчета для модели hdlcoder_simulink_test_points
:
В диалоговом окне Configuration Parameters, на панели генерации HDL-кода, выбирают отчет использования ресурса Generate.
Чтобы задать эту установку в командной строке, используйте свойство ResourceReport
.
hdlset_param('hdlcoder_test_points','ResourceReport','on')
Чтобы узнать больше о генерации отчета, смотрите, Создают и Отчеты Генерации кода Использования.
Сгенерировать HDL-код:
Щелкните правой кнопкой по DUT
Subsystem и выберите HDL Code> Generate HDL for Subsystem.
В командной строке запустите makehdl на Подсистеме DUT.
Чтобы развернуть код на целевую платформу, используйте рабочий процесс Generic ASIC/FPGA
. В HDL Workflow Advisor на съемочной площадке Целевое устройство и задача Инструмента Синтеза, для Целевого рабочего процесса, выбирают Generic ASIC/FPGA
, задают инструмент Synthesis, и затем запускают рабочий процесс.
При генерации кода HDL Coder™ открывает отчет Генерации кода. Раздел Code Interface Report содержит ссылки на порты тестовой точки в разделе Output Ports
.
Когда вы щелкаете по ссылкам в портах тестовой точки, генератор кода подсвечивает соответствующие сигналы, что вы определяли как тестовые точки в своей модели Simulink™. Поэтому можно использовать отчет проследить от порта тестовой точки в сгенерированном коде к сигналам тестовой точки в модели Simulink™.
Чтобы видеть порты тестовой точки в сгенерированном HDL-коде, откройте файл DUT.v
.
Вы видите порты тестовой точки в объявлении модуля верхнего уровня. Эти порты имеют префиксный tp_
и комментарий, чтобы указать, что они соответствуют портам тестовой точки. Если вы задаете VHDL как выходной язык, вы видите порты тестовой точки в объявлении сущности.
Чтобы сгенерировать ядро IP HDL, откройте HDL Workflow Advisor. В Советнике:
На съемочной площадке Целевое устройство и задача Инструмента Синтеза, для Целевого рабочего процесса, выбирают IP Core Generation
и задают Целевую платформу, которая использует Xilinx Vivado
или Altera Quartus II
как инструмент Synthesis. Если вы используете рабочий процесс Simulink Real-Time FPGA I/O
, задаете Целевую платформу, которая использует Xilinx Vivado
в качестве инструмента Synthesis
На съемочной площадке Целевая задача Исходного проекта, можно задать исходные проекты значения по умолчанию HDL Coder™ или пользовательский исходный проект, в который вы хотите интегрировать ядро IP HDL. Если вы не указываете, что уникальные имена для сигналов тестовой точки, запуская эту задачу могут перестать работать. Чтобы зафиксировать эту ошибку, в подпанели Результата, выбирают ссылку, чтобы сгенерировать уникальные имена для сигналов тестовой точки. Чтобы проверить, что задача передачи, повторно выполняет задачу.
На съемочной площадке Целевая Интерфейсная задача, вы видите порты тестовой точки в таблице интерфейса Целевой платформы. Можно сопоставить порты с AXI4, AXI4-облегченными интерфейсами, или Внешнего порта. После того, как вы запустите эту задачу, генератор кода хранит этот интерфейс контрольной точки отображение информации на DUT. Чтобы видеть эту информацию, в HDL Block Properties для Подсистемы DUT, на вкладке Target Specification, ищут свойство блока TestPointMapping. Можно перезагрузить эту информацию для DUT через последующие выполнения рабочего процесса.
На Сгенерировать Код RTL и задача Ядра IP, щелкните правой кнопкой и выберите Run to Selected Task, чтобы сгенерировать ядро IP. Генератор кода открывает отчет Генерации Ядра IP, который отображает отображение портов тестовой точки к интерфейсам.
Когда вы щелкаете по ссылкам в портах тестовой точки, генератор кода подсвечивает соответствующие сигналы, что вы определяли как тестовые точки в своей модели Simulink™.
Если вы открываете сгенерированный исходный файл HDL, вы видите сигналы тестовой точки, соединенные с оберткой ядра IP.
Запустите рабочий процесс, чтобы сгенерировать модель Software Interface и интегрировать ядро IP в целевой исходный проект, который вы задали в Целевой задаче Исходного проекта Набора.
Чтобы узнать больше о рабочем процессе IP Core Generation
, смотрите Пользовательскую Генерацию Ядра IP и Пользовательский Отчет Ядра IP.
После того, как вы сгенерируете HDL-код или сгенерируете ядро IP, можно отладить сигналы тестовой точки.
Если вы, сгенерированный HDL-код для вашей модели или запустил рабочий процесс Generic ASIC/FPGA
, чтобы отладить сигналы тестовой точки, генерируете испытательный стенд HDL или используете сгенерированную модель. Чтобы открыть сгенерированную модель, в командной строке, вводят gm_hdlcoder_test_points
.
В сгенерированной модели вы видите тестовые точки в выходных портах DUT, соединенных с блоком Scope, который комментируется. Чтобы наблюдать результаты симуляции для этих сигналов, не прокомментируйте блок Scope, и затем запустите симуляцию. Если вы перемещаетесь по сгенерированной модели, вы видите, что генератор кода создает выходной порт в точке, где вы определяли сигнал как тестовую точку. HDL Coder™ затем распространяет эти порты к DUT как дополнительные выходные порты.
Если при запуске рабочий процесс IP Core Generation
к Сгенерировать задаче Модели Программного интерфейса, генератор кода открывает модель Software Interface.
Чтобы наблюдать данные по сигналам тестовой точки от процессора ARM, не прокомментируйте блок Scope, и затем запустите модель Software Interface.
Порты тестовой точки рассматриваются подобными другим выходным портам в процессе генерации кода. Генерация порта тестовой точки работает со всей оптимизацией, такой как разделение ресурсов, потоковая передача и распределенная конвейеризация. Чтобы узнать о различной оптимизации, смотрите Оптимизация области и Скорость.
Если вы генерируете модель валидации, вы видите, что генератор кода не сравнивает сигналы тестовой точки с портами тестовой точки при выводе. Можно все еще наблюдать сигналы тестовой точки путем некомментария блока Scope и путем выполнения симуляции. Чтобы узнать больше о сгенерированной модели и модели валидации, см. Сгенерированную Модель Модели и Валидации.
Если вы генерируете cosimulation модель, вы видите порты тестовой точки, соединенные с блоком Terminator. Чтобы наблюдать тестовые точки, удалите блоки Терминатора, и соедините выходные порты с блоком Scope, и затем запустите cosimulation. Можно также наблюдать формы волны в симуляторе HDL, с которым вы запускаете cosimulation. Чтобы узнать больше о cosimulation, смотрите, Генерируют Модель Cosimulation.
Если вы открываете сгенерированную модель, вы видите блок 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
, инструментом Synthesis должен быть Xilinx Vivado
или Altera Quartus II
. Xilinx ISE
не поддержан.
Если вы используете IP Core Generation
или рабочие процессы Simulink Real-Time FPGA I/O
, можно сопоставить порты тестовой точки с AXI4, AXI4-облегченными интерфейсами, или Внешнего порта. Вы не можете сопоставить порты, чтобы AXI4-передать-потоком или AXI4-передать-потоком Видеоинтерфейсы.