System verilog Can';t使用localparam变量作为值

System verilog Can';t使用localparam变量作为值,system-verilog,System Verilog,我有这个: localparam A_PARAM = 64; 我想在这里使用它: some_register <= A_PARAM'h197; 一些寄存器令人恼火的是,这种语法是不允许的 参数可用于指定寄存器的宽度或用于复制运算符 localparam A_PARAM = 64; reg [A_PARAM-1:0] some_register; always @* begin some_register = { A_PARAM {1'b1}}; end 您可以使用自动调整大

我有这个:

localparam A_PARAM = 64;
我想在这里使用它:

some_register <= A_PARAM'h197;

一些寄存器令人恼火的是,这种语法是不允许的

参数可用于指定寄存器的宽度或用于复制运算符

localparam A_PARAM = 64;

reg [A_PARAM-1:0] some_register;

always @* begin
  some_register = { A_PARAM  {1'b1}};
end
您可以使用自动调整大小,如果您使用的数字已被截断,您将收到警告

some_register <= 'h0; //Right Hands side will be sized to match left hand side (some_reg)

一些我喜欢自动调整大小的寄存器(这是我以前使用的),但我收到了一条关于违反枚举数据类型的SystemVerilog强类型规则的警告。如果我想用复制运算符赋值(例如)“h197”,会发生什么情况?你是什么意思?比如:
{A_PARAM-11{1'b1}、{10{1'b0}、{1{1'b1}}?(那将是毁灭性的)抱歉在火车上,只是意味着
{'h1234}
可能会取消警告。无法在EDA操场上看到这些警告以进行测试。
some_register <= 'h0; //Right Hands side will be sized to match left hand side (some_reg)