
System Verilog自学笔记
# System Verilog自学教程。该系列博客为SV(System Verilog)学习笔记,笔者会尽力总结出一个较为完整的SV学习框架。
ty_xiumud
有些时候,不是因为看到了希望才去坚持,而是坚持了,才看到希望。
展开
-
线程同步,通信与虚方法
线程同步,通信与虚方法目录线程同步,通信与虚方法进程同步,通信事件event旗语semaphore信箱mailbox虚方法实例理解将子类句柄赋值成父类句柄将父类句柄赋值成子类句柄使用系统函数$cast()结论进程同步,通信测试平台的的线程之间需要进行同步与数据交换,所有的数据交换被称为线程间的通信事件event使用关键词声明一个事件,不需要new;使用->触发一个事件;使用wait(电平敏感)或者是@(边沿敏感)来进行等待,一般先等原创 2022-02-27 21:18:48 · 387 阅读 · 0 评论 -
System Verilog 线程间的通信——事件,信箱与旗语
本文参考绿皮书第七章节,主要介绍System Verilog线程间通信的方式与基本的使用。包括事件,mailbox,semaphore。简而言之,事件可以实现线程间的通信,mailbox用于线程间的数据交互。semaphore实现同一个资源的访问控制。详细间后文。System Verilog 线程间的通信——事件,信箱与旗语事件事件的声明事件的触发等待事件的触发mailbox信箱信箱的声明信箱的方法new()put()/try_put()get()或peek()num()semaphore旗语sema.原创 2022-01-06 23:12:13 · 966 阅读 · 0 评论 -
System Verilog——虚方法的使用
本文参考绿皮书8.3System Verilog——虚方法的使用使用虚方法目的实例理解将子类句柄复制成父类句柄将父类句柄复制成子类句柄使用系统函数$cast()结论附录所使用的仿真代码使用虚方法目的通过在父类里定义虚方法(task or function),可以在当父类句柄调用一个方法时候,前提是若是这个句柄指向了子类对象,则调用的方法为子类的方法而不是父类的方法。实例理解将子类句柄复制成父类句柄module tb_virtual();class Transaction;bit [31:.原创 2021-12-03 18:24:29 · 3093 阅读 · 0 评论 -
SystemVerilog中package(包)的基本使用
包(package)的使用package声明SystemVerilog包提供了一种额外的机制,用于在多个SystemVerilog模块、接口、程序和检查器之间共享参数、数据、任务、函数、序列、属性和检查器声明。包是显式命名的作用域,出现在源文本的最外层(与顶级模块和原语处于同一级别)。其中,我们可以理解,其实package里包的就是一些数据的。像interface,module是不能定义在package中的。包的作用1、把功能相似或相关的类或接口组织在同一个包中,方便类的查找和使用。2、如同文原创 2021-12-03 15:18:04 · 2263 阅读 · 2 评论 -
system verilog中的参数传递——ref,input,output
本文介绍了 system verilog 中静态数组、动态数组、队列作为函数参数传递的规则,以及 input、output、ref关键字的规则。先说明,sv 中的静态数组、动态数组、队列都是用一块内存存放,而他们的名字作为该内存的地址,这点应该和 c 一致,但 sv 里面没有指针的概念。传递这种大片内存的值一般只有两种规则地址传递,函数内部修改可以改变函数调用的值。值传递,将整片空间复制一份,函数内部修改不会改变函数调用的值。但是 system verilog 里面关键字有三个,input.转载 2021-12-02 19:31:27 · 3364 阅读 · 13 评论 -
System Verilog线程——fork join的理解使用
本文参考绿皮书第七章,线程及其线程间的通信,Verilog HDL A guide to digital design and synthesis 2nd第七章。主要对于begin…end,fork…join等进行简单总结。然后给出相对应的实例进行理解。有问题欢迎同学指出。System Verilog线程——fork join的理解使用概述顺序块与并发块(Sequential and Parallel Blocks)begin...end块fork...join块fork...join_any与for.原创 2021-12-02 18:08:18 · 3105 阅读 · 0 评论 -
理解System Verilog中local的和protect变量
理解System Verilog中local的和protect变量基本定义代码演示与结果仿真基本定义都是定义在类中,用来做内部变量使用的。local和protected的区别(1)local就是本地变量,那么在子类中就不能调用,外部不可调用。(2)protected就是保护变量,子类可以调用操作,但是外部代码仍然不能操作该变量。具体看如下实例,修改自路桑课件上的coding。代码演示与结果仿真这是将错误注释掉的,可以将注释去掉,观察仿真器的报错。如下都进行了展示。module class_原创 2021-11-29 00:54:49 · 1549 阅读 · 0 评论 -
System Verilog面向对象编程(OPP)基础——类(class)的基本使用
面向对象编程面向对象编程概述考虑名词而非动词编写第一个类OOP术语创建新的对象为对象创建一个句柄对象的解除分配使用对象静态变量与动态变量简单的静态变量通过类名访问静态变量静态变量的初始化静态方法类的方法在类之外定义方法作用域规则this在类中可以使用另外一个类概述面向对象编程(OOP)使得用户可以创建更加复杂的数据类型,并将该数据类型与使用这些数据类型的程序紧密结合在一起。用户可以在更加抽象的层次建立测试平台和系统模型。通过调用函数来是实现电原创 2021-11-24 02:09:31 · 998 阅读 · 0 评论 -
System Verilog——任务和函数 Part-I
System Verilog 可以说是Verilog+C的结合,在Verilog的基础上,引入了面向对象的思想,使得更有利于实现对电路的验证。因此很多时候需要对比Verilog,结合C,对比SV(System Verilog)的区别即可。本博文简单介绍SV的任务函数的基本使用System Verilog——任务和函数 Part-IVerilog中的tasktask的声明task的使用实例实例1实例2关键字automaticSystem Verilog中的taskSystem Verilog中task.原创 2021-11-10 21:22:28 · 698 阅读 · 0 评论