AMBA AXI STREAM 协议自研VIP开发记录

1. AXI STREAM 协议

1.1 基本协议

关于TUSER:

TUSER的确定原则

TUSER 在多master 和 slave 之间存在位宽匹配的问题。

TUSER的确认原则: 根据master 和 slave 的比较,取比较小的那一个。

TREADY 是否使用,对于master 和  slave 都是也是可选的

1.2  应用场景

99% 的应用场景都是固定发流,也不会交织。TKEEP一般在最后一拍拉低。

1.3  问题

2.  VIP的基本结构

3. 开发过程记录:

(1)细节: interface注意要引用clocking  block 里面的,否则出现不定态

(2)  代码debug - 一个package 作用域的问题

现象: 如果红框里这句不加,编译会 报以下错误

分析:package 作用域是当前这一层次,package 里面又包了package的,引用不了。

PS: include 路径需要给正确,用相对路径

 

(3)vip_lib 版本要和仿真器版本一致,否则会报以下fatal

(4)顶层集成端口连线问题:

不同于VIP,自定义的interface 没有区分master/slave 的子interface, 统一定义成了logic型。

连接时使用force 的方式连接,注意要放在initial块里,否则报错。

 

(5)

4. cadence VIP 使用

(1) 可以使用VIP中内置的callback 读取driver 或者monitor 中的transaction 

使用: 

(2)packet  vs transfer 

(3)interface 实现

Cadence 在interface中根据使用场景 activeMaster, passiveMaster, activeSlave, passiveSlave

 例化了 四个子interface.

PS: axi 也是这样的; Synopsys 也是如此实现

(4) VIP  monitor port的使用:

在自己的环境中可以设置analysis port,通过write_ 函数将transaction get 出来。

实践上,line97 setCallback 必须设置,否则以下红框monitor的连接并不生效。

Cadence的VIP中大量使用各种各样的callback, 具体的用法还没完全研究明白。

Q: 按照其说明文档说的,应该有一种方式直接使用封装好的函数将transaction 取出来(如4(1)中截图)。

A:setCallback之后,通过触发相应Event-EndedCbEvent的方式来get transaction.

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值