В этом примере показано, как использовать оптимизацию совместного использования уровня подсистемы в кодере HDL.
Совместное использование - это оптимизация на уровне подсистемы, поддерживаемая кодером HDL для реализации аппаратного обеспечения, эффективного по площади.
По умолчанию кодер реализует аппаратное обеспечение, которое представляет собой сопоставление блоков Simulink с аппаратными модулями. Оптимизация совместного использования ресурсов позволяет пользователям совместно использовать аппаратные ресурсы, обеспечивая N-to-1 отображение «N» функционально эквивалентных блоков Simulink на один аппаратный модуль. Пользователь указывает «N» с помощью параметра реализации «SharingFactor».
Поскольку архитектура с временным мультиплексированием требует более длительного времени задержки для завершения операции, HDL Coder™ автоматически управляет расхождением во времени в зависимости от того, какие ресурсы совместно используются. Предположим, что совместно используемые ресурсы работают с базовой частотой дискретизации, тогда совместное использование ресурсов реализуется как локальная многоскоростная архитектура, которая описана в этом примере. Если совместно используемые ресурсы работают с более низкой частотой дискретизации, чем базовая частота дискретизации, то HDL Coder™ вызывает конвейерную обработку тактовой частоты для синтеза реализации, которая использует бюджет задержки, определенный в разнице скоростей. В этом случае общая архитектура ресурсов представляет собой реализацию с одной скоростью и требует нескольких временных шагов для завершения всех общих операций. Односкоростная архитектура совместного использования ресурсов описывает детали этой реализации.
Остальная часть этого примера иллюстрирует локальную многоскоростную архитектуру совместного использования ресурсов. Рассмотрим следующую модель симметричного КИХ-фильтра. Он содержит 4 блока продукта, которые являются функционально эквивалентными и которые сопоставляются с 4 умножителями в аппаратном обеспечении. Отчет об использовании ресурсов содержит список используемых аппаратных ресурсов.
bdclose all; load_system('sfir_fixed'); open_system('sfir_fixed/symmetric_fir'); hdlset_param('sfir_fixed', 'ResourceReport', 'on'); makehdl('sfir_fixed/symmetric_fir');
### Generating HDL for 'sfir_fixed/symmetric_fir'.
### Using the config set for model <a href="matlab:configset.showParameterGroup('sfir_fixed', { 'HDL Code Generation' } )">sfir_fixed</a> for HDL code generation parameters.
### Running HDL checks on the model 'sfir_fixed'.
### Begin compilation of the model 'sfir_fixed'...
### Applying HDL optimizations on the model 'sfir_fixed'...
### Begin model generation.
### Model generation complete.
### Begin VHDL Code Generation for 'sfir_fixed'.
### Working on sfir_fixed/symmetric_fir as hdlsrc/sfir_fixed/symmetric_fir.vhd.
### Code Generation for 'sfir_fixed' completed.
### Generating HTML files for code generation report at <a href="matlab:web('/tmp/BR2021ad_1584584_202060/publish_examples4/tp687696c7/hdlsrc/sfir_fixed/html/sfir_fixed_codegen_rpt.html');">sfir_fixed_codegen_rpt.html</a>
### Creating HDL Code Generation Check Report file:///tmp/BR2021ad_1584584_202060/publish_examples4/tp687696c7/hdlsrc/sfir_fixed/symmetric_fir_report.html
### HDL check for 'sfir_fixed' complete with 0 errors, 0 warnings, and 0 messages.
### HDL code generation complete.

