exponenta event banner

hdlcoder.optimizeDesign

Автоматическая итеративная оптимизация конструкции ЛПВП

Описание

пример

hdlcoder.optimizeDesign(model, optimizationCfg) автоматически оптимизирует созданный код HDL на основе указанной конфигурации оптимизации.

пример

hdlcoder.optimizeDesign(model, cpGuidanceFile) восстанавливает оптимизированный код HDL без повторного выполнения итеративной оптимизации, используя данные из предыдущего прогона hdlcoder.optimizeDesign.

Примеры

свернуть все

Максимизируйте тактовую частоту для модели, sfir_fixed, выполнив до 10 итераций оптимизации.

Откройте модель и укажите подсистему DUT.

model = 'sfir_fixed';
dutSubsys = 'symmetric_fir';
open_system(model);
hdlset_param(model,'HDLSubsystem',[model,'/',dutSubsys]);

Задайте параметры инструмента синтеза и целевого устройства.

hdlset_param(model,'SynthesisTool','Xilinx ISE', ...
                   'SynthesisToolChipFamily','Zynq', ...
                   'SynthesisToolDeviceName','xc7z030', ...
                   'SynthesisToolPackageName','fbg484', ...
                   'SynthesisToolSpeedValue','-3')

Включить генерацию тестового стенда ЛПВП.

hdlset_param(model,'GenerateHDLTestBench','on');

Сохраните модель.

Необходимо сохранить модель, если требуется регенерировать код позже без повторного выполнения итеративных оптимизаций, или возобновить выполнение, если оно прервано. При использовании hdlcoder.optimizeDesign для регенерации кода или возобновления прерванного прогона HDL Coder™ проверяет контрольную сумму модели и генерирует ошибку, если модель изменилась.

Создайте объект конфигурации оптимизации, oc.

oc = hdlcoder.OptimizationConfig;

Установите предел итерации равным 10.

oc.IterationLimit = 10;

Оптимизация модели.

hdlcoder.optimizeDesign(model,oc)
hdlset_param('sfir_fixed', 'HDLSubsystem', 'sfir_fixed/symmetric_fir');
hdlset_param('sfir_fixed', 'SynthesisTool', 'Xilinx ISE');
hdlset_param('sfir_fixed', 'SynthesisToolChipFamily', 'Zynq');
hdlset_param('sfir_fixed', 'SynthesisToolDeviceName', 'xc7z030');
hdlset_param('sfir_fixed', 'SynthesisToolPackageName', 'fbg484');
hdlset_param('sfir_fixed', 'SynthesisToolSpeedValue', '-3');

Iteration 0
Generate and synthesize HDL code ...
(CP ns) 16.26	(Constraint ns) 5.85	(Elapsed s) 143.66 Iteration 1
Generate and synthesize HDL code ...
(CP ns) 16.26	(Constraint ns) 5.85	(Elapsed s) 278.72 Iteration 2
Generate and synthesize HDL code ...
(CP ns) 10.25	(Constraint ns) 12.73	(Elapsed s) 427.22 Iteration 3
Generate and synthesize HDL code ...
(CP ns) 9.55	(Constraint ns) 9.73	(Elapsed s) 584.37 Iteration 4
Generate and synthesize HDL code ...
(CP ns) 9.55	(Constraint ns) 9.38	(Elapsed s) 741.04 Iteration 5
Generate and synthesize HDL code ...
Exiting because critical path cannot be further improved.
Summary report: summary.html
Achieved Critical Path (CP) Latency : 9.55 ns		Elapsed : 741.04 s
Iteration 0: (CP ns) 16.26	(Constraint ns) 5.85	(Elapsed s) 143.66
Iteration 1: (CP ns) 16.26	(Constraint ns) 5.85	(Elapsed s) 278.72
Iteration 2: (CP ns) 10.25	(Constraint ns) 12.73	(Elapsed s) 427.22
Iteration 3: (CP ns) 9.55	(Constraint ns) 9.73	(Elapsed s) 584.37
Iteration 4: (CP ns) 9.55	(Constraint ns) 9.38	(Elapsed s) 741.04
Final results are saved in
    /tmp/hdlsrc/sfir_fixed/hdlexpl/Final-07-Jan-2014-17-04-41
Validation model: gm_sfir_fixed_vnl

