求解决!!!SystemVerilog于ModelSim在编译和执行

我们正在学习SV流程,样品执行书。。

功能:函数返回数组。

Code1:

/*书上提供的样例。存在错误,不可执行

function void init(ref int f[5], int start);//主要是函数定义时没有声明automatic属性

foreach(f)

f = i + start;

endfunction

initial begin

int fa[5];

fa = init(fa,5);

foreach(fa)

$display("fa[%0d] = %0d", i, fa);

end

*/

#-----------------------------------------------------------------------------------

Code2:

//下面这段代码在modelsim下可成功执行。

(在定义function时加上了automatic)

module enum_name;

int fa[5];

initial begin

//  fa = init(fa, 5);

init(fa, 5);

foreach(fa)

$display("fa[%0d] = %0d", i, fa);

end

function automatic void init(ref int f[5], input int start);

foreach(f)//初始化数组

f = i + start;

endfunction

endmodule

#-----------------------------------------------------------------------------------

Question:

在LRM中第16章,解说program结果时有例如以下结构:

Code3:

module test(...)

int shared;
// variable shared by programs p1 and p1

program p1;

...

endprogram

program p2;

...

endprogram //
p1 and p2 are implicitly instantiated once in module test

endmodule

想问一下,Code2中的function怎么能够包在program...endprogram里面,形成Code3形式的代码结构。

当中,Code4是我尝试改的,但在ModelSim中编译能够通过,但执行时报错。

Code4:

module enum_name;

int fa[5];

initial begin

//  fa = init(fa, 5);

test.init(fa, 5); //相应报错信息中提示的第61行内容

foreach(fa)

$display("fa[%0d] = %0d", i, fa);

end

//------------------------------------------------------------;

program automatic test;

function automatic void init(ref int f[5], input int start);

foreach(f)//初始化数组

f = i + start;

endfunction

endprogram

endmodule

执行时报错内容:

# Compile of enum_name.sv was successful with warnings.

vsim -gui work.enum_name

# vsim -gui work.enum_name

# Loading sv_std.std

# Loading work.enum_name

# ** Error: (vsim-3927) D:/ModelSim/SysVerilog/enum/enum_name.sv(61) Accessing program item ‘/enum_name/test/init‘ from a non-program design unit enum_name is illegal.

#

#         Region: /enum_name

# ** Error: (vsim-3927) D:/ModelSim/SysVerilog/enum/enum_name.sv(61) Accessing program item ‘/enum_name/test/init‘ from a non-program design unit enum_name is illegal.

#

#         Region: /enum_name

# ** Error: (vsim-3927) D:/ModelSim/SysVerilog/enum/enum_name.sv(61) Accessing program item ‘/enum_name/test/init‘ from a non-program design unit enum_name is illegal.

#

#         Region: /enum_name

# Error loading design

版权声明:本文博主原创文章,博客,未经同意不得转载。

时间: 2024-11-16 16:29:39

求解决!!!SystemVerilog于ModelSim在编译和执行的相关文章

求解决!!!SystemVerilog在ModelSim中的编译与运行

