在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 4529|回复: 17

[求助] system verilog 采用modelsim编译类问题

[复制链接]
发表于 2015-2-27 11:38:12 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
一共定义了两个类A和B,类A引用了类B,A和B分开放在两个文件中,而且在A的开头写了typedef class B,但是采用modelsim 10.2c时编译报A文件错误,总是说“Forward declaration for type 'B' was not defined.”请问这是怎么回事?把A和B写在一个文件中就好了。刚学SV,求解答,多谢!
 楼主| 发表于 2015-2-27 13:36:02 | 显示全部楼层
没有人解答吗?
 楼主| 发表于 2015-2-27 16:22:43 | 显示全部楼层
没有人解答吗?
发表于 2015-2-27 16:43:33 | 显示全部楼层
回复 1# myhedwig


   估计是你文件的编译顺序有关系,其实不用typedef class B的,把B文件放到A之前编译就好了。没用过modelsim编译,你检查一下,是不是可以把B放到A之前编译,包括(不限于)在工程里面用鼠标把B文件拖到A前面。
发表于 2015-2-27 16:44:56 | 显示全部楼层
需要写一个文件,将a,b的文件include一下就好了
 楼主| 发表于 2015-2-27 16:46:31 | 显示全部楼层
回复 4# acgoal


   编译顺序我调过,还是报错。
 楼主| 发表于 2015-2-27 16:47:25 | 显示全部楼层
发表于 2015-2-27 17:04:26 | 显示全部楼层
回复 7# myhedwig


   这倒是一个解决的办法,在class A这个 .sv 文件的前面加上`include "B.sv"
发表于 2015-2-27 18:31:18 | 显示全部楼层
使用typedef class B其实是个解决办法,但是前提是你使用callback的形式来使用B,如果直接调用B中的函数,那是会出问题的
编译文件其实也是一门技巧,需要对软件的编译指令有全面的了解,可以使用这样几种方式:
1. 直接指定编译文件,但是要注意编译顺序;
2. 指定编译文件所在的目录,用库的方式进行编译
发表于 2015-2-27 21:59:36 | 显示全部楼层
回复 8# acgoal

同问,确实在A.sv中加入“include “B.sv” ”可以解决这个问题,但机理还有些不清楚,v代码或vhd代码,针对调用的例化的模块提前编译下即可,但是对已sv中的对象而言,就需要放在一起,学习uvm过程中,是将所有的类文件,放在一个pkg.sv中,统一进行编译。如果有c++或者sv清楚地可以详细说下。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条


小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-12-23 12:01 , Processed in 0.021059 second(s), 7 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表