sv命令空间 packge
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的更多相关文章
- C#设置有命令空间的属性
之前被问到一个问题,C#中如何设置android:name这样的属性?我的第一反应是直接setAttribute不就可以了么 SetAttribute(name, value), 可事实上却不行,因为 ...
- C++命令空间使用和编译
先创建目录结构 src bin obj lib include 1.创建命名空间 创建一个头文件include/head.h; #ifndef _GOOD_H #define _GOOD_H name ...
- php 命令空间总结
本文移到:http://www.phpgay.com/Article/detail/classid/2/id/53.html 1.命名空间的语法: <?php namespace 名称; ?&g ...
- Laravel composer自定义命令空间,方便引用第三方库
第一步:自定义目录 在app文件夹下新建Library目录,做为第三方库的目录 第二步: 修改composer.json文件 autoload节点下的psr-4自定义命名空间 规则: key: 命名空 ...
- PHP命令空间namespace及use的用法
使用namespace的目的 命名空间将代码划分出不同的空间(区域),每个空间的常量.函数.类(为了偷懒,我下边都将它们称为元素)的名字互不影响, 这个有点类似我们常常提到的'封装'的概念. 团队合作 ...
- Django URL的命令空间
为避免在模板中使用URL的硬编码,可以使用{% url %}模板标签来解决 <li><a href="/task/{{ task.id }}/">{{ ta ...
- Spring AOP使用整理:自动代理以及AOP命令空间
三.自动代理的实现 1.使用BeanNameAutoProxyCreator 通过Bean的name属性自动生成代理Bean. <bean class="org.springframe ...
- Struts2命令空间小结
sturts2命名空间小结,以tomcat为服务器 1. 命名空间配置为“/” <package name="default" namespace="/" ...
- PHP命令空间namespace及use的用法实践总结
以下皆为本人自我理解内容,如有失误之处,请多多包涵. 文章大纲: 使用namespace的目的 namespace的使用方法 使用use的目的 use的使用方法 使用namespace的目的: 团队合 ...
随机推荐
- [developmemt][dpdk] dpdk优化(转)
转发:https://software.intel.com/en-us/articles/dpdk-performance-optimization-guidelines-white-paper 转发 ...
- LeetCode 868 Binary Gap 解题报告
题目要求 Given a positive integer N, find and return the longest distance between two consecutive 1's in ...
- 【python基础】文件操作
文件操作目录 一 .文件操作 二 .打开文件的模式 三 .操作文件的方法 四 .文件内光标移动 五. 文件的修改 一.文件操作介绍 计算机系统分为:计算机硬件,操作系统,应用程序三部分. 我们用pyt ...
- try catch和spring事务
- Centos6.5+Redmine
花了两天时间,基于centos6.5操作系统,搭建了redmine环境,在这里记录下过程中遇到的问题以及搭建流程. centos6.5; redmine2.5.0; Ruby1.9.3; step 1 ...
- webstorm 2017激活
选择“license server” 输入:http://idea.imsxm.com/
- (4.2)mysql备份还原——备份概述
1.什么情况下会用到备份呢? [1.1]灾难恢复 [1.2]单位审计:数据库在过去某一个点是什么样的 [1.3]跨机房灾备:异地备份 [1.4]认为的DDL或者DML语句,导致主从库的数据消失 [1. ...
- 如何将finecms链接URL中的list和show去掉
finecms上手还算比较快吧,对seo关注的朋友会想着将它的url改造了,里面多了-list-和-show-,可以直接去掉,下面就随着ytkah一起来进行设置吧. 首先到后台的url规则,将列表和列 ...
- 如何将文章列表用<li>分两列显示
我们平时用ul或ol标签来罗列文章列表时默认是一列,为了美观起见,想把它们两列显示要如何操作呢?怎么用css定义它们? 其实相对比较简单,用几行css样式定义一下就够了,可以用div + css来控制 ...
- 30个redis.conf 配置项说明
redis.conf 配置项说明如下: 1. Redis默认不是以守护进程的方式运行,可以通过该配置项修改,使用yes启用守护进程 daemonize no 2. 当Redis以守护进程方式运行时,R ...