Затем кодер HDL останавливается после пяти итераций, поскольку четвертая и пятая итерации имели одинаковый критический путь, что указывает на то, что кодер нашел минимальный критический путь. Максимальная тактовая частота проекта после оптимизации составляет 1/9,55 нс или 104,71 МГц.

Оптимизация модели, sfir_fixedдо определенной тактовой частоты 50 МГц путем выполнения до 10 итераций оптимизации и не создавать тестовый стенд ЛПВП.

Откройте модель и укажите подсистему DUT.

model = 'sfir_fixed';
dutSubsys = 'symmetric_fir';
open_system(model);
hdlset_param(model,'HDLSubsystem',[model,'/',dutSubsys]);

Задайте параметры инструмента синтеза и целевого устройства.

hdlset_param(model,'SynthesisTool','Xilinx ISE', ...
                   'SynthesisToolChipFamily','Zynq', ...
                   'SynthesisToolDeviceName','xc7z030', ...
                   'SynthesisToolPackageName','fbg484', ...
                   'SynthesisToolSpeedValue','-3')

Отключить формирование тестового стенда ЛПВП.

hdlset_param(model,'GenerateHDLTestBench','off');

Сохраните модель.

Необходимо сохранить модель, если требуется регенерировать код позже без повторного выполнения итеративных оптимизаций, или возобновить выполнение, если оно прервано. При использовании hdlcoder.optimizeDesign для регенерации кода или возобновления прерванного прогона кодер HDL проверяет контрольную сумму модели и генерирует ошибку, если модель изменилась.

Создайте объект конфигурации оптимизации, oc.

oc = hdlcoder.OptimizationConfig;

Настройте автоматическую итеративную оптимизацию для остановки после достижения тактовой частоты 50MHz или 10 итераций в зависимости от того, что наступит раньше.

oc.ExplorationMode = ...
    hdlcoder.OptimizationConfig.ExplorationMode.TargetFrequency;
oc.TargetFrequency = 50;
oc.IterationLimit = 10; =  

Оптимизация модели.

hdlcoder.optimizeDesign(model,oc)
hdlset_param('sfir_fixed','GenerateHDLTestBench','off');
hdlset_param('sfir_fixed','HDLSubsystem','sfir_fixed/symmetric_fir');
hdlset_param('sfir_fixed','SynthesisTool','Xilinx ISE');
hdlset_param('sfir_fixed','SynthesisToolChipFamily','Zynq');
hdlset_param('sfir_fixed','SynthesisToolDeviceName','xc7z030');
hdlset_param('sfir_fixed','SynthesisToolPackageName','fbg484');
hdlset_param('sfir_fixed','SynthesisToolSpeedValue','-3');

Iteration 0
Generate and synthesize HDL code ...
(CP ns) 16.26	(Constraint ns) 20.00	(Elapsed s) 134.02 Iteration 1
Generate and synthesize HDL code ...
Exiting because constraint (20.00 ns) has been met (16.26 ns).
Summary report: summary.html
Achieved Critical Path (CP) Latency : 16.26 ns		Elapsed : 134.02 s
Iteration 0: (CP ns) 16.26	(Constraint ns) 20.00	(Elapsed s) 134.02
Final results are saved in
    /tmp/hdlsrc/sfir_fixed/hdlexpl/Final-07-Jan-2014-17-07-14
Validation model: gm_sfir_fixed_vnl

Затем кодер HDL останавливается после одной итерации, так как он достиг целевой тактовой частоты. Критический тракт - 16,26 нс, тактовая частота 61,50 ГГц.

Выполнение дополнительных итераций оптимизации для модели, sfir_fixed, используя сохраненные данные итерации, поскольку вы завершили работу в середине предыдущего прогона.

Откройте модель и укажите подсистему DUT.

model = 'sfir_fixed';
dutSubsys = 'symmetric_fir';
open_system(model);
hdlset_param(model,'HDLSubsystem',[model,'/',dutSubsys]);

Установите для инструмента синтеза и параметров целевого устройства те же значения, что и в прерванном прогоне.

hdlset_param(model,'SynthesisTool','Xilinx ISE', ...
                   'SynthesisToolChipFamily','Zynq', ...
                   'SynthesisToolDeviceName','xc7z030', ...
                   'SynthesisToolPackageName','fbg484', ...
                   'SynthesisToolSpeedValue','-3')

