SystemVerilog很纠结的一个问题(真的解决不了了吗?都想哭了)
时间:10-02
整理:3721RD
点击:
先定义了一个class:
`ifndef MEM_BASE_OBJECT_SV
`define MEM_BASE_OBJECT_SV
class mem_base_object;
bit [7:0] addr;
bit [7:0] data;
// Read = 0, Write = 1
bit rd_wr;
endclass
`endif
在另外一个class中例化这个类:
`ifndef MEM_DRIVER_SV
`define MEM_DRIVER_SV
//`include "mem_base_boject.sv"
class mem_driver;
virtual mem_ports ports;
mem_base_object object;
function new(virtual mem_ports ports);
begin
this.ports = ports;
ports.address= 0;
ports.chip_en= 0;
ports.read_write = 0;
。
。
endfunction
endclass
但是在questasim中编译的时候会说object不是合法的数据类型。
有没有高人知道怎么回事啊?
小弟先谢过了
干吗注释了这句
//`include "mem_base_boject.sv"
include 的顺序可能不对,找不到类的定义
先 typedef class ....
调用别的类,需要提前typedef的
加上·include还是会报错,说这句话非法
typedef也做过了,还是会出错,不知道什么原因,真是郁闷
你跟楼上说的一样,我在试试,很感谢你和你楼上,呵呵
include "mem_base_boject.sv"
你这个的名字写错了吧?换成mem_base_object.sv看看?
你的意思是不加“”吗?
刚试了下,还是不行
我的意思是,你`include ""里面的文件名错了,object的拼写错误,不知道是不是这个问题。双引号当然是要的。
文件名写错了,好像!
顶一个,
太感谢你了,错误终于找到了,我太粗心了,一定要改掉,呵呵
呵呵是啊,谢谢你的提醒,终于搞定了
... ...
貌似questa的报错提示不是很明确,还是vcs的好!
像这种怀疑是不是没include进来的问题可以直接在同一个文件里把要include的class的定义写上,如果编译能过就说明include哪里出了问题再往下查!
已经解决了,不过还是谢谢你
用vcs试试