0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

使用AXI VIP的几个关键步骤及常见功能

FPGA技术江湖 来源:网络交换FPGA 作者:赵雨晨 2022-10-08 16:07 次阅读

AXI总线在FPGA设计中使用越来越频繁,但初学的同学经常会因为对协议的理解不够深入,写出来的代码经常会出现死锁等问题,对FPGA设计与调试带来很多不必要的麻烦。为了解决这个问题,我们可以使用Vivado生成AXI VIP(AXI Verification IP)来对自己设计的AXI接口模块进行全方位的验证(如使用VIP的Master、Passthrough、Slave三种模式对自己写的AXI接口进行仿真验证),提前规避和发现一些不满足AXI总线规范的设计问题。本文就跟大家分享如何使用Xilinx AXI VIP对自己的设计搭建仿真验证环境的方法。

本文参考的Xilinx官方文档为:pg267-axi-vip.pdf。

01使用AXI VIP的几个关键步骤

1.1、从IP Catalog中选择并添加一个VIP,在这一步可以自定义该VIP的Component Name(新建完成后就很难再改名字了)。

fc0f6b0e-45cd-11ed-96c9-dac502259ad0.png

IP添加完成就可以在tb中实例化。

1.2、在sv格式的tb中加入下面两条import语句,第一个import是固定不变的,axi_vip对应axi_vip_pkg,axi-stream vip对应axi4stream_vip_pkg。

第二个import是导入刚才例化的vip的pkg,格式为import {Component Name}_pkg::*; 比如Component Name为axi_vip_0,则import如下图第二行。

vivado自带的编辑器会提示找不到import的这些pkg,但不会影响仿真。

fc5d52d8-45cd-11ed-96c9-dac502259ad0.png

1.3、 在tb中声明相关的agent,使用vip的agent和它支持的一些函数就能实现仿真的功能。AXI vip支持的agent类型如下:

(AXI Verification IP v1.1 第47页)

fc7b3096-45cd-11ed-96c9-dac502259ad0.png

如果测试一个AXI Master接口,可以声明一个自带memory model的slave agent,结尾为mem_t:

fcb10bd0-45cd-11ed-96c9-dac502259ad0.png

这种自带memory model的slave可以在执行start();之后自动生成AXI Slave时序,支持数据的写入和读出,也支持对memory内容的初始化和后台读写操作。

1.4、Start前的初始化步骤

使用new函数将agent指定到待仿真的vip的IF上,

fccd3756-45cd-11ed-96c9-dac502259ad0.png

fd108a7e-45cd-11ed-96c9-dac502259ad0.png

第二行:为agent设置一个标签,在使用多个vip时,方便在仿真时的错误信息中看到是哪个vip产生的。

第三行:设置verbosity为0,为不展示详细的仿真信息。设置为400,则会在仿真时print出详细的仿真信息。(不常用)

第四行:启动slave,之后slave可以根据待测的Master接口的读写时序产生相应的slave时序,被Master进行读写。

仿真过程中,如果axi或axi stream总线上的时序出现了任何错误,vip都会自动结束(暂停)仿真过程,仿真记录的波形会停在总线时序出错的位置偏后一点,控制台中也会显示vip对错误的详细描述。

02几个常见功能

VIP的内部功能结构、支持的仿真函数在xilinx-vip-api-2021-2中有详细的说明。使用浏览器打开下图中的文件,便可以查看到。

fd3f992c-45cd-11ed-96c9-dac502259ad0.png

fd4f1050-45cd-11ed-96c9-dac502259ad0.png

axi-vip和axi-stream-vip都有自带的仿真例程,常用的功能在仿真例程中都有涉及。

2.1 设置VIP支持的Outstanding读写深度

例如,设置slave vip的outstanding深度为32,执行下面代码的前两行即可。第3~4行则是获取agent的读写深度,可以以此确认前面设置的读写深度是否有效。

fdb4f794-45cd-11ed-96c9-dac502259ad0.png

2.2 自定义ready信号

自带memory model的slave vip可以在start_slave();之后产生slave时序,也可以通过slave的wr_driver或rd_driver,自定义ready的高低电平周期。

下图代码展示的是为axi产生自定义wready、awready、arready的方法。在这个initial的末尾,只是为ready信号设置了一个低电平时间为5clk,高电平时间为5clk的初始状态。

fdd71112-45cd-11ed-96c9-dac502259ad0.png

仿真开始后,可以在每次AW(写地址)通道握手之后,将新的awready和wready设置到agent上。在每次AR通道握手之后,将arready设置到agent上。

不能在axi的一个传输周期之内设置多组ready,否则vip会报出类似“太多未处理的ready”等错误信息,即使仿真依旧能够进行。

fe1b6434-45cd-11ed-96c9-dac502259ad0.png

2.3 Axi slave vip的memory model

使用agent.mem_model.backdoor_memory_write等函数可以绕过vip直接对memory model进行一些读写操作,在xilinx vip api文档中有详细介绍,需要注意只有带memory model的vip才支持这类功能。

fe34fb2e-45cd-11ed-96c9-dac502259ad0.png

03使用自己的仿真环境

dma_sim_vivado工程中含有两个仿真源,一个是只测试AXI与AXI-Stream通路的回环测试工程,另一个是测试DMA所有功能包括接口的仿真工程。

