16.1.10 MACC_PA_BC_ROM

The MACC_PA_BC_ROM macro extends the functionality of the MACC_PA macro to provide a 16x18 ROM at the A input along with a pipelined output of B for cascading.

16.1.10.1 Features

The additional features of the MACC_PA_BC_ROM block are as follows:

  • Selection of the A input from a 16 x 18 ROM.
  • Additional pipelining of the B input for cascading to the next Math block or output to the fabric.
  • Due to routing bandwidth limitations, either result P or B2 output can be used in the same MACC_PA_BC_ROM block.
The following table shows a simplified block diagram of the MACC_PA_BC_ROM block.
Figure 16-70. SIimplified Block Diagram of MACC_PA

16.1.10.2 Parameters

There is one parameter, INIT, to hold the 16x18 ROM content as a linear array. The first 18 bits is word 0, the next 18 bits is word 1, and so on.

Table 16-148. MACC_PA_BC_ROM Parameter Descriptions
ParameterDimensionsDescription
INITparameter [287:0] INIT = {

18'h0, 18'h0, 18'h0, 18'h0, 18'h0, 18'h0, 18'h0, 18'h0,

18'h0, 18'h0, 18'h0, 18'h0, 18'h0, 18'h0, 18'h0, 18'h0

};

16 x 18 ROM content specified in Verilog
INITgeneric map(INIT => (

B“00_0000_0000_0000_0000”& B“00_0000_0000_0000_0000”&

B“00_0000_0000_0000_0000”& B“00_0000_0000_0000_0000”&

B“00_0000_0000_0000_0000”& B“00_0000_0000_0000_0000”&

B“00_0000_0000_0000_0000”& B“00_0000_0000_0000_0000”&

B“00_0000_0000_0000_0000”& B“00_0000_0000_0000_0000”&

B“00_0000_0000_0000_0000”& B“00_0000_0000_0000_0000”&

B“00_0000_0000_0000_0000”& B“00_0000_0000_0000_0000”&

B“00_0000_0000_0000_0000”& B“00_0000_0000_0000_0000”)

)

16 x 18 ROM content specified in VHDL

PORT LIST

Table 16-149. MACC_PA_BC_ROM Pin Descriptions
Port NameDirectionTypePolarityDescription
DOTPInputStaticHighDot-product mode.

When DOTP = 1, MACC_PA_BC_ROM block performs Dot-product of two pairs of 9-bit operands.

• SIMD must not be 1.

• C[8:0] must be connected to CARRYIN.

SIMDInputStaticHighSIMD mode.

When SIMD = 1, MACC_PA_BC_ROM block performs dual independent multiplication of two pairs of 9-bit operands.

  • DOTP must not be 1.
  • ARSHFT17 must be 0.
  • D[8:0] must be 0.
  • C[17:0] must be 0.

    E[17:0] must be 0. Refer to Table 16-142 to see how

    operand E is obtained from P, CDIN or 0.

OVFL_CARRYOUT_SELInputStaticHighGenerate OVERFLOW or CARRYOUT with result P.
  • OVERFLOW when OVFL_CARRYOUT_SEL = 0
  • CARRYOUT when OVFL_CARRYOUT_SEL = 1
CLKInputDynamicRising edgeClock for A, B, C, CARRYIN, D, P, OVFL_CARRYOUT, ARSHFT17, CDIN_FDBK_SEL, PASUB and SUB registers.
AL_NInputDynamicLowAsynchronous load for A, B, B2, P, OVFL_CARRYOUT, ARSHFT17, CDIN_FDBK_SEL, PASUB and SUB registers. Connect to 1, if none are registered.

When asserted, A, B, P and OVFL_CARRYOUT registers are loaded with zero, while the ARSHFT17, CDIN_FDBK_SEL, PASUB and SUB registers are loaded with the complementary value of the respective _AD_N.

USE_ROMInputStatic

(virtual)

HighSelection for operand A.
  • When USE_ROM = 0, select input data A.
  • When USE_ROM = 1, select ROM data at ROM_ADDR.
ROM_ADDR[3:0]InputDynamicHighAddress of ROM data for operand A when

USE_ROM = 1.

A[17:0]InputStaticHighInput data for operand A when USE_ROM = 0.
A_BYPASSInputDynamicHighBypass data A registers. Connect to 1, if not registered. See Table 16-146.
A_SRST_NInputDynamicLowSynchronous reset for data A registers. Connect to

1, if not registered. See Table 16-146.

A_ENInputDynamicHighEnable for data A registers. Connect to 1, if not registered. See Table 16-146.
B[17:0]InputDynamicHighInput data B to Pre-adder with data D.
B_BYPASSInputStaticHighBypass data B registers. Connect to 1, if not registered. See Table 16-146.
B_SRST_NInputDynamicLowSynchronous reset for data B registers. Connect to 1, if not registered. See Table 16-146.
B_ENInputDynamicHighEnable for data B registers. Connect to 1, if not registered. See Table 16-146.
B2[17:0]OutputDynamicHighPipelined output of input data B. Result P must be floating when B2 is used.
B2_BYPASSInputStaticHighBypass data B2 registers. Connect to 1, if not registered. See Table 16-146
B2_SRST_NInputDynamicLowSynchronous reset for data B2 registers. Connect to 1, if not registered. See Table 16-146.
B2_ENInputDynamicHighEnable for data B2 registers. Connect to 1, if not registered. See Table 16-146.
BCOUT[17:0]OutputCascadeHighCascade output of B2. Value of BCOUT is the same as B2. The entire bus must either be dangling or drive an entire B input of another MACC_PA or MACC_PA_BC_ROM block.
D[17:0]InputDynamicHighInput data D to Pre-adder with data B. When SIMD = 1, connect D[8:0] to 0.
D_BYPASSInputStaticHighBypass data D registers. Connect to 1, if not registered. See Table 16-147.
D_ARST_NInputDynamicLowAsynchronous reset for data D registers. Connect to 1, if not registered. See Table 16-147.
D_SRST_NInputDynamicLowSynchronous reset for data D registers. Connect to 1, if not registered. See Table 16-147.
D_ENInputDynamicHighEnable for data D registers. Connect to 1, if not registered. See Table 16-147.
CARRYINInputDynamicHighCARRYIN for input data C.
C[47:0]InputDynamicHighInput data C.

