V0 第17节 包的使用

1. 包的定义

  • 在大型的验证项目中,很容易出现模块重名的情况
  • 对于重名的硬件模块我们可以将它们置入到不同的编译库中
  • 对于重名的软件类、方法等,我们可以将它们置入到不同的包中
  • 我们可能使用不同的验证IP,我们也无法预测这些类名是否可能重名
  • 通过包package可以将关联的类和方法并入到同一个逻辑集合中
  • 为了使得可以在多个模块(硬件)或者类(软件)之间共享用户定义的类型,SV添加了包package
  • 用户自定义的类型譬如类,方法、变量、结构体、枚举等都可以在package…endpackage中定义

2. 导出包的内容

  • module、interface、class等可以使用包中定义或者声明的内容
  • 可以通过域的索引符::号直接引用
    definitions::parameter
    definitions::instruction_t inst
  • 可以指定索引一些需要的包中定义的类型指定的域中
    module M;
    import definitions::instruction_t;
    instruction_t inst;
    endmodule
  • 通过通配符来将包中所有的类别导入到指定的域中
    module M;
    import defintions::
    ;
    instructjion_t inst;
    endmodule

3.包与库的区分

  • package这个容器可以对类型做一个隔离作用
  • package的意义在于将软件(类、类型、方法等)封装在不同的域中,以此来与全局的域进行隔离
  • 库是编译的产物,硬件(module、interface、program)都会编译到库中,如果不指定编译库的话,会被编译进入默认库中
  • 库可以容纳硬件类型,也可以容纳软件类型,例如类、方法和包
  • 包只能容纳软件类型例如类、方法和参数
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值