Автоматическая итерационная оптимизация проекта
hdlcoder.optimizeDesign(
автоматически оптимизирует сгенерированный HDL-код на основе заданных строений оптимизации.model
, optimizationCfg
)
hdlcoder.optimizeDesign(
регенерирует оптимизированный HDL-код, не перезапуская итеративную оптимизацию, используя данные из предыдущего запуска model
, cpGuidanceFile
)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
model
- Имя моделиИмя модели, заданное как вектор символов.
Пример: 'sfir_fixed'
optimizationCfg
- Настройка оптимизацииhdlcoder.OptimizationConfig
Строение оптимизации, заданная как hdlcoder.OptimizationConfig
объект.
cpGuidanceFile
- Файл, содержащий сохраненные данные оптимизации''
(по умолчанию) | вектор символовФайл, который содержит сохраненные данные окончательной итерации оптимизации, включая относительный путь, заданный как вектор символов. Используйте этот файл, чтобы перегенерировать оптимизированный код, не перезапуская итеративную оптимизацию.
Имя файла cpGuidance.mat
. Вы можете найти файл в имени папки итерации, которое начинается с Final
, которая является подпапкой hdlexpl
.
Пример: 'hdlexpl/Final-11-Dec-2013-23-17-10/cpGuidance.mat'
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.