版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第三章
Vivado集成开发环境概述
3.1软件介绍
3.2设计导论3.3设计套件目录3.4调试过程Part1软件介绍3.1软件介绍Vivado
Vivado是由Xilinx公司推出的一款集成式设计环境(IDE),它主要用于FPGA设计和开发。这款工具整合了综合、实现、布局布线等关键工具,为数字电路设计提供了全面的支持。在Vivado中,综合器可以将高级语言描述的设计转换为逻辑电路,而实现器则可以将逻辑电路映射到目标FPGA,并进行布局布线。Vivado的强大功能和易用性使其在FPGA设计领域备受欢迎,广泛应用于通信、嵌入式系统、数字信号处理等领域。它支持多种数据输入方式,内嵌综合器以及仿真器,可以完成从新建工程、设计输入、分析综合、约束输入到
设计实现,最终生成bitstream下载到FPGA的全部开发流程。本书以Vivado2024.1版本为例。3.1.1软件安装软件安装步骤在xilinx官网搜索或点击下方链接下载(),根据电脑系统下载Vivado2024.1版本安装包。双击打开“FPGAsAdaptiveSoCsUnified2024.105222023Win64.exe”文件。后面按照安装步骤提示完成软件的安装。3.1.1软件安装软件安装步骤此过程中需要输入下载时的AMD的账号和密码,选择自己需要的版本进行安装3.1.1软件安装软件安装步骤选择对应的工具,这里就选择Vivado,然后点击下一步3.1.1软件安装软件安装步骤根据个人的需要选择对应的FPGA的组件,这里选择的器件越多,电脑所需要的内存越多。3.1.1软件安装软件安装步骤全部都选择同意,然后继续点击下一步3.1.1软件安装软件安装这里可以调整软件的安装目录,安装在合适的位置。切记不要安装在系统盘,否则可能直接爆满。3.1.1软件安装软件破解软件安装完成后,停留在此窗口。单击“LoadLicense”,即可加载破解文件。破解文件: /s/1GWGnLNiMOuwbpmWGgwylXw?pwd=bn8v
提取码:bn8v加载完成之后会弹出successful的窗口,则表示破解成功。3.1.2用户界面软件的主界面Vivado2024.1软件的主界面如左图所示。主界面主要包含菜单栏、主工具栏、流程导航窗口、数据窗口区域、状态栏和结果窗口等部分。从上到下依次为设置(Settings)、添加工程(Addsources)、语言模板(LanguageTemplates)、IP目录(IPCatalog)、IP集成器(IPINTEGRATOR)、块设计(CreateBlockDesign)、仿真(RunSimulation)、RTL分析、综合(RunSynthesis、编程和调试(PROGRAMANDDEBUG)等。3.1.2用户界面菜单常见操作该菜单主要是对项目的一些操作。“Flownavigator”:提供对命令和工具的访问,包含从设计输入到生成比特流的整个过程。“AddSources”:添加源文件。“RunSimulation”:开始仿真。“RunSynthes”:分析综合。“Sources窗口”:显示层次结构(Hierarchy)、IP源文件(IPSources)、库(Libraries)和编译顺序(CompileOrder)的视图。“Netlist窗口”:提供分析后的(elaborated)或综合后的(synthesized)逻辑设计的分层视图。“ProjectSummary”:提供了当前工程的摘要信息,它在运行设计命令时动态地更新。用于显示和编辑基于文本的文件和报告的TextEditor。3.1.2用户界面常用操作主工具栏:主工具栏提供了对VivadoIDE中最常用命令的单击访问。主菜单:主菜单栏提供对VivadoIDE命令的访问。常用的命令会一直显示(例如,File>Project>Open),而其他命令只在设计活动时显示(例如,Reports>ReportDRC)。一些菜单命令有一个相关的键盘快捷方式,该快捷方式列在该菜单命令的旁边。窗口布局(Layout)选择器:VivadoIDE提供预定义的窗口布局,以方便设计过程中的各种任务。布局选择器使大家能够轻松地更改窗口布局,大家也可以使用菜单栏中的“Layout”菜单来更改窗口布局。3.1.2用户界面常用操作
原理图(Schematic)窗口,器件(Device)窗口,封装(Package)窗口。“TclConsole”:允许您输入Tcl命令,并查看以前的命令和输出的历史记录。“Messages”:显示当前设计的所有消息,按进程和严重性分类,包括“Error”,
“Critical”,“Warning”等等
“Log”:显示由综合、实现和仿真run创建的日志文件。“Reports”:提供对整个设计流程中的活动run所生成的报告的快速访问。“DesignsRuns”:管理当前工程的runs。3.1.3工程创建工程创建启动Vivado,在Vivado开发环境里点击“CreateProject”,创建新工程。弹出窗口点击“Next”,在弹出的窗口中输入工程名和存放的工程路径,工程名在这里取“project_1”;工程路径不能含有中文字符,路径名也不宜太长。点击“Next”后,在后面弹出的窗口,在工程类型中选择“Project_1”;目标语言Targetlanguage中选择“Verilog”。在添加文件窗口中直接点击“Next”,不添加任何文件。在器件选择页面中根据自己使用的FPGA开发板进行选择。点击“Finish”完成工程创建。3.1.3工程创建工程创建启动Vivado,在Vivado开发环境里点击“CreateProject”,创建新工程。弹出窗口点击“Next”,在弹出的窗口中输入工程名和存放的工程路径,工程名在这里取“project_1”;工程路径不能含有中文字符,路径名也不宜太长。点击“Next”后,在后面弹出的窗口,在工程类型中选择“Project_1”;目标语言Targetlanguage中选择“Verilog”。在添加文件窗口中直接点击“Next”,不添加任何文件。在器件选择页面中根据自己使用的FPGA开发板进行选择。点击“Finish”完成工程创建。3.1.3工程创建工程创建启动Vivado,在Vivado开发环境里点击“CreateProject”,创建新工程。弹出窗口点击“Next”,在弹出的窗口中输入工程名和存放的工程路径,工程名在这里取“project_1”;工程路径不能含有中文字符,路径名也不宜太长。点击“Next”后,在后面弹出的窗口,在工程类型中选择“Project_1”;目标语言Targetlanguage中选择“Verilog”。在添加文件窗口中直接点击“Next”,不添加任何文件。在器件选择页面中根据自己使用的FPGA开发板进行选择。点击“Finish”完成工程创建。3.1.3工程创建工程创建启动Vivado,在Vivado开发环境里点击“CreateProject”,创建新工程。弹出窗口点击“Next”,在弹出的窗口中输入工程名和存放的工程路径,工程名在这里取“ex1”;工程路径不能含有中文字符,路径名也不宜太长。点击“Next”后,在后面弹出的窗口,在工程类型中选择“ex1”;目标语言Targetlanguage中选择“Verilog”。在添加文件窗口中直接点击“Next”,不添加任何文件。在器件选择页面中根据自己使用的FPGA开发板进行选择。点击“Finish”完成工程创建。3.1.3工程创建创建VerilogHDL文件
工程创建完成后随之进入到Vivido软件界面。点击PROJECTMANAGER下的AddSources(或者快捷键Alt+A)。
选择“Addorcreatedesignsources”添加或创建设计源文件,点击“Next”。注:拆创建仿真文件是选择“Addorcreatesimulationsources”即可。选择创建文件“CreateFile”。文件命名为“ex1”,点击“OK”。再点击“Finish”完成“ex1.v”文件的添加。在弹出的DefineModule模块定义中,可以指定“ex1.v”文件的模块名称,默认不变为“ex1”。双击“ex1.v”打开文件,可以编辑代码。3.1.4实例讲解简单加法器设计c为a加b,当a,b都为1时c为2,验证了所设计得代码是正确的。设计文件代码:modulev2(a,b,c);inputa,b;output[1:0]c;assignc=a+b;endmodule测试文件代码:modulev2_tb;rega,b;wire[1:0]c;initialbegina=0;b=0;#33a=0;b=1;#44a=1;b=1;#22a=1;b=0;#55a=0;b=0;#33a=0;b=1;#44a=1;b=1;#22a=1;b=0;#55a=0;b=0;endv1u1(.a(a),.b(b),.c(c));endmodule3.1.5Vivado的功能特性VivadoDesignSuite提供全新构建的SoC增强型、以IP和系统为中心的下一代开发环境,以解决系统级集成和实现的生产力瓶颈。与Xilinx前一代的设计平台ISE相比,Vivado在各方面的性能都有了明显的提升,而且,随着Vivado环境的不断优化,其性能还会进一步提高。右表给出了Vivado在性能提升方面的说明。Vivado集成设计环境支持下面业界已经建立的设计标准:(1)Tel;(2)AXI4,IP-XACT;(3)Synopsys设计约束(SynopsysDesignConstraints,SDC);(4)Verilog,VHDL,SystemVerilog;(5)SystemC,C,C++。VivadoDesignSuite加速设计生产力加速实现加速集成和验证(1)实现速度提升4倍;(1)IP集成速度提高4倍;(2)器件利用率提升20%;(2)RTL仿真速度提高3倍;(3)最多3个速度级性能优势;(3)C/C++至RTL的转换速度提高4倍;(4)功耗降低35%;
(5)增量编译速度提高一倍;
通过这些支持,使得:(1)电子设计自动化(ElectronicDesignAutomation,EDA)生态系统更好地支持Vivado设计套件。此外,Vivado设计套件中集成了很多新的第三方工具。(2)本质上,Vivado设计套件是基于Tcl的脚本。因此支持Synopsys设计约束(SDC)和Xilinx设计约束(XilinxDesignConstraints,XDC)格式。(3)除了提供传统上对Verilog、VHDL和SystemVerilog综合的支持,Vivado高级综合HLS也可以使用C、C++或者SystemC语言定义逻辑。(4)使用标准的IP互连协议,例如AXI4和IP-XACT。这样,使得更快和更容易地实现系统级设计集成。3.1.6Vivado的五大特征与前一代开发平台ISE相比,Xilinx新一代开发平台Vivado有5个显著的特征,这5个特征也体现了其与ISE的重大差异。统一的数据模型——在ISE中,综合后的网表文件为.ngc,Translate之后的网表文件为.ngd,布局、布线之后的网表文件为.ncd;在Vivado下,综合和实现之后的网表文件均为.dcp。DCP成为统一的数据模型。业界标准的约束描述方式——在Vivado中,约束采用XDC描述,它是在SDC基础上进行了扩展,添加了Xilinx特定的物理约束。相比于ISE中的UCF描述约束的方式,XDC更为灵活。融合Tcl脚本——Vivado融合了Tcl脚本,几乎所有的菜单操作都有相应的Tcl命令,而且用Tcl可以实现菜单无法操作的功能,如编辑综合后的网表文件。事实上,XDC本身就是Tcl命令。除此之外,用户也可以编写自己的Tcl命令嵌入到Vivado中。Vivado提供了Tcl控制台(TclConsole)和TelShell用来运行Tcl脚本。3.1.6Vivado的五大特征以IP为核心的设计理念——Vivado提供了以IP为核心的设计理念,以实现最大化的设计复用。VivadoHLS和SystemGenerator两个工具都可以将自身设计封装为IP嵌入到VivadoIPCatalog中。此外,用户自己的工程也可以通过Vivado下的IPPackager封装为IP嵌入到VivadoIPCatalog中。体现UltraFast设计方法学——Xilinx提出的UltraFast设计方法学其根本宗旨是将问题尽可能地放在设计初期解决,而不要等到设计实现阶段才着手解决。因为在设计初期解决问题的方式更为灵活,措施也更为多样;而到后期,往往只能在局部小范围内修正,常会出现调试好了A模块,B模块又出问题的情况,甚至面临不得不返工的窘境。Vivado将这一方法学贯穿其中,在RTL设计分析阶段可以进行设计检查,检查内容包括代码风格和时序约束。在综合后可以分析时序,发现潜在的布线拥塞问题。与ISE不同的是,Vivado综合后的时序报告是可信任的。3.1.6Vivado的五大特征统一的数据模型DCPVivado以IP为核心的设计理念
3.1.7Vivado的两种工作模式
Vivado设计套件允许设计者根据自己的习惯,使用不同的方法运行工具。设计者可以使用基于工程的方法自动管理设计过程和设计数据,也就是所说的工程模式(ProjectMod)。当在工程模式下时,在磁盘上创建一个目录结构,用于管理设计源文件,运行结果和跟踪工程状态。通过一个运行结构,来管理自动地综合和实现过程,以及跟踪运行状态。可以通过单击鼠标,在Vivado集成环境内运行完整的设计流程。另一种方法是,设计者可以选择基于Tcl脚本的编译风格方式。通过这种方式,设计者自己可以管理源文件和设计流程。这种方式也称为非工程模式(Non-ProjectMode)。当在非工程模式下时,通过源文件当前所在的位置来访问源文件,以及通过存储器中的流程来编译设计。①通过使用Tcl命令,可以单独运行设计中的每一步;②使用Tcl命令,可以设置设计参数和实现选项;③使用Tcl命令,设计者可以在设计处理的每个阶段,保存设计检查点和创建报告;
④此外,在每个设计阶段,设计者可以打开Vivado集成设计环境,用于设计分析和分配约束。当设计者正在查看存储器中活动的设计时,会自动地提交流程中的变化。比如:设计者可以保存对新约束文件的更新或者设计检查点。3.1.7Vivado的两种工作模式在工程模式下,Vivado集成设计环境跟踪设计历史,保存相关的设计信息。然而,在这种模式下,由于很多是过程自动处理的,所以设计者很少能控制处理的过程。例如在每次运行时,只是生成一组标准的报告文件。在工程模式下,提供了下面的自动处理功能:
(1)源文件管理和状态;(2)通过VivadoIP目录和Vivado集成器,实现IP配置和集成;(3)综合信息和自动生成标准的报告;(4)保存和重用工具设置和设计配置;(5)用多个综合和实现运行,进行探索;(6)约束设置的使用和管理;(7)运行结果的管理和状态;(8)流程导航;(9)工程总结。在非工程模式下,通过使用Tcl命令,执行每个行为。在存储器中,执行所有的处理。因此,不会自动生成文件或者报告。当设计者每次对设计进行编译的时候,设计者必须定义所有的源文件,设置所有工具和设计配置的参数,启动所有的实现命令,以及指定所需要生成的报告文件。由于没有在磁盘上创建一个工程,源文件保留在它们最初的位置,只在设计者指定的位置创建运行输出。这个流程充分发挥Tcl命令的能力,可以充分地控制整个设计过程。流程元素工程模式非工程模式设计源文件管理自动手动流程导航引导手动流程定制有限无限报告自动手动分析阶段只有设计设计和设计检查点工程模式和非工程模式特性比较Part2设计导论3.2设计流程(1)Vivado下的FPGA设计流程Vivado是Xilinx新一代针对7系列及后续FPGA的开发平台。在Vivado下的FPGA设计流程右图所示。可以看到,借助Vivado能够完成FPGA的所有流程,包括设计输入、设计综合、设计实现、设计调试和设计验证。相比于Xilinx前一代开发平台ISE,Vivado的设计实现环节较为复杂,多了几个步骤,如右图中设计实现框内的斜体字所示。这几个步骤是可选的,但布局和布线则是必需的。正是这些步骤以及每个步骤自身的参数选项使得Vivado可以构造不同的实现策略。3.2设计流程设计优化可进一步对综合后的网表进行优化,如可以去除无负载的逻辑电路,可以优化BRAM功耗(优化BRAM的功耗是在设计优化阶段而非功耗优化阶段完成的)。功耗优化则是借助触发器的使能信号降低设计的动态功耗。尽管功耗优化可以在布局前运行也可以在布局后运行,但为了达到更好的优化结果,最好在布局之前运行。布局之后的功耗优化是在保证时序的前提下进行的,因而优化受到限制。物理优化可进一步改善设计时序。对于关键时序路径上的大扇出信号,通过复制驱动降低扇出,改善延时;对于关键时序路径上的与DSP48相关的寄存器,可以根据时序需要将寄存器从SLICE中移入到DSP48内部或从DSP48内部移出到SLICE中;对于关键路径上的与BRAM相关的寄存器,可以根据时序需要将寄存器从SLICE中移入到BRAM内部或从BRAM内部移出到SLICE中。3.2设计流程从图中可以看出:(1)Vivado设计套件提供了一个环境,该环境用于配置、实现、验证和集成IP。(2)通过Vivado提供的IP目录,就可以快速地对XilinxIP、第三方IP和用户IP进行例化和配置。IP的范围包括:逻辑、嵌入式处理器、数字信号处理(DigitalSignalProcessing,DSP)模块或者基于C的DSP算法设计。一方面,将用户IP进行封装,并且使封装的IP符合IP-XACT协议。这样,就可以在VivadoIP目录中使用它;另一方面,XilinxIP利用AXI4互连标准,从而实现更快速的系统级集成。在设计中,设计者可以通过RTL或者网表格式使用这些已经存在的IP。Vivado系统级设计流程图3.2设计流程(3)可以在设计流程的任意一个阶段,对设计进行分析和验证。(4)对设计进行分析,包括:逻辑仿真、I/O和时钟规划、功耗分析、时序分析、设计规则检查(DesignRuleCheck,DRC)、设计逻辑的可视化、实现结果的分析和修改以及编程和调试。(5)通过AMBAAXI4互连协议,VivadoIP集成器环境使得设计者能够将不同的IP组合在一起。设计者可以使用块图风格的接口交互式地配置和连接IP,并且可以像原理图那样,通过绘制DRC助手很容易地将整个接口连接在一起。然后,对这些IP块设计进行封装,将其当作单个的设计源。通过在一个设计工程或者在多个工程之间进行共享,来使用设计块。(6)VivadoIP集成器环境是主要的接口,通过使用Zynq器件或者MicroBlaze处理器,创建嵌入式处理器设计。Vivado设计套件也集成了传统的XPS,用于创建、配置和管理MicroBlaze微处理器软核。在VivadoIDE环境中,集成和管理这些核。如果设计者选择编辑XPS的源设计,将自动启动XPS工具。设计者也可以将XPS作为一个单独的工具运行,然后将最终的输出文件作为VivadoIDE环境下的源文件。在VivadoIDE环境中,XPS不能用于Zynq器件,而是使用新的IP集成器环境。3.2设计流程(7)对于数字信号处理方面的应用,Vivado提供了两种设计方法:①使用XilinxSystemGenerator建模数字信号处理:Vivado设计套件集成了XilinxSystemGenerator工具,用于实现DSP的功能。当设计者编辑一个DSP源设计时,自动启动SystemGenerator。设计者可以将SystemGenerator作为一个独立运行的工具,并且将其最终的输出文件作为VivadoIDE的源文件。②使用高级综合工具(High-LevelSynthesis,HLS)建模数字信号处理:Vivado设计套件集成了VivadoHLS,它提供了基于C语言的DSP功能,来自VivadoHLS的RTL输出,作为VivadoIDE的RTL源文件。在VivadoIP封装器中,将RTL的输出封装成符合IP-XACT标准的IP。这样,在VivadoIP目录中就变成了可用的IP。设计者也可以在SystemGenerator逻辑中使用VivadoHLS逻辑模块。(8)Vivado设计套件中包含Vivado综合、Vivado实现、Vivado时序分析、Vivado功耗分析和比特流生成。通过下面的一种方式:①VivadoIDE;②批处理Tcl脚本;③Vivado设计套件的TclShell;④VivadoIDETcl控制台下,输人Tcl命令。设计者就可以运行整个的设计流程。3.2设计流程(9)设计者可以创建多个运行,通过使用不同的综合选项、实现选项、时序约束、物理约束和设计配置来进行尝试。这样,可以帮助设计者改善设计结果,提高设计效率。
(10)Vivado集成开发环境提供了I/O引脚规划环境,用于将I/O端口分配到指定的封装引脚上,或者分配到内部晶圆的焊盘上。通过使用Vivado引脚规划器内的视图和表格,设计者可以分析器件和设计相关的I/O数据。VivadoIDE提供了高级的布局规划能力,用于帮助改善实现的结果。设计者可以将一个指定的逻辑,强迫放到芯片内的某个特定区域。即:为了后面的运行,通过交互的方式,锁定到指定的位置或者布线。(11)VivadoIDE使设计者可以在对设计处理的每个阶段,对设计进行分析、验证和修改。通过对处理过程中所生成的中间结果进行分析,设计者可以提高设计的性能。在将设计转换成RTL后、综合后和实现后,就可以运行分析工具。(12)Vivado集成了Vivado仿真器,使得设计者可以在设计的每个阶段,运行行为级和结构级的逻辑仿真。仿真器支持Verilog和VHDL混合模式仿真,并且以波形的形式显示结果。此外,设计者也可以使用第三方的仿真器。(13)在VivadoIDE内,在对设计处理的每一个阶段,设计者都可以对结果进行交互分析。一些设计和分析特性包括:时序分析、功耗估计和分析、器件利用率统计、DRC、I/O规划、布局规划和交互布局,以及布线分析。(14)当执行实现过程后,对器件进行编程。然后,在Vivado环境中对设计进行分析。在RTL内或者在综合之后,很容易地识别调试信号。在RTL或者综合网表中,插入和配置调试核。Vivado逻辑分析仪也可以进行硬件验证。通过将接口设计成与Vivado仿真器一致,就可以使两者共享波形视图。Part3设计套件3.3Vivado设计套件采用28nm的半导体工艺,Xilinx公司推出了领先一代的硬件、软件和I/O全面可编程的SoC—Zynq7000系列,在单芯片上将双核ARMCortex-A9处理器系统(PS)与7系列Artix或KintexFPGA器件相同的可编程逻辑(PL)完美地结合在一起,在器件的架构上具有以下的特点:(1)处理器系统作为主设备负责为存储器和通信外设等提供硬件支持,并且能够在不对可编程逻辑部分加电或配置的情况下自主运行,按照正常的软件引导过程,从片内的非易失存储器ROM启动,随后执行更复杂的引导载人程序。(2)可编程逻辑部分与处理器系统之间可以实现全面的互连传输,除了可以通过JTAG接口进行配置外,也可以通过处理器配置访问端口载入部分或完整的配置。可编程逻辑部分的器件架构与7系列FPGA是完全相同的,所以在性能、规模和功耗上都有提高。Vivado设计套件提供了高度统一的设计环境,并配有全新的系统级和芯片级工具,构建在共享、可扩展的数据模型架构和通用调试环境的基础上。Vivado套件还是一款基于业界标准的开放式环境,诸如AMBA®AXI4互联、IP-XACTIP封装元数据、工具命令语言(Tcl)、Synopsys设计约束(SDC)以及其他有助于设计流程满足用户需求的业界标准。Xilinx设计的Vivado套件支持各类可编程技术组合使用,并可扩展到1亿个ASIC等效门的设计。由于任何FPGA器件的集成设计套件的核心都是物理设计流程,包括综合、布局规划、布局布线、功耗和时序分析、优化和ECO。所以后文结合物理设计流程分析Vivado设计套件的特性及超越前期的ISE软件的优越之处。3.3Vivado设计套件Xilinx公司利用Vivado设计打造了一个最先进的设计实现流程,可以让客户更快地实现设计收敛。为了减少设计的迭代次数和总体设计时间,并提高整体生产力,Xilinx采用一个单一的、共享的、可扩展的数据模型架构,建立其设计实现流程,这种框架也常见于当今最先进的ASIC设计环境。这种共享的、可扩展的数据模型架构可以让实现流程中的综合、仿真、布局规划、布局布线等所有步骤在内存数据模型上运行,故在流程中的每一步都可以进行调试和分析,这样用户就可在设计流程中尽早掌握关键设计指标的情况,包括时序、功耗、资源利用和布线拥塞等。而且这些指标的估测将在实现过程中随着设计流程的推进而趋向于更加精确。具体来说,这种统一的数据模型使Xilinx能够将其新型多维分析布局布线引擎与套件的RTL综合引擎、新型多语言仿真引擎,以及IP集成器(IPIntegrator)、引脚编辑器(PinEditor)、布局规划器(FloorPlanner)、器件编辑器(DeviceEditor)等各工具紧密集成在一起。客户可以通过使用该套件的全面交叉观测功能来跟踪并交叉观测原理图、时序报告、逻辑单元或其他视图,直至HDL代码中的给定问题。这种可扩展的数据模型架构提供的紧密集成功能还增强了按键式流程的效果,从而可满足用户对工具实现最大自动化、完成大部分工作的期望。同时,这种模型还能够满足客户对更高级的控制、更深入的分析以及掌控每个设计步骤进程的需要。表3-3将FPGAVivado设计套件与原有的ISE设计软件进行了比较。3.3Vivado设计套件VivadoISE流程是一系列Tcl指令,运行在单个存储器中的数据库上,灵活性和交互性更大流程由一系列程序组成,利用多个文件运行和通信在存储器中的单个共用数据模型可以贯穿整个流程运行,允许做交互诊断、修正时序等许多事情:(1)模型改善速度;(2)减少存储量;(3)交互的IP即插即用环境AXI4,IP_XACT流程的每个步骤要求不同的数据模型(NGC,NGD,NCD,NGM):(1)固定的约束和数据交换;(2)运行时间和存储量恶化;(3)影响使用的方便性共用的约束语言(XDC)贯穿整个流程:(1)约束适用于流程的任何级别;(2)实时诊断实现后的时序不能改变,对于交互诊断没有反向兼容性
在流程各个级别产生报告—RobustTclAPIRTL通过位文件控制:(1)利用编制脚本,灵活的非项目潜能;(2)专门的指令行选项在流程的任何级别保存checkpoint设计:(1)网表文件;(2)约束文件;(3)布局和布线结果在流程的各个级别只利用独立的工具:(1)系统设计:PlatformStudio,SystemGenerator(2)RTL:COREGenerator,ISim,PlanAhead(3)NGC/EDIF;PlanAheadtool(4)NCD:FPGAEditor,PowerAnalyzer,ISim,PlanAhead(5)Bitfile:ChipScope,iMPACTVivado与ISE对比3.3Vivado设计套件FPGA工具设计流程的变迁(b)2000年早期的流程(a)1990年的流程(c)现代FPGA流程3.3Vivado设计套件Vivado中的设计约束文件在采用SDC的约束格式外,要增加对FPGA的I/O引脚分配,从而构成它的约束文件XDC。Vivado-XDCISE-ucf约束从整个系统的视角约束只限于FPGA可适应大型设计项目约束定位在较小的设计项目在指定的层次搜索搜索整个设计层次网线名称保持不变,任何阶段都能找到不同设计阶段网线net的名称会改变分别对clk0、clk1等定义一套ucf约束不了不同的clk综合和PAR两者之间不影响综合和PAR要用两套约束Vivado与ISE的约束文件对比Part4调试过程3.4Vivado的调试过程对FPGA的调试,是一个反复迭代,直到满足设计功能和设计时序的过程。对于FPGA这样比较复杂数字系统的调试,就是将其分解成一个个很小的部分。然后,对设计中的每个很小的部分通过仿真或者调试进行验证。这样要比在一个复杂设计完成后,再进行仿真或者调试的效率要高得多。本节通过Vivado提供的调试功能对设计进行调试,并给出了调试的设计原理和方法策略。Vivado的调试方法有多种,具体的调试流程可能因硬件设施、项目需求和Vivado版本而有所不同,设计者可以通过使用下面的设计和调试方法,来保证设计的正确性:(1)RTL级的设计仿真;(2)实现后设计仿真;(3)系统内调试。3.4Vivado的调试过程系统内调试本节将详细介绍一下系统内调试方法。(1)系统内逻辑设计调试:Vivado集成设计环境包含逻辑分析特性,使设计者可以对一个实现后的FPGA器件进行系统内调试。在系统内对设计进行调试的好处包括:在真正的系统环境下,以系统要求的速度,调试设计的时序准确性和实现后的设计。系统内调试的局限性包括:与使用仿真模型相比,稍微降低了调试信号的可视性,潜在地延长了设计/实现/调试迭代的时间。这个时间取决于设计的规模和复杂度。通常,Vivado工具提供了不同的方法,用于调试设计。设计者可以根据需要,使用这些方法。(2)系统内串行I/O设计调试:为了实现系统内对串行I/O验证和调试,Vivado集成开发环境包括一个串行的I/O分析特性。这样,设计者可以在基于FPGA的系统中,测量并且优化高速串行I/O连接。这个特性,可以解决大范围的系统内调试和验证问题,范围从简单的时钟和连接问题,到复杂的余量分析和通道优化问题。与外部测量仪器技术相比,使用Vivado内的串行I/O分析仪可以测量接收器对接收信号进行均衡后的信号质量。这样就可以在Tx到Rx通道的最优点进行测量。因此,就可以确保得到真实和准确的数据。Vivado工具提供了用于生成设计的工具。该设计应用吉比特收发器端点和实时软件进行测量,帮助设计者优化高速串行I/O通道。3.4Vivado的调试过程系统内调试系统内调试包括三个重要的阶段:(1)探测阶段(Probingphase):用于标识需要对设计中的哪个信号进行探测,以及探测的方法;(2)实现阶段(Implementationphase):实现设计,包括将额外的调试IP连接到被标识为探测的网络;(3)分析阶段(Analysisphase):通过与设计中的调试IP进行交互,调试和验证设计功能。在探测阶段分为两个步骤:(1)识别需要探测的信号或者网络。(2)确认将调试核添加到设计中的方法。很多时候,设计者决定需要探测的信号,以及探测这些信号的方法。它们之间互相影响。设计者可以手工添加调试IP元件例化到设计源代码中(称为HDL例化探测流程),设计者也可以让Vivado工具自动地将调试核插入到综合后的网表中(称为网表插入探测流程)3.4Vivado的调试过程调试目标推荐的调试编程流程在HDL源代码中识别调试信号,同时保留灵活性,用于流程后面使能或者禁止调试(1)在HDL中,使用mark_debug属性标记需要调试的信号(2)使用SetupDebug向导来引导设计者通过网表插入探测流程在综合后的设计网表中识别调试网络,不需要修改HDL源代码(1)使用MarkDebug单击菜单选项,选择在综合设计的网表中需要调试的网络(2)使用SetupDebug向导来引导设计者通过网表插入探测流程使用Tcl命令,自动调试探测流程(1)使用set_propertyTcl命令,在调试网络上设置mark_debug属性(2)使用网表插入探测流程Tcl命令,创建调试核,并将其连接到调试网络明确在HDL语言中,将信号添加到ILA调试核中(1)识别用于调试的HDL信号(2)使用HDL例化探测流程产生和例化一个集成逻辑分析仪(ILA)核,并且将它连接到设计中的调试信号不同调试方法的优势和权衡3.4Vivado的调试过程创建新的FIFO调试工程本节将创建一个新的FIFO调试工程。创建新的FIFO调试工程的步骤主要包括:(1)在Vivado主界面主菜单下,选择File→NewProject。(2)出现NewProject-CreateaNewVivadoProject对话框界面。(3)单击Next按钮。(4)出现NewProject-ProjectName对话框界面。按下面参数设置:①Projectname:fifo_vhdl或者fifo_verilog。注:使用VHDL的读者设置名字为fifo_vhdl,使用Verilog的读者设置名字为fifo_verilog。②Projectlocation:E:/vivado_example。(5)单击Next按钮。(6)出现NewProject-ProjectType对话框界面,在该界面内选择RTLProject。选中Donotsecifysourceatthistime前的复选框。(7)单击Next按钮。(8)出现NewProject-DefaultPart对话框界面,在该界面内选择:xc7al00tcsg324-l。(9)单击Next按钮。(10)出现NewProject-NewProjectSummary对话框界面。(11)单击Finish按钮。总体流程介绍与回顾LED闪烁示例新建工程设计输入功能仿真分析与综合约束输入设计实现下载比特流LED闪烁示例LED闪烁示例新建工程打开软件,点击“createProject”创建一个新的工程。LED闪烁示例输入工程的名称和路径,名称可以贴近这次工程的功能,例如这次的”led_twinkle“路径地址不包含中文、空格或者其他一些特殊符号。这里会默认勾选了“Createprojectsubdirectory”选项,Vivado会在所选工程目录下自动创建一个与工程名同名的文件夹,用于存放工程内的各种文件。Vivado会自动管理工程文件夹内的各种工程文件,并创建相应的子目录,这为大家的开发工作带来了很大的便捷。继续点击“Next”,接下来是工程类型的选择,这里选择“RTLProject”,如左图所示:新建工程LED闪烁示例新建工程选择RTLProject。各个选项的含义:“RTLProject”是指按照正常设计流程所选择的类型,这也是常用的一种类型,“RTLProject”下的“Donotspecifysourcesatthistime”用于设置是否在创建工程向导的过程中添加设计文件,如果勾选后,则不创建或者添加设计文件,下面一个不用管。“Post-synthesisProject”在导入第三方工具所产生的综合后网表时才选择;“I/OPlanningProject”一般用于在开始RTL设计之前,创建一个用于早期IO规划和器件开发的空工程;“ImportedProject”用于从ISE、XST或SynopsysSynplify导入现有的工程源文件;“ExampleProject”是指创建一个Vivado提供的工程模板。LED闪烁示例新建工程选择了“RTLProject”后,点击“Next”,进入添加源文件页面。如果勾选“RTLProject”下的“Donotspecifysourcesatthistime”,则不会出现添加源文件的界面。在弹出添加源文件的界面后,可以在此处创建/添加源文件,当然也可以直接点击“Next”,创建完工程后再创建/添加源文件。这里先不添加,直接点击“Next”,如右图所示:LED闪烁示例新建工程接下来是添加约束文件,直接点击“Next”,在创建完工程后创建/添加约束文件.LED闪烁示例新建工程接下来是选择器件型号,“Family”一栏选择“Artix-7”、“Package”一栏选择“fgg484”(A7_200T时选择"fbg484”)、“Speed”一栏选择“-2”,此时下面的器件列表就会自动筛选出符合以上设置条件的器件。
(也可根据实际进行选择)
LED闪烁示例新建工程检查一下,finish
LED闪烁示例新建工程进入工程主界面LED闪烁示例设计输入创建顶层文件,如图点“+”。LED闪烁示例设计输入如图选择第二个添加设计文件,next。LED闪烁示例设计输入如图点创建文件LED闪烁示例设计输入填写源文件名称“led_twinkle”,可根据实际文件更改,然后ok。LED闪烁示例设计输入这时可以看到创建的源文件,finish。LED闪烁示例设计输入然后“OK”这个窗口用于设置源文件的模块名称和端口列表,Vivado会根据在此窗口中的设置,自动地在HDL源文件中写入相应的verilog语句。我们会手动输入代码,所以这里不作任何设置,直接点击OK即可。LED闪烁示例设计输入若出现此窗口“YES”LED闪烁示例设计输入这时“Sources”窗口就出现了源文件。LED闪烁示例LED灯闪烁代码moduleled_twinkle( input sys_clk, //系统时钟
input sys_rst_n, //系统复位,低电平有效
output [1:0]led //LED灯);
//regdefinereg[25:0]cnt;//*****************************************************//**maincode//*****************************************************//对计数器的值进行判断,以输出LED的状态assignled=(cnt<26'd2500_0000)?2'b01:2'b10;//assignled=(cnt<26'd5)?2'b01:2'b10;//仅用于仿真//计数器在0~5000_000之间进行计数always@(posedgesys_clkornegedgesys_rst_n)begin if(!sys_rst_n) cnt<=26'd0; elseif(cnt<26'd5000_0000)//elseif(cnt<26'd10)//仅用于仿真
cnt<=cnt+1'b1; else cnt<=26'd0;endendmodule双击打开源文件,将其中的代码替换为如下Led登闪烁代码。LED闪烁示例设计输入LED闪烁示例设计输入可以调整字体大小,如图。LED闪烁示例设计输入LED闪烁示例设计输入写完代码记得保存,如图按钮。保存后vivado会进行语法检查。在大多数情况下,VivadoIDE会自动识别设计的顶层模块,当然,用户也可以手动指定顶层模块。从“Sources”窗口的右击菜单中选择“SetasTop”来手动定义顶级模块LED闪烁示例功能仿真1、我们开始在VivadoIDE中进行仿真,首先创建一个TestBench。我们点击“Sources”窗口中的
“+”号(AddSources命令),在弹出的窗口中选择“AddorCreateSimulationSources”,next.LED闪烁示例功能仿真直接"createfile"LED闪烁示例功能仿真输入TestBench的文件名称“tb_led_twinkle”,一般测试文件会在源文件名称前加tb_。这个文件只用于仿真,不能用于设计的综合和实现。然后“OK”,”finish”LED闪烁示例功能仿真“OK”完成TestBench源文件的创建如果弹出窗口直接Yes.
这里就可以看到创建的文件了。LED闪烁示例功能仿真双击替换成左边的代码。为了让读者能够更好的理解,这里我们就简单介绍一下TestBench源代码。进行仿真首先要规定时间单位,我们建议大家最好在Testbench里面统一规定时间单位,不要在工程代码里定义,因为不同的模块如果时间单位不同可能会为仿真带来一些问题。代码的第1行的timescale是Verilog语法中的不可综合语法,用于定义仿真的时间表示仿真的单位时间为1ns,精度为1ps,这是Xilinx官方推荐的仿真单位时间和精度。代码的第3行就是TestBench的模块名定义,第6行至第10行是我们的数据类型定义,到了第13~18行是信号的初始化,第21行是时钟信号的生成,50MHz时钟对应周期为20ns,第24行是被测模块的调用。`timescale1ns/1ps
moduletb_led_twinkle();//输入regsys_clk;regsys_rst_n;//输出wire[1:0]led;//信号初始化initialbegin sys_clk=1'b0; sys_rst_n=1'b0; #200 sys_rst_n=1'b1;end//生成时钟always#10sys_clk=~sys_clk;//例化待测设计led_twinkleu_led_twinkle( .sys_clk(sys_clk), .sys_rst_n(sys_rst_n), .led(led));endmoduleLED闪烁示例功能仿真在开始仿真之前,大家有一点需要注意,我们在Vivado软件中实现的功能是LED闪烁效果,它的间隔时间是500ms,如果我们想要仿真这个功能,那么我们仿真软件运行时间最低就是500ms。这500ms在我们看来是很短很短的,而对仿真软件来说是很漫长的,毕竟我们的仿真时间单位可是1ns。为了便于我们仿真,这里我们需要稍微改动“led_twinkle.v”文件的代码,将计时器counter的最大计时值设为10,如下图所示:到led_twinkle.v文件改一下注释位置即可。待仿真结束后进行分析和综合时,再将标记为“仅用于仿真的”的语句注释掉或者直接删除。LED闪烁示例功能仿真如图点击进行仿真。LED闪烁示例功能仿真到了仿真界面
1、下面分别介绍仿真界面中的各个子窗口:LED闪烁示例功能仿真(1)Scope窗口:Scope(范围)是HDL设计的层次划分。在Scope窗口中,您可以看到设计层次结构。当大家选择了一个Scope层次结构中的作用域时,该作用域内的所有HDL对象,包括reg、wire等都会出现在“Objects”窗口中。大家可以在“Objects”窗口中选择HDL对象,并将它们添加到波形查看器中。(2)Object窗口:“Objects”窗口会显示在“Scopes”窗口中选择的范围内的所有HDL仿真对象。例如,我们在Scope窗口中选择顶层模块“led_twinkle”,在“Objects”窗口中就会自动显示出led_twinkle模块中所有的对象。可以看出,在led_twinkle顶层模块中除了顶层端口sys_clk、sys_rst_n和led之外,还包括在内部定义的计数器cnt。如图所示:LED闪烁示例功能仿真右击cnt,添加到波形窗口中的“cnt”计数器如下图所示:LED闪烁示例功能仿真图中可以放大缩小波形图。LED闪烁示例功能仿真一般来说,每当我们进行一次仿真时,都会把当前波形的配置信息保存下来,包括波形窗口中具有哪些信号等等,以便在下一次打开仿真器进行仿真时,继续使用上一次仿真的配置信息。我们点击波形窗口中的保存按钮,如下图所示:LED闪烁示例功能仿真之后会弹出“SaveWaveform”对话框,提示用户将当前波形配置信息保存为“.wcfg”后缀的文件,且工具已经自动地输入了文件名“tb_led_twinkle_behav”,文件的保存目录也被工具自动设置为了当前的工程目录,所以我们保持其默认状态即可,直接点击“Save”。如下图所示:LED闪烁示例功能仿真这里有个地方需要大家注意下,wcfg文件只是包含波形窗口的配置信息,并不包含波形的数据文件,波形的数据文件被存储在另外的文件中。在点击保存后会弹出一个消息框,询问用户是否将刚刚创建的波形配置信息文件tb_led_twinkle_behav.wcfg添加到当前工程中,我们直接点击“Yes”即可。如下图所示:LED闪烁示例功能仿真仿真工具栏:仿真工具栏包含运行各个仿真动作的命令按钮。从左至右依次是:•Restart:将仿真时间重置为零,此时波形窗口中原有的波形都会被清除。下次执行仿真时,会从0时刻重新开始。•Runall:运行仿真,直到其完成所有事件或遇到HDL语句中的stop或stop或stop或finish命令为止。注意,如果没有在TestBench语句中加入stop或stop或stop或finish命令,当点击Runall命令时,仿真器会无休止地一直仿真下去,除非用户点击仿真工具栏中的“Break”按钮来手动地结束仿真。但是这里有个地方需要注意,如果此时需要仿真的设计比较复杂,则仿真器在运行仿真时会耗费电脑大量的CPU和内存资源,此时有可能会造成电脑卡顿甚至死机的情况。所以,如果设计比较复杂,且没有在TestBench语句中加入stop或stop或stop或finish命令,最好不要轻易点击Runall命令。•RunFor:运行特定的一段时间。紧随在后面的两个文本框用于设定仿真时长的数值大小和时间单位。•Step:按步运行仿真,每一步仿真一个HDL语句。•Break:暂停当前仿真。•Relaunch:重新编译仿真源并重新启动仿真。在使用Vivado仿真器来调试HDL设计时,您可能会根据仿真结果来对您的HDL源代码进行修改。在修改完HDL源代码后,可以点击Relaunch按钮来重新加载UUT设计和TestBench,以重新对修改后的HDL源代码进行仿真。此时就不需要再关闭并重新打开仿真器了。介绍完各个窗口和命令按钮的使用后,我们就可以开始仿真了。在刚打开仿真器时,仿真器会首先将TestBench中的信号加入到波形窗口中,并执行一段时长的仿真,仿真的时长由Settings设置窗口中的参数值指定,如下页图所示:LED闪烁示例功能仿真LED闪烁示例功能仿真可以看到,仿真器启动后默认立即执行的仿真时长是1000ns。由于我们是在默认立即执行仿真结束之后,才加入了“cnt”计数器信号,所以新加入的cnt信号并没有波形。此时我们需要将仿真时刻重置为0,重新开始仿真。点击Restart按钮,波形窗口中的当前仿真时刻点(黄色标尺)就会回归到0ns,且原先的所有波形都被清除,如下图所示:LED闪烁示例功能仿真此时点击仿真工具栏中的RunFor按钮,默认仿真时长是10us,如下图所示:此时就可以看到波形窗口中就出现了波形,我们点击波形窗口中的显示工具栏中的“ZoomFit”按钮,波形就会自动缩放到整个窗口,如下图所示:LED闪烁示例功能仿真cnt信号默认显示为16进制,为了方便观察,我们将其设置为10进制。对cnt信号右键,如图。LED闪烁示例功能仿真修改显示后的波形如下图所示:
这里可以看出,cnt每计数到10,led就翻转一次。证明我们的HDL设计达到了我们想要的功能。
至此,仿真结束。LED闪烁示例分析与综合功能仿真通过之后,就可以对设计进行分析(Elaborated)了。我们首先将源代码中为仿真而修改的部
分恢复成原来的代码,如图所示:LED闪烁示例分析与综合点击“FlowNavigator”窗口中的“OpenElaboratedDesign”按钮,如图所示此时,Vivado会编译RTL源文件进行全面的语法检查,并在Messages窗口中给出相应的“Error”和“Warning”。打开分析后(Elaborated)的设计后,Vivado会生成顶层原理图视图,并在默认viewlayout中显示设计,如下图所示:LED闪烁示例分析与综合可以看到,此时窗口布局已经发生了变化,新增了Schematic(原理图)、Netlist(网表)等窗口。此时,底部的Messages窗口会显示出现在分析阶段产生的消息,如下图所示:LED闪烁示例分析与综合可以看出,我们的led_twinkle源代码并没有产生警告或者错误。此时,我们也可以进行I/O引脚分配,在右上角的窗口布局(Layout)选择器中选择“I/OPlaning”,如下图所示:LED闪烁示例分析与综合IO规划相关的子窗口,如下图所示:LED闪
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025采购合同,商品采购合同
- 2025玉米委托加工合同
- 2025江苏南通森蓝环保科技有限公司招聘2人笔试历年常考点试题专练附带答案详解试卷2套
- 2025设备采购借款合同书范本
- 2025年甘肃省定西市陇西县人力资源有限公司招聘工作人员笔试历年常考点试题专练附带答案详解试卷2套
- 2025山东黄金集团招聘笔试历年备考题库附带答案详解试卷2套
- 2025四川绵阳科技城低空产业发展有限公司市场化招聘管理人员(第二批)5人笔试历年备考题库附带答案详解试卷2套
- 2025四川广安发展建设集团有限公司市场化选聘下属子企业职业经理人面谈笔试历年典型考点题库附带答案详解试卷2套
- 2025四川九洲教育投资管理有限公司招聘数控专任教师测试笔试历年常考点试题专练附带答案详解试卷2套
- 2025北京语言大学出版社有限公司招聘5人笔试历年备考题库附带答案详解试卷2套
- GB/T 20878-2024不锈钢牌号及化学成分
- 轮椅运用和床椅转移课件
- 高中生考试焦虑心理咨询案例报告
- 《工程结构抗震设计》课件 第10章-地下建筑抗震设计
- 全国优质课一等奖中职《就业与创业指导》课件
- SBAR交接班模式在临床运用
- 碎石临时停车场施工方案
- 静电消除作业指导书
- 华侨城集团领导岗位业绩考核管理规定
- 机械设备安全检查表88612
- 培智二年级体育课教案
评论
0/150
提交评论