Уплощение иерархии позволяет удалить иерархию подсистем из HDL-кода, сгенерированного в проекте.
HDL Coder™ рассматривает блоки внутри уплощенной подсистемы как находящиеся на одном уровне иерархии и больше не сгруппированные в отдельные подсистемы. Этот фактор позволяет кодеру реорганизовать блоки для оптимизации через исходные иерархические контуры, сохраняя при этом функциональность.
Чтобы сохранить модульность проекта и иметь взаимно-однозначное отображение от имени подсистемы к соответствующему HDL- module
или entity
имя, не выравнивайте иерархию. Сгенерированный HDL-код является более читаемым, когда вы не уплощаете иерархию.
Выровнять иерархию по:
Обеспечьте более обширную область и оптимизацию скорости.
Уменьшите количество выходных файлов HDL. Для каждой выравниваемой подсистемы HDL Coder генерирует на один HDL выходной файл меньше.
Прежде чем вы уплощете иерархию, вы должны иметь MaskParameterAsGeneric
значение свойства установлено в off
. Для получения дополнительной информации смотрите Сгенерировать параметризованный HDL-код из маскированной подсистемы.
Когда вы используете оптимизации, такие как совместное использование ресурсов или потоковая передача с уплощением иерархии, в определенных случаях HDL Coder может сохранить иерархию подсистем в сгенерированной модели. Однако HDL-код, сгенерированный для уплощенных подсистем, встроен, что уменьшает количество HDL- файлов.
Когда вы используете типы данных с плавающей точкой в Native Floating Point
режим, HDL Coder может не сглаживать иерархию. Это связано с тем, что проекты с плавающей точкой генерируют сотни строк кода и встраивание HDL- файлов делает сгенерированный код менее читаемым.
По умолчанию подсистема наследует настройку выравнивания иерархии от родительской подсистемы. Однако можно включить или отключить уплощение для отдельных подсистем. В этой таблице перечислены опции, которые можно задать для параметров выравнивания иерархии для подсистемы, перечисленные в следующей таблице.
Настройка сглаживания иерархии | Описание |
---|---|
наследование (по умолчанию) | Используйте настройку выравнивания иерархии родительской подсистемы. Если эта подсистема является подсистемой самого высокого уровня, не выравнивайте. |
на | Выровнять эту подсистему. |
прочь' | Не выравнивайте эту подсистему, даже если родительская подсистема уплощена. |
Чтобы задать выравнивание иерархии с помощью диалогового окна HDL Block Properties:
На вкладке Apps выберите HDL Coder. Появится вкладка HDL Code. Выберите Subsystem и нажмите HDL Block Properties. Для FlattenHierarchy выберите on, off или inherit.
Щелкните правой кнопкой мыши по Subsystem и выберите HDL Code > HDL Block Properties. Для FlattenHierarchy выберите on, off или inherit.
Чтобы задать выравнивание иерархии из командной строки, используйте hdlset_param
. Например, чтобы включить уплощение иерархии для подсистемы, my_dut
:
hdlset_param('my_dut', 'FlattenHierarchy', 'on')
hdlset_param
.Подсистема не может быть уплощена, если подсистема:
A Synchronous Subsystem или использует блок State Control в Synchronous
режим.
А модель-ссылка реализация.
Триггируемая подсистема, когда Использование триггерного сигнала в качестве синхроимпульса включено.
Маскированная подсистема, содержащая любое из следующих значений:
Автобус.
Перечисленный тип данных.
Блоки интерполяционной таблицы: 1-D Lookup Table, 2-D Lookup Table, Cosine HDL Optimized, Direct LookupTable (n-D), Prelookup, Sine HDL Optimized, n-D Lookup Table.
MATLAB System блок.
Stateflow® блоки: Chart, State Transition Table, Sequence Viewer.
Блоки с реализацией pass-through или no-op. Смотрите Pass through, No HDL и Cascade Implementations.
Примечание
Эта опция удаляет контуры подсистемы перед генерацией кода. Он не обязательно генерирует HDL-код с полностью плоской иерархией.
Чтобы увидеть информацию о сплющивании иерархии в отчете, прежде чем вы сгенерируете код для каждой подсистемы или модели-ссылки, включите отчет оптимизации. Чтобы включить этот отчет, на вкладке HDL-код, выберите Опции отчета, а затем выберите Сгенерировать отчет оптимизации.
В отчете отображаются подсистемы в вашей модели, которые FlattenHierarchy установлены на on
и off
, статус выравнивания иерархии и встроенные файлы HDL. Можно использовать отчет, чтобы более эффективно сглаживать иерархию подсистемы и улучшать возможности для оптимизации, такие как конвейеризация по тактовой частоте в модели.
Если сглаживание иерархии неудачно, в отчете показана таблица, содержащая подсистемы, которые не сглаживаются, и причины не сглаживания подсистемы. Подсистемы, которые имеют * подсвеченные рядом с ними, указывают, встроены ли HDL- файлов, хотя не удалось сплющить иерархию.