问题描述
在系统 Verilog 中我写道:
module mult32x32_arith (
input logic clk,// Clock
input logic reset,// Reset
output logic [63:0] product // Miltiplication product
);
logic left_decoder,right_decoder,product_FF[63:0]={64{1'b0}};
always_ff @(posedge clk,posedge reset) begin
if (reset==1'b1)begin
product <= product_FF;
end
else begin
end
end
product <= product_FF;
它说:
错误:mult32x32_arith.sv(19):从类型“reg $[63:0]”非法分配类型“reg[63:0]”:无法将解压类型分配给 打包类型。
但是,我不明白问题是什么。
解决方法
您声明 product
为已打包,而 product_FF
为未打包。请参阅 IEEE Std 1800-2017,第 7.4 节 打包和解包数组:
术语压缩数组用于指代声明的维度 在数据标识符名称之前。术语解包数组用于 参考数据标识符名称后声明的维度
您需要将它们声明为相同的数据类型。例如,要使它们都打包,请更改:
logic left_decoder,right_decoder,product_FF[63:0]={64{1'b0}};
到:
logic left_decoder,right_decoder;
logic [63:0] product_FF = {64{1'b0}};