SV——【数据类型】SV和v的第一个大的区别:

1: 【数据类型】SV和v的第一个大的区别:
(1)先要看它的类型;
(2)看数据类型{到底是4值逻辑还是只表示2值逻辑};
(3)到底是有符号还是无符号。

Note:
Verilog中的变量类型(reg)只能使用过程赋值;
Verilog中的线网类型(wire)只能使用连续赋值;
systemVerilog中的变量类型(var)既可以过程幅值也可以连续赋值;
systemVerilog中的线网类型(wire)只能连续赋值;

避坑指南
在testbench或者(module)中大量使用logic类型变量(不是很在乎是变量、
类型还是线网类型),而很少使用wire。因为他会自动的去帮我们映射成对应
的正确的数据类型。当多于一个驱动源的时候,或者设计模块端口是
双向(inout)(双向也是多驱动)的时候用wire。【这个用法和VHDL中的signal很类似】
module tb;
wire w1;
logic r1;
assign w1 = 1’b1;
assign r1 = 1’b0;

wire logic w2;
var logic r2;
assign w2 = 1’b1;
assign r2 = 1’b0;

initial begin

1ns;

$display(“w1 = %d, r1 = %d”,w1,r1);
$display(“w2 = %d, r2 = %d”,w2,r2);
end
endmodule

### SystemVerilog 队列的 Pop 操作与数据拼接 在 SystemVerilog 中,队列是一种动态数组结构,支持灵活的数据操作。对于队列中的 `pop` 操作以及后续的数据拼接处理,可以按照以下方式实现。 #### 使用 `pop_front()` 方法移除并获取第一个元素 当执行 `pop_front()` 时,会返回队列的第一个元素,并将其从队列中删除[^1]: ```systemverilog logic [7:0] myQueue[$]; logic [7:0] poppedData; poppedData = myQueue.pop_front(); ``` 上述代码展示了如何声明一个字节宽度(8位)的逻辑型队列变量 `myQueue` 并对其进行初始化;接着通过调用 `.pop_front()` 函数来取出最前面的一个元素赋给 `poppedData` 变量的同时实现了该位置上元素的有效移除。 #### 数据拼接方法 为了完成多个弹出后的数据连接工作,可采用级联运算符 `{}` 来组合不同长度或类型的信号形成新的多位向量形式表示的结果值。下面的例子说明了连续两次 pop 后将两个被弹出来的八比特宽数值串联成十六比特总线的过程: ```systemverilog // 假设此时队列中有至少两个元素 logic [15:0] concatenatedResult; logic [7:0] firstPopped, secondPopped; firstPopped = myQueue.pop_front(); // 获取并移除首个元素 secondPopped = myQueue.pop_front(); // 再次获取并移除下一个首部成员 concatenatedResult = {secondPopped, firstPopped}; // 将两部分按顺序相连构成更长序列 ``` 这里需要注意的是,在构建最终复合体的时候应该考虑好各个组成部分之间的相对位置关系——即高位端口对应左侧还是右侧取决于具体应用场景需求个人习惯偏好等因素影响下的设计考量。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值