Interface:SV中新定义的接口方式,用来简化接口连接,使用时注意在module或program之外定义interface,然后通过'include来添加进工程。

interface  arb_if(input bit clk);              //clk信号,一般单独拿出来

logic [1:0]grant, request;       //只定义信号类型。类型在不同的modport中分别定义。

logic rst;

clocking cb @(posedge clk);    //定义时钟块,其中的信号都是clk上升沿有效

output request;

input  grant;

enclocking

modport TEST (clocking cb, output rst);   //直接引用clocking, 在定义rst的方向

modport DUT (input request, rst, output grant);  //定义各个信号的方向

endinterface

module  test(arb_if.TEST arbif);

initial  begin

arbif.cb.request <= 0;    //直接引用clocking中的信号,而且clock blocking中的信号,最好使用<=非阻塞赋值。

@arbif.cb;         //相当于@posedge clk

$display("");

end

endmodule

interface可以直接与verilog-2001的端口进行连接:

module   top;

bit  clk;

always #5  clk = ~clk;

arb_if  arbif(clk);

arb_port     a1(.grant(arbif,grant),

.request(arbif.request),

.rst(arbif.rst),

.clk(arbif.clk) );

test   t1(arbif);

endmodule:top

Program:主要是为了在逻辑和仿真时间上,区分开RTL与验证平台。在SV搭建的验证环境中,testcase一般就定义一个program来开始执行。

program中不能使用always,因为program相比较来说,与C语言更靠近一些。所以多用initial就可以。program中的仿真时间与RTL中的是有区别的,

SV将同一仿真时刻分为四个区域,Active(design), Observed(assertion), Reactive(testbench), Postponed(sample)。相当于在原verilog的基础

上又为program增加了一个执行区间,一个采样区间。所以clk的定义不能放在program中。当program中的initial结束时,SV会调用$finish完成仿真。

SV中的Interface和Program的更多相关文章

  1. SV中的随机化

    SV搭建testbench的关键概念:CRT(constraint random test),测试集的随机化. 由于对象class由数据和操作组成,所以对数据的随机化一般放在一个class内.(对环境 ...

  2. SV中的线程

    SV中线程之间的通信可以让验证组件之间更好的传递transaction. SV对verilog建模方式的扩展:1) fork.....join 必须等到块内的所有线程都执行结束后,才能继续执行块后的语 ...

  3. SV中的task和function

    SV中class的properties和methods默认都是public的,但是可以声明为local和protected. 一个properties声明为local类型的,则只在该class中的me ...

  4. SV中的数据类型

    Verilog-1995中规定的数据类型有:变量(reg), 线网(wire), 32位有符号数(integer), 64位无符号数(time), 浮点数(real). SV扩展了reg类型为logi ...

  5. SV中的OOP

    OOP:Object-Oriented Programming,有两点个人认为适合验证环境的搭建:1)Property(变量)和Method(function/task)的封装,其实是BFM模型更方便 ...

  6. iOS中,在类的源文件(.m)中,@interface部分的作用?

      此@interface部分为类扩展(extension). 其被设计出来就是为了解决两个问题的 其一,定义类私有方法的地方. 其二,实现public readonly,private readwr ...

  7. OC中的@interface和java中的区别以及 @implementation @protocol

      java 在java中的interface是‘接口’的意思,而java的类声明用class,即接口用interface声明,类是用class声明,是两个独立的部分. 只有在类声明要实现某个接口时, ...

  8. 【荐】详解 golang 中的 interface 和 nil

    golang 的 nil 在概念上和其它语言的 null.None.nil.NULL一样,都指代零值或空值.nil 是预先说明的标识符,也即通常意义上的关键字.在 golang 中,nil 只能赋值给 ...

  9. asp.net编译中出现 数据库 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\test1.mdf' 已存在。请选择其他数据库名称。

    关于asp.net编译中出现数据库 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\test1.mdf ...

随机推荐

  1. HDU 2199 Can you solve this equation(二分答案)

    Can you solve this equation? Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K ( ...

  2. [Sdoi2016]生成魔咒[SAM or SA]

    4516: [Sdoi2016]生成魔咒 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1017  Solved: 569[Submit][Statu ...

  3. This dependency was not found: * !!vue-style-loader!css-loader?……解决方案

    1.新建一个vue项目时,需要重新安装stylus 报错 This dependency was not found: * !!vue-style-loader!css-loader?{"m ...

  4. minix中atoi、atol、atof的实现

    在minix2.0源代码中,有将字符串类型转换为int.long.double类型的函数实现,相关的实现函数分别在atoi.c.atol.c.atof.c文件中,我们来逐一学习其中的源码: 1.int ...

  5. Egret的屏幕适配模式图示

    1 ShowAll 过长时,上边有边框 过短时,左右有边框 2 noScale 不会进行任何缩放 3 noBorder 过长时,裁减左右 过短时,裁减上下 4 fixedWidth 过长时,下方有边框 ...

  6. kvm虚拟机不能使用virsh shutdownw命令关闭虚拟机的解决方法

    今天笔者在对kvm虚拟机进行管理时,使用virsh shutdown命令关闭指定的虚拟机时,发现虽然有如下的提示,但其实虚拟机却一直不会真正的关闭. 经过查看virsh命令帮助和上网查询,才得知vir ...

  7. JAVA unicode转换成中文

    /** * * unicode 转换成 中文 * @param theString * @return */ public static String decodeUnicode(String the ...

  8. Linux查看磁盘目录内存空间使用情况

    du 显示每个文件和目录的磁盘使用空间 命令参数 -c或--total  除了显示个别目录或文件的大小外,同时也显示所有目录或文件的总和. -s或--summarize  仅显示总计,只列出最后加总的 ...

  9. 冒泡排序算法的 python 实现与 C 的比较

    昨天用c写了简单的冒泡排序算法之后,正好最近在学 python,也想试试用python实现一下. 总体感觉,对于这种简答的小程序,python 确实充分体现了他简洁,易懂的特点.写起来特别流畅,舒服. ...

  10. CONVERT(varchar(10), getdate(), 120 )中数字参数用法

    这是一个mssql数据库的函数,Convert函数的作用,是进行数据类型的转换.而您所问的这个convert(char(20),openDate,120)则是对日期字段,进行格式化转换成字符格式的函数 ...