gpt4 book ai didi

system-verilog - 将解压缩的数组类型作为参数传递

转载 作者:行者123 更新时间:2023-12-05 00:57:57 26 4
gpt4 key购买 nike

我创建了一个模块来做一些简单的事情,比如添加一些管道延迟。我将数据类型设为参数,以便它可以处理结构等复杂的事情。我有这样的事情:

module pipe
#(parameter type T = int,
parameter DELAY = 0)
(
input clk,
input T data_in,
output T data_out);

T pipe[DELAY];
always_ff @(posedge clk) begin
pipe[0] <= data_in;
for(int i = 1; i<DEPTH; i++) begin
pipe[i] <= pipe[i-1];
end
end
assign data_out = pipe[DELAY-1];
endmodule

这很好用,但后来我发现自己想将它与未打包的数组一起使用,但我不知道如何实例化它。它看起来像这样,但我认为这是不对的:
logic [7:0] my_data [16];
logic [7:0] my_data_delayed [16];
pipe #(.T(logic [7:0] [16]), .DELAY(2)) i_pipe
(
.clk(clk),
.data_in(my_data),
.data_out(my_data_delayed)
);

有没有办法获取变量的类型,以便可以将其传递给该参数?

最佳答案

您可以使用 typedef定义数据类型:

typedef logic [7:0] my_type [16];
my_type my_data;
my_type my_data_delayed;
pipe #(.T(my_type), .DELAY(2)) i_pipe
(
.clk(clk),
.data_in(my_data),
.data_out(my_data_delayed)
);

剩下的问题是它是否可以与您的模拟器一起使用。我试过 EDAplayground ,与 VCS 合作,但不适用于 Riviera-PRO(收到“此版本不支持”消息)

我能够得到 typedef struct { logic [7:0] data [16]; } my_type;去工作。不太干净,但这是一种解决方法。

关于system-verilog - 将解压缩的数组类型作为参数传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33809660/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com