SystemVerilog
文章平均质量分 92
SD.ZHAI
好好学习,天天向上
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Verilog与SystemVerilog——运算操作符
文章目录一、算术操作符(+ - * / % **)二、相等操作符(== ! = === ! == ==? !=?)三、逻辑操作符(&& || !)四、按位操作符(~ & | ^ ^~或 ~^)五、缩减操作符(& ~& | ~| ^ ~^)六、移位操作符(<< >> <<< >>>)七、关系操作符(> < >= <=)八、条件操作符(?:)九、拼接和复制操作符原创 2020-05-24 21:18:23 · 57216 阅读 · 2 评论 -
数据类型(变量类型、数组、队列、结构体、枚举类型、字符串)
文章目录一、变量类型——四值变量与二值变量二、固定数组——非压缩数组与压缩数组2.1.非压缩数组2.2.压缩数组三、动态数组四、队列五、联合数组六、数组方法6.1.数组运算方法6.2.数组排序方法6.3.数组定位方法七、结构体八、枚举类型九、字符串变量一、变量类型——四值变量与二值变量变量(信号)类型分为:四值变量和二值变量;四值变量: (0、1、x、z)四种状态wire——主要用在a...原创 2020-04-08 23:17:16 · 3339 阅读 · 5 评论 -
SV的接口应用——interface
文章目录以下为一个简易的仲裁器RTL(DUT)代码arb.v:module arb( //简单的仲裁器 input reset_n, input clk, input request, output reg grant); always ...原创 2020-04-08 17:52:07 · 17077 阅读 · 5 评论 -
任务与函数的应用——function and task
文章目录一、任务与函数的区别二、子程序参数三、子程序返回一、任务与函数的区别函数function任务task执行与消耗在仿真0时刻就开始执行,不消耗仿真时间在非0时刻(被调用)执行,消耗仿真时间仿真控制语句函数中不能含有控制仿真时间的语句如时间延迟#100,阻塞语句@(posedge clk)等任务中可以包含仿真时间控制语句如延迟#100,时钟周期@(),wait()以及事件event等语句返回形式函数的返回可以通过调用return语句实现,当不需要返回值时可原创 2020-06-20 15:30:16 · 2065 阅读 · 1 评论 -
OOP基础——类中基本概念、深/浅复制、静态变量等
文章目录类的使用方法:定义一个类声明一个句柄创建一个对象对象内存空间的释放在类中声明另一个类对类的句柄对象的深复制与浅复制的区别静态变量的定义与用法module OOP_BASIC(); class statistic; static int count; //声明静态变量 int id; function new()...原创 2020-04-22 17:51:23 · 1874 阅读 · 0 评论 -
OOP进阶——封装、继承、多态
文章目录一、class特性1.1.封装1.2.继承1.3.多态二、代码code一、class特性1.1.封装1.2.继承1.3.多态二、代码codemodule OOP_EXTENDS(); class BusTran; bit [31:0] addr,crc,data[7]; virtual function bit[31:0] calc_crc...原创 2020-04-23 00:08:48 · 1935 阅读 · 1 评论 -
并发线程(fork_ join) 与 线程通信机制——event、semaphore、mailbox
一、三大通信机制1.1.event1.2.semaphore1.3.mailbox二、代码codemodule thread_com(); event e1, e2; //定义事件类型变量 initial begin fork begin $display("*****@%0d ...原创 2020-04-23 16:06:29 · 5410 阅读 · 1 评论 -
随机化策略——随机变量rand、约束constraint、权重dist、随机数产生示例
文章目录一、随机变量类型1.1.rand随机变量1.2.randc随机变量二、随机化约束2.1.constraint指定约束范围2.1.1.关系操作符约束(>、<、=、>=、<=)2.1.2.范围操作符约束(inside)2.1.3.权重分布约束(dist)2.1.4.条件约束(if-else; ->)三、启动随机化——randomize( )函数四、关闭或打开随机变...原创 2020-04-23 21:54:21 · 19047 阅读 · 3 评论 -
关于随机化约束solve...before的详细解释
文章目录一、典型的随机分布二、solve...before约束2.1.不添加solve...before约束时的随机变量概率2.2.添加solve...before约束时改变随机变量概率 SystemVerilog中随机变量在常见的约束(符号约束、inside约束、条件约束、内嵌约束)条件下,其随机值出现的概率是均等的。但是使用solve…before约束后,将会改变随机数值的出现几率,使得某些特定的取值情况更易出现。一、典型的随机分布class transaction; rand bit[2:原创 2020-08-03 10:44:35 · 10077 阅读 · 0 评论 -
覆盖率验证——代码覆盖率+功能覆盖率
文章目录一、基于覆盖率驱动的验证技术二、代码覆盖率功能覆盖率三、功能覆盖率建模3.1.功能覆盖率模型——covergroup3.2.覆盖点——coverpoint3.3.覆盖点的——bins四、代码code一、基于覆盖率驱动的验证技术采用覆盖率驱动的验证方式可以量化验证进度,一般在验证计划中会指定具体的覆盖率目标。通过覆盖率验证可以确定验证是否达到要求。当然,达到目标覆盖率并不意味着验证就通过...原创 2020-04-25 14:52:32 · 51447 阅读 · 14 评论 -
随机化系统函数和随机化方法——($random/$urandom/$urandom_range 和 srandom/randomzie/std::randomize)
文章目录一、$random——系统方法,返回32bit的有符号伪随机数二、$urandom——系统方法,返回32bit的无符号伪随机数三、$urandom_range()——系统方法,返回指定范围内的无符号随机整数四、srandom()——对象方法,在类方法内/外为随机数据发生器(RNG)添加随机种子五、randomize() —— 对象方法,为对象中的随机化变量随机赋值$random —— 系统随机化调用函数,返回32bit有符号数;$urandom() —— 系统随机化调用函数,返回32bit无符原创 2020-07-31 23:36:23 · 75351 阅读 · 6 评论 -
交互系统函数$test$plusargs()与$value$plusargs ——字符串函数 $sformatf()与$sformat()的区别与用法
字符串在验证平台中是经常被使用的,今天我们来说说在SystemVerilog中非常重要和常用的sformatf()/sformatf()/sformatf()/sformat()函数,他们是什么含义?如何用?如何妙用?01首先Jerry和大家解释下这两个函数什么含义。看下这段代码:string jerry_string;string jerry_string_r;$sformat(jerry_string , “jerry_face_score==%0d” , 100);$di原创 2020-06-19 20:09:02 · 4679 阅读 · 0 评论
分享