Этот пример показывает, как использовать HDL Workflow Advisor, чтобы запустить рабочие процессы HDL от командной строки и 'Экспорта в скрипт' функциональность, чтобы создать скрипт файла MATLAB.
Этим примером является пошаговое руководство, которое помогает ввести вас Интерфейсу командной строки Рабочего процесса HDL.
Используя Интерфейс командной строки Рабочего процесса HDL, можно запустить ту же последовательность шагов и управлять теми же параметрами конфигурации, которые доступны в HDL Workflow Advisor для следующих рабочих процессов:
Типичный ASIC/FPGA
Тюремщик FPGA
Генерация ядра IP
Ввод-вывод FPGA Simulink Real-Time
В этом примере мы будем использовать hdlcoder_sfir_fixed_stream модель, но Интерфейс командной строки Рабочего процесса HDL может использоваться с любой моделью, которая работает с упомянутыми выше рабочими процессами.
open_system('hdlcoder_sfir_fixed_stream')
Убедитесь, что желаемые сторонние инструменты включены в путь. Например, чтобы включать Vivado, установленный локально в его местоположении окон по умолчанию, используйте следующую команду:
>> hdlsetuptoolpath('ToolName', 'Xilinx Vivado', 'ToolPath','C:\Xilinx\Vivado\2017.4\bin\vivado.bat');
Затем, запустите советника по вопросам рабочего процесса и выберите соответствующую подсистему как DUT.
Используйте HDL Workflow Advisor, чтобы установить ваш проект с вашими желаемыми настройками, такими как Инструмент Синтеза и Устройство. Запустите путем изменения рабочего процесса на "Типичный ASIC/FPGA" так, чтобы мы могли Аннотировать модель результатами синтеза.
Можно также задать цели высокого уровня для инструмента синтеза. Например, попытайтесь установить инструмент "Ускоряться Оптимизированный".
Кроме того, измените флажок "Skip this task" для Запущенной Реализации так, чтобы экспортируемый скрипт запустил этот шаг также
После того, как все начальные установки были введены, экспортируйте свой рабочий процесс в скрипт, который может быть запущен непосредственно от командной строки для более быстрых итераций проектирования.
Сохраните файл как любое имя, которое вы любите. Значением по умолчанию будет "hdlworkflow.m". Экспортируемый скрипт показывают ниже:
%-------------------------------------------------------------------------- % HDL Workflow Script % Generated with MATLAB 9.0 (R2016b Prerelease) at 10:40:45 on 31/12/2015 % This script was generated using the following parameter values: % Filename : '/mathworks/devel/sandbox/cberry/work/demo/hdlworkflow.m' % Overwrite : true % Comments : true % Headers : true % DUT : 'hdlcoder_sfir_fixed_stream/DUT' % To view changes after modifying the workflow, run the following command: % >> hWC.export('DUT','hdlcoder_sfir_fixed_stream/DUT'); %-------------------------------------------------------------------------- % Copyright 2018 The MathWorks, Inc. %% Load the Model load_system('hdlcoder_sfir_fixed_stream'); %% Restore the Model to default HDL parameters %hdlrestoreparams('hdlcoder_sfir_fixed_stream/DUT'); %% Model HDL Parameters %% Set Model 'hdlcoder_sfir_fixed_stream' HDL parameters hdlset_param('hdlcoder_sfir_fixed_stream', 'HDLSubsystem', 'hdlcoder_sfir_fixed_stream/DUT'); hdlset_param('hdlcoder_sfir_fixed_stream', 'ReferenceDesign', 'Default system with AXI4-Stream interface'); hdlset_param('hdlcoder_sfir_fixed_stream', 'ResetType', 'Synchronous'); hdlset_param('hdlcoder_sfir_fixed_stream', 'SynthesisTool', 'Xilinx Vivado'); hdlset_param('hdlcoder_sfir_fixed_stream', 'SynthesisToolChipFamily', 'Zynq'); hdlset_param('hdlcoder_sfir_fixed_stream', 'SynthesisToolDeviceName', 'xc7z020'); hdlset_param('hdlcoder_sfir_fixed_stream', 'SynthesisToolPackageName', 'clg484'); hdlset_param('hdlcoder_sfir_fixed_stream', 'SynthesisToolSpeedValue', '-1'); hdlset_param('hdlcoder_sfir_fixed_stream', 'TargetDirectory', 'hdl_prj/hdlsrc'); %% Workflow Configuration Settings % Construct the Workflow Configuration Object with default settings hWC = hdlcoder.WorkflowConfig('SynthesisTool','Xilinx Vivado','TargetWorkflow','Generic ASIC/FPGA'); % Specify the top level project directory hWC.ProjectFolder = 'hdl_prj'; % Set Workflow tasks to run hWC.RunTaskGenerateRTLCodeAndTestbench = true; hWC.RunTaskCreateProject = true; hWC.RunTaskRunSynthesis = true; hWC.RunTaskRunImplementation = false; hWC.RunTaskAnnotateModelWithSynthesisResult = true; % Set properties related to 'RunTaskGenerateRTLCodeAndTestbench' Task hWC.GenerateRTLCode = true; hWC.GenerateRTLTestbench = false; hWC.GenerateCosimulationModel = false; hWC.CosimulationModelForUseWith ='Mentor Graphics ModelSim'; hWC.GenerateValidationModel = false; % Set properties related to 'RunTaskCreateProject' Task hWC.Objective = hdlcoder.Objective.None; hWC.AdditionalProjectCreationTclFiles =''; % Set properties related to 'RunTaskRunSynthesis' Task hWC.SkipPreRouteTimingAnalysis = false; % Set properties related to 'RunTaskRunImplementation' Task hWC.IgnorePlaceAndRouteErrors = false; % Set properties related to 'RunTaskAnnotateModelWithSynthesisResult' Task hWC.CriticalPathSource ='pre-route'; hWC.CriticalPathNumber = 1; hWC.ShowAllPaths = false; hWC.ShowDelayData = true; hWC.ShowUniquePaths = false; hWC.ShowEndsOnly = false; % Validate the Workflow Configuration Object hWC.validate; %% Run the workflow hdlcoder.runWorkflow('hdlcoder_sfir_fixed_stream/DUT', hWC);
Выполнение скрипта непосредственно выполнит ваш рабочий процесс и выведет компактный набор сообщений во время выполнения к cmd окну. Если требуется видеть подробную выходную информацию инструмента синтеза, нажмите на соответствующий "Журнал инструмента Synthesis": гиперссылка под желаемым заголовком задачи, чтобы открыть этот файл в редакторе MATLAB.
>> hdlworkflow ### Workflow begin. ### ++++++++++++++ Task Generate RTL Code and Testbench ++++++++++++++ ### Generating HDL for 'hdlcoder_sfir_fixed_stream/DUT'. ### Starting HDL check. ### Begin VHDL Code Generation for 'hdlcoder_sfir_fixed_stream'. ### Working on hdlcoder_sfir_fixed_stream/DUT/symmetric_fir as hdl_prj\hdlsrc\hdlcoder_sfir_fixed_stream\symmetric_fir.vhd. ### Working on hdlcoder_sfir_fixed_stream/DUT as hdl_prj\hdlsrc\hdlcoder_sfir_fixed_stream\DUT.vhd. ### Creating HDL Code Generation Check Report DUT_report.html ### HDL check for 'hdlcoder_sfir_fixed_stream' complete with 0 errors, 0 warnings, and 0 messages. ### HDL code generation complete. ### ++++++++++++++ Task Create Project ++++++++++++++ ### Generating Xilinx Vivado 2014.4 project: hdl_prj\vivado_prj\DUT_vivado.xpr ### Synthesis tool log: hdl_prj\hdlsrc\hdlcoder_sfir_fixed_stream\workflow_task_CreateProject.log ### Task "Create Project" successful. ### ++++++++++++++ Task Run Synthesis ++++++++++++++ ### Synthesis tool log: hdl_prj\hdlsrc\hdlcoder_sfir_fixed_stream\workflow_task_RunSynthesis.log ### Task "Run Synthesis" successful. ### ++++++++++++++ Task Run Implementation ++++++++++++++ ### Synthesis tool log: hdl_prj\hdlsrc\hdlcoder_sfir_fixed_stream\workflow_task_RunImplementation.log ### Task "Run Implementation" successful. ### ++++++++++++++ Task Annotate Model with Synthesis Result ++++++++++++++ ### Parsing the timing file... ### Matched Source = 'hdlcoder_sfir_fixed_stream/DUT/symmetric_fir/m3_out1' ### Matched Destination = 'hdlcoder_sfir_fixed_stream/DUT/y_out_data' ### Highlighting CP 1 from 'hdlcoder_sfir_fixed_stream/DUT/symmetric_fir/m3_out1' to 'hdlcoder_sfir_fixed_stream/DUT/y_out_data' ... ### Click here to reset highlighting. ### Workflow complete.
Интерфейс командной строки Рабочего процесса HDL может также использоваться в интерактивном режиме. Например, или после выполнения целого скрипта или только после раздела "Workflow Configuration Settings", объект WorkflowConfig, hWC, будет заполнен в рабочей области:
>> hWC =
GenericTurnkeyConfig with properties:
SynthesisTool: 'Xilinx Vivado' TargetWorkflow: 'Generic ASIC/FPGA' ProjectFolder: 'hdl_prj'
RunTaskGenerateRTLCodeAndTestbench: true RunTaskCreateProject: true RunTaskRunSynthesis: true RunTaskRunImplementation: true RunTaskAnnotateModelWithSynthesisResult: true
TaskGenerateRTLCodeAndTestbench GenerateRTLCode: true GenerateRTLTestbench: false GenerateCosimulationModel: false CosimulationModelForUseWith: 'Mentor Graphics ModelSim' GenerateValidationModel: false
TaskCreateProject Objective: hdlcoder.Objective.SpeedOptimized AdditionalProjectCreationTclFiles: ''
TaskRunSynthesis SkipPreRouteTimingAnalysis: false
TaskRunImplementation IgnorePlaceAndRouteErrors: false
TaskAnnotateModelWithSynthesisResult CriticalPathSource: 'pre-route' CriticalPathNumber: 1 ShowAllPaths: false ShowDelayData: true ShowUniquePaths: false ShowEndsOnly: false
Можно отредактировать этот объект настройки и затем запустить рабочий процесс с измененными настройками. Например, поскольку задача "Запущенная Реализация" была включена в предыдущем выполнении, мы можем изменить источник критического пути, чтобы "постнаправить" с и повторно выполнить только задачу модели Annotate:
>> hWC.clearAllTasks;
>> hWC.RunTaskAnnotateModelWithSynthesisResult = true;
>> hWC.CriticalPathSource = 'post-route';
Затем запустите измененные настройки рабочего процесса непосредственно с помощью hdlcoder.runWorkflow команды:
>> hdlcoder.runWorkflow('hdlcoder_led_blinking/led_counter', hWC)
Любые изменения, которые вы вносите в экспортируемый скрипт, могут также быть импортированы назад в HDL Workflow Advisor в любое время. Для этого убедитесь, что загруженная модель совпадает с моделью, используемой в скрипте, и выберите "Import from script" из меню File.
После импорта все настройки скрипта будут заполнены в HDL Workflow Advisor.
В определенных случаях можно постараться не повторно выполнять все шаги в HDL Workflow Advisor только, чтобы выполнить определенные задачи в Советнике. Например, при выполнении Рабочего процесса Генерации Ядра IP, после того, как вы генерируете поток битов FPGA в Задаче Build FPGA Bitstream
, Советник обеспечивает ссылку, которая генерирует скрипт, чтобы запустить Задачу Program Target Device
.
Нажмите на ссылку для hdlworkflow_ProgramTargetDevice.m
в Задаче Build FPGA Bitstream
сгенерировать скрипт Интерфейса командной строки Рабочего процесса HDL, который выполнит только Задачу Program Target Device
из существующей hdl_prj директории. Поэтому можно постараться не запускать все шаги в рабочем процессе только, чтобы повторно программировать целевое устройство.
Сгенерированный скрипт является стандартным скриптом CLI Рабочего процесса HDL. Когда рабочий Рабочий процесс HDL в интерфейсе командной строки, Задача Program Target Device
может быть запущена независимая от предыдущих задач, пока поток битов FPGA уже сгенерирован.
Как связанное примечание, если вы используете метод программирования Download
в Задаче Program Target Device
, HDL Workflow Advisor копирует сгенерированный файл потока битов на SD-карту на плате Zynq или Intel SoC, таким образом, вы не должны повторно выполнять Задачу Program Target Device
загрузить поток битов. Поток битов FPGA будет перезагружен от SD-карты автоматически во время Linux, загружают процесс.
Интерфейс командной строки Рабочего процесса HDL обеспечивает легко альтернативу в виде сценария графическому HDL Workflow Advisor. Рабочие процессы могут быть настройкой первоначально с помощью HDL Workflow Advisor и затем экспортируемый в скрипт для итеративного или автоматизированного использования.