Даже относительно маленькая модель может сгенерировать сотни линий HDL-кода. Чтобы идентифицировать отображение между вашей исходной моделью и сгенерированным HDL-кодом более легко, используйте поддержку трассируемости в HDL Coder™.
Когда вы включаете поддержку трассируемости и генерируете HDL-код для вашей модели, генератор кода создает и отображает отчет генерации кода HTML.
По умолчанию генератор кода использует стиль уровня линии, чтобы сгенерировать отчет трассируемости. Отчет, сгенерированный при помощи этого стиля, содержит гиперссылки для каждой линии HDL-кода, чтобы перейти между кодом и моделью. Можно настроить стиль трассируемости, чтобы сгенерировать основанный на комментарии отчет. Этот стиль содержит связанные гиперссылками комментарии выше блока кода, которые соответствуют доступному для поиска тегу для определенного блока в вашей модели. Чтобы узнать больше о двух стилях трассируемости, смотрите стиль Трассируемости.
Можно сгенерировать отчеты для модели корневого уровня или для подсистем, блоков, Stateflow® графики или блоки MATLAB Function. По умолчанию HDL Coder генерирует отчет для модели верхнего уровня.
После того, как вы сгенерируете отчет, можно перейти от:
Модель к коду: Выберите определенный блок в своей модели и перейдите к соответствующим линиям HDL-кода в отчете.
Код к модели: Выберите строку кода в отчете и перейдите к Simulink® блоки, соответствующие той строке кода.
HDL Coder обеспечивает эту двухстороннюю навигацию или трассируемость bidirectional. С поддержкой трассируемости вы можете:
Проверьте, что сгенерированный код - как вы ожидаете. Можно идентифицировать, какие элементы модели соответствуют строке кода и отслеживают код от различных элементов модели, которые вы имеете или не рассмотрели.
Проверьте, соответствует ли сгенерированный код конструктивным требованиям. Можно присвоить требования элементам модели и включать требования как гиперссылки в отчете трассируемости.
Можно сгенерировать отчет в диалоговом окне Configuration Parameters или в командной строке.
Включите генерацию отчета трассируемости.
Во вкладке Apps выберите HDL Coder. Вкладка HDL Code появляется. Выберите Settings> Report Options, и затем выберите Generate traceability report.
В командной строке использовать hdlset_param
установить Traceability
свойство на модели.
Чтобы узнать больше об этом параметре, смотрите, Генерируют отчет трассируемости.
Задайте стиль трассируемости. Чтобы сгенерировать отчет трассируемости уровня линии, оставьте эту установку как значение по умолчанию. Сгенерировать основанный на комментарии отчет трассируемости:
На HDL Code Generation> панель Report, задайте Traceability style.
В командной строке использовать hdlset_param
задавать TraceabilityStyle
свойство на модели.
Чтобы узнать больше об этом параметре, смотрите стиль Трассируемости.
Сгенерируйте HDL-код и отчет трассируемости. Или выберите DUT Subsystem и нажмите Generate HDL Code на Панели инструментов Simulink или запуск makehdl
на Подсистеме DUT в командной строке.
Когда генерация HDL-кода завершена, отчет генерации кода HTML появляется в новом окне.
По умолчанию HDL Coder записывает файлы отчета генерации кода в папку в hdlsrc\html\
папка папки сборки. Если вы закрываете отчет, можно перейти к этой папке, чтобы вновь открыть отчет.
Прежде, чем сгенерировать код, можно настроить целевую папку, которая хранит HDL-код и файлы отчета.
В диалоговом окне Configuration Parameters задайте целевую папку при помощи установки Target.
В командной строке используйте TargetDirectory
свойство.
Чтобы изучить, как задать этот параметр, смотрите Папку.
Чтобы усовершенствовать ваш отчет трассируемости, регенерируйте HDL-код и отчет после изменения исходной модели.
В окне отчета генерации кода HTML выберите раздел Traceability Report. На левой панели отчета кликните по именам Сгенерированных Исходных файлов, чтобы просмотреть их содержимое в MATLAB® окно веб-браузера.
Этот рисунок показывает типичный отчет трассируемости.
Отчет трассируемости имеет несколько подразделов, которые указывают на блоки или подсистемы, от которых был сгенерирован код:
Раздел Eliminated / Virtual Blocks составляет блоки, которые непрослеживаемы, потому что они не включены в сгенерированный HDL-код.
Раздел Traceable Simulink Blocks / Stateflow Objects / MATLAB Functions обеспечивает полное отображение между элементами модели и кодом.
Если вы присвоили требования блока, вы видите требования как связанные гиперссылками комментарии в отчете трассируемости. Для получения дополнительной информации смотрите, Включают Требования в Комментарии Блока.
По умолчанию, после того, как вы включаете генерацию отчета трассируемости и генерируете HDL-код для вашей модели, Представление кода отображает сгенерированный код справа от вашей модели. Можно использовать Представление кода, чтобы проследить сгенерированный HDL-код до модели и модели к сгенерированному HDL-коду.
Чтобы вручную открыть Представление кода, откройте приложение HDL Coder. На панели инструментов Simulink нажмите кнопку View Code. Выберите файл, который вы хотите отобразить при помощи выпадающего списка наверху Представления кода. Можно прикрепить или расстыковать Представление кода из редактора и минимизировать или расширить Представление кода с помощью значка контакта в правом верхнем углу Представления кода. Можно также использовать поддержку обогащенного текста, такую как сворачивание кода и сокрытие комментариев.
Этот рисунок показывает Представление кода, открытое от кнопки View Code на панели инструментов Simulink в приложении HDL Coder.
Чтобы перейти от HDL-кода до модели, следуйте за любым из этих рабочих процессов:
Используйте Представление кода:
Перейдите к Представлению кода путем нажатия на панель представления автоматически сгенерированного кода справа или путем нажатия кнопки View Code на панели инструментов Simulink в приложении HDL Coder.
В Представлении кода кликните по гиперссылке номера строки, или комментарий к коду соединяются, чтобы подсветить блок, до которого прослеживает строка кода. Вы можете соединительные линии кода к элементам модели, от которых они были сгенерированы.
Этот рисунок показывает как сгенерированный HDL-код на линии 238 в symmetric_fir.vhd
в картах Представления кода с блоком, подсвеченным в синем в модели, когда Traceability style задан как Line Level
.
Этот рисунок показывает как комментарий <S1>/m3
сгенерированный в HDL-коде на линии 253 в symmetric_fir.vhd
в картах Представления кода с блоком, подсвеченным в синем в модели, когда Traceability style задан как Comment Based
.
Используйте отчет генерации кода:
В отчете трассируемости, на столбце Code Location, кликают по любой гиперссылке.
Генератор кода подсвечивает что линия HDL-кода в сгенерированном исходном файле.
Выберите ссылку, соответствующую той строке кода в исходном файле.
Генератор кода открывает отдельное окно, которое отображает подсвеченный блок 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-коду, сгенерированному для того блока при помощи любого из этих подходов.
Кликните по тому блоку в модели. Представление кода подсвечивает код для блока и прокруток к подсвеченным строкам кода.
Этот рисунок показывает пример того, как блок, подсвеченный в модели, сопоставляет с соответствующим подсвеченным HDL-кодом в скрипте symmetric_fir.vhd
когда Traceability style задан как Line Level
.
Этот рисунок показывает пример того, как блок, подсвеченный в модели, сопоставляет с соответствующим подсвеченным комментарием в HDL-коде в скрипте symmetric_fir.vhd
когда Traceability style задан как Comment Based
.
Выберите тот блок и нажмите Navigate to Code на вкладке HDL Code.
Щелкните правой кнопкой по тому блоку по своей модели Simulink и выберите HDL Code> Navigate to Code.
Этот рисунок показывает навигацию модели к коду и для уровня линии и для основанного на комментарии стиля трассируемости.
Если вы используете Line Level
как Traceability style и перешли от модели до HDL-кода, отчет трассируемости подсвечивает все линии HDL-кода, соответствующего тому блоку.
Если вы используете Comment Based
как Traceability style и перешли от модели до HDL-кода, отчет трассируемости подсвечивает прослеживаемый комментарий блока в HDL-коде.
Если имя блока в вашей модели содержит одинарную кавычку ('
), код к модели и трассируемость модели к коду отключены для того блока.
Если звездочка (*
) в имени блока в ваших причинах модели искажающая имя неоднозначность относительно других имен в модели, выделении кода к модели и выделении модели к коду отключена для того блока. Это, скорее всего, произойдет, если звездочка будет предшествовать или будет следовать за наклонной чертой (/
) в имени блока или появляется в конце имени блока.
Если имя блока в вашей модели содержит символ ÿ (char(255)
), выделение кода к модели и выделение модели к коду отключены для того блока.
Если вы используете определенные типы подсистемы, блок Subsystem не прослеживаем от модели до HDL-кода на уровне подсистемы. Возможно, что можно проследить отдельные блоки в блоке Subsystem. Вы не можете проследить от модели до кода для этих типов подсистемы:
Виртуальный
Маскированный
Невиртуальный, для которого код был оптимизирован далеко
Трассируемость не делает Ссылки модели поддержки как блока Subsystem верхнего уровня.