意外的标记 "endpackage

问题描述 投票:-1回答:1

我想在我的顶层模块中使用这个包。

package x_mater_pkg;

`timescale 1 ns/1 ps
import uvm_pkg::*;
`include "uvm_macros.svh"

localparam DATA_W = 128;
localparam x_PORTS = 4;
localparam ADDR_WIDTH = 2;

`include "x_driver.sv"
`include "x_env.sv"
`include "x_master_agent.sv"
`include "xsequence.sv"
`include "x.sv"
`include "x_sequencer.sv"
`include "x_tx_seq_item.sv"
`include "x_top.sv"

 endpackage : x_master_pkg

在我的顶层模块中使用这个pkg:。

 module top_x;

 import x_master_pkg::*;
 ...
 endmodule

一直得到一个错误,有人知道为什么吗?在其他情况下,我的slave接口的实例不被识别。

system-verilog uvm
1个回答
1
投票

SV包不能包含其他设计元素。A module 是一个设计元素,不能在包里面。所以,您的 include 不应存在。

通常处理包的方法是

  1. 包括参数、类、函数......等其他非设计元素在包内。

  2. 在使用其成员的模块中导入包。

  3. 编译模型,使包含包的文件在使用前被编译。

x_mater_pkg.sv.

package x_mater_pkg;
localparam DATA_W = 128;
localparam x_PORTS = 4;
localparam ADDR_WIDTH = 2;
...
endpackage

x_top.sv

`include "uvm_macros.svh"
 module top_x;
   import uvm_pkg::*
   import x_master_pkg::*;
   ...
 endmodue

然后

compile uvm_pkg.sv x_mater_pkg.sv x_top.sv
© www.soinside.com 2019 - 2024. All rights reserved.