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

如何配置Synopsys AXI VIP使ARREADY/ARVALID始终有效并消除地址通道气泡?

AXI Master AR通道无气泡配置遗漏项排查

你已通过序列约束addr_valid_delay=0并设置zero_delay_enable=1尝试消除AR通道气泡,但仍存在问题,以下是需排查的遗漏配置点:

1. 补充事务发送逻辑

你的序列仅完成了事务的创建与随机化,缺少事务发送动作——没有uvm_send或start_item/finish_item的话,事务根本不会被驱动到总线上,自然无法形成连续的地址流。修正后的序列代码:

class seq extends svt_axi_master_base_sequence;
    svt_axi_master_transaction trans;
    virtual task body();
        for(int i=0;i<1000;i=i+1)begin
            `uvm_create_on(trans,m_sequencer)
            if(!trans.randomize with{ 
                trans.addr_valid_delay == 0;
                trans.reference_event_for_addr_valid_delay == svt_axi_transaction::PREV_ADDR_VALID;
            }) begin
                `uvm_error(get_name(), "Transaction randomization failed")
            end
            `uvm_send(trans); // 必须添加此行触发事务发送
        end
    endtask    
endclass

2. 调整Master核心配置参数

检查master_cfg中的关键流量控制参数:

  • 将max_outstanding_transactions设为足够大的值(比如与你的事务数1000匹配),避免因未完成事务数耗尽而暂停地址发送:
    this.master_cfg.max_outstanding_transactions = 1000;
    
  • 关闭地址通道的超时等待,防止因等待Slave响应产生不必要的间隙:
    this.master_cfg.ar_ready_timeout_enable = 0;
    

3. 强化事务的无依赖约束

除了地址有效延迟的约束,需额外确保事务不依赖前一个事务的响应信号,彻底消除等待逻辑:

trans.randomize with {
    addr_valid_delay == 0;
    reference_event_for_addr_valid_delay == svt_axi_transaction::PREV_ADDR_VALID;
    // 取消对前事务响应的依赖
    no_wait_for_prev_transaction_complete == 1;
};

4. 确认Slave端AR Ready持续有效

若Slave的ar_ready信号未持续拉高,Master会因等待Slave准备好产生气泡。若使用SVT Slave VIP,需配置:

slave_cfg.ar_ready_default_value = 1;
slave_cfg.ar_ready_delay = 0;

5. 排查事务突发属性

确保事务为独立单次突发(burst_length = 1),避免长突发结束后的默认间隙;若需连续突发,需约束地址连续且无额外延迟。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 15:18:13