uvm_driver基本框架-代码片

uvm_driver负责将seq产生的transaction发送到interface;

可能需要将interface的信号发回seq来控制其行为;

可能需要根据reset信号控制transaction发送;

可能需要控制其他握手信号。

构建基本框架如下:

//run_phase or main_phase
foever begin
    wait(rstn==1);
	fork  
		foever begin//发送item的线程
			seq_item_port.get(req)
			//maybe do something…
			fifo.push_back(req);
            vif.drive_item(ireq);
            if(process_responce ==1)begin
	            @(responce)
	            //处理返回信号
        	    seq_item_port.item_done(response_item);
            end
		end
	
        forever begin
	        //监测interface 返回信号
	        ->response;
        end
        forever begin
	        vif.drive_ready_signal(); //drive 握手signal 
        end
        begin//处理reset信号线程
            wait(rst==assert);
            vif.reset();
        end
	
    join_any  //使用join_any,当reset assert时,disable掉所有子线程
    disable fork
    wait(rst==deassert); //等待rst deassert。
    //clean fifo here
    //reset counter here
end

大循环,包含几个并行执行的循环。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值