Чтобы уменьшить ресурсы области, можно вызвать оптимизацию совместного использования, установив для параметра SharingFactor в подсистеме положительное целое значение. Этот параметр указывает «N» в сопоставлении оборудования N-to-1. В этом примере существует 4 блока продуктов, поэтому генерация HDL с параметром SharingFactor, равным 4, генерирует HDL с 1 умножителем.
Модель генерации кода отражает архитектуру совместного использования. Входы в совместно используемые блоки мультиплексируются во времени по совместно используемому ресурсу с более высокой скоростью (в данном случае в 4 раза быстрее, показана красным цветом). Затем выходные сигналы направляются соответствующим потребителям с более низкой скоростью (показано зеленым цветом).
hdlset_param('sfir_fixed/symmetric_fir', 'SharingFactor', 4); hdlset_param('sfir_fixed', 'GenerateValidationModel', 'on'); makehdl('sfir_fixed/symmetric_fir'); open_system('gm_sfir_fixed/symmetric_fir'); set_param('gm_sfir_fixed', 'SimulationCommand', 'update');
### Generating HDL for 'sfir_fixed/symmetric_fir'.
### Using the config set for model <a href="matlab:configset.showParameterGroup('sfir_fixed', { 'HDL Code Generation' } )">sfir_fixed</a> for HDL code generation parameters.
### Running HDL checks on the model 'sfir_fixed'.
### Begin compilation of the model 'sfir_fixed'...
### Applying HDL optimizations on the model 'sfir_fixed'...
### The DUT requires an initial pipeline setup latency. Each output port experiences these additional delays.
### Output port 1: 1 cycles.
### Output port 2: 1 cycles.
### Begin model generation.
### Model generation complete.
### Generating new validation model: <a href="matlab:open_system('gm_sfir_fixed_vnl')">gm_sfir_fixed_vnl</a>.
### Validation model generation complete.
### Begin VHDL Code Generation for 'sfir_fixed'.
### MESSAGE: The design requires 4 times faster clock with respect to the base rate = 1.
### Working on symmetric_fir_tc as hdlsrc/sfir_fixed/symmetric_fir_tc.vhd.
### Working on sfir_fixed/symmetric_fir as hdlsrc/sfir_fixed/symmetric_fir.vhd.
### Generating package file hdlsrc/sfir_fixed/symmetric_fir_pkg.vhd.
### Code Generation for 'sfir_fixed' completed.
### Generating HTML files for code generation report at <a href="matlab:web('/tmp/BR2021ad_1584584_202060/publish_examples4/tp687696c7/hdlsrc/sfir_fixed/html/sfir_fixed_codegen_rpt.html');">sfir_fixed_codegen_rpt.html</a>
### Creating HDL Code Generation Check Report file:///tmp/BR2021ad_1584584_202060/publish_examples4/tp687696c7/hdlsrc/sfir_fixed/symmetric_fir_report.html
### HDL check for 'sfir_fixed' complete with 0 errors, 0 warnings, and 1 messages.
### HDL code generation complete.

Оптимизация совместного использования реализуется с использованием мультиплексирования с временным разделением. Simulink требует, чтобы выходные сигналы совместно используемого ресурса были дискретизированы с заданной частотой дискретизации, поэтому кодер HDL выполняет оверклокинг совместно используемого ресурса с более высокой скоростью, чем скорость передачи данных. В вышеприведенном примере совместно используемая архитектура, которая включает в себя совместно используемый ресурс, мультиплексор-сериализатор на входах и демультиплексор-десериализатор на выходах, работает со скоростью, в 4 раза превышающей скорость входных данных, поскольку «Sharingfactor» = 4.
Переходы скорости, реализующие мультиплексирование по времени в архитектуре совместного использования ресурсов, приводят к дополнительным задержкам. Для поддержания функциональной эквивалентности балансировка задержки автоматически вставляет совпадающие задержки в параллельные пути объединения. Созданная модель проверки позволяет пользователю проверить функциональную эквивалентность путем сравнения работы совместно используемой аппаратной архитектуры с исходной моделью.
sim('gm_sfir_fixed_vnl'); open_system('gm_sfir_fixed_vnl/Compare/Assert_y_out/compare: y_out') open_system('gm_sfir_fixed_vnl/Compare/Assert_delayed_xout/compare: delayed_xout')


Чистая избыточная выборка для всей конструкции эквивалентна LCM всех значений SharingFactor, установленных в модели. Рассмотрим пример, hdlcoder_uniform_oversampling.slx. Имеет две подсистемы: подсистема «Share3» имеет 3 блока усиления, которые могут быть общими, и «Share4» имеет 4 блока усиления, которые могут быть общими.
saved_warning_state = warning('off', 'hdlcoder:makehdl:DeprecateMaxOverSampling'); warning('off', 'hdlcoder:makehdl:DeprecateMaxComputationLatency'); bdclose('all'); load_system('hdlcoder_uniform_oversampling'); open_system('hdlcoder_uniform_oversampling/Subsystem'); set_param('hdlcoder_uniform_oversampling', 'SimulationCommand', 'update'); hdlsaveparams('hdlcoder_uniform_oversampling/Subsystem');
%% Set Model 'hdlcoder_uniform_oversampling' HDL parameters
hdlset_param('hdlcoder_uniform_oversampling', 'GenerateValidationModel', 'on');
hdlset_param('hdlcoder_uniform_oversampling', 'HDLSubsystem', 'hdlcoder_uniform_oversampling');
% Set SubSystem HDL parameters
hdlset_param('hdlcoder_uniform_oversampling/Subsystem/Share3', 'SharingFactor', 3);
% Set SubSystem HDL parameters
hdlset_param('hdlcoder_uniform_oversampling/Subsystem/Share4', 'SharingFactor', 4);

