Программное обеспечение HDL Coder™ поддерживает несколько оптимизации, реализаций блока и опций, которые вводят дискретные задержки в модель, с целью более эффективного аппаратного использования или достижения более высоких тактовых частот. Примеры включают:
Оптимизация: Оптимизация такой, как выведено конвейеризация, потоковая передача или разделение ресурсов может ввести задержки.
Расположение каскадом: Некоторые блоки поддерживают каскадные реализации, которые вводят цикл задержки сгенерированного кода.
Реализации блока: Некоторые реализации блока, такие как архитектура Ньютона-Raphson по сути вводят задержки сгенерированного кода.
Когда оптимизация или опции реализации блока вводят задержки вдоль критического пути в модели, численных данных исходной модели и сгенерированной модели, или HDL-код может отличаться, потому что эквивалентные задержки не введены на другом, параллельны путям прохождения сигнала. Ручная вставка компенсации задержек вдоль других путей возможна, но подвержена ошибкам и не масштабируется хорошо к большим моделям со многими путями прохождения сигнала или несколькими частотами дискретизации.
Чтобы помочь вам решить эту проблему, HDL Coder поддерживает delay balancing. По умолчанию задержитесь, балансировка включена, и генератор кода обнаруживает введение новых задержек вдоль одного пути, кодер вставляет соответствие с задержками на других путях. Когда балансировка задержки включена, сгенерированная модель функционально эквивалентна исходной модели. Не рекомендуется, чтобы вы отключили задержку, балансирующуюся на модели. Если вы отключаете эту установку, HDL Coder генерирует предупреждение, что числовые различия могут произойти в модели валидации. Чтобы зафиксировать это предупреждение, включите Balance delays на модели или запустите образцовую установку балансировки задержки Проверки проверки.
Можно установить задержку, балансирующуюся для целой модели. Для более прекрасного управления можно также установить задержку, балансирующуюся для подсистем в подсистеме DUT верхнего уровня.
Используйте следующие свойства makehdl
установить задержку, балансирующуюся для модели:
BalanceDelays
: По умолчанию балансировка задержки образцового уровня включена, и подсистемы в модели наследовали установку образцового уровня. Чтобы изучить, как установить задержку, балансирующуюся для модели, смотрите задержки Баланса.
GenerateValidationModel
: По умолчанию генерация модели валидации отключена. Когда вы включаете балансировку задержки, генерируете модель валидации, чтобы просмотреть задержки и другие различия между вашей исходной моделью и сгенерированной моделью. Чтобы изучить, как включить генерацию модели валидации, смотрите Сгенерировать раздел модели валидации в Генерации кода Вывод.
Например, следующие команды генерируют HDL-код с балансировкой задержки и генерируют модель валидации.
dut = 'ex_rsqrt_delaybalancing/Subsystem'; makehdl(dut,'BalanceDelays','on','GenerateValidationModel','on');
Можно отключить задержку, балансирующуюся для целой модели, или отключить подсистему в подсистеме DUT верхнего уровня. Например, если вы не хотите балансировать задержки пути к управлению, можно поместить путь к управлению в подсистему и отключить задержку, балансирующуюся для той подсистемы.
Чтобы отключить задержку, балансирующуюся для подсистемы в подсистеме DUT верхнего уровня, отключите задержку, балансирующуюся на образцовом уровне. Когда вы отключаете задержку, балансирующуюся для модели, модель валидации не компенсирует задержку, вставленную в сгенерированную модель из-за оптимизации, или блокирует реализации. Модель валидации может поэтому показать несоответствия между исходной моделью и сгенерированной моделью.
Отключить задержку, балансирующуюся для подсистемы в подсистеме DUT верхнего уровня:
Отключите задержку, балансирующуюся для модели.
Включите задержку, балансирующуюся для подсистемы DUT верхнего уровня.
Отключите задержку, балансирующуюся для подсистемы в подсистеме DUT.
Чтобы изучить, как установить задержку, балансирующуюся для подсистемы, смотрите, что Задержка Набора Балансируется Для Подсистемы.
Следующие блоки и подсистемы не поддерживают балансировку задержки:
Инициированная подсистема
Атомарная подсистема
HDLCosimulation
Копия типа данных
Декремент, чтобы обнулить
Структурируйте преобразование
Земля
Оптимизированный HDL БПФ
Фильтр LMS
Модель - ссылка
К файлу VCD
Угол значения, чтобы объединить
Следующие реализации блока не поддерживают балансировку задержки:
hdldefaults. ConstantSpecialHDLEmission
hdldefaults. NoHDL
HDL Coder не поддерживает балансировку задержки, если:
Существует несколько экземпляров Атомарной подсистемы в различных условных подсистемах.
В диалоговом окне Block Parameters Атомарной подсистемы можно установить Function packaging на Nonreusable function
.
Свойство блока BalanceDelays для всех экземпляров Атомарной подсистемы или Модели - ссылки решает к различному значению.
Чтобы зафиксировать эту ошибку, отключите BalanceDelays
для всех экземпляров Атомарной подсистемы или Модели - ссылки.
Блок в условной подсистеме и имеет конвейерные задержки.
Задержки введены в обратной связи, и HDL Coder не может сбалансировать задержки пути. Например, если вы применяете конвейеризацию тактовой частоты в обратной связи, HDL Coder вводит задержку на тактовой частоте и может заставить задержку, балансирующуюся перестать работать.
Чтобы сократить количество задержек тактовой частоты, увеличьте фактор Сверхдискретизации.
Шаг расчета не дискретен, или отношение шагов расчета самого быстрого к самому медленному уровню является слишком большим.
Подсистема с BlackBox
Architecture имеет набор свойств блока ImplementationLatency к отрицательной величине.
Чтобы зафиксировать эту ошибку, для ImplementationLatency, вводят неотрицательное целое число.
Если балансировка задержки неудачна, hdlcoder.optimizeDesign
не может оптимизировать сгенерированный HDL-код.
Чтобы видеть, что задержка балансирует информацию в отчете, прежде чем вы сгенерируете код для каждой подсистемы или модели - ссылки, включают отчет Генерации кода. Чтобы включить отчет Генерации кода, в диалоговом окне Configuration Parameters, на панели HDL Code Generation, включают Generate optimization report.
Когда вы генерируете код для каждой подсистемы, модели - ссылки или блока MATLAB function, HDL Coderproduces отчет Генерации кода. В отчете выберите раздел Delay Balancing отчета Оптимизации.
Отчет Балансировки Задержки показывает изменения задержки, конвейерную задержку и задержку фазы в выходных портах и количество конвейеров, добавленных в выходных портах, чтобы совпадать с задержками. Если балансировка задержки перестала работать, отчет упоминает критерий, который был нарушен и отображает ссылку на любой блок или подсистему, которая заставила задержку, балансирующуюся перестать работать.