gpt4 book ai didi

system-verilog - SystemVerilog 数据类型的区别(寄存器、逻辑、位)

转载 作者:行者123 更新时间:2023-12-03 12:36:09 28 4
gpt4 key购买 nike

systemverilog 中有不同的数据类型,可以使用如下:

reg [31:0] data;
logic [31:0] data;
bit [31:0] data;

他们三个有什么不同?

最佳答案

regwire是原始类型。不断分配电线并在特定点评估 regs,这里的优点是模拟器可以进行优化。

wire w_data;
assign w_data = y;

// Same function as above using reg
reg r_data;
always @*
r_data = y ;

学习 Verilog 时的一个常见错误是假设 a reg 类型意味着硬件中的寄存器。模拟器的早期优化可以通过它的使用上下文来完成。

这里介绍 logic它可以用来代替电线和注册。
logic  w_data;
assign w_data = y;

// Same function as above using reg
logic r_data;
always @*
r_data = y ;

类型 bitbyte还创建了只能保持 2 个状态 0 或 1 没有 x 或 z。 byte暗示 bit [7:0] .使用这些类型可以稍微提高速度,但我建议不要在 RTL 中使用它们,因为您的验证可能会错过未初始化的值或关键重置。
bit的用法和 byte在测试台组件中会更常见,但在必须驱动 x 来刺激数据损坏和恢复的情况下可能会导致问题。

更新

在撰写本文时,我的印象是 logic不能用于三态,我找不到我基于此的原始论文。在进一步更新、评论或编辑之前,我撤销我的断言,即逻辑不能用于创建三态线。
tri已添加类型,用于明确定义三态线。它基于 wire 的属性, logic基于 reg 的属性.
tri t_data;
assign t_data = (drive) ? y : 1'bz ;

如果您不再需要支持向后兼容性 Verilog,那么我建议您改用 logic。和 tri .使用 logic帮助重构和 tri反射(reflect)了三态线的设计意图。

关于system-verilog - SystemVerilog 数据类型的区别(寄存器、逻辑、位),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13282066/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com