参数化参数?
Parameterize parameters?
我想参数化 localparam
个参数。
我的模块定义:
module native #(
parameter SIM_ONLY = 0,
parameter FREQ = 500
)(
...
);
我有很多使用相同 localparam parameter A
的实例化。
if (FREQ == 550) begin
localparam A = 987;
end else begin
localparam A = 122;
end
AA #(
.A_VALUE (A),
) AA_inst (
...
);
但这在规范中是不允许的,是否有其他正确的方法来做到这一点?
/!\ A
值是一个幻数,不是可以从 FREQ
.
计算得出的值
我试过:
if (FREQ == 550) begin
shortreal A = 987;
end else begin
shortreal A = 122;
end
但我得到 The expression for a parameter actual associated with the parameter name... must be constant.
使用条件运算符 ?:
localparam A = (FREQ==550) 987 : 122;
你也可以把更复杂的表达式放到常量函数中
localparam A = some_function(FREQ);
function int some_function(int F);
case(F)
550: return 987;
123: return 456;
default: return 122;
endcase
endfunction
我想参数化 localparam
个参数。
我的模块定义:
module native #(
parameter SIM_ONLY = 0,
parameter FREQ = 500
)(
...
);
我有很多使用相同 localparam parameter A
的实例化。
if (FREQ == 550) begin
localparam A = 987;
end else begin
localparam A = 122;
end
AA #(
.A_VALUE (A),
) AA_inst (
...
);
但这在规范中是不允许的,是否有其他正确的方法来做到这一点?
/!\ A
值是一个幻数,不是可以从 FREQ
.
我试过:
if (FREQ == 550) begin
shortreal A = 987;
end else begin
shortreal A = 122;
end
但我得到 The expression for a parameter actual associated with the parameter name... must be constant.
使用条件运算符 ?:
localparam A = (FREQ==550) 987 : 122;
你也可以把更复杂的表达式放到常量函数中
localparam A = some_function(FREQ);
function int some_function(int F);
case(F)
550: return 987;
123: return 456;
default: return 122;
endcase
endfunction