hdlcoder. Класс OptimizationConfig

Пакет: hdlcoder
Суперклассы:

Объект настройки hdlcoder.optimizeDesign

Описание

Используйте объект hdlcoder.OptimizationConfig установить опции для функции hdlcoder.optimizeDesign.

Максимальная настройка частоты часов

Сконфигурировать hdlcoder.optimizeDesign, чтобы максимизировать частоту часов вашего проекта:

  • Установите ExplorationMode на hdlcoder.OptimizationConfig.ExplorationMode.BestFrequency.

  • Установите ResumptionPoint на значение по умолчанию, ''.

Можно опционально установить IterationLimit и TestbenchGeneration к значениям не по умолчанию. HDL Coder™ игнорирует установку TargetFrequency.

Целевая настройка частоты часов

Сконфигурировать hdlcoder.optimizeDesign, чтобы встретить целевой частоте часов:

  • Установите ExplorationMode на hdlcoder.OptimizationConfig.ExplorationMode.TargetFrequency.

  • Установите TargetFrequency на свою целевую частоту часов.

  • Установите ResumptionPoint на значение по умолчанию, ''

Можно опционально установить IterationLimit и TestbenchGeneration к значениям не по умолчанию.

Возобновитесь от настройки прерывания

Чтобы сконфигурировать hdlcoder.optimizeDesign, чтобы возобновиться после прерывания, задайте ResumptionPoint.

Когда вы устанавливаете ResumptionPoint на значение не по умолчанию, другие свойства проигнорированы.

Конструкция

optimcfg = hdlcoder.OptimizationConfig создает объект hdlcoder.OptimizationConfig для автоматической итеративной оптимизации проекта HDL.

Свойства

развернуть все

Целевой режим оптимизации, заданный как одно из этих значений:

hdlcoder.OptimizationConfig.ExplorationMode.BestFrequencyОптимизирует проект, чтобы попытаться достигнуть максимальной частоты часов
hdlcoder.OptimizationConfig.ExplorationMode.BestFrequency является значением по умолчанию.
hdlcoder.OptimizationConfig.ExplorationMode.TargetFrequencyОптимизирует проект, чтобы попытаться достигнуть заданной целевой частоты часов

Максимальное количество итераций оптимизации перед выходом, заданным как положительное целое число.

Если ExplorationMode является hdlcoder.OptimizationConfig.ExplorationMode.BestFrequency, HDL Coder запускает это количество итераций.

Если ExplorationMode является hdlcoder.OptimizationConfig.ExplorationMode.TargetFrequency, HDL Coder запускается, количество итераций должно было встретить целевой частоте. В противном случае кодер запускает максимальное количество итераций.

Имя папки, которая содержит ранее сгенерированные данные об итерации оптимизации, заданные как вектор символов. Папка является подпапкой hdlexpl, и имя папки начинается с вектора символов, Iter.

Когда вы устанавливаете ResumptionPoint на значение не по умолчанию, hdlcoder.optimizeDesign игнорирует другие свойства объектов настройки.

Пример: 'Iter1-26-Sep-2013-10-19-13'

Целевая частота часов, заданная как двойное в МГц. Задайте, когда ExplorationMode будет hdlcoder.OptimizationConfig.ExplorationMode.TargetFrequency.

Примеры

свернуть все

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

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

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

Смотрите также