IEEE Standard for SystemVerilog—Unified Hardware Design, Specification, and Verification Language笔记3

IEEE Standard for SystemVerilog—Unified Hardware Design, Specification, and Verification Language笔记第3章(Design and verification building blocks)

概要

  1. 标准目的

    • 标准名称:IEEE Std 1800-2017
    • 目的:为SystemVerilog语言提供统一的硬件设计、规范和验证标准。
    • 版权:© 2018 IEEE,保留所有权利。
  2. 设计和验证构建块

    • 模块(Modules):SystemVerilog的基本构建块,用于表示设计块,也可以包含验证代码和模块间的互连。
    • 程序(Programs):为测试台环境建模提供构建块,与模块相比,它更注重测试环境的完整建模而非硬件级细节。
    • 接口(Interfaces):封装设计块之间的通信,促进设计的重用和迁移,可以包含参数、常量、变量、函数和任务。
    • 检查器(Checkers):封装断言和建模代码的验证块,用于创建形式验证的辅助模型。
    • 原始类型(Primitives):表示低级逻辑门和开关,包括内置原始类型和用户定义的原始类型(UDP)。
    • 子程序(Subroutines):包括任务和函数,用于封装可执行代码,可以从多个位置调用。
    • 包(Packages):提供声明空间,可以由其他构建块共享,包含类型定义、函数、任务等。
    • 配置(Configurations):指定设计配置的绑定信息,将模块实例与具体的SystemVerilog源代码关联起来。
  3. 编译和阐述

    • 编译过程:读取SystemVerilog源代码,分析语法和语义错误,可能保存编译结果为中间格式或直接进入阐述阶段。
    • 阐述过程:将设计组件绑定在一起,包括实例化模块、计算参数值、解析层次名称、建立网络连接等,为仿真做准备。
  4. 编译单元

    • 定义:一组一个或多个SystemVerilog源代码文件组成的集合。
    • 编译单元作用域:每个编译单元有一个局部作用域,包含所有位于其他作用域之外的声明。
    • $unit:用于访问编译单元作用域中声明的标识符的特殊名称。
  5. 名称空间

    • 全局名称空间:包括定义名称空间和包名称空间。
    • 局部名称空间:包括编译单元作用域名称空间、模块名称空间、块名称空间、端口名称空间和属性名称空间。
    • 规则:每个名称空间中的名称必须唯一,不得重复声明。
  6. 仿真时间和精度

    • 时间单位:表示时间和延迟的测量单位,范围从秒到飞秒。
    • 时间精度:指定延迟的准确度,必须至少与时间单位一样精确。
    • 指定方式:可以使用timescale编译器指令或timeunittimeprecision关键字来指定时间和精度。
  7. 示例和详细语法

    • 模块示例:提供了一个简单的2到1多路复用器的模块示例,展示了如何声明端口、连续赋值和过程块。
    • 程序示例:展示了一个简单的程序示例,说明了如何在测试台环境中使用程序块。
    • 接口示例:展示了接口的定义和使用,包括如何封装通信协议和连接设计块。

本章详细定义了SystemVerilog语言的标准、构建块、编译和阐述过程、名称空间、仿真时间和精度,并通过示例展示了如何在实际设计中应用这些概念和规则。理解这些内容对于使用SystemVerilog进行硬件设计和验证至关重要。

内容

3.1 一般性概述

本条款描述了以下内容:

  • 模块、程序、接口、检查器和原始类型的目的
  • 子程序的概述
  • 包的概述
  • 配置的概述
  • 设计层次结构的概述
  • 编译和阐述的定义
  • 声明名称空间
  • 仿真时间、时间单位和时间精度

本条款定义了几个重要的SystemVerilog术语和概念,这些术语和概念贯穿本文档始终。本条款还概述了用于表示硬件设计及其验证环境的建模块的用途和使用方法。

3.2 设计元素

设计元素是SystemVerilog的模块(见第23章)、程序(见第24章)、接口(见第25章)、检查器(见第17章)、包(见第26章)、原始类型(见第28章)或配置(见第33章)。这些结构分别通过moduleprograminterfacecheckerpackageprimitiveconfig关键字引入。

设计元素是用于建模和构建设计及验证环境的主要构建块。这些构建块是声明和过程代码的容器,这些声明和过程代码在本文档后续条款中讨论。

本章描述了这些构建块的目的。有关这些块的语法和语义的完整详细信息,在本文档后续条款中定义。

3.3 模块

SystemVerilog中的基本构建块是模块,它被moduleendmodule关键字包围。模块主要用于表示设计块,但也可以作为验证代码和设计块与验证块之间互连的容器。模块可以包含以下构造之一或多个:

  • 端口,包括端口声明
  • 数据声明,如网络(nets)、变量、结构体和联合体
  • 常量声明
  • 用户定义的类型定义
  • 类定义
  • 从包中导入的声明
  • 子程序定义
  • 其他模块、程序、接口、检查器和原始类型的实例化
  • 类对象的实例化
  • 连续赋值
  • 过程块
  • 生成块
  • 指定块

以下是对上述列表中每个构造的简要说明,但请注意,此列表并非详尽无遗,模块还可以包含其他在本文档后续条款中讨论的构造。

以下是一个简单的模块示例,它表示一个2到1多路复用器:

module mux2to1 (input wire a, b, sel, // 组合端口和类型声明
                 output logic y);
  always_comb begin // 过
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值