1.connecting the testbench and the design

2.verilog connection review

3.systemverilog interfaces

4.stimulus timing

5.clocking blocks

6.timing regions

7.program block


Connecting Testbench and Design

1.use the conventional verilog module ports

implicit .* port connections

2.use interface and then instance

interface arb_if(input bit clk);

logic [1:0] grant,request;

logic reset;

endinterface

module top;

bit clk;

always #5 clk =~clk;

arb_if arbif (clk);

arb  a1(arbif);

test t1(arbif);

endmodule:top

module tb(arb_if arbif);

initial begin

@(posedge arbif.clk);

arbif.request <= 2’b01;

$display(“@%0t:Drove req =01”,$time);

repeat(2) @(posedge arbif.clk)

if(arbif.grant != 2’b01)

$display(“@0d:a1:grant !=2’b01”,$time);

$finish;

end

endmodule:test

HOW connecting interfaces and ports

<port_name>.<internal_interface_signal_name>


interface modport

1.modport provide a means to define different views of the   interface signal

2.modport is an abbreviation  for module port

3.an interface can have any number of modport definitions

4.the modport declaration only defines whether the connecting module sees a signal as an input output or bidirectional


STIMULUS TIMING

The timing between the testbench and the design

should be maintained to avoid race contiditions

clocking blocks ===> synchronous signals

default input #1step output #0

1.synchronize to active clock edge specified in clocking block

@arbif.cb;

repeat(3)@arbif.cb;

2.synchronize to any edge of signal

@arbif.cb.grant;

@(posedge arbif.cb.grant);

wait(arbif.cb.grant ==1);

3.wait for N clock cycles with ##n –blocking statment

##2 arbif.cb.request <=0; //wait 2 cycles then assign

3.clocking block signals are referenced by pre-pending the clocking block name to the signal:

all dirves must use non-blocking assigment

arbif.cb.request <= 1; //dirve

value = arbif.cb.grant  ; // sample

4.clocking blocks overview

(1) use in the interface just for testbench

(2)benefits:

synchronous timing domains

race-free if input skew > 0

drive signals always at right time

(3)functionality:

can contain multiple clocking blocks

default input #1step output #0

systemverilog 之interface/timing region/program的更多相关文章

  1. systemverilog interface杂记

    随着IC设计复杂度的提高,模块间互联变得复杂,SV引入接口,代表一捆连线的结构. Systemverilog语法标准,新引入一个重要的数据类型:interface. interface主要作用有两个: ...

  2. Application binary interface and method of interfacing binary application program to digital computer

    An application binary interface includes linkage structures for interfacing a binary application pro ...

  3. [转载]转一篇Systemverilog的一个牛人总结

    原文地址:转一篇Systemverilog的一个牛人总结作者:dreamylife Systemverilog 数据类型 l       合并数组和非合并数组 1)合并数组: 存储方式是连续的,中间没 ...

  4. SystemVerilog基本语法总结(上)

    SystemVerilog基本语法总结(上) 在总结SV的语法之前,先分享一些关于SV的笔试题目,这样更显得具有针对性的总结. a. 验证中,代码覆盖率是指(衡量哪些设计代码在激活触发,而哪一些则一直 ...

  5. Purchase Document Open Interface(PDOI)

    PO模块也有自己的接口表,多用于把其他业务系统在Oracle EBS系统生成采购订单记录. Table Name Description Type PO_HEADERS_INTERFACE This ...

  6. program与module

    program,各方面与module都类似,其中声明的变量在program中都可见, 生命周期也是static类型的, program的结束,也是需要等待其中的所有initial块都执行结束. 与mo ...

  7. JTAG – A technical overview and Timing

    This document provides you with interesting background information about the technology that underpi ...

  8. C#在线更新程序[下载程序、解压缩程序、控制台程序]

    [1]下载文件 using System;using System.Collections.Generic;using System.Linq;using System.Text;using Syst ...

  9. C# rmi例子

    接口定义 实体定义,注意需要序列化 using System; namespace Interface { [Serializable] public class DataEntity { publi ...

随机推荐

  1. C - 不要62

    #include <iostream> #include <algorithm> #include <cstring> #include <cstdio> ...

  2. Eclipse - 安装了jd-eclipse插件后依然无法反编译类文件

    问题 Eclipse在安装了jd-eclipse插件后依然无法反编译类文件,这个问题是因为没有修改默认的类文件查看器. 解决方法 修改默认的类文件查看器为jd-eclipse Window -> ...

  3. 用python编写一个计算器

    # 1 - 2 * ((60-30 +(-40.0/5) * (9-2*5/3 + 7 /3*99/4*2998 +10 * 568/14 )) - (-4*3)/ (16-3*2)))# 通过Pyt ...

  4. CSS div和css布局

    一.div和span DIV和SPAN在整个HTML标记中,没有任何意义,他们的存在就是为了应用CSS样式 DIV和span的区别在于,span是内联元素,div是块级元素.div占用整行,span只 ...

  5. 530 Minimum Absolute Difference in BST 二叉搜索树的最小绝对差

    给定一个所有节点为非负值的二叉搜索树,求树中任意两节点的差的绝对值的最小值.示例 :输入:   1    \     3    /   2输出:1解释:最小绝对差为1,其中 2 和 1 的差的绝对值为 ...

  6. axios 在vue中使用

    下载组件: npm install axios --save npm install qs --save //处理对象防止产生跨域问题 引入: 新建axios文件夹,文件下新建index.js文件 i ...

  7. 神奇的VIM

    1. di'.di".di`.di( .di{ .dt 'abc' ==> '' di' "abc"==> "" di" `ab ...

  8. 按位&按位|按位~的详解

    十进制转二进制: 例:十进制(5)---->二进制(00000101) 将整数除二取余,继续用除二的结果除二取余,最后将结果从下往上连接起来,不足八位,前面填0 二进制转十进制 例:二进制(00 ...

  9. [问题解决]Deepin环境变量设置无效解决

    将环境变量的设置放在这里:  gedit ~/.bashrc 详见参考: linux下如何设置环境变量PATH : http://blog.csdn.net/witsmakemen/article/d ...

  10. 常用的 JavaScript 简写方法

    1.三元操作符 当想写 if...else 语句时,使用三元操作符来代替. const x = 20; let answer; if (x > 10) {    answer = 'is gre ...