SV中的module,interface,program,checker,都提供declaration空间,内部定义都local当前的那个scope,相互之间的building block不影响,不识别。

package也可以提供一个declaration的空间,可以被其他的building block共享,Package declaration可以被import到其他的building block中,或者package中。

  (package中不能再包含module,interface,program,checker等带有declare属性的声明)

  package  Compkg;

  endpackage

package的使用:

  1) pkg中的类,function的引用,通过class操作符,"::",通过import关键字,可以在当前scope中,直接引用pkg中的类型声明和变量。

      import有两种方式,隐式的全部引用,import pkg::*,显示的引用,import pkg::type_c

  2) enum的引用,enum literal的声明需要单独import,typedef { True = 0, False = 1} e_type; True与False需要显示引用或者::*引用。

  3) pkg的import只是在当前scope中有效,外边的scope是看不到的,下层block的local var可以在声明相同的变量

    package  p;

      int x;

    endpackage

    module  top;

      import p::*

      if(1)  begin:b

        initial x = 1;  //当前使用的是p::x变量  

        int x;

        initial x = 1;  //当前使用的是top.b.x变量

      end

      int x;    //err,同一个scope中与pkg p::x变量名相同,此时import pkg q::x,同样报错。

    endmodule

    所以pkg的import一般放在module模块内的首行,应该尽量避免放在unit scope中,没有意思。

  4) export,主要应用在pkg的级联中,目标是pkg3可以通过import pkg2看到pkg1中的声明

    export *::*,并不能全部隐式的export出去。只是export pkg2中使用到的。

    package p1;    package p2;      package

      int x,y;      import p1::*;      import p2::*;

               export p1::x;      int c = x;   //其中的x等同于package p1中的x。

    endpackage    endpackage      endpackage

SV中的config,在一个design中区分同一个module名。比较复杂的一个应用

config  cfg1;

  design rtllib.top;

  default liblist  rtllib;

  instance top.a2 liblist gatelib;

endconfig

也可以用来set不同的paramter config

config cfg1;

  design rtllib.top;

  instance top use #(.WIDTH(32));

  instance top.a1 use #(.W(top.WIDTH));

endconfig

SV中定义的compile,是对SV代码的编译过程,主要检查语法错误,结果可能会保存在一个中间格式中,或者直接进行elaborate

elabration,是将所以的instance bind到top上的一个过程,主要包括expanding instance,computing paramter value,resolving hier names,net connection。

compile的显示调用空间是$unit,design top的显示调用空间是$root。$unit与$root本质上是一样的,之前的叫法是$root

VCS对uvm有一个内嵌式的支持,uvm的库被放在$VCS_HOME/etc/uvm-1.2中,可以在VCS编译过程中,显示指明-ntb_opts uvm-1.2 options来使用uvm。

vcs -sverilog -ntb_opts uvm-1.2   (vlogan不支持直接ntb_opts)    

-top   指定snapshot的顶层

-kdb   可以整合vcs的DB到verdi的db,直接通过verdi -ssf novas.fsdb打开verdi的工程

-lca   表示使用vcs的用户限制的功能

VCS中dump fsdb的波形,之前需要添加novas.tab和pli.a的文件路径,-P $VERDI_LIB/novas.tab  $VERDI_LIB/pli.a

现在

1)设置$NOVAS_HOME的值,

2)在code中调用$fsdbDumpvars的task,

3)vcs编译中增加-debug_access+r的权限

或者直接增加-fsdb

使用verdi进行gui调试,-verdi或者-gui=verdi选项

后启动verdi命令:

verdi -ssf <fsdb_file>   verdi -simflow -dbdir <path> -top <top_name>

