System Verilog基础--System Verilog实现流水灯

文章目录

一、数据类型

1、内建数据类型

二、随机化

1、修饰符

2、随机约束种类

3、相关函数

三、接口

1、接口(Interface)

2、modport

四、激励时序

1、时钟块

2、程序块(Program Block)和时序区域(Timing Region)

3、接口的驱动和采样

五、面向对象编程

1、OOP术语

2、类和对象

3、静态变量

4、类的方法

六、System Verilog实现流水灯

参考资料:


一、数据类型

1、内建数据类型

(1)逻辑类型
a、四值逻辑

可以表示0、1、X、Z四种状态,默认初始值为x

wire,reg,logic,integer,time

b、二值逻辑

只可以表示0和1两种状态,默认初始值为0。

bit:可自定义位宽

byte:8位宽,取值范围:-128~127

shortin:16位宽,取值范围:-2^{15} ~ 2^{15}-1

int:32位宽,取值范围:-2^{31} ~ 2^{31}-1

longint:64位宽,取值范围:-2^{63} ~ 2^{63}-1

(2)符号类型
a、有符号类型

byte、shortint、int、longint、integer

b、无符号类型

wire、reg、logic、bit

(3)类型转换
a、隐式转换

b、显示转换

静态转换

动态转换

注意:

1 四值逻辑中的x赋值给二值逻辑的时候,就是0

2 赋值只能在声明的时候直接赋值,或者在过程块里面赋值

3 变量的赋值必须在声明之后

二、随机化

1、修饰符

(1)rand
表示每次随机化类时,这些变量都会赋一个值

(2)randc
表示周期随机性,即所有可能的值都赋过值后随机值才可能重复

2、随机约束种类

使用关键字constraint来添加约束语句块,指定随机变量的取值范围,或者各个变量之间的相互关系。约束块不是自上而下执行的程序性代码,而是声明性代码,是并行的,所以所有的约束表达式同时有效。

(1)布尔表达式 Boolean expressions
布尔表达式就是用最简单的不等式规定变量的取值范围或者相互之间的大小关系。约束块中只能包含表达式:<、<= 、== 、>= 、>。在一个表达式中最多只能使用一个关系操作符。

class order;
    rand bit [7:0] low, num, high;
    constraint c_boolean{
        low<num;
        num<high;
    }
endclass

(2)权重分配 Weighted distributions
 dist操作符允许产生权重分布,这样某些值得选取机会要比其他值更大。权重分配有两种表达方式,分别为:=和:/。:=表示值范围内的每一个值得权重是相同的,:/表示权重要均分到值范围内的每一个值。

class weighted
    rand int src, dst;
    constraint c_weighted{
        src dist{0:=40, [1:3]:=60};
        dst dist{0:/40, [1:3]:/60};
    }
endclass

(3)范围表达式 Range expression

class range
    rand int a;
    int low, high;
    
    constraint c_range_a{
        a inside{[low:high]};
    }
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值