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

能否创建兼容Testbench与模块连接的统一AXIS接口?

问题根源与解决方案

核心问题分析

vsim-3838警告的本质是TREADY信号被两个不同的驱动源同时赋值:一个是连续赋值(可能是接口内的默认赋值、或modport隐式驱动),另一个是过程赋值(DUT或Testbench中的always/initial块)。

在AXIS协议中,TREADY的驱动角色是明确的:

  • Slave侧(通常是DUT)负责驱动TREADY,表明自身是否准备好接收数据
  • Master侧(通常是Testbench)仅采样TREADY,不驱动它

你的代码功能正常是因为Verilog允许线网型信号的多驱动(通过线逻辑解决冲突),但工具会抛出警告提示潜在风险。

具体修正步骤

1. 修正接口的modport与Clocking Block定义

确保TREADY的驱动方向单一,只交给Slave侧:

interface axis_if #(parameter DATA_WIDTH=8) (input logic clk);
  logic tvalid;
  logic tready;
  logic [DATA_WIDTH-1:0] tdata;
  logic tlast;

  // Master modport:仅输出驱动类信号,采样TREADY
  modport master (
    input  clk, tready,
    output tvalid, tdata, tlast
  );

  // Slave modport:仅输出TREADY,采样其他信号
  modport slave (
    input  clk, tvalid, tdata, tlast,
    output tready
  );

  // Testbench Master用Clocking Block:只采样TREADY,不驱动
  clocking cb_master @(posedge clk);
    input  tready;
    output tvalid, tdata, tlast;
  endclocking

  // Testbench Slave用Clocking Block(若需要):仅驱动TREADY
  clocking cb_slave @(posedge clk);
    input  tvalid, tdata, tlast;
    output tready;
  endclocking
endinterface

2. 移除接口内的默认连续赋值

如果你的接口中存在类似assign tready = 1'b0;的默认赋值,直接删除——把TREADY的驱动权完全交给DUT(Slave)或Testbench中的Slave角色模块,避免双重驱动。

3. 修正DUT与Testbench的连接逻辑

  • DUT必须绑定axis_if.slave modport,仅通过过程块驱动TREADY:
module axis_dut(axis_if.slave s_axis);
  always @(posedge s_axis.clk) begin
    // 根据内部状态驱动TREADY(示例逻辑)
    s_axis.tready <= (s_axis.tvalid) ? 1'b1 : 1'b0;
  end
endmodule
  • Testbench作为Master时,仅通过cb_master采样TREADY,绝不驱动它:
program axis_tb(axis_if iface);
  initial begin
    iface.cb_master.tvalid <= 1'b0;
    #10;
    iface.cb_master.tvalid <= 1'b1;
    iface.cb_master.tdata <= 8'h55;
    wait(iface.cb_master.tready); // 仅采样TREADY
    #10;
    iface.cb_master.tvalid <= 1'b0;
  end
endprogram

关键注意点

  • 不要混淆Clocking Block的输入输出方向:Master侧的Clocking Block永远只把TREADY设为input
  • 禁止在接口、Testbench、DUT中同时对TREADY做赋值操作,保持驱动源唯一

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.11 20:33:09