主要内容

开始使用HDL工作流命令行界面

这个例子展示了如何使用HDL工作流顾问从命令行和“导出到脚本”功能运行HDL工作流。

介绍

这个例子是一个循序渐进的指南,帮助您介绍HDL工作流命令行接口。

使用HDL Workflow命令行接口,您可以运行相同的步骤序列,并控制在HDL Workflow Advisor中可用于以下工作流的相同配置设置:

  1. 通用ASIC / FPGA

  2. FPGA交钥匙

  3. IP核生成

  4. 金宝appSimulink实时FPGA I/O

打开模型

在本例中,我们将使用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”,以便我们可以用合成结果注释模型。

您还可以为合成工具指定高级目标。例如,尝试将工具设置为“速度优化”。

另外,更改运行实现的“跳过此任务”复选框,以便导出的脚本也运行此步骤

导出到脚本

在输入了所有初始设置之后,将您的工作流导出到一个脚本,该脚本可以直接从命令行运行,以实现更快的设计迭代。

将文件保存为您喜欢的任何名称。默认值是"hdlworkflow.m"。导出的脚本如下所示:

%--------------------------------------------------------------------------% HDL工作流脚本%由MATLAB 9.0 (R2016b预发布)在2015年12月31日10:40:45生成该脚本使用以下参数值生成:%文件名:'/mathworks/devel/sandbox/cberry/work/demo/ hdworkflow .m'%覆盖:true%评论:正确% Headers: true% DUT: 'hdlcoder_sfir_fixed_stream/DUT'查看修改工作流后的更改。hWC.export('DUT','hdlcoder_sfir_fixed_stream/DUT');%--------------------------------------------------------------------------The MathWorks, Inc.版权所有加载模型load_system (“hdlcoder_sfir_fixed_stream”);将模型恢复为默认HDL参数% hdlrestoreparams (hdlcoder_sfir_fixed_stream / DUT的);模型HDL参数设置模型'hdlcoder_sfir_fixed_stream' HDL参数hdlset_param (“hdlcoder_sfir_fixed_stream”“HDLSubsystem”“hdlcoder_sfir_fixed_stream / DUT”);hdlset_param (“hdlcoder_sfir_fixed_stream”“ReferenceDesign”默认系统带有AXI4-Stream接口);hdlset_param (“hdlcoder_sfir_fixed_stream”“ResetType”“同步”);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”);%%工作流配置设置使用默认设置构造工作流配置对象hWC = hdlcoder。WorkflowConfig (“SynthesisTool”“Xilinx Vivado”“TargetWorkflow”“通用ASIC / FPGA”);指定顶级项目目录中国。ProjectFolder =“hdl_prj”设置运行工作流任务中国。RunTaskGenerateRTLCodeAndTestbench = true;中国。RunTaskCreateProject = true;中国。RunTaskRunSynthesis = true;中国。RunTaskRunImplementation = false;中国。RunTaskAnnotateModelWithSynthesisResult = true;设置“RunTaskGenerateRTLCodeAndTestbench”任务相关属性中国。GenerateRTLCode = true;中国。GenerateRTLTestbench = false;中国。GenerateCosimulationModel = false;中国。CosimulationModelForUseWith ='Mentor Graphics ModelSim';中国。GenerateValidationModel = false;设置“RunTaskCreateProject”任务相关属性中国。Objective = hdlcode .Objective.无;中国。AdditionalProjectCreationTclFiles =设置“RunTaskRunSynthesis”任务相关属性中国。SkipPreRouteTimingAnalysis = false;设置“RunTaskRunImplementation”任务相关属性中国。IgnorePlaceAndRouteErrors = false;设置“RunTaskAnnotateModelWithSynthesisResult”任务的相关属性中国。CriticalPathSource =“pre-route”;中国。CriticalPathNumber = 1;中国。ShowAllPaths = false;中国。ShowDelayData = true;中国。showuniqueppaths = false;中国。ShowEndsOnly = false;验证工作流配置对象hWC.validate;运行工作流hdlcoder.runWorkflow (“hdlcoder_sfir_fixed_stream / DUT”、中国);

从脚本运行工作流

直接运行脚本将执行您的工作流,并将一组紧凑的运行时消息输出到cmd窗口。如果您想查看详细的合成工具输出信息,请单击所需任务头下的相关“合成工具日志:”超链接,在MATLAB编辑器中打开该文件。

