我们正在学习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

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

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

  1. 解决:高版本jdk编译低版本代码时eclipse提示Access restriction:The type 'Unsafe' is not accessible due to restriction on required library

    在Eclipse中采用高版本jdk编译一些低版本的源码时,由于源码中使用了一些高版本中过时的API,可能就会报错,类似于: Access restriction:The type 'Unsafe' i ...

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

    applicationContext.xml文件 <!-- 开启扫包 --> <context:component-scan base-package="cn.edu&qu ...

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

    Java 代码编译是由 Java 源码编译器来完成,流程图如下所示: Java 字节码的执行是由 JVM 执行引擎来完成,流程图如下所示: Java 代码编译和执行的整个过程包含了以下三个重要的机制: ...

  4. 在CMD窗口中使用javac和java命令进行编译和执行带有包名的具有继承关系的类

    一.背景 最近在使用记事本编写带有包名并且有继承关系的java代码并运行时发现出现了很多错误,经过努力一一被解决,今天我们来看一下会遇见哪些问题,并给出解决办法. 二.测试过程 1.父类代码 pack ...

  5. JVM学习笔记(二)------Java代码编译和执行的整个过程【转】

    转自:http://blog.csdn.net/cutesource/article/details/5904542 版权声明:本文为博主原创文章,未经博主允许不得转载. Java代码编译是由Java ...

  6. JVM学习笔记(二)------Java代码编译和执行的整个过程

    Java代码编译是由Java源码编译器来完成,流程图如下所示: Java字节码的执行是由JVM执行引擎来完成,流程图如下所示: Java代码编译和执行的整个过程包含了以下三个重要的机制: Java源码 ...

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

    Java代码编译是由Java源码编译器来完成,流程图如下所示: Java字节码的执行是由JVM执行引擎来完成,流程图如下所示: Java代码编译和执行的整个过程包含了以下三个重要的机制: Java源码 ...

  8. java代码的编译、执行过程

    Java代码编译是由Java源码编译器来完成,流程图如下所示: Java字节码的执行是由JVM执行引擎来完成,流程图如下所示: Java代码编译和执行的整个过程包含了以下三个重要的机制: Java源码 ...

  9. JVM原理(Java代码编译和执行的整个过程+JVM内存管理及垃圾回收机制)

    转载注明出处: http://blog.csdn.net/cutesource/article/details/5904501 JVM工作原理和特点主要是指操作系统装入JVM是通过jdk中Java.e ...

随机推荐

  1. 返璞归真 asp.net mvc (4) - View/ViewEngine

    原文:返璞归真 asp.net mvc (4) - View/ViewEngine [索引页] [源码下载] 返璞归真 asp.net mvc (4) - View/ViewEngine 作者:web ...

  2. C3P0具体的配置说明(com.mchange.v2.c3p0.ComboPooledDataSource)

    C3P0它是一个开源JDBC连接池,它lib文件夹和Hibernate一起公布,包含了实现jdbc3和jdbc2扩展规范说明的Connection 和Statement 池的DataSources 对 ...

  3. jQuery Validate插入 reomte使用详细的说明

    在用户注冊时常常要通过ajax请求推断用户账号是否已注冊,最方便的方法便是用jQuery Validate插件 reomte方法 Jquery Validate插件, 调用远程方法验证參数, remo ...

  4. 手提wifi双卡配置+window7同时多用户远程+有些公司限制网络环境方案

    该公司只提供几台机器,同时限制并连接到内部办公网络的机, 我们更多的临时工作人员,项目紧张,而另一种是太麻烦了申请, 当被问及其他网络管理,说没有变通方法. 在我的尝试,最后,找到一个解决方案; 解决 ...

  5. cocos2dx-2.x CCFileUtils文件管理分析(2)

    于1于,我只是对整体结构进行了分析,然后,2于,我会在一些我们经常使用的分析功能. //获取给定文件名称的全路径 //以下这非常长一段凝视.通过举样例,像我们说明cocos2dx获取文件全路径的规则. ...

  6. 简单vector达到

    得知c++于,看完这本书后,,最近苦于不知道下一步该怎么做了,在寻找STL在各种容器的源代码分析,我想一次又一次地实现它. 之前,很多问题看的时候不知道是怎么回事,意与理解的.这个vector类写得特 ...

  7. SQL优化策略高级优化经常使用-1(The Return Of The King)

    1 经常使用的优化策略 1.1    语句 1.1.1使用实际的列名 当我们查询SQL语句时.你是否觉得使用实际的列名比使用*更快呢?答案是肯定的. 为了证实这一点,感兴趣的朋友能够自己验证一下.我这 ...

  8. Android_Training

    http://wiki.eoeandroid.com/Android_Training Android小白成长之0基础篇

  9. Unity2D实现贴图凹凸感并接受实时光照效果

    先看终于效果: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/d ...

  10. Cocos3d-x 发布第一版

    从去年开始11一月,我开始一个又一个人cocos3d的C++改写版本号.现在见效.所有cocos3d的OC代码改写成了C++. 在正常Android和Windows在执行.上周,正式发布了第一个版本. ...