systemverilog 之interface/timing region/program
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的更多相关文章
- systemverilog interface杂记
随着IC设计复杂度的提高,模块间互联变得复杂,SV引入接口,代表一捆连线的结构. Systemverilog语法标准,新引入一个重要的数据类型:interface. interface主要作用有两个: ...
- 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 ...
- [转载]转一篇Systemverilog的一个牛人总结
原文地址:转一篇Systemverilog的一个牛人总结作者:dreamylife Systemverilog 数据类型 l 合并数组和非合并数组 1)合并数组: 存储方式是连续的,中间没 ...
- SystemVerilog基本语法总结(上)
SystemVerilog基本语法总结(上) 在总结SV的语法之前,先分享一些关于SV的笔试题目,这样更显得具有针对性的总结. a. 验证中,代码覆盖率是指(衡量哪些设计代码在激活触发,而哪一些则一直 ...
- Purchase Document Open Interface(PDOI)
PO模块也有自己的接口表,多用于把其他业务系统在Oracle EBS系统生成采购订单记录. Table Name Description Type PO_HEADERS_INTERFACE This ...
- program与module
program,各方面与module都类似,其中声明的变量在program中都可见, 生命周期也是static类型的, program的结束,也是需要等待其中的所有initial块都执行结束. 与mo ...
- JTAG – A technical overview and Timing
This document provides you with interesting background information about the technology that underpi ...
- C#在线更新程序[下载程序、解压缩程序、控制台程序]
[1]下载文件 using System;using System.Collections.Generic;using System.Linq;using System.Text;using Syst ...
- C# rmi例子
接口定义 实体定义,注意需要序列化 using System; namespace Interface { [Serializable] public class DataEntity { publi ...
随机推荐
- Java | 基础归纳 | 随机数应用
Java中一般有两种随机数,一个是Math中random()方法,一个是Random类. Math.random();//返回0~1的中随机数值 Random random = new Random( ...
- Tinghua Data Mining 2
数据预处理 https://www.bilibili.com/video/av23933161/?p=11 http://www.xuetangx.com/courses/course-v1:Tsin ...
- 接口测试03 - Python HTTP库requests
概述: 整理一些requests的相关知识,及如何使用requests进行接口测试. requests号称:是唯一的一个非转基因的Python HTTP库,人类可以安全享用. 安装: 先看下怎么安装r ...
- TAIL and HEAD
TAIL and HEAD tail tail:将指定的文件的最后部分输出到标准设备,通常是终端,和cat以及more等显示文本的差别在于:假设该档案有更新,tail会自己主动刷新,确保你看到最新的档 ...
- Linux磁盘根目录满了问题解析
linux里的log文件被删除后,空间没有被释放,是因为在Linux系统中,通过rm或者文件管理器删除文件将会从文件系统的目录结构上解除链接(unlink).然而如果文件是被打开的(有一个进程正在使用 ...
- nodejs 不是单线程
nodejs 不是单线程 在我机器上,nodejs 起了近 20 个线程. 对,你没有看错,20个线程.
- vue2 mint-ui loadmore(下拉刷新,上拉更多)
<template> <div class="page-loadmore"> <h1 class="page-title"> ...
- Java运算符——通过示例学习Java编程(6)
作者:CHAITANYA SINGH 来源:https://www.koofun.com/pro/kfpostsdetail?kfpostsid=17 运算符是表示动作的字符,例如+是表示加法的算 ...
- java 并发容器一之BoundedConcurrentHashMap(基于JDK1.8)
最近开始学习java并发容器,以补充自己在并发方面的知识,从源码上进行.如有不正确之处,还请各位大神批评指正. 前言: 本人个人理解,看一个类的源码要先从构造器入手,然后再看方法.下面看Bounded ...
- Spring框架学习——AOP的开发
一.AOP开发中的相关术语. ——JoinPoint(连接点):指那些可以被拦截到的点.比如增删改查方法都可以增强,这些方法就可以被称为是连接点. ——PointCut:切入点,真正被拦截的点,指对哪 ...