结构类型的 localparam - 使用默认值 - 仍然需要初始化程序?

问题描述 投票:0回答:3

如果

localparam
类型的
struct
有默认初始值,是否仍需要初始化器?

例如

typedef struct {
 int a = 1;
} my_struct;

localparam my_struct m;
system-verilog
3个回答
0
投票

SystemVerilog 语法/语义需要对任何

localparam
声明进行声明赋值,或在模块头外部(即模块主体内部)进行
parameter
声明。


0
投票

您的代码在 3 个主要 Verilog 模拟器上生成语法错误。 来自 IEEE Std 1800-2017,第 6.20.1 节 参数声明语法

从 a 中省略constant_param_expression 是合法的 param_assignment 或 type_assignment 中的 data_type 仅在 参数_端口_列表


0
投票

ModelSim (Intel) 支持此技巧。

//define:
typedef struct  {
    bit PARAM1 = 1;
    bit PARAM2 = 0;
}PARAMETERS_t;

function automatic some PARAMETERS_INIT();
    automatic PARAMETERS_t P;
    return P;
endfunction

//example to use in module declaration:
localparam PARAMETERS_t SOME_PARAMETERS = PARAMETERS_INIT();

//example to watch data in ModelSim waveforms:
const PARAMETERS_t CSOME_PARAMETERS = SOME_PARAMETERS;
© www.soinside.com 2019 - 2024. All rights reserved.