When DOTP = 1, connect C[8:0] to CARRYIN. When SIMD = 1, connect C[8:0] to 0.

C_BYPASSInputStaticHighBypass CARRYIN and C registers. Connect to 1, if not registered. See Table 16-147.
C_ARST_NInputDynamicLowAsynchronous reset for CARRYIN and C registers. Connect to 1, if not registered. See Table 16-147.
C_SRST_NInputDynamicLowSynchronous reset for CARRYIN and C registers. Connect to 1, if not registered. See Table 16-147.
C_ENInputDynamicHighEnable for CARRYIN and C registers. Connect to 1, if not registered. See Table 16-147.
CDIN[47:0]InputCascadeHighCascaded input for operand E.

The entire bus must be driven by an entire

CDOUT of another MACC_PA or MAC_PA_BC_ROM

block. In Dot-product mode, the driving CDOUT

must also be generated by a MACC_PA or

MAC_PA_BC_ROM block in Dot-product mode.

Refer to Table 16-142 to see how CDIN is propagated to operand E.

P[47:0]OutputHighResult data. See Table 16-143. B2 output must be floating when P is used.
OVFL_CARRYOUTOutputHighOVERFLOW or CARRYOUT. See Table 16-144.
P_BYPASSInputStaticHighBypass P and OVFL_CARRYOUT registers. Connect to 1, if not registered. See Table 16-146.

P_BYPASS must be 0 when CDIN_FDBK_SEL[0] = 1. See Table 16-142.

P_SRST_NInputDynamicLowSynchronous reset for P and OVFL_CARRYOUT registers. Connect to 1, if not registered. See Table 16-146.
P_ENInputDynamicHighEnable for P and OVFL_CARRYOUT registers. Connect to 1, if not registered. See Table 16-146.
CDOUT[47:0]OutputCascadeHighCascade output of result P. See Table 16-143.

Value of CDOUT is the same as P. The entire bus

must either be dangling or drive an entire CDIN of

another MACC_PA or MAC_PA_BC_ROM block incascaded mode.

PASUBInputDynamicHighSubtract operation for Pre-adder of B and D.
PASUB_BYPASSInputStaticHighBypass PASUB register. Connect to 1, if not registered. See Table 16-145.
PASUB_AD_NInputStaticLowAsynchronous load data for PASUB register. See Table 16-145.
PASUB_SL_NInputDynamicLowSynchronous load for PASUB register. Connect to

1, if not registered. See Table 16-145.

PASUB_SD_NInputStaticLowSynchronous load data for PASUB register. See

Table 16-145.

PASUB_ENInputDynamicHighEnable for PASUB register. Connect to 1, if not registered. See Table 16-145.
CDIN_FDBK_SEL[1:0]InputDynamicHighSelect CDIN, P or 0 for operand E. See Table 16-142.
CDIN_FDBK_SEL_BYPASSInputStaticHighSelect CDIN, P or 0 for operand E. See Table 16-142.
CDIN_FDBK_SEL_AD_N

[1:0]

InputStaticLowAsynchronous load data for CDIN_FDBK_SEL

register. See Table 16-145.

CDIN_FDBK_SEL_SL_NInputDynamicLowSynchronous load for CDIN_FDBK_SEL register. Connect to 1, if not registered. See Table 16-145.
CDIN_FDBK_SEL_SD_N

[1:0]

InputStaticLowSynchronous load data for CDIN_FDBK_SEL

register. See Table 16-145.

CDIN_FDBK_SEL_ENInputDynamicHighEnable for CDIN_FDBK_SEL register. Connect to 1, if not registered. See Table 16-145.
ARSHFT17InputDynamicHighArithmetic right-shift for operand E.

When asserted, a 17-bit arithmetic right-shift is

performed on operand E. Refer to Table 16-142 to see how operand E is obtained from P, CDIN or 0. When SIMD = 1, ARSHFT17 must be 0.

ARSHFT17_BYPASSInputStaticHighBypass ARSHFT17 register. Connect to 1, if not registered. See Table 16-145.
ARSHFT17_AD_NInputStaticLowAsynchronous load data for ARSHFT17 register. See Table 16-145.
ARSHFT17_SL_NInputDynamicLowSynchronous load for ARSHFT17 register. Connect to 1, if not registered. See Table 16-145.
ARSHFT17_SD_NInputStaticLowSynchronous load data for ARSHFT17 register. See Table 16-145.
ARSHFT17_ENInputDynamicHighEnable for ARSHFT17 register. Connect to 1, if not registered. See Table 16-145.
SUBInputDynamicHighSubtract operation.
SUB_BYPASSInputStaticHighBypass SUB register. Connect to 1, if not registered. See Table 16-145.
SUB_AD_NInputStaticLowAsynchronous load data for SUB register. See Table 16-145.
SUB_SL_NInputDynamicLowSynchronous load for SUB register. Connect to 1, if not registered. Table 16-145.
SUB_SD_NInputStaticLowSynchronous load data for SUB register. See Table 16-145.
SUB_ENInputDynamicHighEnable for SUB register. Connect to 1, if not registered. See Table 16-145.
Tip: Static inputs are defined at design time and need to be tied to 0 or 1.