[PV]AXI R/W/RW带宽计算的tcl脚本

AXI R/W/RW带宽计算的tcl脚本

我基于前述的axi_read_bw_per_id.tcl脚本进行了修改,使其支持:

  • 读通道(Read Channel):计算基于rvalid && rready的有效周期(已在前述实现)。
  • 写通道(Write Channel):计算基于wvalid && wready的有效周期,考虑wstrb的active bytes(字节使能位计数)。
  • 读写组合(Combined):分别计算读/写BW,然后求和输出总BW(假设双向接口)。

修改说明

  • 新增参数
    • channel:支持"read"(只读)、"write"(只写)、"both"(读写组合,默认)。
    • 写通道特定:strb_width(wstrb宽度,与data_width匹配)。
  • 逻辑扩展
    • 对于"both",脚本分别循环计算读/写(共享时间窗口),然后聚合总BW/效率。
    • 写通道:用Tcl proc count_active_strobes计算wstrb中1的位数(active strobes),字节 = (data_width / 8) * (active_strobes / (data_width / 8))。
    • per-ID支持:读用rid,写用wid(假设信号名为"wid";调整为您的设计)。
    • 输出:CSV扩展为per-ID读/写/总(e.g., Read BW, Write BW, Total BW)。
  • 假设
    • 读/写信号在同一scope。
    • ID宽度相同;如果不同,需额外调整。
    • 步进1.0ns(调整为您的clk周期以加速)。
  • 运行方式:同前述,在Verdi中source axi_rw_combined_bw.tcl。生成CSV报告。

       如果您的AXI接口有自定义信号(如非标准ID/strb),或需要优化性能(e.g., 用npi_iterate_over_transitions),请提供更多细节。

修改后的脚本示例(axi_rw_combined_bw.tcl)

# axi_rw_combined_bw.tcl - 计算AXI读/写/组合带宽 (支持per-ID, 多窗口)

# 用户参数 (可修改)
set data_width 128                  ;# AXI数据宽度 (位, e.g., 128=16字节/周期)
set id_width 8                      ;# ID宽度 (位, e.g., 8位支持256 ID)
set strb_width [expr $data_width / 8]  ;# wstrb宽度 (字节, e.g., 16 for 128-bit)
set channel "both"                  ;# "read" (只读), "write" (只写), "both" (读写组合)
set scope "/top/dut/axi_if"         ;# AXI接口scope路径 (调整为您的设计)
set time_windows [list {0 1000} {1000 2000} {2000 3000}]  ;# 多时间窗口 (ns, list of pairs)
set output_file "axi_rw_combined_bw_report.csv" ;# 输出CSV文件

# Tcl proc: 计算wstrb中active bits (popcount)
proc count_active_strobes {strb_val strb_width} {
    set count 0
    for {set i 0} {$i < $strb_width} {incr i} {
        i
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

元直数字电路验证

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值