system verilog变量定义编译失败_0

sv中,变量定义,要放在程序的最开头。比如如下:

这样,编译才能成功。但是如果,变量定义没有放在最前面,而是放到了赋值语句之后,就会编译报错:

VCS编译,就会出现如下错误:

irun编译,就会出现如下错误:

但是在看UVM源代码的时候,发现UVM中,定义一些宏的时候,会定义一些变量,那么宏在使用的时候,就会在代码的中间定义变量,也就是定义的变量没有定义在程序的最开始,但是,编译却不会报错,这又是为什么了?

如以上代码,定义了matched的局部变量。但是这个代码编译,是不会报错的。

通过测试,发现了如下的规律:

◾在1个代码块中,变量必须要定义在最前面。

◾代码块如果有嵌套,那么变量定义遵循自己所在的代码块的变量定义要求。

直接上代码:

如上代码,有3个代码块:

◾1是initial begin end包含的代码

◾2是if begin end包含的代码

◾3是else begin end包含的代码

每个代码块中,可以定义变量,但变量的定义,要在本代码块的最开始。否则就会出现编译失败。

变量i定义在1代码块的开始,编译不会失败,变量j是定义在2代码块的开始,因此编译不会失败。变量k是定义在3代码块的开始,因此编译也不会失败。

更多相关阅读

dvteclipse配置RUN(四)
dvteclipse创建新工程(五)
dvteclipse代码预处理(六)

原文首发于骏的世界博客
作者:卢骏
更多IC设计相关的文章请关注IC设计极术专栏,每日更新。

发表评论

邮箱地址不会被公开。 必填项已用*标注

相关