Перемещайтесь между моделью Simulink и HDL-кодом с помощью трассируемости

Даже относительно небольшая модель может сгенерировать сотни линий HDL-кода. Чтобы легче идентифицировать отображение между исходной моделью и сгенерированным HDL-кодом, используйте поддержку трассируемости в HDL- Coder™.

Как работает трассируемость

Когда вы включаете поддержку трассируемости и генерируете HDL-код для вашей модели, генератор кода создает и отображает отчет о HTML генерации кода.

По умолчанию генератор кода использует стиль уровня линии для создания отчета о трассируемости. Отчет, сгенерированный при использовании этого стиля, содержит гиперссылки для каждой линии HDL-кода, чтобы перемещаться между кодом и моделью. Можно настроить стиль трассируемости, чтобы создать отчет на основе комментариев. Этот стиль содержит гиперссылочные комментарии над блоком кода, которые соответствуют тегу с возможностью поиска для определенного блока в вашей модели. Дополнительные сведения о двух стилях трассируемости см. в разделе «Стиль трассируемости».

Можно сгенерировать отчеты для модели корневого уровня или для подсистем, блоков, Stateflow® графики или MATLAB Function блоки. По умолчанию HDL Coder генерирует отчет для модели верхнего уровня.

После создания отчета можно перейти от:

  • Модель к коду: Выберите определенный блок в вашей модели и перейдите к соответствующим линиям HDL-кода в отчете.

  • Код для модели: Выберите строку кода в отчете и перейдите к Simulink® блоки, соответствующие этой строке кода.

HDL Coder обеспечивает эту двухстороннюю навигацию или bidirectional трассируемость. С поддержкой трассируемости можно:

  • Проверьте, что сгенерированный код как вы ожидаете. Можно идентифицировать, какие элементы модели соответствуют строке кода, и отследить код из различных элементов модели, которые у вас есть или не рассматривались.

  • Проверьте, соответствует ли сгенерированный код требованиям проекта. Можно присвоить требования элементам модели и включить требования как гиперссылки в отчет о трассируемости.

Сгенерируйте отчет о трассируемости

Отчет можно сгенерировать в диалоговом окне Параметров конфигурации или в командной строке.

  1. Включите генерацию отчета о трассируемости.

    • На вкладке Apps выберите HDL Coder. Появится вкладка HDL Code. Выберите Settings > Report Options, а затем Generate traceability report.

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

    Дополнительные сведения об этом параметре см. в разделе Генерация отчета трассируемости.

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

    • На панели HDL Code Generation > Report задайте TraceabilityStyle.

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

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

  3. Сгенерируйте HDL-код и отчет о трассируемости. Либо выберите Подсистему DUT и нажатия кнопки Generate HDL Code на Панель инструментов Simulink, либо запуск makehdl в Подсистеме DUT в командной строке.

Когда генерация HDL-кода завершена, отчет о HTML генерации кода появляется в новом окне.

Расположение отчета

По умолчанию HDL Coder записывает файлы отчета генерации кода в папку в hdlsrc\html\ папка папки сборки. При закрытии отчета можно перейти в эту папку для повторного открытия отчета.

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

  • В диалоговом окне Параметры конфигурации укажите целевую папку с помощью параметра Target.

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

Чтобы узнать, как задать этот параметр, смотрите Папку.

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

Просмотр отчета о трассируемости

В окне отчета генерации кода HTML выберите раздел Traceability Report. На левой панели отчета щелкните имена Сгенерированных исходных файлов, чтобы просмотреть их содержимое в MATLAB® окно веб-браузера.

Этот рисунок показывает типовой отчет о трассируемости.

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

  • Раздел Eliminated / Virtual Blocks учитывает блоки, которые не отслеживаются, поскольку они не включены в сгенерированный HDL-код.

  • Раздел Traceable Simulink Blocks / Stateflow Objects / MATLAB Functions обеспечивает полное отображение между элементами модели и кодом.

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

Навигация с кодом к модели

Для перехода от HDL-кода к модели:

  1. В отчете о трассируемости в столбце Code Location щелкните любую гиперссылку.

    Генератор кода подсвечивает эту линию HDL-кода в сгенерированном исходном файле.

  2. Выберите ссылку, соответствующую этой строке кода в исходном файле.

    Генератор кода открывает отдельное окно, в котором отображается подсвеченный блок Simulink, относящийся к этой строке кода.

Этот рисунок показывает, как перемещаться от HDL-кода к модели с помощью отчета о трассируемости, когда вы задаете Line Level как Traceability style.

В отчете о трассируемости видно, что HDL Coder генерирует гиперссылки линейного уровня к HDL-коду в Code Location столбце. Щелкните ссылку, чтобы выделить эту строку кода в исходном файле HDL, а затем щелкните гиперссылку для этой строки кода в исходном файле, чтобы выделить соответствующий блок в вашей модели.

Этот рисунок показывает, как перемещаться от HDL-кода к модели с помощью отчета о трассируемости, когда вы задаете Comment Based как Traceability style.

В отчете о трассируемости при выборе гиперссылки в столбце Code Location видно, что HDL Coder подсвечивает гиперссылку <S2>/a1 в HDL-коде. При клике гиперссылочного комментария в исходном файле HDL генератор кода подсвечивает соответствующий блок a1 в вашей модели.

Навигация между моделями и кодами

Используйте трассируемость модели к коду, чтобы выбрать компонент на любом уровне модели и просмотреть ссылки кода на этот компонент в отчете о трассируемости. Для трассировки можно выбрать следующие объекты:

  • Подсистема

  • Блок Simulink

  • MATLAB Function блок

  • Диаграмма Stateflow или эти элементы массива диаграммы Stateflow:

    • Государство

    • Переход

    • Таблица истинности

    • Функция MATLAB внутри графика

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

  • Выберите этот блок и щелкните Navigate to Code на вкладке HDL Code.

  • Щелкните правой кнопкой мыши этот блок в модели Simulink и выберите HDL Code > Navigate to Code.

Этот рисунок показывает навигацию модель-к-коду для стиля трассируемости на уровне строки и на основе комментариев.

Если вы используете Line Level по мере Traceability style и перехода от модели к HDL-коду в отчете о трассируемости подсвечиваются все линии HDL-кода, соответствующие этому блоку.

Если вы используете Comment Based при Traceability style и переходе от модели к HDL-коду в трассируемость отчете подсвечивается отслеживаемый комментарий блока в HDL-коде.

Ограничения, накладываемые на отчет о трассируемости

  • Если имя блока в вашей модели содержит одинарную кавычку ('), трассируемость code-to-model и model-to-code отключены для этого блока.

  • Если звездочка (*) в названии блока в вашей модели вызывает неоднозначность управления именем относительно других имен в модели, подсветка кода к модели и подсветка модели к коду отключены для этого блока. Это, скорее всего, произойдет, если звездочка предшествует или следует за косой чертой (/) в имени блока или появляется в конце имени блока.

  • Если имя блока в вашей модели содержит символ и символ (char(255)), подсветка кода к модели и подсветка модели к коду отключены для этого блока.

  • Если вы используете определенные типы подсистем, блок Subsystem не отслеживается из модели в HDL-код на уровне подсистемы. Возможно, что можно проследить отдельные блоки внутри блока Subsystem. Вы не можете проследить от модели до кода для этих типов подсистем:

    • Виртуальный

    • В маске

    • Невиртуальный, для которого был оптимизирован код

  • Трассируемость не поддерживает Модели-ссылки как Subsystem блок верхнего уровня.

Похожие темы