SystemVerilog中的package

描述

SystemVerilog packages提供了对于许多不同数据类型的封装,包括变量、task、function、assertion等等,以至于可以在多个module中共享。

简单来说,package就是一个命名空间。

 

 package myPack;
     typedef struct {
         int i;
         int j;
     } cStruct;
     function cStruct add (cStruct a , b);
         add.i = a.i + b.i;
         add.j = a.j + b.j;
     endfunction
 endpackage
 
 module top (
     //referencing package item 'cStruct' of myPack
     output myPack::cStruct cout,
     input myPack::cStruct a , b
 );
         //referencing 'add' function of myPack
         assign cout = myPack::add(a , b);
 endmodule

 

在上面的例子中,我们声明了一个package “myPack” ,其中声明了一个struct数据类型“cStruct”和一个function “add.” 在module “top”中,我们使用package中的“cStruct”数据类型作为module的输入输出。

我们在引用package中成员使用了:

 

myPack::**

 

另外一种方式就是import了,import之后就无需在引用package中的成员时使用“myPack::”

 审核编辑:汤梓红

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分