我創建了一個模塊,可以像添加一些流水線延遲一樣簡單。我將數據類型設置爲一個參數,以便它可以處理結構等複雜的事情。我有這樣的事情:傳遞解壓後的數組類型作爲參數
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)
);
有沒有辦法得到一個變量的類型,因此它可以被傳遞到這個參數?
Cadence Incisive 14.2說:「此數據類型不支持當前類型參數覆蓋」 – nguthrie
@nguthrie,是否完全使用'struct'幫助? – Greg
這樣做,但是,變得有點難看。我將堅持使用實例數組的當前解決方法。希望類型操作符將在一天內得到支持,因爲它看起來最有用。 – nguthrie