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

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

Введение

Этим примером является пошаговое руководство, которое помогает ввести вас Интерфейсу командной строки Рабочего процесса 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 и затем экспортируемый в скрипт для итеративного или автоматизированного использования.