Обратите внимание, что «SharingFactor» устанавливает значение «SharingFactor» равным 3, а «Share4» устанавливает значение «SharingFactor» равным 4. ЛПВП Coder™ применяет совместное использование локальных ресурсов к каждой подсистеме, и в результате реализация ЛПВП требует LCM (3, 4) = 12x избыточной дискретизации. Об этом сообщается в сообщении при генерации кода HDL.
makehdl('hdlcoder_uniform_oversampling/Subsystem');
### Generating HDL for 'hdlcoder_uniform_oversampling/Subsystem'.
### Using the config set for model <a href="matlab:configset.showParameterGroup('hdlcoder_uniform_oversampling', { 'HDL Code Generation' } )">hdlcoder_uniform_oversampling</a> for HDL code generation parameters.
### Running HDL checks on the model 'hdlcoder_uniform_oversampling'.
### Begin compilation of the model 'hdlcoder_uniform_oversampling'...
### Applying HDL optimizations on the model 'hdlcoder_uniform_oversampling'...
### The DUT requires an initial pipeline setup latency. Each output port experiences these additional delays.
### Output port 1: 1 cycles.
### Output port 2: 1 cycles.
### Begin model generation.
### Model generation complete.
### Generating new validation model: <a href="matlab:open_system('gm_hdlcoder_uniform_oversampling_vnl')">gm_hdlcoder_uniform_oversampling_vnl</a>.
### Validation model generation complete.
### Begin VHDL Code Generation for 'hdlcoder_uniform_oversampling'.
### MESSAGE: The design requires 12 times faster clock with respect to the base rate = 0.1.
### Working on hdlcoder_uniform_oversampling/Subsystem/Share3 as hdlsrc/hdlcoder_uniform_oversampling/Share3.vhd.
### Working on hdlcoder_uniform_oversampling/Subsystem/Share4 as hdlsrc/hdlcoder_uniform_oversampling/Share4.vhd.
### Working on Subsystem_tc as hdlsrc/hdlcoder_uniform_oversampling/Subsystem_tc.vhd.
### Working on hdlcoder_uniform_oversampling/Subsystem as hdlsrc/hdlcoder_uniform_oversampling/Subsystem.vhd.
### Generating package file hdlsrc/hdlcoder_uniform_oversampling/Subsystem_pkg.vhd.
### Code Generation for 'hdlcoder_uniform_oversampling' completed.
### Creating HDL Code Generation Check Report file:///tmp/BR2021ad_1584584_202060/publish_examples4/tp687696c7/hdlsrc/hdlcoder_uniform_oversampling/Subsystem_report.html
### HDL check for 'hdlcoder_uniform_oversampling' complete with 0 errors, 0 warnings, and 1 messages.
### HDL code generation complete.
Одним из способов обойти этот мультипликативный эффект избыточной дискретизации является установка «SharingFactor» всех подсистем в доступный бюджет избыточной дискретизации. В приведенном выше примере, если бюджет избыточной выборки равен только 4x, установите параметр SharingFactor = 4 для Share3 и Share4. В этом случае кодер HDL может совместно использовать меньше ресурсов, чем SharingFactor, и оставаться неактивным в течение оставшихся циклов.
hdlset_param('hdlcoder_uniform_oversampling/Subsystem/Share3', 'SharingFactor', 4); makehdl('hdlcoder_uniform_oversampling/Subsystem');
### Generating HDL for 'hdlcoder_uniform_oversampling/Subsystem'.
### Using the config set for model <a href="matlab:configset.showParameterGroup('hdlcoder_uniform_oversampling', { 'HDL Code Generation' } )">hdlcoder_uniform_oversampling</a> for HDL code generation parameters.
### Running HDL checks on the model 'hdlcoder_uniform_oversampling'.
### Begin compilation of the model 'hdlcoder_uniform_oversampling'...
### Applying HDL optimizations on the model 'hdlcoder_uniform_oversampling'...
### The DUT requires an initial pipeline setup latency. Each output port experiences these additional delays.
### Output port 1: 1 cycles.
### Output port 2: 1 cycles.
### Begin model generation.
### Model generation complete.
### Generating new validation model: <a href="matlab:open_system('gm_hdlcoder_uniform_oversampling_vnl')">gm_hdlcoder_uniform_oversampling_vnl</a>.
### Validation model generation complete.
### Begin VHDL Code Generation for 'hdlcoder_uniform_oversampling'.
### MESSAGE: The design requires 4 times faster clock with respect to the base rate = 0.1.
### Working on hdlcoder_uniform_oversampling/Subsystem/Share3 as hdlsrc/hdlcoder_uniform_oversampling/Share3.vhd.
### Working on hdlcoder_uniform_oversampling/Subsystem/Share4 as hdlsrc/hdlcoder_uniform_oversampling/Share4.vhd.
### Working on Subsystem_tc as hdlsrc/hdlcoder_uniform_oversampling/Subsystem_tc.vhd.
### Working on hdlcoder_uniform_oversampling/Subsystem as hdlsrc/hdlcoder_uniform_oversampling/Subsystem.vhd.
### Generating package file hdlsrc/hdlcoder_uniform_oversampling/Subsystem_pkg.vhd.
### Code Generation for 'hdlcoder_uniform_oversampling' completed.
### Creating HDL Code Generation Check Report file:///tmp/BR2021ad_1584584_202060/publish_examples4/tp687696c7/hdlsrc/hdlcoder_uniform_oversampling/Subsystem_report.html
### HDL check for 'hdlcoder_uniform_oversampling' complete with 0 errors, 0 warnings, and 1 messages.
### HDL code generation complete.
Обратите внимание, что коэффициент избыточной выборки теперь равен LCM (4,4) = 4, и что это значение сообщается во время генерации кода. В целом, рекомендуется установить значения «SharingFactor» для доступного бюджета избыточной выборки. Если ваша конструкция содержит меньше совместно используемых ресурсов, чем указанное значение SharingFactor, кодер HDL совместно использует доступные совместно используемые ресурсы и перекрывает их значением SharingFactor. Однако если требуется применить как совместное использование ресурсов, так и другие оптимизации, использующие оверклокинг, такие как потоковая передача, или применить совместное использование ресурсов в нескольких вложенных подсистемах, это общее руководство может привести к более высокому коэффициенту избыточной дискретизации.
HDL Coder поддерживает совместное использование ресурсов 4 типов блоков: Product, Gain, Atomic Subsystem и MATLAB Function. Для функциональных блоков MATLAB используйте MATLAB Datapath архитектура с фиксированными типами точек. Эта архитектура является настройкой по умолчанию для типов с плавающей запятой. Можно указать архитектуру HDL в диалоговом окне Свойства блока HDL функционального блока MATLAB.
Совместное использование функционально эквивалентных блоков «Продукт» и «Выигрыш» означает совместное использование множителей в реализации HDL. Два блока изделия функционально эквивалентны, если: a) типы данных их входов и выходов идентичны, b) их параметры блока идентичны, и c) их свойства блока HDL идентичны. Для блока усиления функциональная эквивалентность дополнительно требует, чтобы постоянное значение и типы данных также были идентичными. Однако, если типы данных констант усиления идентичны для двух блоков усиления с различными значениями констант усиления, кодер HDL может совместно использовать их. Аналогично, если блок усиления может быть реализован как блок продукта с постоянным вводом и он имеет те же типы данных, что и другой блок продукта в конструкции, кодер может совместно использовать их.
Третий тип блоков, атомная подсистема, полезен для совместного использования функционально эквивалентных островков логики, инкапсулированных внутри атомных подсистем. Две атомарные подсистемы функционально эквивалентны и могут совместно использоваться, если:
Их контрольные суммы Simulink идентичны
Их свойства блоков ЛПВП идентичны.
% The following example demonstrates an audio filtering model that applies % the same filter on the left and right channels. By default, HDL Coder % generates two filter modules in hardware. bdclose all; load_system('hdlcoder_audiofiltering'); open_system('hdlcoder_audiofiltering/Audio filter'); % The filters on the two audio channels can be shared by specifying a % 'SharingFactor' value of 2 on the encompassing subsystem. This generates % an architecture that uses only one filter, as shown below. hdlset_param('hdlcoder_audiofiltering/Audio filter', 'SharingFactor', 2); makehdl('hdlcoder_audiofiltering/Audio filter'); open_system('gm_hdlcoder_audiofiltering/Audio filter'); set_param('gm_hdlcoder_audiofiltering', 'SimulationCommand', 'update');
### Generating HDL for 'hdlcoder_audiofiltering/Audio filter'.
### Using the config set for model <a href="matlab:configset.showParameterGroup('hdlcoder_audiofiltering', { 'HDL Code Generation' } )">hdlcoder_audiofiltering</a> for HDL code generation parameters.
### Running HDL checks on the model 'hdlcoder_audiofiltering'.
### Begin compilation of the model 'hdlcoder_audiofiltering'...
### Applying HDL optimizations on the model 'hdlcoder_audiofiltering'...
### The DUT requires an initial pipeline setup latency. Each output port experiences these additional delays.
### Output port 1: 1 cycles.
### Output port 2: 1 cycles.
### Begin model generation.
### Model generation complete.
### Begin VHDL Code Generation for 'hdlcoder_audiofiltering'.
### MESSAGE: The design requires 2 times faster clock with respect to the base rate = 0.00012207.
### Working on hdlcoder_audiofiltering/Audio filter/Filter_left as hdlsrc/hdlcoder_audiofiltering/Filter_left.vhd.
### Working on Audio filter_tc as hdlsrc/hdlcoder_audiofiltering/Audio_filter_tc.vhd.
### Working on hdlcoder_audiofiltering/Audio filter as hdlsrc/hdlcoder_audiofiltering/Audio_filter.vhd.
### Generating package file hdlsrc/hdlcoder_audiofiltering/Audio_filter_pkg.vhd.
### Code Generation for 'hdlcoder_audiofiltering' completed.
### Creating HDL Code Generation Check Report file:///tmp/BR2021ad_1584584_202060/publish_examples4/tp687696c7/hdlsrc/hdlcoder_audiofiltering/Audio_filter_report.html
### HDL check for 'hdlcoder_audiofiltering' complete with 0 errors, 0 warnings, and 1 messages.
### HDL code generation complete.


