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

В этом примере показано, как использовать HDL Workflow Advisor, чтобы запустить рабочие процессы HDL от командной строки и 'Экспорта в скрипт' функциональность.

Введение

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

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

  1. Типовой ASIC/FPGA

  2. Тюремщик FPGA

  3. Генерация ядра IP

  4. Ввод-вывод 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.

Setup рабочий процесс

Используйте 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

Любые изменения, которые вы вносите в экспортируемый скрипт, могут также быть импортированы назад в HDL Workflow Advisor в любое время. Для этого убедитесь, что загруженная модель совпадает с моделью, используемой в скрипте, и выберите "Import from script" из меню File.

После импорта все настройки скрипта будут заполнены в HDL Workflow Advisor.

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

В определенных случаях можно постараться не повторно выполнять все шаги в 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 и затем экспортируемый в скрипт для итеративного или автоматизированного использования.