是在学习SV过程中,运行书上的例子,碰到的问题. 功能:函数返回数组. Code1: /*书上提供的例子,存在错误,不可运行 function void init(ref int f[5], int start);//主要是函数定义时没有声明automatic属性 foreach(f) f = i + start; endfunction initial begin int fa[5]; fa = init(fa,5); foreach(fa) $display("fa[%0d] = %0d&q

spring整合hibernate,在获取sessionFactory的时候报错,求解决办法!!

applicationContext.xml文件 <!-- 开启扫包 --> <context:component-scan base-package="cn.edu"></context:component-scan> <!-- 配置sessionFactory --> <bean id="sessionFactory" class="org.springframework.orm.hibernate

解决VS在查找预编译头使用时跳过

(1)fatal error C1010: 在查找预编译头时遇到意外的文件结尾.是否忘记了向源中添加“#include "stdafx.h (2)解决VS在查找预编译头使用时跳过 visual studio默认在查找预编译头StdAfx.h使用时跳过,如果没有找到#include "StdAfx.h"会导致错误, 但是有包含StdAfx.h.但是cpp文件和StdAfx.h不在一个目录下(比如#include "../StdAfx.h")会导致错误. 解决

ensp 路由无法启动 虚拟网卡提示信息如何求解决

系统win10 ensp 510开始用的好好的,后来VirtualBox Host-Only Networ 不见了,用Oracle VM VirtualBox 重新添加一个,但地址不是192.168.56.1 用Oracle VM VirtualBox强制改为192.168.56.1 还是不能提示,如果直接在 网络连接里改 提示下面的错误, VirtualBox Host-Only Network #2 无法重命名 VirtualBox Host-Only Network 但 VirtualBo

Java代码编译和执行的整个过程

Java代码编译是由Java源码编译器来完成,流程图如下所示: Java字节码的执行是由JVM执行引擎来完成,流程图如下所示: Java代码编译和执行的整个过程包含了以下三个重要的机制: Java源码编译机制 类加载机制 类执行机制 Java源码编译机制 Java 源码编译由以下三个过程组成: 分析和输入到符号表 注解处理 语义分析和生成class文件 流程图如下所示: 最后生成的class文件由以下部分组成: 结构信息.包括class文件格式版本号及各部分的数量与大小的信息 元数据.对应于Ja

JAVA编译和执行过程

Java代码编译是由Java源码编译器来完成,流程图如下所示: Java字节码的执行是由JVM执行引擎来完成,流程图如下所示: Java代码编译和执行的整个过程包含了以下三个重要的机制: Java源码编译机制 类加载机制 类执行机制 Java源码编译机制 Java 源码编译由以下三个过程组成: 分析和输入到符号表 注解处理 语义分析和生成class文件 流程图如下所示: 最后生成的class文件由以下部分组成: 结构信息.包括class文件格式版本号及各部分的数量与大小的信息 元数据.对应于Ja

Android源码和内核源码的下载,编译和执行

笔者依据罗升阳老师的<Android 系统源码情景分析>一书,尝试下载,编译和执行Android源码和内核源码.但可能是软件源"被墙"或版本号更新的原因.期间遇到诸多问题.笔者求助于强大的度娘和谷歌.最终编译成功,现将改动的步骤记录例如以下: 一.下载相关的工具包和依赖包 1.git工具的下载.不多说 2.Java SDK的下载(參考网址:http://blog.csdn.net/zjclugger/article/details/11762085) 此处建议下载jdk1.

C语言文件的编译到执行的四个阶段

C语言文件的编译与执行的四个阶段并分别描述 C语言的编译链接过程要把我们编写的一个c程序(源代码)转换成可以在硬件上运行的程序(可执行代码),需要进行编译和链接.编译就是把文本形式源代码翻译为机器语言形式的目标文件的过程.链接是把目标文件.操作系统的启动代码和用到的库文件进行组织形成最终生成可执行代码的过程. 第一个阶段: 是预处理阶段,在正式的编译阶段之前进行.预处理阶段将根据已放置在文件中的预处理指令来修改源文件的内容.如#include指令就是一个预处理指令,它把头文件的内容添加到.cpp

在命令符模式下编译并执行Java程序

对于Java初学者,建议使用纯文本文件来编写Java程序,并在命令符模式下使用工具程序编译和执行Java程序.使用javac工具编译.java,使用java工具执行.class.(推荐sublime编辑器) 怎么在命令符模式下编译并执行Java程序?弄了好久查了不少资料终于解决.记录下来,便于总结.分享.查阅. 首先根据自己计算机的操作系统下载和安装sun公司的JDK,http://www.oracle.com/technetwork/cn/java /javase/downloads/inde