fea4ec22-45cd-11ed-96c9-dac502259ad0.png

其中,axi_if_sim中例化了一个axi vip和一个axi stream vip,其测试内容为:

1、 填充axi stream接口的rxfifo。

2、 axi master接口将rxfifo中的数据写入到axi vip的memory。

3、 axi master接口将ax vip中memoty的数据全部读出,并存入txfifo。

4、 txfifo上的axi-stream master接口将txfifo内的数据以axi-stream的形式传给axi stream vip。

5、最后比较axi stream vip接收的数据与一开始填充进rxfifo的数据是否一致,输出仿真结果。

np_dma_sim中的vip使用基本一致,增加的内容在于使用

agent.mem_model.backdoor_memory_write为slave vip的memory预先填充了一部分DMA的描述符,方便后面的仿真使用。

feb77cfc-45cd-11ed-96c9-dac502259ad0.png

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1602

    文章

    21324

    浏览量

    593214
  • Xilinx
    +关注

    关注

    70

    文章

    2121

    浏览量

    119374
  • AXI
    AXI
    +关注

    关注

    1

    文章

    126

    浏览量

    16286

原文标题:【经验分享】Xilinx AXI VIP使用说明

文章出处:【微信号:HXSLH1010101010,微信公众号:FPGA技术江湖】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    AXI VIP设计示例 AXI接口传输分析

    赛灵思 AXI Verification IP (AXI VIP) 是支持用户对 AXI4 和 AXI4-Lite 进行仿真的 IP。它还可
    发表于 07-08 09:24 1336次阅读

    AXI VIP当作master时如何使用

    AXI VIP当作master时如何使用。   新建Vivado工程,并新建block design,命名为:axi_demo 新建axi vip
    的头像 发表于 07-27 09:19 686次阅读
    <b class='flag-5'>AXI</b> <b class='flag-5'>VIP</b>当作master时如何使用

    PCB制作关键步骤说明书

    PCB制作关键步骤说明书.
    发表于 11-10 19:06

    RNN算法的三个关键步骤

    DL之RNN:RNN算法相关论文、相关思路、关键步骤、配图集合+TF代码定义
    发表于 12-28 14:20

    如何使用Xilinx AXI VIP对自己的设计搭建仿真验证环境的方法

    :pg267-axi-vip.pdf。01 使用AXI VIP几个关键步骤1.1、从IP Catalog中选择并添加一个
    发表于 10-09 16:08

    布线测试中的几个关键步骤

    布线测试中的几个关键步骤 步骤1: 通断测试是基础   通断测试是测试的基础,是对线路施工的一种最基
    发表于 04-14 11:46 507次阅读

    使用 NCP1611 设计紧凑、高效 PFC 级的 5 个关键步骤

    使用 NCP1611 设计紧凑、高效 PFC 级的 5 个关键步骤
    发表于 11-14 21:08 1次下载
    使用 NCP1611 设计紧凑、高效 PFC 级的 5 个<b class='flag-5'>关键步骤</b>

    设计 NCL30088 控制的 LED 驱动器的 4 个关键步骤

    设计 NCL30088 控制的 LED 驱动器的 4 个关键步骤
    发表于 11-14 21:08 0次下载
    设计 NCL30088 控制的 LED 驱动器的 4 个<b class='flag-5'>关键步骤</b>

    设计由 NCP1631 驱动的交错式 PFC 级的关键步骤

    设计由 NCP1631 驱动的交错式 PFC 级的关键步骤
    发表于 11-14 21:08 6次下载
    设计由 NCP1631 驱动的交错式 PFC 级的<b class='flag-5'>关键步骤</b>

    设计 NCL30288 控制的 LED 驱动器的 4 个关键步骤

    设计 NCL30288 控制的 LED 驱动器的 4 个关键步骤
    发表于 11-15 19:31 0次下载
    设计 NCL30288 控制的 LED 驱动器的 4 个<b class='flag-5'>关键步骤</b>

    AXI协议的几个关键特性

    AXI 协议有几个关键特性,旨在改善数据传输和事务的带宽和延迟
    的头像 发表于 05-06 09:49 767次阅读

    AXI VIP当作master时如何使用?

    AXI接口虽然经常使用,很多同学可能并不清楚Vivado里面也集成了AXI的Verification IP,可以当做AXI的master、pass through和slave,本次内容我们看下
    的头像 发表于 07-27 09:16 942次阅读
    <b class='flag-5'>AXI</b> <b class='flag-5'>VIP</b>当作master时如何使用?

    焊接贴片电阻的关键步骤

    贴片电阻是一种常见的电子元件,用于电路板的焊接。焊接贴片电阻需要注意一些关键步骤和技巧,以确保焊接质量和电路的稳定性。
    的头像 发表于 08-19 10:52 792次阅读

    零损拆卸:掌握三菱变频器拆解的关键步骤

    零损拆卸:掌握三菱变频器拆解的关键步骤
    的头像 发表于 09-19 09:04 712次阅读

    邪恶PLC攻击技术的关键步骤

    今天我们来聊一聊PLC武器化探秘:邪恶PLC攻击技术的六个关键步骤详解。
    的头像 发表于 01-23 11:20 609次阅读
    邪恶PLC攻击技术的<b class='flag-5'>关键步骤</b>