如果我不知道大小,如何使 SystemVerilog 中的寄存器无效?例如,如果我有:
reg [DATA_WIDTH-1:0] data_stack;
DATA_WIDTH
给模块一些参数。是否可以为寄存器分配零data_stack
?
请注意,将 a 初始化reg
为零就足够了,因为我可以简单地在两者之间执行按位和 nullify data_stack
。
如果我不知道大小,如何使 SystemVerilog 中的寄存器无效?例如,如果我有:
reg [DATA_WIDTH-1:0] data_stack;
DATA_WIDTH
给模块一些参数。是否可以为寄存器分配零data_stack
?
请注意,将 a 初始化reg
为零就足够了,因为我可以简单地在两者之间执行按位和 nullify data_stack
。
IEEE Std 1800-2009 是黄金参考。以下将所有位设置为 0:
data_stack = '0;
请参阅“整数文字常量”部分。
可以通过在单位值前面加上撇号 (') 来指定未调整大小的单位值,但没有基本说明符。unsized 值的所有位都应设置为指定位的值。在一个自行确定的上下文中,一个无大小的单比特值应具有 1 位的宽度,并且该值应被视为无符号。
如果我理解你的问题,你想知道如何生成一个宽度相同的零值data_stack
?
在这种情况下,请使用复制运算符:
data_stack = {DATA_WIDTH{1'b0}};
这会生成DATA_WIDTH
多个零。
如果您搜索初始化寄存器而不是无效,我认为您的搜索会产生更好的结果。
如果这是一个测试台变量,那么只需:
initial begin
data_stack = {DATA_WIDTH{1'b0}};
end
如果要在触发器中使用,则需要将其重置:
always @(posedge clk or negedge reset_n) begin
if (~reset_n) begin
data_stack <= {DATA_WIDTH{1'b0}};
end
else begin
//<=nextvalue;
end
end