在使用Trion乘法器可能会遇到以下问题:
(1)[EFX-0652 ERROR] ‘EFX_MULT’ instance ‘mult’ port ‘CEA’ is not permanently disabled in the Register Bypass mode.
说明:如果输入寄存器A_REG没有使能,CEA接口要设置为0
(2)[EFX-0652 ERROR] ‘EFX_MULT’ instance ‘mult’ port ‘RSTA’ is not permanently disabled in the Register Bypass mode.
说明:如果输入寄存器A_REG没有使能,RSTA接口要设置为0
(3)[EFX-0652 ERROR] ‘EFX_MULT’ instance ‘mult’ port ‘CLK’ is not permanently disabled in the Register Bypass mode.
说明:如果输入和输出寄存都没有使用的话,时钟也要设置为0。
所以这里提供下面的写法供参考。
EFX_MULT # (
.WIDTH(18),
.A_REG(AREG),
.B_REG(BREG),
.O_REG(OREG),
.CLK_POLARITY(1'b1), // 0 falling edge, 1 rising edge
.CEA_POLARITY(1'b1), // 0 falling edge, 1 rising edge
.RSTA_POLARITY(1'b0), // 0 falling edge, 1 rising edge
.RSTA_SYNC(1'b0), // 0 aynchronous, 1 synchronous
.RSTA_VALUE(1'b0), // 0 reset, 1 set
.CEB_POLARITY(1'b1), // 0 falling edge, 1 rising edge
.RSTB_POLARITY(1'b0), // 0 falling edge, 1 rising edge
.RSTB_SYNC(1'b0), // 0 aynchronous, 1 synchronous
.RSTB_VALUE(1'b0), // 0 reset, 1 set
.CEO_POLARITY(1'b1), // 0 falling edge, 1 rising edge
.RSTO_POLARITY(1'b0), // 0 falling edge, 1 rising edge
.RSTO_SYNC(1'b0), // 0 aynchronous, 1 synchronous
.RSTO_VALUE(1'b0) // 0 reset, 1 set
) mult (
.CLK((AREG || BREG || OREG) ? clk : 0),
.CEA(AREG),
.RSTA(AREG ? rst : 1),
.CEB(BREG),
.RSTB(BREG ? rst : 1),
.CEO(OREG),
.RSTO(OREG ? rst : 1),
.A(A_in),
.B(B_in),
.O(O_out)
);
没有回复内容