SystemVerilog
文章平均质量分 77
SystemVerilog
Willliam_william
这个作者很懒,什么都没留下…
展开
-
SystemVerilog学习之路(9)— 枚举类型的随机化约束
SystemVerilog学习之路(9)— 枚举类型的随机化约束一、前言在SystemVerilog中我们经常用到枚举类型,同样的我们也会对其进行随机化二、代码编写代码如下所示:class transaction; typedef enum { SIZE_8BIT, SIZE_16BIT, SIZE_32BIT, SIZE_64BIT, SIZE_128BIT } burst_size_t; r原创 2022-05-21 11:47:06 · 1732 阅读 · 1 评论 -
SystemVerilog学习之路(8)— QuestaSim里覆盖率的查看
UVM学习之路(8)— 覆盖率的查看和调整一、前言“覆盖率”是衡量设计验证完成程度的一个通用词,随着测试逐步覆盖各种合理的组合,仿真过程会慢慢勾画出你的设计情况。覆盖率工具会在仿真过程中收集信息,然后进行后续处理并得到覆盖率报告。二、创建工程代码连接在文章末尾,我们新建一个工程,将代码添加到工程中,如下所示三、编译设置按住【Ctrl】键,点选中所有的设计文件及verilog文件,然后右键点击选择【Compile】->【Compile Properties…】点开【Coverage】即原创 2021-09-22 01:00:53 · 6670 阅读 · 11 评论 -
SystemVerilog学习之路(7)— QuestaSim的调试方法
UVM学习之路(6)— QuestaSim的调试方法一、前言在使用仿真器的过程中会涉及到库窗口、仿真窗口和过程窗口,他们将与硬件、模型 和在线运行的进程一一对应。二、库窗口所有编译成功的硬件(module、interface、program)和软件(class、package)都可以被放入库中,如果不指定放入的位置,他们会被放入默认的work库中。如下所示,是QuestaSim的库窗口;三、仿真窗口仿真窗口(sim window)代表目前正在进行的仿真结构,一般在验证环境中,应该包含硬件测试的原创 2021-09-10 23:47:52 · 7158 阅读 · 1 评论 -
SystemVerilog学习之路(6)— 最小时间和时间片
UVM学习之路(6)— SystemVerilog中的最小时间和时间片一、前言delta-cycle(无限最小时间):默认情况下,时钟对于组合电路的驱动会添加一个无限最小时间(delta-cycle)的延迟,而该延迟无法用绝对时间单位衡量,它比最小时间单位精度还小。time-slot(时间片): 在仿真器中敲入命令run 0,即是让仿真器运行一个时间片的时间,在一个时间片中可以发生很多事情,一个时间片里面包含无数个delta-cycle。二、代码实现编写代码如下所示`timescale 1n原创 2021-09-10 00:15:34 · 2411 阅读 · 0 评论 -
SystemVerilog学习之路(5)— 结构体、枚举类型和字符串
UVM学习之路(5)— SystemVerilog的结构体、枚举类型和字符串一、前言在SystemVerilog中可以和C语言一样使用typedef来创建新的类型,这样通过和结构体的配合便可以自定义我们想要的数据类型了。二、结构体类型在SystemVerilog中可以使用struct创建结构体,不过struct的功能少,它只是一个数据的集合,其通常的使用方式是将若干相关的变量组合到一个struct结构定义中。编写代码如下所示,自定义一个结构体类型,并对其赋值,然后将其值打印出来。module st原创 2021-09-05 12:46:36 · 1384 阅读 · 0 评论 -
SystemVerilog学习之路(4)—动态数组、队列和关联数组
UVM学习之路(4)— SystemVerilog的动态数组、队列和关联数组一、前言SystemVerilog提供的动态数组类型,可以在仿真时分配空间或者调整宽度,这样在仿真中就可以使用最小的存储量。SystemVerilog引进了一种新的数据类型—队列,它结合了链表和数组的优点。队列与链表相似,可以在一个队列中的任何地方增加或删除元素,这类操作在性能上的损失比动态数组小得多,因为动态数组需要分配新的数组并复制所有元素的值,队列与数组相似,可以通过索引实现对任一元素的访问,而不需要像链表那样去遍历目标原创 2021-09-04 23:13:52 · 9488 阅读 · 2 评论 -
SystemVerilog学习之路(3)— 定宽数组
UVM学习之路(3)— SystemVerilog的定宽数组一、前言数组在数字验证当中是经常用到的,而且对于不同类型的数组其适用的应用场景也各不相同。二、数组声明在Verilog中对于数组的声明必须给出数组的上下界,但是在SystemVerilog中因为几乎所有数组都使用0作为索引下界,所以可以和C语言一样只给出数组宽度的便携式声明方式,如下为两种声明方式:int lo_hi[0:15]; // 16个int类型整数[0]...[15]int c_style[16]; // 16个int类型整数原创 2021-08-30 22:39:12 · 2667 阅读 · 3 评论 -
SystemVerilog学习之路(2)— 内建数据类型
UVM学习之路(2)— SystemVerilog的内建数据类型一、前言SystemVerilog里的内建数据类型可以有两个分类,首先按值数量分:类别可表示值详细类型四值逻辑0、1、X、Zinteger、logic、reg、net-type(例如wire、tri)二值逻辑0、1byte、shortint、int、longint、bit如果按有无符号分,可分为如下所示,可以看到,除了integer和bit,和上面的分类是比较一致的类别详细类型原创 2021-08-30 18:52:51 · 1374 阅读 · 0 评论 -
SystemVerilog学习之路(1)— 搭建开发环境和HelloWorld
UVM学习之路(1)— Questasim下载安装和HelloWorld一、前言Questasim是由Mentor Graphics公司推出的一款非常好用且功能强大的高级仿真模拟工具,该软件基于标准的单核验证引擎,集成了一个HDL模拟器,一个约束求解器,一个判断引擎,功能覆盖,以及一个通用的用户界面。Questasim可以用于各类产品的仿真模和调试等操作,可以大大地降低复杂FPGA和SOC设计的风险。参考:Questasim10.6c下载安装教程Questasim的基本运用二、Questasi原创 2021-08-29 15:53:29 · 7078 阅读 · 8 评论