hdlcoder.optimizeDesign

Автоматический итеративный HDL проектирует оптимизацию

Описание

пример

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;

Сконфигурируйте автоматическую итеративную оптимизацию, чтобы остановиться после того, как она достигает тактовой частоты 50 МГц или 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