版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于BFM测试和调试的ZynqSoC设计步骤及架构详解AXI总线功能建模可简化Zynq-7000AllProgrammableSoC组件及子系统的验证工作。本文以赛灵思工具链为基础,通过逐步指导实例,详细介绍了该验证方法。赛灵思在ZynqTM-7000AllProgrammableSoC中内置了功能强大的双核ARM®Cortex™A9处理器,能让用户使用单个芯片即可构建自己的高性能片上系统。这样软件工程师可以充分利用包括GNU/Linux在内的丰富的ARM软件生态系统,而硬件设计人员则可以在可编程逻辑架构中添加协处理器和数字信号处理功能。现在的问题在于验证和调试这样的片上系统,尤其是软硬件之间的接口。例如,接口一边受器件驱动器控制,一边受中断服务程序控制。随着ARMCPU的问世,高级微控制器总线架构(AMBA®)以及更为重要的高级可扩展接口(AXI)已成为连接FPGA内部各组件的事实标准。AXI并非传统意义上的总线,而是使用交叉开关矩阵和仲裁,在多个主从机模块间实现基于事务的互联。AXI有三种类型,分别是AXI4(常规类型)、AXI4-Lite和AXI4-Stream。赛灵思ISE®14.2版本和Vivado™2012.2版本设计工具套件配套提供v1.06aAXI互联功能,同时可与AXI3和AXI4相兼容。总线功能建模(BFM)是一种非常适用于片上系统设计的电子系统级验证方法。BFM的价值在于能够抽象总线互联并提供高级API,以实现用于激励RTL模块的测试平台,从而帮助用户节省宝贵的时间。BFM可帮助设计人员验证与Zynq-7000器件的处理系统相连接的RTL模块。在赛灵思ISim这样的RTL仿真器内部运行时,BFM可帮助用户按照自下而上的设计流程,一次验证一个或多个模块。赛灵思与Cadence通力合作,提供了一种在业经验证的行业标准基础上构建的验证环境(AXIBFM)。AXIBFM已经投入市场将近两年时间,近期已升级到2.1版本。下面深入了解这种强大的系统级验证方法及采用这种方法所涉及的步骤。首先列出构建一个能够工作的BFM验证环境所需的工具和组件,其中包括一个能够为使用BFM的新手提供帮助的文档列表。然后介绍使用AXIBFM验证RTL模块的验证流程。工程师掌握这种方法最好的方式就是参考实例,所以最后本文将一步一步地介绍使用赛灵思ISE设计环境的详细情况。本文选择的实例是一个由一个AXI4主模块和一个连接BRAM的存储控制器组成的简单设计,可作为下一个BFM验证项目的起点。这个实例可通过下列网址,从MissingLinkElectronics的开发人员专区下载:。使用步骤总线功能模型(BFM)能够显著降低SoC设计验证阶段的工作量。这种方法可帮助您直接将RTL模块作为一个被测器件(DUT)连接到BFM,激励并核对高抽象层面上DUT的响应,整个过程无需探究AXI互联的细节。赛灵思和Cadence共同推出的AXIBFM的一大主要优势在于可以避免开发用于匹配AXI4-LiteIP接口(IPIF)的代码,也无需手动编写RTL模块测试台。AXIBFM紧密集成在FPGA设计环境中。使用赛灵思PlatformStudio(XPS)就可为嵌入式系统生成顶层HDL,并为BFM仿真项目生成大部分必备文件。XPS还可免除为DUT正确连线的负担。您可使用“fush.sh”脚本将BFM项目与赛灵思ISim集成在一起,完成最终测试程序的编写。DUT由一个或多个构成RTL模块的VHDL或Verilog文件组成。RTL模块的AXI4接口(可以是AXI4、AXI4-Stream或AXI4-Lite)通过Verilog“Testbench.v”内部的AXIBFM连接,然后与顶层设计文件“Test.v”中的测试程序合并。该测试程序用于驱动和检查DUT。这样做的好处在于可以不探究AXI4的所有细节。用户可以使用分区在功能API和通道API两个抽象层面上的简便易用、丰富多样的API编写自己的测试程序。这种API采用的是VerilogHDL语言。不过很快就可以发现,这种API不仅适合HDL设计人员,而且也非常适用于有固件或驱动程序开发经验的软件工程师。甚至更好的是,由于AXIBFM完全理解AXI4、AXI4-Lite和AXI4-Stream协议,它会执行额外的检查,而且在仿真过程中,可以看到一旦RTL模块“误解”AXI4,就会发出告警。这个过程能够在很大程度上帮助用户成长为AXI4专家。AXIBFM环境不局限于验证单个RTL模块,而且能够高效地验证多个模块。因此建议使用AXIBFM验证组件、子系统乃至整个片上系统,并且使用AXIBFM进行回归测试。但是需要提醒一下的是,在所有复杂的验证项目中,往往出现“只见树木,不见森林”的情况,所以应该和同事共同核查(或自己核查)仿真过程中测试的功能与硬件中使用的功能是否相同。AXI4BFM和XPSAXI4BFM不仅可用于验证单个RTL模块内核的总线接口,也适用于仿真整个嵌入式设计的总线事务。AXIBFM为AXI3、AXI4、AXI3-Lite、AXI4-Lite和AXI4-Streaming主从模块提供模型。根据不同类型的RTL模块的需要,可定制不同的AXI接口。虽然常规的AXI3和AXI4接口是基于突发模式,可允许使用不同的数据宽度和乱序事务处理,对只有来自软件的寄存器式访问的较简单RTL模块,AXI3-Lite版本足以使用。用于处理面向信息流的数据(比如来自摄像头接口的视频数据)的硬件,往往采用AXI-Stream协议,因这种协议与常规的AXI接口相比,更适合管理流数据的特征。不过本文介绍的实例的重点是常规AXI4接口以及AXI4总线的BFM的使用。在XPS中使用其它类型的AXI接口测试RTL模块的工作流程完全一样,读者可将本文的介绍当作使用这些接口进行测试的指南。下面将展示如何在XPS里设置BFM,从而有效地生成HDL代码,用于实例化DUT和BFM,并在她们之间建立互连。这种方法可以最大限度地减轻手动编写互联HDL代码的工作量,这种工作极为耗时。生成的测试系统由待测试的外设和提供总线激励的BFM共同组成。这样,使用BFM主模块,就可以仿真系统中总线主设备一般会发起的总线传输,然后检查连接的RTL从模块,看是否行为正确。另一方面,可以使用从BFM验证采用AXI主接口的RTL模块的行为正确与否。在本文接下来的内容中,将创建一个由一个从模块和一个AXI4MasterBFM组成的简单系统,后者用于为从模块提供激励。AXI4架构简介在开始介绍实例之前,先简单了解一下AXI4总线架构,有关详细介绍请参阅AXI总线规范。[2]AXI4总线系统分为五个独立的事务通道:写地址通道、写数据通道、写响应通道、读地址通道和读数据通道。地址通道除了传输实际的源地址或目标地址外,还传输发生在相关数据通道上的突发传输的类型信息。信息的内容包括突发的传输数量、数据的大小和突发的ID。对每一次突发,从模块都会利用经地址通道传输的ID向主模块发送响应,通知主模块本次事务处理是否成功。在这五条通道上,由READY和VALID握手信号对来控制实际的数据传输。正如这两个信号的名称意义所示,当总线上的数据有效时,发送侧断言VALID。当接收侧做好接收数据的准备时,接收侧断言READY。实际的事务处理发生在总线时钟的上升沿,此时READY和VALID都处于高电平。在自行实现对AXI总线的访问时,务必记住VALID信号的断言不能取决于READY信号,否则会陷入死锁。在XPS中创建简单测试系统现在我们已经对AXI4总线系统有了基本的理解,可以开始在XPS中创建简单测试系统了,并观察BFM和AXI总线的行为。这个系统由一个AXI4MasterBFM、一个BlockRAM控制器、一个BlockRAM和一个用于连接所有组件的AXI互联组成。下面是创建这个AXIBFM实例所需的工具列表:•赛灵思ISE14.2版本或更高版本,配备XPS14.2版本•赛灵思ISim(14.2版本)•AXIBFM的许可证密钥(部件号码DO-AXI-BFM)•赛灵思DS824,“AXIBFM2.1版本”(替代赛灵思UG783)•赛灵思DS768,“LogiCORETMIPAXI互联(1.06a版本)”•AXIBFM实例项目,网址:和用XPS创建任何新的嵌入式设计一样,先从创建一个新的空白项目开始,将其命名为“bfm_system”。不过这里没有使用MicroBlaze®处理器或Zynq-7000AllProgrammableSoC,而是实例化一个AXI4MasterBFM,用于在AXI4总线上发起事务处理任务。可以在XPS中IP内核树的验证节点上找到AXI4MasterBFM。下面添加一个在“BusandBridge”分类下的AXI4InterconnectIP,再添加一个AXIBRAMController和一个相关联的BlockRAM,你可以在XPSIP标签中“MemoryandMemoryController”分类下找到这两个IP。在XPS的Bus视图中将这些IP组件相互连接,让系统看上去与图2所示的一样。在XPS的Ports标签中,将AXI互联的时钟和复位端口配置成external,将BRAM控制器和MasterBFM的时钟端口也连接到外部时钟端口。可让AXIBRAM控制器的“ECC_Interrupt”和“ECC_UE”端口保持未连接,因为不需要使用ECC功能。设置时钟端口的频率为100MHz。最终系统应和图3所示的一样。接下来在XPS的Addresses标签中设置BRAM控制器的地址范围。这样还可以确定BRAM模块的大小。这里创建一个32K的BlockRAM,起始地址为0x00000000。现在基本系统设置已经完成,点击工具条左边的“GenerateHDLFiles”就可以让XPS生成HDL代码。这样可以在XPS项目文件夹中创建一个名为Simulation的目录。如果想在XPS中修改系统,重新生成HDL代码,务必将手工添加到文件夹中的文件进行备份,否则XPS在生成仿真文件时,这些文件将被完全覆盖。在Simulation文件夹中名为“behaviorial”的文件夹里,我们可以找到与XPS设计名字完全相同的Verilog或者VHDL文件(根据配置设置中选择的语言),该文件名为“bfm_system.vhd”。这就是我们系统的顶层,其中包含刚刚在XPS中实现的所有实例化组件和连接。运行仿真根据AXIBFM说明书的建议,应在提供了时钟和复位信号的测试顶层模块中例化该系统,再从独立的测试模块发起AXI总线上的事务处理任务。(这种方法的结构见图1所示)。在总线上发起事务处理的方法是从AXIBFMAPI调用对应的Verilog任务。API分为通道层和功能层。使用通道层API可在不同的通道上发起传输,比如读地址和写地址通道,这样我们就能单独控制写突发或者读突发的每一个阶段。使用功能层API可方便地启动整个数据传输,比如读突发或者写突发。另外功能层API还提供可改变BFM设置的Verilog功能,比如修改ISim控制台上的输出冗余。DS824详细介绍了该API,并提供一个编程人员参考。使用Verilog的“。”运算符,通过引用BFM实例,在测试程序中调用API的函数和任务。图4就是这种函数调用的例子。完整的代码包含在与本文配套的项目包中,并提供shell脚本,用于编译实例并运行ISim查看波形。请阅读项目包中的README.txt文件了解如何使用该脚本。运行该脚本即可打开ISim主窗口。加载ISim中的“axi_waveforms.wcfg”文件,仿真系统15微秒,即可查看AXI总线各通道上的信号。测试程序首先对BlockRAM发起256个32位字符组成的写突发,然后读回数据。通过搜索上升时钟沿(在写地址通道,s_axi_awready和s_axi_awvalid信号同时处于高电平),我们可以看到用于描述突发流向的信息被发送给BlockRAM控制器。主机通过断言s_axi_wlast信号为突发的最后一个字符做上标签。跟随写突发,从模块——即这里的BlockRAM控制器——会通过写响应通道(图5)发出事务处理成功的信号。可针对读突发检查相同的结构。描
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 医学26年:心肌核素显像结果解读 心内科查房
- 2026年智能工厂工业互联网创新报告
- 移动医疗在气候预警期的技术保障
- 2026年刘备说课稿与指导要点
- 高中“保健康”健康观念说课稿
- 2026年车辆脱困测试题及答案
- 2026年文章状态测试题及答案
- 2026年老鼠狮子大象测试题及答案
- 2026年kpmg澳洲测试题及答案
- 小学心理健康教育家校协同说课稿
- T-CERS 0026-2024 能源企业可持续发展(ESG)披露指标体系和评价导则
- 樊昌信通信原理课后答案
- FMEA手册新中文版(第五版)
- 《中国大学介绍》课件
- 超星网课《国际学术论文写作与发表》答案
- 中国海洋石油集团有限公司招聘笔试题库2024
- (高清版)AQ 6210-2007 煤矿井下作业人员管理系统通 用技术条件
- DL 5068-2014 发电厂化学设计规范
- 小学数学1-6年级公式大全(打印版)
- 智能制造概论
- 单元写作任务 统编版高中语文必修下册
评论
0/150
提交评论