我想编写其中某些输入不存在的代码。我想创建一个包含这些参数的结构(除其他外)。我该怎么做?我试图使用生成,定义一个空结构(typedef struct {} empty_t
)和0大小的数组(logic foo[0]
),但我所有的尝试失败作为语法错误。如何在SystemVerilog中创建一个空数据类型或条件字段
编辑:我想这样做(简体):
module foo(clk, data_in, opt_data_in);
parameter USE_OPT_IN = 1;
input logic clk;
input logic data_in;
input logic opt_data_in;
typedef struct packed {
logic data_in;
// Since it's stored in on-chip RAM I'd like it
// to be as small as possible
if (USE_OPT_IN != 0)
logic opt_data_in;
} ram_entry_t;
ram_entry_t my_ram[4096];
always_ff @(posedge clk) begin
ram_entry_t new_entry;
new_entry.data_in = data_in;
if (USE_OPT_IN != 0)
new_entry.opt_data_in = opt_data_in;
my_ram[$random() % 4096] = new_entry;
end
endmodule
当然这并不编译。
编辑2:上面是简化的例子。有超过7个可选字段,编码128个结构似乎不合理 - 与仅使用非结构化位字段相比。
当你说'输入'你能解释什么输入? –
到模块。从外面看,他们不会连接任何东西(''Z'),因为我不认为我可以进行可选输入,但是当我想要将它们实际存储在某个地方时遇到问题。现在我正在考虑只使用一个位域并手动打包数据,但如果我可以做更多的HL,那将会很好。 –
你有代码示例吗? – Serge