SV---包的使用

1.包的意义

2.包的定义

package regs_pkg;
	`include "stimulator.sv"
	`include "monitor.sv"
	`inclide "chker.sv"
	`include "env.sv"
endpackage

package arb_pkg;
	`include "stimulator.sv"
	`include "monitor.sv"
	`inclide "chker.sv"
	`include "env.sv"
endpackage

module mcdf_tb;    
    regs_pkg :: monitor mon1 = new();    
    arb_pkg :: monitor  mon2 = new();
endmodule

package是将命名空间分隔开来,当使用不同package中的同名类,只需要注明是使用哪个package中的。

只需要通过xxx_pkg :: 进行索引即可。

`include的作用是把各个sv的代码复制到package中。

3.包和库的区分

 

4.包的命名规则

package以及其内部定义的类名称尽量加前缀。

这样的好处是不同package中定义的class也不同,在顶层的引用也可以通过“import pkg_name :: *”的形式,来表示在module mcdf_tb中引用的类,如果在当前域(mcdf内部)中没有定义的话,会搜寻regs_pkg和arb_pkg的定义的类,又由于它们各自包含的类名不相同,因此无需担心下面的搜寻会遇到同名类发生冲突的问题。

package regs_pkg;
	`include "regs_stm.sv"
	`include "regs_mon.sv"
	`inclide "regs_chk.sv"
	`include "regs_env.sv"
endpackage

package arb_pkg;
	`include "arb_stm.sv"
	`include "arb_mon.sv"
	`inclide "arb_chk.sv"
	`include "arb_env.sv"
endpackage

module mcdf_tb;
	import regs_pkg :: *; //引用regs_pkg
	import arb_pkg :: *; //引用arb_pkg
	regs_mon mon1 = new();
	arb_mon   mon2 = new(); //添加前缀regs和_arb_ ,这样mon1和mon2就不会冲突
endmodule

 5.包的使用 

例题

解析:包中编译的类可以导入到其他域中,其中域包括module interface program class package。对于C,因为包也是一个域,所以可以导入其他包定义的类。所以ABCD都对。

 

  • 4
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值