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 ...
随机推荐
- Map集合的四种常用遍历方式整理
1.Map集合简介:map集合是一个key—value型的数据结构,存储的数据具有查询速度快速的特点,但由于是无序的,所以没有顺序可言.在遍历时没有办法像简单的list或数组一样. 2.代码: pac ...
- iphone、ipad等网页中电话号码呈蓝色的解决方案
iPhone手机.ipad上的浏览器(如Safari),在解析网页的时候会自动给 像是电话号码的数字 加上link样式,所以号码呈蓝色. 可以添加下面的meta禁用掉这个功能. <meta na ...
- laravel之null替换空字符串中间件
在laravel写接口的时候免不了数据库中保存null,可用诸如设置ORM的访问器或以下方法处理 $goods->name?$goods->name:''; 其实可以利用路由中间件,在需要 ...
- UVA10129:Play on Words(欧拉回路)
Some of the secret doors contain a very interesting word puzzle. The team of archaeologists has to s ...
- AtCoder Regular Contest 078 C
C - Splitting Pile Time limit : 2sec / Memory limit : 256MB Score : 300 points Problem Statement Snu ...
- Spark Mllib里如何将预测结果如0或1,转换为文字描述来显示预测结果输出(图文详解)
不多说,直接上干货! 具体,见 Hadoop+Spark大数据巨量分析与机器学习整合开发实战的第13章 使用决策树二元分类算法来预测分类StumbleUpon数据集
- php中socket的使用(重点参考)
一.开启socket phpinfo();查看是否开启了socket扩展,否则在php.ini中开启. 二.服务器端代码的写法 <?php error_reporting(E_ALL); set ...
- Wordpress 之 Rewrite Rules
----------------------------------------------------------------- 场景描述: 自定义wp主题中,添加了个关于页面(about.php) ...
- aspx页面调用webapi接口报错:远程服务器返回错误:(500)内部服务器错误
代码在运行到response = (HttpWebResponse)request.GetResponse();就开始报错 原因:可能因为所调用的接口不存在或者接口中存在错误,可用postman测试接 ...
- 面向对象super内置函数(转)
super函数用来解决钻石继承. 一.python的继承以及调用父类成员 父类: class Base(object): def __init__(self): print("base in ...