Поскольку SharingFactor является параметром уровня подсистемы, различные подсистемы на разных уровнях иерархии могут задавать различные значения совместного использования. В примере аудиофильтра фильтры каждого канала используют 3 блока усиления соответственно.
open_system('hdlcoder_audiofiltering/Audio filter/Filter_left');

Можно задать значение «SharingFactor» равным 2 на верхнем уровне DUT для совместного использования фильтров на двух каналах. Кроме того, мы можем задать значение «SharingFactor», равное 3 для каждой из подсистем фильтра, чтобы разрешить совместное использование 3 блоков усиления в каждом канале. Когда код HDL теперь создан, обратите внимание, что левый и правый фильтры были совместно использованы, и у нас есть только один фильтр на верхнем уровне иерархии.
hdlset_param('hdlcoder_audiofiltering/Audio filter', 'SharingFactor', 2); hdlset_param('hdlcoder_audiofiltering/Audio filter/Filter_left', 'SharingFactor', 3); hdlset_param('hdlcoder_audiofiltering/Audio filter/Filter_right', 'SharingFactor', 3); makehdl('hdlcoder_audiofiltering/Audio filter'); open_system('gm_hdlcoder_audiofiltering/Audio filter'); set_param('gm_hdlcoder_audiofiltering', 'SimulationCommand', 'update');
### Generating HDL for 'hdlcoder_audiofiltering/Audio filter'.
### Using the config set for model <a href="matlab:configset.showParameterGroup('hdlcoder_audiofiltering', { 'HDL Code Generation' } )">hdlcoder_audiofiltering</a> for HDL code generation parameters.
### Running HDL checks on the model 'hdlcoder_audiofiltering'.
### Begin compilation of the model 'hdlcoder_audiofiltering'...
### Applying HDL optimizations on the model 'hdlcoder_audiofiltering'...
### The DUT requires an initial pipeline setup latency. Each output port experiences these additional delays.
### Output port 1: 2 cycles.
### Output port 2: 2 cycles.
### Begin model generation.
### Model generation complete.
### Begin VHDL Code Generation for 'hdlcoder_audiofiltering'.
### MESSAGE: The design requires 6 times faster clock with respect to the base rate = 0.00012207.
### Working on hdlcoder_audiofiltering/Audio filter/Filter_left as hdlsrc/hdlcoder_audiofiltering/Filter_left.vhd.
### Working on Audio filter_tc as hdlsrc/hdlcoder_audiofiltering/Audio_filter_tc.vhd.
### Working on hdlcoder_audiofiltering/Audio filter as hdlsrc/hdlcoder_audiofiltering/Audio_filter.vhd.
### Generating package file hdlsrc/hdlcoder_audiofiltering/Audio_filter_pkg.vhd.
### Code Generation for 'hdlcoder_audiofiltering' completed.
### Creating HDL Code Generation Check Report file:///tmp/BR2021ad_1584584_202060/publish_examples4/tp687696c7/hdlsrc/hdlcoder_audiofiltering/Audio_filter_report.html
### HDL check for 'hdlcoder_audiofiltering' complete with 0 errors, 0 warnings, and 1 messages.
### HDL code generation complete.
Кроме того, совместно используются 3 блока усиления в нижней части иерархии (в пределах подсистемы фильтра). В результате мы сократили использование ресурсов с 6 множителей до одного.
open_system('gm_hdlcoder_audiofiltering/Audio filter/Filter_left'); set_param('gm_hdlcoder_audiofiltering', 'SimulationCommand', 'update');