Включить генерацию тестового стенда ЛПВП.

hdlset_param(model,'GenerateHDLTestBench','on');

Создайте объект конфигурации оптимизации, oc.

oc = hdlcoder.OptimizationConfig;

Настройте автоматическую итеративную оптимизацию для выполнения с использованием данных из первой итерации предыдущего выполнения.

oc.ResumptionPoint = 'Iter5-07-Jan-2014-17-04-29';

Оптимизация модели.

hdlcoder.optimizeDesign(model,oc)
hdlset_param('sfir_fixed','HDLSubsystem','sfir_fixed/symmetric_fir');
hdlset_param('sfir_fixed','SynthesisTool','Xilinx ISE');
hdlset_param('sfir_fixed','SynthesisToolChipFamily','Zynq');
hdlset_param('sfir_fixed','SynthesisToolDeviceName','xc7z030');
hdlset_param('sfir_fixed','SynthesisToolPackageName','fbg484');
hdlset_param('sfir_fixed','SynthesisToolSpeedValue','-3');

Try to resume from resumption point: Iter5-07-Jan-2014-17-04-29
Iteration 5
Generate and synthesize HDL code ...
Exiting because critical path cannot be further improved.
Summary report: summary.html
Achieved Critical Path (CP) Latency : 9.55 ns		Elapsed : 741.04 s
Iteration 0: (CP ns) 16.26	(Constraint ns) 5.85	(Elapsed s) 143.66
Iteration 1: (CP ns) 16.26	(Constraint ns) 5.85	(Elapsed s) 278.72
Iteration 2: (CP ns) 10.25	(Constraint ns) 12.73	(Elapsed s) 427.22
Iteration 3: (CP ns) 9.55	(Constraint ns) 9.73	(Elapsed s) 584.37
Iteration 4: (CP ns) 9.55	(Constraint ns) 9.38	(Elapsed s) 741.04
Final results are saved in
    /tmp/hdlsrc/sfir_fixed/hdlexpl/Final-07-Jan-2014-17-07-30
Validation model: gm_sfir_fixed_vnl

Затем кодер останавливается после одной дополнительной итерации, поскольку он достиг целевой тактовой частоты. Критический тракт - 9,55 нс, или тактовая частота 104,71 МГц.

Регенерация кода HDL с использованием исходной модели. sfir_fixedи сохраненные данные из окончательной итерации предыдущего прогона оптимизации.

Откройте модель и укажите подсистему DUT.

model = 'sfir_fixed';
dutSubsys = 'symmetric_fir';
open_system(model);
hdlset_param(model,'HDLSubsystem',[model,'/',dutSubsys]);

Установите для инструмента синтеза и параметров целевого устройства те же значения, что и в исходном прогоне.

hdlset_param(model,'SynthesisTool','Xilinx ISE', ...
                   'SynthesisToolChipFamily','Zynq', ...
                   'SynthesisToolDeviceName','xc7z030', ...
                   'SynthesisToolPackageName','fbg484', ...
                   'SynthesisToolSpeedValue','-3')

Регенерация кода HDL с использованием сохраненных данных оптимизации из cpGuidance.mat.

hdlcoder.optimizeDesign(model, 
  'hdlsrc/sfir_fixed/hdlexpl/Final-19-Dec-2013-23-05-04/cpGuidance.mat')
Final results are saved in 
  /tmp/hdlsrc/sfir_fixed/hdlexpl/Final-07-Jan-2014-17-16-52
Validation model: gm_sfir_fixed_vnl

Входные аргументы

свернуть все

Имя модели, указанное как символьный вектор.

Пример: 'sfir_fixed'

Конфигурация оптимизации, указанная как hdlcoder.OptimizationConfig объект.

Файл, содержащий сохраненные данные из конечной итерации оптимизации, включая относительный путь, указанный как символьный вектор. Этот файл используется для регенерации оптимизированного кода без повторного выполнения итеративной оптимизации.

Имя файла: cpGuidance.mat. Файл можно найти в имени папки итерации, которая начинается с Final, которая является подпапкой hdlexpl.

Пример: 'hdlexpl/Final-11-Dec-2013-23-17-10/cpGuidance.mat'

Представлен в R2014a