Zynq学习笔记--AXI 总线仿真(AXI VIP)

目录

1. 概述

2. Simulation with AXI VIP

2.1 axi_vip_pkg

 2.2 design_1_axi_vip_0_0_pkg

 2.3 参数指定

3. 实例化注意事项

3.1 名称对应关系

3.2 寄存器地址

 3.3 block design


1. 概述

AXI Verification IP(AXI VIP)是一种用于验证AXI总线协议的仿真工具,可帮助开发人员在设计阶段发现和解决潜在的硬件设计问题。通过使用AXI VIP,用户可以在仿真环境中模拟AXI总线的行为,验证设计的正确性和性能。

它只是一个仿真IP,不会被综合到最终的硬件中。

2. Simulation with AXI VIP

首先需要导入两个SystemVerilog包。类似于python中的导入。两者都用于导入代码中定义的函数、参数、类等,以便在当前文件中使用。

在SystemVerilog中,包是一种封装数据类型、任务和函数的机制,通常用于在不同的模块间共享。而Python的模块和包是文件和文件夹的集合,用于组织和重用代码。

import axi_vip_pkg::*; // 系统自带:<loc>/Vivado/2022.1/data/xilinx_vip/hdl/axi_vip_pkg.sv
import design_1_axi_vip_0_0_pkg::*; //在工程目录中

 我在注释中标注了包的具体位置,可以查看该包的具体行为。

2.1 axi_vip_pkg

定义了一个名为 axi_mst_agent 的SystemVerilog类,继承自 xil_agent。

宏定义:AXI_PARAM_DECL 是一个宏定义。
类扩展:axi_mst_agent 类通过 AXI_PARAM_DECL 宏应用这些参数,并扩展了 xil_agent 类。
组件实例化:
        monitor:用于监控AXI总线上的事务。
        wr_driver:用于驱动AXI总线上的写操作。
        rd_driver:用于驱动AXI总线上的读操作。
构造函数:new 函数是类的构造函数,用于创建 axi_mst_agent 实例。它初始化了监控器、写驱动器、读驱动器,并将虚拟接口与代理关联起来。
虚拟接口:axi_vip_if 是一个虚拟接口,它允许 axi_mst_agent 与AXI总线的物理信号进行交互。
代理设置:vif_proxy 是一个代理,用于将虚拟接口的操作映射到物理接口。这允许在仿真环境中模拟实际的硬件行为。