Совместное использование ресурсов может также сочетаться с другими оптимизациями, такими как оптимизация потоковой передачи.
Рассмотрим модель ниже: она содержит 24-элементный векторный путь данных и 3 блока усиления вектора, которые по умолчанию сопоставляются 72 умножителям. Потоковая передача может масштабировать векторный путь данных, в то время как общий доступ может совместно использовать 3 блока усиления.
bdclose all; load_system('hdl_areaopt1'); open_system('hdl_areaopt1/Controller'); set_param('hdl_areaopt1', 'SimulationCommand', 'update');

Чтобы вызвать обе оптимизации, установите значение «StreamingFactor» равным 24, а «SharingFactor» равным 3. Первые уменьшат число умножителей с 72 до 3, а вторые уменьшат 3 скалярных умножителя до 1.
hdlset_param('hdl_areaopt1/Controller', 'StreamingFactor', 24); hdlset_param('hdl_areaopt1/Controller', 'SharingFactor', 3); makehdl('hdl_areaopt1/Controller'); open_system('gm_hdl_areaopt1/Controller'); set_param('gm_hdl_areaopt1', 'SimulationCommand', 'update');
### Generating HDL for 'hdl_areaopt1/Controller'.
### Using the config set for model <a href="matlab:configset.showParameterGroup('hdl_areaopt1', { 'HDL Code Generation' } )">hdl_areaopt1</a> for HDL code generation parameters.
### Running HDL checks on the model 'hdl_areaopt1'.
### Begin compilation of the model 'hdl_areaopt1'...
### Applying HDL optimizations on the model 'hdl_areaopt1'...
### The DUT requires an initial pipeline setup latency. Each output port experiences these additional delays.
### Output port 1: 2 cycles.
### Begin model generation.
### Model generation complete.
### Begin VHDL Code Generation for 'hdl_areaopt1'.
### MESSAGE: The design requires 72 times faster clock with respect to the base rate = 2.
### Working on Controller_tc as hdlsrc/hdl_areaopt1/Controller_tc.vhd.
### Working on hdl_areaopt1/Controller as hdlsrc/hdl_areaopt1/Controller.vhd.
### Generating package file hdlsrc/hdl_areaopt1/Controller_pkg.vhd.
### Code Generation for 'hdl_areaopt1' completed.
### Generating HTML files for code generation report at <a href="matlab:web('/tmp/BR2021ad_1584584_202060/publish_examples4/tp687696c7/hdlsrc/hdl_areaopt1/html/hdl_areaopt1_codegen_rpt.html');">hdl_areaopt1_codegen_rpt.html</a>
### Creating HDL Code Generation Check Report file:///tmp/BR2021ad_1584584_202060/publish_examples4/tp687696c7/hdlsrc/hdl_areaopt1/Controller_report.html
### HDL check for 'hdl_areaopt1' complete with 0 errors, 0 warnings, and 1 messages.
### HDL code generation complete.
