sv package

SystemVerilog中的package如何在设计中使用?
SystemVerilog中的packages用于在不同module和interface之间共享parameters、types、tasks和functions。
packages是一个name space,其和top level在同一个层次。
在任何SystemVerilog/Verilog设计项目中,设计团队通常都会共享一些parameters、types、tasks和functions。将这些通用结构放入packages中,就可以在团队中进行共享。
在packages中指定所有通用结构后,需要先analyze package。然后单独analyze和elaborate使用该packages中某些parameters、types、tasks和functions的模块。
无需reanalyze 这个package,当共享packages很大时,可以节省很多运行时间。

SV语言提供了一种在多个module、interface和program之中共享parameter、data、type、task、function、class等等的方法,即利用package(包)的方式来实现。如果用上面装修一个大房子(MCDF testbench)来看的话,我们喜欢将不同模块的类定义归整到不同的package中。这么做的好处在于将同一簇相关的类组织在了单一的名字空间(namespace)下,使得分属于不同模块验证环境的类首先来自于不同的package,这样可以通过package来区别类的归属问题。

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

【路科】SV系统集成篇之一:包的意义

  • 在创建package的时候,已经在指定包名称的时候隐含地指定了包的默认路径,即包文件所在的路径。如果有其它要被包含在包内的文件在默认路径之外,需要在编译包的时候加上额外制定的搜寻路径选项“+incdir+PATH”。
  • 用户可以在module、interface或者program中来引用package。
  • package 中可以import其他package
  • import操作使得类型可见的域只是调用该import时当前的域;

在pkg中include 所有的component;

package tinyalu_pkg;
   import uvm_pkg::*;
`include "uvm_macros.svh"
   
      typedef enum bit[2:0] {
   no_op  = 3'b000,
                          add_op = 3'b001, 
                          and_op = 3'b010,
                          xor_op = 3'b011,
                          mul_op = 3'b100,
                          rst_op = 3'b111} operation_t;
   typedef struct {
   
      byte unsigned        A;
      byte unsigned        B;
      operation_t op;
   } command_s;
`include "coverage.svh"
`include "base_tester.svh"
`include  "random_tester.svh"
`include "add_tester.svh"   
`include "scoreboard.svh"
`include "command_monitor.svh"
`include "result_monitor.svh"
   
`include "env.svh
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值