AXI各通道握手依赖

在AXI协议中,为了防止死锁,对每个通道的握手信号(VALID, READY)做了以下规定:

  • AXI通道的发送端的VALID信号不能依赖于接收端的READY信号;
  • AXI通道的接收端可以等到VALID信号拉起来后,再拉起VALID信号;

此外,不同通道上的握手信号之间也存在依赖关系。下面三个图为读写传输依赖,单箭头指向的信号可以在箭头起始的信号之前或之后拉起。双箭头指向的信号必须在箭头起始的信号拉起之后才能拉起。

读传输依赖如下图1所示。

  • ARREADY可以在ARVALID之前或之后拉高,但是ARVALID不能等ARREADY拉高才拉高。
  • RREADY可以在RVALID之后或之后拉高,但是RVALID不能等RREADY拉高才拉高。
  • RVALID 必须在ARVALID 和ARREADY 都拉高之后才能拉高;

图1 读传输握手依赖

AXI3写传输依赖如下图2所示。

  • AWREADY可以在AWVALID之前或之后拉高,但是AWVALID不能等AWREADY拉高才拉高;
  • AWREADY可以在WVALID之前或之后拉高,但是WVALID不能等AWREADY拉高才拉高;
  • WREADY可以在WVALID之前或之后拉高,但是WVALID不能等WREADY拉高才拉高;
  • WREADY可以在AWVALID之前或之后拉高,但是AWVALID不能等WREADY拉高才拉高;
  • BREADY可以在BVALID之前或之后拉高,但是BVALID不能等BREADY拉高才拉高;
  • BVALID 必须在WVALID 和WREADY 都拉高之后才能拉高;

图2 AXI3写传输握手依赖

图3的AXI4和AXI5是在图2 AXI3基础上,多增加了一个约束,也就是:BVALID 必须在AWVALID 和AWREADY 都拉高之后才能拉高。之前AXI3,BVALID只需要等到WVALID和WREADY收集好就可以拉高了,不需要看AWREADY和AWVALID。

图3 AXI4和AXI5 写传输握手依赖

那么为了验证这些AXI通道握手之间的依赖,防止设计中出现不应该存在的依赖而导致死锁,合格的AXI VIP要注意必须支持READY模式:

  • ARREADY一直不拉高,直到AXI VIP收到ARVALID拉高才拉高;
  • AWREADY一直不拉高,直到AXI VIP收到AWVALID拉高才拉高;
  • AWREADY一直不拉高,直到AXI VIP收到AWVALID和WVALID都拉高才拉高;
  • WREADY一直不拉高,直到AXI VIP收到WVALID拉高才拉高;
  • WREADY一直不拉高,直到AXI VIP收到AWVALID和WVALID都拉高才拉高;
  • BREADY一直不拉高,直到AXI VIP收到BVALID拉高才拉高;

说白了其实就是为了防止设计人员在写代码时,错误地依赖收到READY信号后才会发出VALID信号。而也只有VIP支持以上的READY模式才能检查出这个bug,如果VIP的READY只是无规律的toggle,那么这种bug就几乎不可能找出来。

相关推荐
我不会起名字3223 小时前
TCP 三次握手为什么是三次:丢包、重传与初始序列号
网络·tcp·原理·握手
努力搬砖的小H15 天前
FPGA应用技巧之AXI4-FULL-uiFDMA IP仿真验证
经验分享·fpga开发·axi
颖月石17 天前
Rust 进程假死问题排查(dragonfly+tokio)
死锁·dragonfly
智码看视界20 天前
Day84-Arthas诊断实战:CPU飙高/死锁/内存泄漏排查三板斧
jvm·内存泄漏·arthas·死锁·性能诊断·生产调优
for_ever_love__20 天前
MySQL 锁与死锁讲透:行锁、间隙锁、Next-Key Lock 与排查方法
mysql·lock·行锁·死锁·间隙锁·排查·next-key
~木雨21 天前
Java 线程从生到死:创建三式、六态流转、中断协作与死锁活锁饥饿,一篇讲透
java·java并发·虚拟线程·死锁·线程状态·中断机制
炎龙铠甲会合体1 个月前
从 SPEC 到上板:在 Zynq-7020 上用 RTL 手写一个 YOLO 卷积加速器(完整教程)
yolo·fpga开发·axi·芯片验证
键盘会跳舞2 个月前
【C++多线程】死锁诊断工具实战:从 Windows 到 Linux 的全链路排查
linux·c++·windows·死锁
ly76892 个月前
深入解析 MySQL 间隙锁:从加锁规则到死锁案例
数据库·mysql·死锁·间隙锁·next-key lock·事务隔离
J_bean2 个月前
MySQL InnoDB 如何检测死锁、判定死锁、处理死锁
数据库·mysql·死锁·死锁检测·处理死锁·死锁判定