SV芯片验证之数据类型(一)

这篇具有很好参考价值的文章主要介绍了SV芯片验证之数据类型(一)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、Verilog硬件语言有两种四值(四态)逻辑的基本类型:变量(variable)和线网(net)。

四值(四态)逻辑:可以表示0(低电平)、1(高电平)、X(未知值、不定态)和Z(高阻值)四种值。有logic、reg、integer、time、net-type(wire、tri)

注:

真实电路中并无X,它只是用来表示不确定的状态,即不确定它到底是0还是1,但它要么是0要么就是1,不存在所谓的“中间态”。

高阻态Z在驱动里表示没有驱动,悬空。

二值(二态)逻辑:只能表示0(低电平)、1(高电平)两种值。有bit(1位)、byte(8位,8-bit)、shortint(16-bit)、int(32-bit)、longint(64-bit)

四值逻辑和二值逻辑之间可以互相转换:四值逻辑在转换成二值逻辑时,X和Z会转换为0。

四值逻辑变量(reg、logic、integer等)在仿真开始时的初始值为X;

二值逻辑变量在仿真开始时的初始值为0.

有符号数:byte、shortintint、longintinteger

无符号数:bit、reg、logic、net-type(wire、tri)--单个构成的向量vector

在表达式中integer的值作为有符号数来处理,而reg和time的值作为无符号数处理。

reg用来描述逻辑;

integer用来描述循环变量和计算;

real在系统模型中使用;

time和realtime保存测试装置的仿真时间。 

int和integer的区别:前者是两态逻辑,后者是四态逻辑。四态逻辑需要一个额外的位来编码X和Z状态。两态数据类型的仿真速度更快一些,而且占用的内存更少。

变量类型:reg、integer、time等可以用来存储组合逻辑或者时序逻辑的值。

SV代码中通常用var来表示。 

线网类型:wire、wor、wand等可以用来连接硬件模块,以及提供特殊的线网逻辑解决方案。

SV代码中通常用wire来表示

延伸:reg可被综合成触发器flip-flop和锁存器latch

1、触发器:对时钟边沿敏感的存储单元,它是在时钟的上升沿或者下降沿进行数据的锁存,具有记忆功能。它能够存储一位二进制码。

2、锁存器:对脉冲电平敏感的存储单元,用脉冲电平的使能来进行数据的锁存,具有记忆功能。

3、寄存器(register):能够用来存储一组二进制代码的同步时序逻辑电路。把n个触发器的时钟端口连接起来就能构成一个存储n位二进制代码的寄存器。

Verilog中变量类型只能用过程赋值来赋值。它保存在initial、always、task、function内。

二、SystemVerilog将硬件信号分为类型和数据类型。

Verilog中没有数据类型这一概念,只有变量类型和线网类型。

类型:表示该信号为变量(var--variables)类型或者线网类型(nets指大类,代码中常见用wire来表示)。

数据类型:表示该数据是四态逻辑logic还是二态逻辑bit

Verilog和SV中类型赋值的区别:

Veirlog:

变量类型(var)只能使用过程赋值(过程块initial、always)
线网类型(wire)只能使用连续赋值(赋值语句assign)

SV:

变量类型(var)既可以使用过程赋值,也可以使用连续赋值(过程块initial、always)
线网类型(wire)只能使用连续赋值(赋值语句assign)

SV中声明变量时如果没有特别指定,如logic [3:0] a(a是一个向量vector,有4位,每一位都可表示为0,1,X,Z),那么此变量默认类型为var(变量类型)

testbench中大多数情况都使用logic类型变量,很少使用wire。当超过一个驱动源或者设计的模块端口是双向(inout)的时候,则会使用wire。

如下代码表明logic既可以是变量类型var也可以是线网类型wire:文章来源地址https://www.toymoban.com/news/detail-697393.html

module tb;
  wire w1;
  logic r1;//此处logic未声明类型,默认是变量类型var
  assign w1 = 1'b1;
  assign r1 = 1'b0;

  wire logic w2;//logic是线网类型wire
  var logic r2;
  assign w2 = 1'b1;
  assign r2 = 1'b0;

  initial begin
    #1ns;
    $display("w1 = %b, r1 = %b", w1, r1);
    $display("w2 = %b, r2 = %b", w2, r2);
  end
endmodule

