如何使系统verilog中的寄存器无效

如何使系统verilog中的寄存器无效,verilog,verification,system-verilog,Verilog,Verification,System Verilog,如果我不知道寄存器的大小,如何使SystemVerilog中的寄存器无效? 例如,如果我有: reg [DATA_WIDTH-1:0] data_stack; 将一些参数数据_宽度指定给模块。是否可以将零分配给寄存器数据_堆栈 请注意,将一个类似的reg初始化为零就足够了,因为这样我可以简单地在两个reg之间执行按位and运算,并将数据堆栈置零。IEEE Std 1800-2009是黄金参考。以下内容将所有位设置为0: data_stack = '0; 请参阅整型文字常量一节 可以通过在 单

如果我不知道寄存器的大小,如何使SystemVerilog中的寄存器无效? 例如,如果我有:

reg [DATA_WIDTH-1:0] data_stack;
将一些参数数据_宽度指定给模块。是否可以将零分配给寄存器数据_堆栈


请注意,将一个类似的reg初始化为零就足够了,因为这样我可以简单地在两个reg之间执行按位and运算,并将数据堆栈置零。

IEEE Std 1800-2009是黄金参考。以下内容将所有位设置为0:

data_stack = '0;
请参阅整型文字常量一节

可以通过在 单位值,带撇号',但不带基 说明符。未定尺寸值的所有位应设置为 指定的位。在自定上下文中,一种未定大小的单个位 值的宽度应为1位,该值应视为 没有签名


IEEE标准1800-2009是黄金参考。以下内容将所有位设置为0:

data_stack = '0;
请参阅整型文字常量一节

可以通过在 单位值,带撇号',但不带基 说明符。未定尺寸值的所有位应设置为 指定的位。在自定上下文中,一种未定大小的单个位 值的宽度应为1位,该值应视为 没有签名


如果我理解你的问题,你想知道如何生成与数据栈宽度相同的零值吗

在这种情况下,请使用replication operator:

data_stack = {DATA_WIDTH{1'b0}};

这将生成零的数据宽度。

如果我理解您的问题,您想知道如何生成与数据堆栈宽度相同的零值吗

在这种情况下,请使用replication operator:

data_stack = {DATA_WIDTH{1'b0}};

这将生成零个数的数据。

我认为如果搜索初始化寄存器,而不是零化寄存器,搜索结果会更好

如果这是一个testbench变量,则只需:

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

我认为如果您搜索的是初始化寄存器,而不是null,那么您的搜索将产生更好的结果

如果这是一个testbench变量,则只需:

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