Vivado使用之include、import报错

一、关于include

 

报错:ERROR: [VRFC 10-3195] cannot open include file 'timescale.v'

解决方案:

        (1)把timescale.v文件添加至工程,右键设置成"Set Global Include”

         (2)把timescale.v的“set file type”设置成Verilog Header


二、关于import

 报错:error: "axi_vip_pkg" is not declared

我看官方例程也报错?????

 

附使用教程(转载:【VIVADO IP】AXI Verification IP - 知乎 (zhihu.com)):

1 IP主要功能

AXI Verification IP(VIP)专为支持仿真客户设计而开发,即只参与仿真,不参与综合实现,可以用来进行AXI协议校验(AXI Protocol Checker)使用。

主要功能摘要:

  • 支持 AXI3、AXI4 或 AXI4-Lite 接口
  • 可配置为 AXI master接口、AXI slave接口和直通模式
  • 可配置的模拟消息传递
  • 提供仿真 AXI 协议检查

如需获取 AXI VIP IP 核手册以及API设计文件,请从该链接中PDF和附件中获取。

2 IP配置

IP的配置除了接口模式外,其他都可配置为自适应

这里主要说明一下,此IP并非接入设计即可使用,需要进行一些配置才能正常工作

我们打开IP的实例工程,在仿真文件中可以看到很多测试文件,根据功能被划分在不同文件夹中:

具体功能的描述我们可以在手册【PG267】的【table 6-1】中查看:

简单的从命令格式也可知道功能:basic/adv(基础/高级)+ mst(master)【active/passive】+pt(pass through)【slv/mst/passive/mem】+slv(slave)【passive/mem/comb】

接下来我们以单个slave作为测试端口来介绍配置。我们打开slave配置活动模式(__comb)的仿真文件,例如:

可以看到每个模式都有相关的头文件被加入仿真(配置为passive的没有加入),我们需要把对应的头文件加入自己的test-bench中,才能正确运行IP。

STEP 1:添加头文件并声明

头文件加入自己的仿真列表中:

并在test-bench中进行声明

 `timescale 1ns/1ps
 `include "axi_vip_0_slv_stimulus.sv"
 ...
 axi_vip_0_slv_stimulus slv();

接下来我们需要修改这个头文件来匹配我们自己的工程。在顶部注释中可以看到配置流程:

 * This file contains example on how Slave VIP withput memory model responds 
 * For Slave VIP to work correctly, user environment MUST have the lists of item below and follow
 * this order.
 *    1. import two packages.(this information also shows at the xgui of the VIP)
 *         import axi_vip_pkg::* 
 *         import <component_name>_pkg::*;
 *    2. delcare <component_name>_slv_t agent
 *    3. new agent (passing instance IF correctly)
 *    4. start_slave
 * As for ready generation, if user enviroment doesn't do anything, it will randomly generate ready
 * siganl,if user wants to create his own ready signal, please refer task user_gen_wready. 

STEP 2:导入packages

这一步我们需要导入packages

 *         import axi_vip_pkg::* ;
 *         import <component_name>_pkg::*;

使用Tcl命令来获取 ip 在工程中的实例化名称

 get_ips *vip*
 # return : ad_test_axi_vip_0_0

或者在IP的参数信息中也可以看到

对应修改即可:

 import axi_vip_pkg::*;
 import ad_test_axi_vip_0_0_pkg::*;

STEP 3:声明agent

 // <component_name>_slv_t
 ad_test_axi_vip_0_0_slv_t              agent;

STEP 4:新建agent并启动

新建agent需要确定IP在工程中的路径,以我的工程为例:

 // "Xilinx AXI VIP Found at Path: my_ip_exdes_tb.DUT.ex_design.axi_vip_mst.inst" 
 agent = new("slave vip agent",inst_ad_test_wrapper.ad_test_i.axi_vip_0.inst.IF);
 agent.start_slave();

到此文件的配置就完成了。

其他配置

ready信号的决策有多种,在下面可以设置:

  task user_gen_awready();
     ...
     awready_gen.set_ready_policy(XIL_AXI_READY_GEN_EVENTS);
     ...
  endtask

在AXI协议检查时可以设置返回错误信息:

 /*************************************************************************************
     * Set verbosity of agent - default is no print out 
     * Verbosity level which specifies how much debug information to produce
     *    0       - No information will be printed out.
     *   400      - All information will be printed out
 *************************************************************************************/
 agent.set_verbosity(400);            // set verbosity of agent
  • 4
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值