包的使用1-2

        package

        在每个library里边只能出现一个tb,冲掉。   所以可以新建一个library,命令vlog -sv class_inheritance.sv -work newlib来新建一个newlib。...

        同名模块想区分,就是分别编译到不同library;library包含package,package也像一个单元,会默认编译到lib,默认编译到work(默认)的lib中。


        pkg_a::packet_a;   #域索引

package pkg_a;
    class packet_a;
        int p
    endclass
    typedef struct{
        int data;
        int command;
    } struct_a;
    int va = 1;
endpackage

package pkg_b;
    class packet_b;
    endclass
    typedef struct{
        int data;
        int command;
    } struct_b;
    int vb = 1;
endpackage

module mod_a;
endmodule

module mod_b;
endmodule

module tb;
    class packet_tb;
    endclass
    typedef struct{
        int data;
        int command;
    } struct_tb;

    class packet_a;
        int tb_a;
    endclass
    class packet_b;
        int tb_b;






pkg_a::packet_a;   #域索引

        package!!!的概念,软件用得很多。

        package是把相对应的,不管同名与否,相关的类型放到package里边为了复用。   模块/外部想要用变量/类型,可通过import/::索引符号来解决此问题。——软件,要懂的包。

         可以定义在package的有类,结构体,方法。(模块,interface(if的使用更接近模块)也不能在package定义,在package里定义的类型是软件类型是在软件里要使用到的类型,验证环境是拿软件来搭的,不管是SV还是UVM都是拿软件来搭的。   所以软件自然会用到类,只有对象在仿真一开始的时候就会例化,除了对象以外,其他都可以视为静态变量,句柄本身也可以是静态变量。   但是对象会要在仿真时候例化,但是向量,如int,字符串,数组等都可以是静态的。)

验证环境理解软件的概念——软件是能在类里边能够声明的变量/类里边能够使用的类型;例如,在类里可以使用/例化类,可在类里例化一个新的类的对象;在类里也可声明结构体的变量;在类里也可以使用方法;在类里不能例化模块,interface不能在package里定义。)(interface既能用到验证环境里属于软件,即验证环境和硬件之间的媒介,还能做的是在硬件与硬件之间做接口。   所以interface就媒介来讲的话,处于软件和硬件之间,更贴近于硬件,定义interface和定义mlodule差不多。(模块可以例化模块,模块可以例化接口;但是接口可以例化接口,接口不能例化模块;接口if和模块mod只能单独定义,module里可以定义class类,但不能再定义module,各个module模块之间都是独立的,平铺的。   module里不能定义interface))

        代码,手动敲,设断点。SV学好!!!UVM!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值