到了这里,关于SV芯片验证之数据类型(一)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • SV学习——数据类型(1)

    SV中引入新的数据类型logic,SV作为侧重于验证的语言,并不十分关切logic对应的逻辑应该被综合位寄存器还是线网,因为logic被使用的场景如果是验证环境,那么它只会作为单纯的变量进行赋值操作。 引入的一个新的四态数据类型logic,可以代替reg;但是不能用在双总线和多驱

    2024年01月21日
    浏览(30)
  • SV学习——数据类型(第二章)

    verilog有1995和2001版本,而SV是verilog的延伸,SV发布的时候直接就是3.0,之后可能不再存在verilog,而是统一用SV。SV是完全兼容verilog的。verilog文件以.v结尾,SV文件以.sv结尾。语法是全部兼容的,SV是verilog的扩展和延伸。 verilog中有reg和wire两种数据类型,都是四值逻辑 0,1,x,

    2024年02月10日
    浏览(67)
  • 【SystemVerilog 之数据类型】~ 数据类型、Logic 类型、数组(定宽数组、动态数组、队列、关联数组、链表)

    四值变量 :(0、1、x、z)四种状态 四值逻辑类型 :integer、logic、reg、net-type(如 wire、tri)、time(64bit的无符号整数); SV 并不太常用变量类型是 wire(assign 语句中)还是 reg(initial 和 always 语句中)。logic 用的比较多。可以被连续赋值语句驱动,可用在 assign、initial、always 语句

    2024年01月22日
    浏览(30)
  • SystemVerilog logic、wire、reg数据类型详解

            在Verilog中, wire 和 reg 是最常见的两种数据类型,也是初学者非常容易混淆的概念。           SystemVerilog的一大改进是支持 logic 数据类型,它在多数时候可以不加区分地替代 wire 和 reg 。但如果不熟悉 logic 的限制随意使用,也容易遇到意想不到的错误。本文主

    2024年02月06日
    浏览(28)
  • 【芯片设计- RTL 数字逻辑设计入门 6 -- 带同步复位的D触发器 RTL实现及testbench 验证】

    同步复位 :复位只能发生在在clk信号的上升沿,若clk信号出现问题,则无法进行复位。 Verilog 代码 testbench 代码 编译及仿真 波形如下 : 从波形可以看到,在第100ns后,第一个 clk 时钟沿变化时 q 的信号和 d 的信号保持一样,后面依次如此。 问题小结 在写 testbench 测试的时候

    2024年02月19日
    浏览(42)
  • SV 逻辑数值、数组、队列、结构体、字符串

    目录 一、逻辑数值 二、变量转换 显示转换 隐式转换(不需要进行转换操作) 三、定宽数组 数组声明 多维数组声明 初始化和赋值   非合并数组 合并数组 基本数组操作 for和foreach 赋值:= 比较:==,!=    四、动态数组 数组定位 方法定位 with(指示sv如何搜索) 重复参数

    2023年04月12日
    浏览(28)
  • systemverilog断言简介 形式验证 第3章

        目录 一、基本断言概念 1、一个简单的仲裁器示例 2、什么是断言(assertion) 3、什么是假设(assumption) 4、什么是覆盖点(cover point) 5、对断言语句的阐述 6、SVA断言语言基础知识 二、即时断言 1、写即时断言 2、过程代码的复杂性和断言FINAL的动机 3、程序块中的位置

    2024年02月11日
    浏览(27)
  • 【数字设计验证】System Verilog(sv)稍微进阶的笔记(一)

    接触硬件描述语言(HDL)也有几个年头了,由于之后research会偏向Architecture,做偏软件的活,算是走入一个新的阶段,因此想写一篇关于SV的笔记进行总结复习。选择SV的原因在于它目前是业界主流。SV是Verilog的继承扩展版本,类似于Cpp和C的关系,扩展内容可以分为Declaration Enh

    2024年02月07日
    浏览(29)
  • (三)SV结构体、枚举类型、字符串

    1、SV结构体与C语言中结构体对应 说明: student:结构体类型名,可以忽略不写的 student1, student2:结构体变量名 内部的变量:成员变量名   但常常用typedef来新定义类型,就是对其他类型取别名,方便定义变量 ,例如:  typedef struct {bit [7:0] r, g, b;} pixel_s1;//pixel_s就是对struct {bit

    2024年02月15日
    浏览(33)
  • 基于FPGA的图像自适应阈值二值化算法实现,包括tb测试文件和MATLAB辅助验证

    目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1Otsu方法 4.2 Adaptive Thresholding方法 4.3、FPGA实现过程 5.算法完整程序工程 Vivado2019.2 matlab2022a        图像二值化是数字图像处理中的一种常见技术,可以将灰度图像转换为黑白二值图像,突出图像

    2024年02月08日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包