systemverilog interface杂记
随着IC设计复杂度的提高,模块间互联变得复杂,SV引入接口,代表一捆连线的结构。
Systemverilog语法标准,新引入一个重要的数据类型:interface。
interface主要作用有两个:一是简化模块之间的连接;二是实现类和模块之间的通信;
总的来说,interface指明了TB和DUT之间的连接信号,clocking规定了信号之间的时序关系,而modport则明确了站在不同的角度对应信号的输入输出方向。通过虚拟接口的定义将以上内容封装起来。
接口interface与module,program一样,都是层次化结构,主要用来完成设计module和验证program之间的连接。interface中有两个重要的功能块clocking block和modport。
clocking block,用来对同步信号进行采样和驱动,可以避免设计和验证的竞争。clocking block需要指定一个时间,通常是posedge或negedge,同时还可以为块中信号设置建立保持时间,在默认建立保持时间均为1ns。
如下面的例子所示:
...
clocking msclk_cb @(posedge clk); //clocking block块定义
default intput #setup output #holdtime; //输入建立时间,输出保持时间设定
intput xxxxx;
output xxxx;
...
endclocking
...
modport block,对于同一个接口,不同的事物处理器可能会有不同的视角,比如对driver而言是输出的信号,在driver_monitor看来则是输入信号,所以可以引入modport来声明端口模块。
默认情况下interface的所有信号都是异步的
可以通过clocking block定义一组信号与时钟同步
modport定义与test的连接。
关于interface的实例化:
1,在moule中,可以直接实例化,
即my_if input_if;
2,在class中,需要使用virtual interface来实例化。
即 class my_driver extends uvm_driver
virtual my_if vif;
XXXXX;
endclass
systemverilog interface杂记的更多相关文章
- systemverilog interface
普通的模块使用法:注意我们这里只实现了部分功能....不是完全的读写模块.... module mem_core( input logic wen, input logic ren, ...
- systemverilog 之interface/timing region/program
1.connecting the testbench and the design 2.verilog connection review 3.systemverilog interfaces 4.s ...
- SystemVerilog语言简介(一)
1. 接口(Interface) Verilog模块之间的连接是通过模块端口进行的.为了给组成设计的各个模块定义端口,我们必须对期望的硬件设计有一个详细的认识.不幸的是,在设计的早期,我们很难把握设计 ...
- FPGA验证之SystemVerilog+UVM
[转载]https://blog.csdn.net/lijiuyangzilsc/article/details/50879545 数字芯片和FPGA的验证.主要是其中的功能仿真和时序仿真. ...
- systemverilog.vim
" Vim syntax file " Language: SystemVerilog " Maintainer: Stephen Hobbs <stephenh@ ...
- systemverilog的高亮显示
1. 在_vimrc文件末尾添加: syntax on "确定vim打开语法高亮 filetype on "打开文件类型检测 filetype plugin on "为特 ...
- *2.2.4 加入virtual interface
在前几节的例子中,driver中等待时钟事件(@posedge top.clk).给DUT中输入端口赋值(top.rx_dv <= 1' b1)都是使用绝对路径,绝对路径的使用大大减弱了验证平台 ...
- C# DateTime的11种构造函数 [Abp 源码分析]十五、自动审计记录 .Net 登陆的时候添加验证码 使用Topshelf开发Windows服务、记录日志 日常杂记——C#验证码 c#_生成图片式验证码 C# 利用SharpZipLib生成压缩包 Sql2012如何将远程服务器数据库及表、表结构、表数据导入本地数据库
C# DateTime的11种构造函数 别的也不多说没直接贴代码 using System; using System.Collections.Generic; using System.Glob ...
- systemverilog FAQ(zz)
1. What is clocking block? Ans: Clocking block can be declared using the keywords clocking and endcl ...
随机推荐
- js压缩 uglify
grunt-contrib-uglify uglify是一个文件压缩插件,项目地址:https://github.com/gruntjs/grunt-contrib-uglify 本文将以一个DEMO ...
- 【Raspberry Pi】读取DHT11温度湿度波折
从网上找到了DHT11厂家说明书,尝试用python根据时序图写数据获取驱动,但发现python的高层特性导致在做底层代码时例如控制20us时延这类需求就没什么好的办法. 还是得回到C-wiringP ...
- jenkins配置svn、gradle、ssh
1.先说下实现的效果,从svn拉取代码.调用gradle编译构建.将构建包分发到部署服务器并备份原来的部署包: 2.直接从http://mirrors.jenkins-ci.org/war/lates ...
- Django admin 的 9 个技巧
Tip 1:Django admin 后台不限于用 Django 开发的网站 虽然 Django admin 管理界面可以非常友好的用在 Django 项目的其它部分,它同样可以很容易用于其它像传统的 ...
- ExtJs4学习(六)MVC中的Model
Model定义的两种方式 第一种 Ext.define("User",{ extend:"Ext.data.Model", fields:[{ name:'us ...
- ModelShowDialog缓存上次浏览的URL
1. 一种解决方法设置每次清楚浏览的页面. In IE7, go to Tools | Internet Options. Click the Browsing History "Se ...
- python bottle学习(二)加载配置文件
from bottle import (run, route, get, post, default_app, Bottle) """ 首先获得一个app对象,有两种方法 ...
- iOS-.pch如何使用
今天我们要说的是.pch这个文件 我相信大家并不陌生,因为如果是新手开发工程师 总会被它搞得总报错误. 那么我们要知道.pch到底是干什么的,说白了就是一个预编译文件,在运行程序之前,要对头文件等一些 ...
- golang 内置函数new()
new() 这是一个用来分配内存的内置函数,它的第一个参数是一个类型,不是一个值,它的返回值是一个指向新分配的 t 类型的零值的指针. 在golang的代码定义如下: func new(t Type) ...
- tsinsen A1333. 矩阵乘法
题目链接:传送门 题目思路:整体二分(二分的是答案,附带的是操作) 把矩阵中的元素对应成插入操作,然后就有插入和询问操作. 然后根据插入操作对于答案的影响,询问操作所匹配的符合答案个数,将操作分为两段 ...