You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Rocket Chip RISC-V RTL仿真:存储指令无AXI写请求问题求助

排查AXI无存储写操作的可能方向
  • 先确认存储指令的目标地址范围
    对照反汇编里sd/sw指令的目标地址,检查这个地址是不是被Testbench映射到AXI总线上的内存。如果地址属于片上SRAM或者寄存器空间,CPU会直接访问本地存储,不会发起AXI总线事务。比如反汇编里存到0x10000000,就得确认Testbench有没有把这个地址段挂到AXI slave上。

  • 检查存储指令是否真的被执行了
    看反汇编里存储指令的上下文:如果存的是后续代码完全没用到的变量,编译器大概率会把这个指令优化掉。另外看仿真波形里的PC值,有没有走到这条存储指令的地址上——要是程序在执行到这之前就跳走或者结束了,自然不会有写操作。

  • 排查AXI总线的握手信号
    盯着仿真波形里的AXI写通道信号:AWVALID有没有拉高?如果CPU发了写地址请求,但AWREADY一直是低,说明AXI slave没准备好接收,CPU会挂起写事务。还要看WVALID/WREADY、BVALID/BREADY这些握手对,有没有某一方没正确响应。

  • 确认机器码加载和PC初始化是否正确
    检查Testbench把机器码写到的地址,是不是和CPU启动的初始PC一致。要是代码存在了错误的地址,CPU根本没跑这段带存储指令的代码,自然不会有AXI写操作。另外也得确认存储指令对应的机器码有没有完整写入内存,别出现截断或者比特错误。

  • 考虑CPU的缓存/写缓冲机制
    如果是带D-cache的RISC-V CPU,要是存储地址在缓存命中范围内,CPU会先写缓存,只有缓存回写的时候才会发起AXI写事务。可以在存储指令后面加一条fence指令强制缓存刷新,再仿真看看有没有AXI写动作。还有些CPU带写缓冲,要是缓冲没被触发刷新,写事务会延迟,甚至直到程序结束才会执行。

内容的提问来源于stack exchange,提问作者paopaopoo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 16:09:52