Автоматический итеративный HDL разрабатывает оптимизацию
hdlcoder.optimizeDesign(model, optimizationCfg)
hdlcoder.optimizeDesign(model, cpGuidanceFile)
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;
Сконфигурируйте автоматическую итеративную оптимизацию, чтобы остановиться после того, как она достигает частоты часов 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
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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.