在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 68|回复: 3

[求助] 关于在agent中例化多个sqr,drv中例化多个seq_item_port,seq传输出错问题的求助

[复制链接]
发表于 昨天 17:38 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
我的代码如下:
driver中:

                begin
                    @`AXI_DRV_CB;
                    `uvm_info("DEBUG", $sformatf("r_addr(), r_done = %0d", r_done), UVM_DEBUG)
                    if(r_done) begin
                        r_done = 0;
                        seq_item_port2.get_next_item(req);
                        `uvm_info(get_name(), "Read Packet received in master driver", UVM_LOW)
                        if(!$cast(r_trans, req)) begin
                            `uvm_fatal(get_name(), "req type error")
                        end
                        r_trans.print();
                        send_read_address();
                        seq_item_port2.put_response(r_trans);
                        seq_item_port2.item_done();
                        r_done = 1;
                    end
                end
agent中:

                               
登录/注册后可看大图

报错如下:

                               
登录/注册后可看大图

显示在agent中82行处,seq_item_port2被使用过,但我之前并没有使用,求指教怎么解决该问题。


文字长度受限,部分放上代码。
 楼主| 发表于 昨天 17:42 | 显示全部楼层
            fork
                begin
                    axi_xaction item;
                    @`AXI_DRV_CB;
                    `uvm_info("DEBUG", $sformatf("w_addr(), w_done = %0d", w_done), UVM_DEBUG)
                    if(w_done && (seq_item_port.has_do_available())) begin
                        w_done = 0;
                        seq_item_port.get_next_item(req);
                        if(!$cast(w_trans, req)) begin
                            `uvm_fatal(get_name(), "req type error")
                        end
                        `uvm_info(get_name(), "Write Packet received in master driver", UVM_LOW)
                        w_trans.print();
                        fork
                            send_write_address();
                            send_write_data();
                        join
                        void'($cast(item, w_trans.clone()));
                        foreach(tx_port_w[i]) begin
                            tx_port_w[i].write(item);
                        end
                        seq_item_port.put_response(w_trans);
                        seq_item_port.item_done();
                        w_done = 1;
                    end
                end
                begin
                    @`AXI_DRV_CB;
                    `uvm_info("DEBUG", $sformatf("r_addr(), r_done = %0d", r_done), UVM_DEBUG)
                    if(r_done) begin
                        r_done = 0;
                        seq_item_port2.get_next_item(req);
                        `uvm_info(get_name(), "Read Packet received in master driver", UVM_LOW)
                        if(!$cast(r_trans, req)) begin
                            `uvm_fatal(get_name(), "req type error")
                        end
                        r_trans.print();
                        send_read_address();
                        seq_item_port2.put_response(r_trans);
                        seq_item_port2.item_done();
                        r_done = 1;
                    end
                end
            //--join_none
            join
 楼主| 发表于 4 小时前 | 显示全部楼层
为什么不使用virtual sequencer?
答:vritual sequencer使用一般为多agent场景下使用。
该场景为单agent场景,在driver中,通过fork join实现多个seq_item_port并行获取seqence,seq_item_port通过相对应的task实现不同的操作,在这个driver中,目的是实现write和read的并行操作。
发表于 24 分钟前 | 显示全部楼层
你这个是没有实例化吧?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条

小黑屋| 手机版| 关于我们| 联系我们| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2025-5-23 14:36 , Processed in 0.032557 second(s), 8 queries , Gzip On, MemCached On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表