exponenta event banner

Начало работы с интерфейсом командной строки рабочего процесса HDL

В этом примере показано, как использовать помощник по рабочим процессам HDL для выполнения рабочих процессов HDL из командной строки и функции «Экспорт в сценарий».

Введение

Этот пример представляет собой пошаговое руководство, которое поможет ознакомиться с интерфейсом командной строки рабочего процесса HDL.

С помощью интерфейса командной строки рабочего процесса HDL можно выполнить одну и ту же последовательность шагов и управлять теми же параметрами конфигурации, которые доступны в помощнике по рабочим процессам HDL для следующих рабочих процессов:

  1. Общий ASIC/FPGA

  2. FPGA «под ключ»

  3. Поколение ядер IP

  4. Интерфейс ввода-вывода FPGA в режиме реального времени Simulink

Открытие модели

В этом примере мы будем использовать модель hdlcoder_sfir_fixed_stream, но интерфейс командной строки HDL Workflow можно использовать с любой моделью, которая работает с рабочими процессами, перечисленными выше.

open_system('hdlcoder_sfir_fixed_stream')

Убедитесь, что в путь включены необходимые инструменты сторонних производителей. Например, чтобы включить программу Vivado, установленную локально, в расположение окон по умолчанию, используйте следующую команду:

>> hdlsetuptoolpath('ToolName', 'Xilinx Vivado', 'ToolPath','C:\Xilinx\Vivado\2017.4\bin\vivado.bat');

Затем запустите консультант по рабочим процессам и выберите соответствующую подсистему в качестве DUT.

Настройка рабочего процесса

Используйте помощник по рабочим процессам HDL для настройки проекта с требуемыми параметрами, такими как инструмент синтеза и устройство. Начните с изменения рабочего процесса на «Generic ASIC/FPGA», чтобы мы могли аннотировать модель с результатами синтеза.

Можно также указать цели высокого уровня для инструмента синтеза. Например, попробуйте установить для инструмента значение «Speed Optimized».

Кроме того, установите флажок «Пропустить эту задачу» для выполнения реализации, чтобы экспортированный сценарий также запускал этот шаг.

Экспорт в сценарий

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

Сохраните файл под любым именем. По умолчанию используется значение «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 tool log:» под нужным заголовком задачи, чтобы открыть этот файл в редакторе 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 также может использоваться в интерактивном режиме. Например, после выполнения всего сценария или только раздела «Настройки конфигурации рабочего процесса» объект 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

Можно изменить этот объект конфигурации, а затем запустить рабочий процесс с измененными параметрами. Например, поскольку задача «Run Implementation» была включена в предыдущем прогоне, мы можем изменить критический источник пути на «post-route» с помощью и повторно запустить только задачу Annotate model:

>> hWC.clearAllTasks;
>> hWC.RunTaskAnnotateModelWithSynthesisResult = true;
>> hWC.CriticalPathSource = 'post-route';

Затем выполните измененные конфигурации рабочего процесса непосредственно с помощью команды hdlcoder.runWorkflow:

>> hdlcoder.runWorkflow('hdlcoder_led_blinking/led_counter', hWC)

Импорт сценария в помощник по рабочим процессам HDL

Любые изменения, внесенные в экспортированный сценарий, также могут быть импортированы обратно в помощник по рабочим процессам HDL в любое время. Для этого убедитесь, что загруженная модель совпадает с моделью, используемой в сценарии, и выберите «Импорт из сценария» в меню «Файл».

После импорта все параметры сценария будут заполнены в помощнике по рабочим процессам HDL.

Сохранение сценария программирования интерфейса командной строки рабочего процесса HDL для последующего использования

В некоторых случаях можно избежать повторного выполнения всех шагов в консультанте по рабочим процессам HDL только для выполнения определенных задач в консультанте. Например, при выполнении рабочего процесса генерации IP Core после генерации битового потока 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. Рабочие процессы можно сначала настроить с помощью помощника по рабочим процессам HDL, а затем экспортировать в сценарий для итеративного или автоматического использования.