Systemverilog for design 笔记(七)
转载请标明出处
第一章 接口(interface)
1.1. 接口的概念
接口允许许多信号合成一组由一个端口表示。
1.2. 接口声明
//接口定义
Interface main_bus (input logicsig_a, sig_b); //sig_a , sig_b是接口的输入
Wire sig_c ;
Logic sig_d;
…
Endinterface
//顶层网表
module top (input logic clock, resetN, test_mode);
logic [15:0] program_address, jump_address;
logic [ 7:0] instruction, next_instruction;
main_bus bus ( //接口实例化
.sig_a (sig_a), //分立信号连接到接口实例
. sig_b (sig_b)
);
processor proc1 ( //模块实例化
.bus(bus), //接口连接,
.jump_address(jump_address)); //其他接口
也可以用.name 和.* 连接
当接口定义在$unit中时,全局定义;当接口声明在模块内部时,局部定义
1.3.
将接口用作模块端口(可综合)
l 显示命名的接口端口 module <module_name>
(<interface_name> <port_name>);
l 通用接口端口 module <module_name> (interface
<port_name>);
显示命名的接口端口只可以连接到同一名称的接口上;而任何接口可以连在通用接口端口上
1.4.
接口的实例化和连接
接口实例化的语法与模块实例化相同;接口类型的端口如果没有连接是非法的
接口端口可连接到另一个接口
1.5.
接口内部信号的引用
接口内部信号可以通过端口名引用:<port_name>.<internal_interface_signal_name>
1.6.
接口的modport
Module port——modport可以定义接口信号的不同接入方式(方向)
Modport定义中不包含向量位数和类型,这些信息是在接口的信号类型声明中定义的。
Modport声明位置:interface定义内
Modport声明只定义 连接模块将信号是看成input/output/inout还是ref
1.6.1.
指定使用哪种modport方式(可综合)
l 在模块实例的接口连接中说明 <接口实例名>.<modport_name>
//module中已实例化接口,模块定义时端口声明用接口名称
l 在模块定义的端口声明时说明 <接口名称>.<modport_name>
// module中已实例化接口,模块实例化时端口连接用接口实例名
l 没有指定modport时接口的连接:
因为本身interface的声明是没有内部信号的方向的,又没有modport指明信号方向,因此此时内部信号中——线网信号默认为inout;变量默认为ref
1.6.2.
使用modport定义不同的连接
在接口中定义不同的modport,模块访问某个特定modport时其他接口中的信号不可见
1.7.
在接口中使用任务和函数(method)
接口可以包含功能描述,比如通信协议等。
SV可以在接口中声明任务和函数,
这些任务和函数可以作为接口方法(Interface methods)来引用
- 接口方法的导入:(当从另一模块到导入任务或函数时使用方法B)(可综合)
u 使用函数和任务的名称导入modport in ( import <任务或函数的名称>
);
u 使用函数和任务的完整原型导入(形参包含方向)
n modport modport_name(import task <任务名>(<任务的形式参数) );
n modport modport_name(import function <函数名> (<函数的形式参数>)
);
u 导入的接口方法的调用:<接口的端口名>.<方法名>
- 导出任务和函数(不可综合)
Modport modport_name(export
<任务或函数的名称>);
或通过在接口中声明函数或任务时使用关键词extern可以将他们导出到整个接口
Extern forkjoin允许导出任务的多重实例
1.8.
接口中的过程块
接口可以包含always, always_comb, always_ff, always_latch, initial/final过程块, assign 语句.
接口中的过程块一般用于验证
1.9.
可重构接口
接口可以使用参数重定义和generate语句,在接口实例化时进行重构
Systemverilog for design 笔记(七)的更多相关文章
- Systemverilog for design 笔记(六)
转载请标明出处 第一章 有限状态机建模(FSM,finite state machine) 1.1. 使用枚举类型建立状态机模型 l 三过程块建模风格:三个过程块分别实现: a.状态转换(al ...
- Systemverilog for design 笔记(五)
转载请标明出处 第一章 System Verilog过程块.任务和函数 1.1. verilog通用目的always过程块(procedural block)(可综合) always过程块的综合 ...
- Systemverilog for design 笔记(四)
转载请标明出处 数组.结构体和联合体 1. 结构体(struct) 1.1. 结构体声明 结构体默认是变量,也可以声明为线网 var struct { // 通过var进行结构体变量声明 logic ...
- Systemverilog for design 笔记(三)
转载请标明出处 用户自定义和枚举数据类型 1. 用户自定义类型(typedef) 局部typedef定义:只用于设计的特定部分时,typedef的定义可在module或interface中 共享typ ...
- SystemVerilog for design 笔记(二)
转载请标明出处 1. System Verilog文本值和数据类型 1.1. 增强的文本值赋值 相对于verilog,SV在文本值赋值时可以1.无需指定进制 2.赋值可以是逻辑1 用法: reg ...
- Systemverilog for design 笔记(一)
转载请标明出处 一. System Verilog 声明的位置 1. 包(packages) Verilog要求局部声明: variables, nets, tasks and f ...
- 《MFC游戏开发》笔记七 游戏特效的实现(一):背景滚动
本系列文章由七十一雾央编写,转载请注明出处. http://blog.csdn.net/u011371356/article/details/9344721 作者:七十一雾央 新浪微博:http:// ...
- (转)Qt Model/View 学习笔记 (七)——Delegate类
Qt Model/View 学习笔记 (七) Delegate 类 概念 与MVC模式不同,model/view结构没有用于与用户交互的完全独立的组件.一般来讲, view负责把数据展示 给用户,也 ...
- Learning ROS for Robotics Programming Second Edition学习笔记(七) indigo PCL xtion pro live
中文译著已经出版,详情请参考:http://blog.csdn.net/ZhangRelay/article/category/6506865 Learning ROS forRobotics Pro ...
随机推荐
- UVa 400 Unix Is命令
简单题 #include <bits/stdc++.h> using namespace std; const int maxn=110; string s[maxn]; int main ...
- [采坑记录] OneDrive同步失败 不能自动上传 不能同步 不能登陆
虽然OneDrive送的空间并不大 但是用来传文档什么的还是够了 但是国内各种不舒服 比如说登陆不上(其他的微软系应用解决方法同理) 原因是因为DNS污染的问题 默认电脑链接上网络之后 DNS是路由器 ...
- [蓝桥杯2017初赛]青蛙跳杯子 BFS
题目描述 X星球的流行宠物是青蛙,一般有两种颜色:白色和黑色. X星球的居民喜欢把它们放在一排茶杯里,这样可以观察它们跳来跳去. 如下图,有一排杯子,左边的一个是空着的,右边的杯子,每个里边有一只青蛙 ...
- 【Python协程的实现】
" 补充:数据安全问题 进程: 多个进程操作同一个文件,会出现数据不安全 线程: 多个线程操作同一个全局变量,会出现数据不安全 对于共享的数据操作: 如果是 += *= /= -= 操作,都 ...
- 【Python 多进程】
" 一.模块介绍 multiprocess模快 仔细说来,multiprocess不是一个模块,而是python中的一个操作.管理进程的包,之所以叫multi是取自multiple的多功能的 ...
- Move-to-front(MTF) and Run-lenght encoding(RLE) algorithms
mtf算法(关于该算法:https://www2.cs.duke.edu/csed/algoprobs/beta/bw1.html): #include <stdio.h> #includ ...
- P1047
题目不难...但坑得是数据大小..N 的大小越大越好... #include <bits/stdc++.h> #include <cstdio> #include <cm ...
- 如何把web项目部署到Linux云服务器(详细流程)
转自: https://blog.csdn.net/M_Kerry/article/details/81664548
- Vue ElementUI Tree组件 回显问题(设置选择父级时会全选所有的子级,有此业务场景是不适合的)
业务场景下有这样的问题 业务需求需要保存前端 半选节点 解决方案 let checked = this.$refs.menuTree.getCheckedKeys(); //此方法获取半选节点 let ...
- 攻防世界 web 进阶区 刷题记录
1.Training-WWW-Robots 题目提示了robots协议,直接访问robots.txt 继续访问fl0g.php 2.baby_web 题目描述:想想初始页面是哪个 百度搜了下,inde ...