sv命令空间 packge的更多相关文章

  1. C#设置有命令空间的属性

    之前被问到一个问题,C#中如何设置android:name这样的属性?我的第一反应是直接setAttribute不就可以了么 SetAttribute(name, value), 可事实上却不行,因为 ...

  2. C++命令空间使用和编译

    先创建目录结构 src bin obj lib include 1.创建命名空间 创建一个头文件include/head.h; #ifndef _GOOD_H #define _GOOD_H name ...

  3. php 命令空间总结

    本文移到:http://www.phpgay.com/Article/detail/classid/2/id/53.html 1.命名空间的语法: <?php namespace 名称; ?&g ...

  4. Laravel composer自定义命令空间,方便引用第三方库

    第一步:自定义目录 在app文件夹下新建Library目录,做为第三方库的目录 第二步: 修改composer.json文件 autoload节点下的psr-4自定义命名空间 规则: key: 命名空 ...

  5. PHP命令空间namespace及use的用法

    使用namespace的目的 命名空间将代码划分出不同的空间(区域),每个空间的常量.函数.类(为了偷懒,我下边都将它们称为元素)的名字互不影响, 这个有点类似我们常常提到的'封装'的概念. 团队合作 ...

  6. Django URL的命令空间

    为避免在模板中使用URL的硬编码,可以使用{% url %}模板标签来解决 <li><a href="/task/{{ task.id }}/">{{ ta ...

  7. Spring AOP使用整理:自动代理以及AOP命令空间

    三.自动代理的实现 1.使用BeanNameAutoProxyCreator 通过Bean的name属性自动生成代理Bean. <bean class="org.springframe ...

  8. Struts2命令空间小结

    sturts2命名空间小结,以tomcat为服务器 1. 命名空间配置为“/” <package name="default" namespace="/" ...

  9. PHP命令空间namespace及use的用法实践总结

    以下皆为本人自我理解内容,如有失误之处,请多多包涵. 文章大纲: 使用namespace的目的 namespace的使用方法 使用use的目的 use的使用方法 使用namespace的目的: 团队合 ...

随机推荐

  1. js 判断字符串长度

    转载来处:https://www.cnblogs.com/hello321/p/7821400.html 第一种使用方法: var aa="1,2,3,4,5"; var bb=a ...

  2. panda核心数据结构

    Series Series是一维带标签的数组,数组里可以放任意的数据(整数.浮点数.字符串.python Object)等等 创建函数: (1)s = pd.Series(data,index=ind ...

  3. oracle中字符串与表数据拼接的用法--“||”

    测试过程中,经常需要批量删除或者插入.修改一些表数据或结构,使用手工复制.粘贴其实很麻烦,所以这是我们就可以使用拼接成sql语句的方法来实现操作数据.下面先讲讲oracle中拼接符 || 的用法,如下 ...

  4. 【Python全栈-后端开发】Django入门基础

    Django基础知识 一. 什么是web框架? 框架,即framework,特指为解决一个开放性问题而设计的具有一定约束性的支撑结构,使用框架可以帮你快速开发特定的系统,简单地说,就是你用别人搭建好的 ...

  5. python练习题-day1

    1.使用while循环输入 1 2 3 4 5 6     8 9 10 count=0 while count<10: count+=1 if count==7: continue print ...

  6. python小练--使用正则表达式将json解析成dict

    练习python语法,自己实现了一个简单的解析json字符,存为dict字典对象. { "id":12, "name":"jack", &q ...

  7. Tensorflow安装记录

    一.安装Ubantu环境 下载ios 网址:http://cn.ubuntu.com/download/ 2.配合虚拟机进行安装环境 虚拟机直接百度下载即可 虚拟机采用 具体安装,虚拟机百度中很多记录 ...

  8. Python3学习之路~4.1 列表生成式、生成器

    1 列表生成式 我现在有个需求,看列表[0, 1, 2, 3, 4, 5, 6, 7, 8, 9],要求你把列表里的每个值加1,怎么实现?你可能会想到2种方式 a=[0,1,2,3,4,5,6,7,8 ...

  9. UltraISO 9.7.0.3476中文完美破解安装版

    https://cn.ultraiso.net/uiso9_cn.exe 简体中文版专用:        注册名:Guanjiu 注册码:A06C-83A7-701D-6CFC 多国语言版专用: 注册 ...

  10. [php] 索引数组合并选择两数组相加

    header("Content-Type:text/html;charset=utf-8");$arr1= Array ( 0 => Array ( 'pic' => ...