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. JSP | 基础 | Button跳转页面

    <input type = "button" value = "登陆" onclick = "window.location.href = 'L ...

  2. [软件工程基础]2017.10.30 第三次 Scrum 会议

    决议 游心与李煦通沟通生成报告脚本问题,并调试相应代码 李煦通部署服务器,并做一定安全检查 石奇川设计实验流程和题库前端页面 王嘉睿爵测试网站基本流程,提出关于用户体验方面的建议 刘子渊阅读代码,为机 ...

  3. Codeforces 1139D(推式子+dp)

    题目传送 推公式博客传送 推完式子就是去朴素地求就行了Orz const int maxn = 1e5 + 5; const int mod = 1e9 + 7; int m, mu[maxn], v ...

  4. Codeforces Round #497 (Div. 2) C. Reorder the Array

    Bryce1010模板 http://codeforces.com/contest/1008/problems #include <bits/stdc++.h> using namespa ...

  5. 关于foreach的一个BUG

    foreach用起来比for更方便,但是foreach隐藏的操作,可能带来更多未知的BUG,今天就遇到一个问题.编程环境VS2010 //使用foreach遍历,其中未改变item的值,但是使用了匿名 ...

  6. GDB 格式化结构体输出

    转载:http://blog.csdn.net/unix21/article/details/9991925 set print addressset print address on打开地址输出,当 ...

  7. Rabbitmq~linux环境的部署

    之前写过在windows环境上部署rabbitmq,这回介绍在centos上对这个消息中间件进行部署的过程 一 下载和解压 wget  http://www.rabbitmq.com/releases ...

  8. TCP简单程序

    服务器段: package com.dcz.socket; import java.io.IOException; import java.io.OutputStream; import java.n ...

  9. ios调用Html内JS alert 不能点击关闭为甚?

    ios调用Html内JS alert 不能点击关闭为甚? This question gave me the most insight to the problem... Deadlock with ...

  10. mui开发中获取单选按钮、复选框的值

    js获取单选按钮的值 function getVals(){ var res = getRadioRes('rds'); if(res == null){mui.toast('请选择'); retur ...