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')

Включите генерацию испытательного стенда HDL.

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 Coder останавливается после пяти итераций, потому что четвертая и пятая итерации имели одинаковый критический путь, что указывает на то, что кодер нашел минимальный критический путь. Максимальный проект тактовая частота после оптимизации составляет 1/9,55 нс, или 104,71 МГц.

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

Откройте модель и укажите подсистему 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.

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

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

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

Создайте объект строения оптимизации, 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 Coder останавливается после одной итерации, потому что он достиг целевой тактовой частоты. Критический путь - 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')

Включите генерацию испытательного стенда HDL.

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