【UVM】Fatal: (SIGSEGV) Bad handle or reference.

connect_phase() 启动时会发生此错误,需要查看组件的所有connect_phases。由于它指向uvm_port_base,检查连接调用的port、export、imp、fifo、analysis_XXX,确保没有空句柄。‎

思路:

  1. 检查你的port、export、imp、fifo、analysis_XXX有没有创建。
class XXX_env extends uvm_env;
   uvm_tlm_analysis_fifo#(.T(hmac_sha256_item)) fifo;
	virtual function void build_phase(uvm_phase phase);
		super.build_phase(phase);
		begin
		  /*省略*/			
			fifo=new("fifo", this);
		end
	endfunction : build_phase

	virtual function void connect_phase(uvm_phase phase);
		// TODO Auto-generated function stub
		super.connect_phase(phase);
		XXX_agent.ap.connect(fifo.analysis_export);
		XXX_reference_model.port.connect(fifo.blocking_get_export);		
	endfunction : connect_phase
	
	endclass : XXX_env
  1. 调用C/C++的方法时,即使用DPI时,function类型申明不对
    sv一侧代码如下:
import "DPI-C" context function int main(input logic[127:0] state_model, 
						input logic[256:0]  key_model);
/*省略*/
class aes_256_refmod extends uvm_component;//参考模型
		/*省略*/
		task run_phase(uvm_phase phase);
			forever begin
				in_port.get(tr_in);
				tr_in.print();
				tr_out.out = main(tr_in.state, tr_in.key);
				tr_out.print();
			end
		endtask : run_phase
···

endclass : aes_256_refmod

c语言一侧代码如下:

#include"svdpi.h"
int main(const svLogicVecVal * state_model, const svLogicVecVal * key_model) {

    return 0;
}
  1. 留坑,遇到问题再说 2021年12月10日
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值