System Verilog 邮箱传递小结

本文详细阐述了在VHDL设计中,如何通过信箱机制实现不同模块间类对象的跨模块传递。重点讲解了类trans2如何通过句柄获取trans3中tran1对象的操作,以及put和get方法的执行顺序和注意事项。同时,涉及对象创建、作用域和生命周期管理的关键点。

重要点知识:

1、类trans2中只创建tran1的句柄t1,没创建对象,却可以利用信箱获得类trans3中的tran1建立的指向对象的句柄。

2、信箱put、get顺序不能错;如果不加fork...join先运行tr2.run()再运行tr3.run()是错误的。

3、下面代码中put()之后get()并不能直接获得传输值(t1),需要运行完tr3.run()之后才会get到t1。

4、注意传输的句柄、邮箱句柄在两个类中都要创建句柄,其中,负责put()的类还需要创建传输对象、句柄对象。

5、注意负责get()的类与负责put()的类,邮箱句柄需要指向同一邮箱对象。

6、trans2和trans3中都名为maibox req,这不是必须的。trans2可以是maibox tot,只要将req.get()改为tot.get(),tr2.req=tr3.req改为tr2.tot=tr3.req。

此外,注意类中创建对象后,其作用范围、生命周期。


module class_priact;
class trans1;
int a =5;
endclass

class trans2;
	mailbox req;
	task run();
	    trans1 t1;
	    this.req.get(t1);
	    t1.a=t1.a*2;
	    $display("trans2.is %0d",t1.a);
	endtask
endclass

class trans3;
	mailbox req;

	function new();
		this.req=new();
	endfunction	

	task run();
		trans1 t1;
		    t1=new();
		    this.req.put(t1);
		    $display("trans3.is %0d",t1.a);
		    t1.a = t1.a*3;
		$display("t1.a*3.is %0d",t1.a);
	endtask
endclass

initial begin
	trans2 tr2=new();
	trans3 tr3=new();
	tr2.req=tr3.req;
	
  fork
	tr2.run();
 	tr3.run();
  join

end

endmodule
	

 仿真结果

系统Verilog作为一种硬件描述语言,除了关注电路的结构和逻辑外,还要具备一定的数据类型,以使得它更加适合电路的设计和开发。其中之一就是电子邮件类型(email),这种数据类型可以方便地在仿真和调试过程中与设计师进行通信。 电子邮件类型由系统Verilog 1800-2012标准定义,它是一种字符串数据类型,可以存储电子邮件地址信息。系统Verilog邮箱类型是从string类型派生出来的一种类型,因此可以执行字符串操作。它的定义方式如下: typedef string email; 在定义完电子邮件类型后,可以用它来存储和传递电子邮件地址。例如,可以在结构体中定义一个电子邮件类型的成员变量: typedef struct { string name; email address; } person; person p1 = {"Alice", "alice@example.com"}; 电子邮件类型和string类型的不同之处在于,电子邮件类型可以指定其是否有效。例如,如果设计师在必须输入电子邮件地址的地方输入了无效的地址,则可以将电子邮件类型标记为无效。可以使用系统Verilog的内置函数 $error将包含无效电子邮件地址的模拟程序报告为错误。 在仿真和调试中,电子邮件类型可用于收件人或发件人的电子邮件地址。例如,可以将电子邮件类型传递给testbench,以便在仿真后将仿真结果以电子邮件的形式发送给设计师。在硬件设计中,电子邮件类型也可以用于故障报告和警报的发送。 总之,系统Verilog的电子邮件类型对于硬件设计人员来说是非常有用的,它可以方便地在仿真和调试过程中与设计师进行通信,并保证信息的有效性。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值