- 如果一个多位的变量,要把它赋值全0,其实很容易,但是如果赋值全1,在verilog中必须要把所有位都要写全;但是在SystemVerilog中增强了该功能,不用指定进制就可以给所有位赋予相同的值。
// Verilog中必须全部写齐,如果位宽是参数,可以在例化的时候修改,那么就更麻烦了
wire [63:0] data1;
assign data1 = 64'hffff_ffff_ffff_ffff;
wire [127:0] data2;
assign data2 = 64'hffff_ffff_ffff_ffff_ffff_ffff_ffff_ffff;
// 将data的所有位都赋予1,反引号后面是1
assign data = '1;
- SystemVerilog中的信号同时具有类型和数据类型。类型表示信号是线网还是变量,SV使用所有的Verilog变量类型,如reg,integer(这两个有四态逻辑0,1,x,z),并且还增加了一些其他变量类型byte和int(这两个是两态逻辑0,1),SV没有对Verilog的线网类型进行任何扩展。数据类型表示线网和变量的值的类型,也就是有两态逻辑还是四态逻辑,所有的线网类型只能是四态类型。
下面这些是两态类型:
- bit —— 1位两态整数
- byte ——8位两态整数
- shortint ——16位两态整数
- int ——32位两态整数
- longint ——64位两态整数
当两态或四态数据类型
- 最常用的bit和logic,其实并不是变量类型,它们只是一个数据类型,表示信号具有两态逻辑还是四态逻辑。通常情况下,直接使用bit或logic,会默认认定它们是变量(类似于reg),也就叫隐式声明。但是也可以对它们进行显示声明,可以将他们显示声明为线网或者变量。
// 隐式声明,推断出一个四态和两态数据类型的变量
logic [63:0] addr1;
bit [63:0] addr2;
// 显示声明为变量
var logic [63:0] addr1;
var bit [
SystemVerilog的增强特性与变量初始化

本文介绍了SystemVerilog相对于Verilog在变量赋值、数据类型、内嵌初始化以及变量声明上的增强特性。SystemVerilog允许不指定进制即可给所有位赋1,提供了两态逻辑类型如bit和logic,并详细阐述了它们的隐式和显示声明。此外,还讨论了静态和自动变量的区别及其在仿真和综合中的应用,以及initial过程块的执行顺序和内嵌初始化的确定性。文章还提到了const常量的声明以及静态和动态强制类型转换的使用注意事项。
最低0.47元/天 解锁文章
&spm=1001.2101.3001.5002&articleId=126373564&d=1&t=3&u=00b7bbb84fbe4239a40c12e1ca392a7c)
1223

被折叠的 条评论
为什么被折叠?



