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)