<axi_vip_pkg.sv> 中定义的 axi_mst_agent 类,继承自xil_agent`define AXI_PARAM_DECL #( //宏定义int C_AXI_PROTOCOL=0,C_AXI_ADDR_WIDTH=32, C_AXI_WDATA_WIDTH=32,C_AXI_RDATA_WIDTH=32,C_AXI_WID_WIDTH=0,…)class axi_mst_agent `AXI_PARAM_DECL extends xil_agent;axi_monitor       `AXI_PARAM_ORDER monitor;axi_mst_wr_driver `AXI_PARAM_ORDER wr_driver;…function new (string name = "unnamed_axi_mst_agent",virtual interface axi_vip_if `AXI_PARAM_ORDER vif);super.new(name); //调用其基类的构造函数this.monitor   = new($sformatf("%s_monitor",name));this.wr_driver = new($sformatf("%s_wr_driver",name));this.rd_driver = new($sformatf("%s_rd_driver",name));this.vif_proxy = new($sformatf("%s_vif",name));this.vif_proxy.assign_vi(vif);this.set_vif(this.vif_proxy);endfunction : new  // axi_mst_agent类构造函数
…
endclass : axi_mst_agent

 2.2 design_1_axi_vip_0_0_pkg

定义了一个封装包,其中包含了一些参数和类型定义,用于配置和实例化AXI VIP组件。

首先,在package中定义了一些参数,如VIP_PROTOCOL和VIP_READ_WRITE_MODE,用于指定AXI VIP的协议和读写模式。

然后,通过typedef关键字定义了一个名为design_1_axi_vip_0_0_mst_t的类型,该类型是axi_mst_agent类的特化版本,根据之前定义的参数进行特化。

启动验证组件的示例代码:

首先声明了一个名为master_agent的design_1_axi_vip_0_0_mst_t类型的对象,然后在initial块中创建并启动了这个agent。通过实例化和启动这个agent,可以开始对AXI VIP进行仿真测试。最后,使用endpackage关键字结束了这个封装包的定义。

 2.3 参数指定

SystemVerilog中,类并不直接支持像C++Java中的模板化(泛型)编程,但它允许你创建参数化的类,这些参数通过顺序指定。如下:

// <component_name>_pkgparameter design_1_axi_vip_0_0_VIP_PROTOCOL         = 2;
parameter design_1_axi_vip_0_0_VIP_READ_WRITE_MODE  = "READ_WRITE";
parameter design_1_axi_vip_0_0_VIP_INTERFACE_MODE   = 0;
parameter design_1_axi_vip_0_0_VIP_ADDR_WIDTH       = 32;
parameter design_1_axi_vip_0_0_VIP_DATA_WIDTH       = 32;
…typedef axi_mst_agent #(design_1_axi_vip_0_0_VIP_PROTOCOL, design_1_axi_vip_0_0_VIP_ADDR_WIDTH,design_1_axi_vip_0_0_VIP_DATA_WIDTH,design_1_axi_vip_0_0_VIP_DATA_WIDTH,design_1_axi_vip_0_0_VIP_ID_WIDTH,…
) design_1_axi_vip_0_0_mst_t;

3. 实例化注意事项

3.1 名称对应关系

3.2 寄存器地址

 3.3 block design

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/823106.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

09 SQL进阶 -- SQL高级处理 -- 窗口函数等

1. 窗口函数 1.1 窗口函数概念及基本的使用方法 窗口函数也称为 OLAP 函数。OLAP 是 OnLine AnalyticalProcessing 的简称,意思是对数据库数据进行实时分析处理。 为了便于理解,称之为窗口函数。常规的 SELECT 语句都是对整张表进行查询,而窗口函数可以让我们有选择的去某…

Spring @Transactional 注解

官方文档&#xff1a;https://docs.spring.io/spring-framework/reference/data-access/transaction/declarative/annotations.html#:~:textThe%20%40Transactional%20annotation%20is%20metadata,suspending%20any%20existing%20transaction%22). 推荐阅读&#xff1a;https:…

基于springboot实现大创管理系统【项目源码+论文说明】计算机毕业设计

基于springboot实现大创管理系统演示 摘要 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;管理信息系统的实施在技术上已逐步成熟。本文介绍了大创管理系统的开发全过程。通过分析大创管理系统管理的不足&#xff0c;创建了一个计算机管理大创管理系统的方案。文章介…

Re65:读论文 GPT-3 Language Models are Few-Shot Learners

诸神缄默不语-个人CSDN博文目录 诸神缄默不语的论文阅读笔记和分类 论文全名&#xff1a;Language Models are Few-Shot Learners ArXiv网址&#xff1a;https://arxiv.org/abs/2005.14165 2020 NeurIPS&#xff1a;https://papers.nips.cc/paper/2020/hash/1457c0d6bfcb49674…

集成sa-token实现登录和RBAC权限控制

集成sa-token实现登录和RBAC权限控制 文章目录 1.sa-token是什么&#xff1f;1.1简介1.2官网1.3 Sa-Token 功能一览1.4 功能结构图 2.集成sa-token及配置2.1 pom依赖2.2 yaml配置2.3 代码配置 4.RBAC权限控制表设计5.菜单权限树构造实现5.1菜单权限数据sql查询5.2菜单权限树构建…

solidity(10)

&#x1f52e; Solidity变量指南&#xff1a;探寻状态、局部和全局三界之秘&#x1f30c; 在Solidity的神秘大陆上&#xff0c;变量就像是散落在时间和空间中的宝石&#x1f48e;&#xff0c;每颗都有它独特的魔力和作用域。掌握这三种变量&#xff0c;是成为合约法师的重要一…

Vue项目学习(一)-SQL闯关

Hello , 我是小恒不会java。今天来阅读一个Vue纯前端项目--SQL在线闯关 进步的方法除了文档书籍视频&#xff0c;学会阅读源代码&#xff0c;从代码中学会解决需求的方法也是必要的 已部署完成&#xff0c;在线体验&#xff1a;http://sql.yunduanjianzhan.cn 背景 简介 闯…

《黑神话:悟空》现已正式上架PS商城,今晚或有大动作

关于《黑神话&#xff1a;悟空》的消息可谓是喜闻乐见&#xff01;今天晚上19:10可能会有相关游戏内容放出&#xff0c;让人非常期待。而海信电视推出的《黑神话&#xff1a;悟空》专属画质模式&#xff0c;让玩家可以享受到更加细腻的游戏画面。 此外&#xff0c;海信和《黑神…

高级感拉满的个人UI网页

效果图 PC端 移动端 部分代码 index.html <!DOCTYPE html> <html><head><meta charset"utf-8" /><title>Zboy的主页</title><link rel"stylesheet" href"css/normalize.css" /><link rel&qu…

SAP项目任务一览表

根据SAP Activate项目管理方法论的主要精神&#xff0c;浓缩到一些主要的团队和任务。 主要的团队有&#xff1a; 项目管理(办公室)Project Management(office)&#xff1a;项目经理团队&#xff0c;包括项目办公室。负责项目整体运行和监控&#xff0c;项目办公室负责项目的…

李沐-19 卷积层【动手学深度学习v2】

记录下关于权重下标变换的理解&#xff1a; 从原来的Wi,j到Wi,j,k,l是从二维到四维的过程&#xff0c;如下图所示 对全连接层使用平移不变性(如&#xff1a;卷积核在移动过程是不变的)和局部性&#xff08;如&#xff1a;卷积核有一定大小&#xff09;得到卷积层&#xff0c;这…

【leetcode】双指针算法技巧——滑动窗口

标题&#xff1a;【leetcode】双指针算法技巧——滑动窗口 水墨不写bug 正文开始&#xff1a; 滑动窗口介绍 滑动窗口是一种常用的算法技巧&#xff0c;用于解决一些涉及 连续子数组或子串 的问题。它的基本思想是 维护一个窗口&#xff0c;通过 在窗口内移动 来寻找满…

如何查询RGB图像的三维numpy数组中有多少个不同的RGB点,并打印具体数值?

《博主简介》 小伙伴们好&#xff0c;我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源&#xff0c;可关注公-仲-hao:【阿旭算法与机器学习】&#xff0c;共同学习交流~ &#x1f44d;感谢小伙伴们点赞、关注&#xff01; 《------往期经典推…

xgplayer插件的使用-西瓜播放器 ---- Vue3中使用

xgplayer 视频 一、xgplayer官网 xgplayer官网 - 点我进入 一、xgplayer简单介绍 西瓜播放器是字节跳动推出的一款播放器。 稳定性好&#xff08;大厂&#xff08;字节跳动&#xff09;出品&#xff09;&#xff1b;插件方便实用且简洁高雅&#xff1b;官网文档清晰&#xff1b…

[Linux - C] 自主Shell

[Linux - C] 自主Shell [Linux - C语言] 自主Shell逻辑策划 main()打印命令行 void MakeCommandLineAndPrint()用户名 USER主机名 HOSTNAME当前目录 PWDSkipPath 切割目录打印命令行 获取用户字符串 int GetUserCommand()检查重定向 void CheckRedir()切割字符 void SplitComma…

数据加密、文档加密为什么都选择安企神软件

数据加密、文档加密为什么都选择安企神软件 免费试用安企神 在数据加密和文件加密领域&#xff0c;有众多优秀的软件&#xff0c;他们功能各异、价格不同、效果也大相径庭&#xff0c;经过对比使用、用户口碑和技术网站评判&#xff0c;安企神在各方面都稳坐第一把交易。其原…

新闻媒体行业邮件推广:精准推送,创造价值

在当今信息爆炸的时代&#xff0c;新闻行业如何在竞争激烈的市场中脱颖而出&#xff0c;吸引读者的目光&#xff0c;成为了每个新闻机构都需要认真思考的问题。许可式邮件营销成为了一种强大的工具&#xff0c;不仅能够向订阅者发送新闻期刊&#xff0c;还能够向广告商发送宣传…

【基础物理实验】【AFM虚拟实验】基于AFM的物质表面微观结构及力学性质表征仿真实验(下)【北京航空航天大学】

本次实验&#xff08;上&#xff09;见博客&#xff1a;【基础物理实验】【AFM虚拟实验】基于AFM的物质表面微观结构及力学性质表征仿真实验&#xff08;上&#xff09;【北京航空航天大学】 本次实验&#xff08;中&#xff09;见博客&#xff1a;【基础物理实验】【AFM虚拟实…

LLamaSharp加载llama.cpp转化好的模型

新建.net8控制台项目 安装依赖包 LLamaSharp和LLamaSharp.Backend.Cpu 准备好转化好的模型 没有的话参考这篇文章https://blog.csdn.net/qq_36437991/article/details/137248622 编写代码 using LLama; using LLama.Common; using LLama.Native;namespace llamasharpstu…

N皇后问题(DFS解决)

文章目录 一、题目分析二、对角线判断&#xff08;分两种&#xff09;三、代码演示 先赞后看&#xff0c;养成习惯&#xff01;&#xff01;&#xff01;^ _ ^<3 ❤️ ❤️ ❤️ 码字不易&#xff0c;大家的支持就是我坚持下去的动力。点赞后不要忘了关注我哦&#xff01; 一…