>> hdworkflow ###工作流开始。### ++++++++++++++任务生成RTL代码Testbench++++++++++++++# # #生成高密度脂蛋白“hdlcoder_sfir_fixed_stream / DUT”。# # #开始高密度脂蛋白检查。# # #开始硬件描述语言(VHDL)代码一代“hdlcoder_sfir_fixed_stream”。# # #工作hdlcoder_sfir_fixed_stream / DUT / symmetric_fir作为hdl_prj \ hdlsrc \ hdlcoder_sfir_fixed_stream \ symmetric_fir.vhd。# # #工作hdlcoder_sfir_fixed_stream / DUT作为hdl_prj \ hdlsrc \ hdlcoder_sfir_fixed_stream \ DUT.vhd。# # #创建高密度脂蛋白代码一代检查报告DUT_report.html# # #高密度脂蛋白检查“hdlcoder_sfir_fixed_stream”完整的0错误, 0警告,和0消息。# # #高密度脂蛋白代码一代完成了。### ++++++++++++++创建任务项目++++++++++++++# # #生成赛灵思公司Vivado2014.4项目:hdl_prj \ vivado_prj \ DUT_vivado.xpr# # #合成工具日志:hdl_prj \ hdlsrc \ hdlcoder_sfir_fixed_stream \ workflow_task_CreateProject.log# # #任务“创建项目”成功的。### ++++++++++++++任务运行合成++++++++++++++# # #合成工具日志:hdl_prj \ hdlsrc \ hdlcoder_sfir_fixed_stream \ workflow_task_RunSynthesis.log# # #任务“快跑合成”成功的。### ++++++++++++++任务运行实现++++++++++++++# # #合成工具日志:hdl_prj \ hdlsrc \ hdlcoder_sfir_fixed_stream \ workflow_task_RunImplementation.log# # #任务“快跑实现”成功的。### ++++++++++++++任务标注模型合成结果++++++++++++++# # #解析时机文件...# # #匹配“hdlcoder_sfir_fixed_stream / DUT symmetric_fir / m3_out1 '# # #匹配目的地“hdlcoder_sfir_fixed_stream / DUT / y_out_data”# # #高亮显示CP1“hdlcoder_sfir_fixed_stream / DUT symmetric_fir / m3_out1 '“hdlcoder_sfir_fixed_stream / DUT / y_out_data”...# # #点击在这里重置突出显示。# # #的工作流程完成了。

以交互方式运行工作流

HDL Workflow命令行界面也可以交互使用。例如,在运行整个脚本或仅仅运行“Workflow Configuration Settings”部分之后,WorkflowConfig对象hWC将被填充到工作区中:

>> hWC =
带有属性的GenericTurnkeyConfig:
TargetWorkflow:通用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目标:hdlcode .Objective. speedoptimized AdditionalProjectCreationTclFiles: "
TaskRunSynthesis SkipPreRouteTimingAnalysis: false
TaskRunImplementation IgnorePlaceAndRouteErrors: false
TaskAnnotateModelWithSynthesisResult CriticalPathSource: 'pre-route' CriticalPathNumber: 1 ShowAllPaths: false ShowDelayData: true showuniqueppaths: false ShowEndsOnly: false

您可以编辑此配置对象,然后使用修改后的设置运行工作流。例如,由于任务“Run Implementation”在之前的运行中启用,我们可以将关键路径源更改为“post-route”with,并重新运行注释模型任务:

> > hWC.clearAllTasks;> >中国。RunTaskAnnotateModelWithSynthesisResult = true;> >中国。CriticalPathSource =“可支应”

然后直接使用hdlcode . runworkflow命令运行修改后的工作流配置:

> > hdlcoder.runWorkflow (“hdlcoder_led_blinking / led_counter”,中国)

导入脚本到HDL工作流顾问

您对导出脚本所做的任何更改也可以在任何时候导入回HDL Workflow Advisor。要做到这一点,确保加载的模型与脚本中使用的模型相同,并从File菜单中选择“Import from script”。

导入之后,所有的脚本设置都将被填充到HDL Workflow Advisor中。

保存HDL Workflow命令行界面编程脚本以供以后使用

在某些情况下,您可以避免为了执行Advisor中的特定任务而重新运行HDL Workflow Advisor中的所有步骤。例如,在运行IP核生成工作流时,在生成FPGA位流后构建FPGA位流任务时,Advisor工具提供了一个链接,该链接生成要运行程序目标设备的任务。

点击链接hdlworkflow_ProgramTargetDevice.m构建FPGA位流任务生成一个HDL工作流命令行界面脚本,该脚本将只执行程序目标设备任务从现有的hdl_prj目录。因此,您可以避免仅仅为了重新编程目标设备而运行工作流中的所有步骤。

生成的脚本是一个标准的HDL Workflow CLI脚本。当在命令行界面中运行HDL Workflow时程序目标设备任务可以独立于之前的任务运行,只要FPGA位流已经生成。

作为一个相关的注意事项,如果您正在使用下载编程方法程序目标设备任务时,HDL工作流顾问将生成的位流文件复制到Zynq或Intel SoC板上的SD卡上,因此您不需要重新运行程序目标设备任务下载比特流。在Linux启动过程中,FPGA比特流将自动从SD卡重新加载。

总结

HDL Workflow命令行界面为图形化HDL Workflow Advisor提供了一个简单的脚本替代方案。工作流可以最初使用HDL Workflow Advisor进行设置,然后导出到脚本中进行迭代或自动使用。