转载请标明出处

第一章 接口(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  使用函数和任务的完整原型导入(形参包含方向)

modport modport_name(import task <任务名>(<任务的形式参数) );

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 笔记(七)的更多相关文章

  1. Systemverilog for design 笔记(六)

    转载请标明出处 第一章 有限状态机建模(FSM,finite state machine) 1.1.    使用枚举类型建立状态机模型 l  三过程块建模风格:三个过程块分别实现: a.状态转换(al ...

  2. Systemverilog for design 笔记(五)

    转载请标明出处 第一章 System Verilog过程块.任务和函数 1.1.    verilog通用目的always过程块(procedural block)(可综合) always过程块的综合 ...

  3. Systemverilog for design 笔记(四)

    转载请标明出处 数组.结构体和联合体 1. 结构体(struct) 1.1. 结构体声明 结构体默认是变量,也可以声明为线网 var struct { // 通过var进行结构体变量声明 logic ...

  4. Systemverilog for design 笔记(三)

    转载请标明出处 用户自定义和枚举数据类型 1. 用户自定义类型(typedef) 局部typedef定义:只用于设计的特定部分时,typedef的定义可在module或interface中 共享typ ...

  5. SystemVerilog for design 笔记(二)

    转载请标明出处 1. System Verilog文本值和数据类型 1.1. 增强的文本值赋值 相对于verilog,SV在文本值赋值时可以1.无需指定进制    2.赋值可以是逻辑1 用法: reg ...

  6. Systemverilog for design 笔记(一)

    转载请标明出处 一.     System Verilog 声明的位置 1.       包(packages) Verilog要求局部声明: variables, nets, tasks and f ...

  7. 《MFC游戏开发》笔记七 游戏特效的实现(一):背景滚动

    本系列文章由七十一雾央编写,转载请注明出处. http://blog.csdn.net/u011371356/article/details/9344721 作者:七十一雾央 新浪微博:http:// ...

  8. (转)Qt Model/View 学习笔记 (七)——Delegate类

    Qt Model/View 学习笔记 (七) Delegate  类 概念 与MVC模式不同,model/view结构没有用于与用户交互的完全独立的组件.一般来讲, view负责把数据展示 给用户,也 ...

  9. Learning ROS for Robotics Programming Second Edition学习笔记(七) indigo PCL xtion pro live

    中文译著已经出版,详情请参考:http://blog.csdn.net/ZhangRelay/article/category/6506865 Learning ROS forRobotics Pro ...

随机推荐

  1. (原创)Windows下编译的Shell脚本不能再Linux中运行的解决办法

    一.原理 Windows编译的文件和Linux编译的文件格式不太一样,导致在Linux运行Shell脚本的时候会提示:/bin/bash^M: bad interpreter: 没有那个文件或目录. ...

  2. JS高级---体会面向对象和面向过程的编程思想

    体会面向对象和面向过程的编程思想 ChangeStyle是自定义的构造函数,再通过原型添加方法的函数. 实例化对象,导入json参数,和创建cs,调用原型添加的方法函数 过渡,先熟悉记忆 <!D ...

  3. Web基础了解版07-EL表达式-运算符-11个隐式对象

    EL EL(Expression Language)是JSP内置的表达式语言,用以访问页面的上下文以及不同作用域中的对象 ,取得对象属性的值,或执行简单的运算或判断操作.EL在得到某个数据时,会自动进 ...

  4. mybatis批量插入和更新

    批量插入 <insert id="add" parameterType="java.util.List"> insert all <forea ...

  5. 解决VMware Workstation下Win2012R2无法安装Hyper-v问题

    有时候我们需要测试Hyper-V但是发现VMware下不能够正常安装,提示:验证过程发现你要安装功能的服务器存在问题.所选功能与所选服务器的当前配置不兼容.无法安装Hyper-V:虚拟机监控程序已在运 ...

  6. Jmeter-ServerAgent

    You can specify the listening ports as arguments (0 disables listening), default is 4444:   $ ./star ...

  7. html学习-第二集(CSS)

    head标签里面添加style标签,可以为标签添加样式 id选择器 类选择器 标签选择器 层级选择器 组合选择器 属性选择器 <!DOCTYPE html> <html lang=& ...

  8. 【PAT甲级】1079 Total Sales of Supply Chain (25 分)

    题意: 输入一个正整数N(<=1e5),表示共有N个结点,接着输入两个浮点数分别表示商品的进货价和每经过一层会增加的价格百分比.接着输入N行每行包括一个非负整数X,如果X为0则表明该结点为叶子结 ...

  9. 基于PowerCli自动部署和配置vmvare虚拟机

    1 文档说明 2 Vsphere PowerCli安装和配置 3 PowerCli常用命令 4 创建自定义规范 5 虚拟机克隆与配置脚本 6 技术资料 1 文档说明 使用Vsphere管理虚拟机,在进 ...

  10. 14. 深入解析Pod对象(一)

    14. 深入解析Pod对象(一) """ 通过前面的讲解,大家应该都知道: Pod,而不是容器,它是 Kubernetes 项目中的最小编排单位.将这个设计落实到 API ...