16.1.10 MACC_PA_BC_ROM
(Ask a Question)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
(Ask a Question)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.
 
         16.1.10.2 Parameters
(Ask a Question)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.
| Parameter | Dimensions | Description | 
|---|---|---|
| INIT | parameter [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 | 
| INIT | generic 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
| Port Name | Direction | Type | Polarity | Description | 
|---|---|---|---|---|
| DOTP | Input | Static | High | Dot-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.  | 
| SIMD | Input | Static | High | SIMD mode. When SIMD = 1, MACC_PA_BC_ROM block performs dual independent multiplication of two pairs of 9-bit operands. 
  | 
| OVFL_CARRYOUT_SEL | Input | Static | High | Generate OVERFLOW or CARRYOUT with result P.
  | 
| CLK | Input | Dynamic | Rising edge | Clock for A, B, C, CARRYIN, D, P, OVFL_CARRYOUT, ARSHFT17, CDIN_FDBK_SEL, PASUB and SUB registers. | 
| AL_N | Input | Dynamic | Low | Asynchronous 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_ROM | Input | Static (virtual)  | High | Selection for operand A.
  | 
| ROM_ADDR[3:0] | Input | Dynamic | High | Address of ROM data for operand A when USE_ROM = 1.  | 
| A[17:0] | Input | Static | High | Input data for operand A when USE_ROM = 0. | 
| A_BYPASS | Input | Dynamic | High | Bypass data A registers. Connect to 1, if not registered. See Table 16-146. | 
| A_SRST_N | Input | Dynamic | Low | Synchronous reset for data A registers.
                     Connect to 1, if not registered. See Table 16-146.  | 
| A_EN | Input | Dynamic | High | Enable for data A registers. Connect to 1, if not registered. See Table 16-146. | 
| B[17:0] | Input | Dynamic | High | Input data B to Pre-adder with data D. | 
| B_BYPASS | Input | Static | High | Bypass data B registers. Connect to 1, if not registered. See Table 16-146. | 
| B_SRST_N | Input | Dynamic | Low | Synchronous reset for data B registers. Connect to 1, if not registered. See Table 16-146. | 
| B_EN | Input | Dynamic | High | Enable for data B registers. Connect to 1, if not registered. See Table 16-146. | 
| B2[17:0] | Output | Dynamic | High | Pipelined output of input data B. Result P must be floating when B2 is used. | 
| B2_BYPASS | Input | Static | High | Bypass data B2 registers. Connect to 1, if not registered. See Table 16-146 | 
| B2_SRST_N | Input | Dynamic | Low | Synchronous reset for data B2 registers. Connect to 1, if not registered. See Table 16-146. | 
| B2_EN | Input | Dynamic | High | Enable for data B2 registers. Connect to 1, if not registered. See Table 16-146. | 
| BCOUT[17:0] | Output | Cascade | High | Cascade 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] | Input | Dynamic | High | Input data D to Pre-adder with data B. When SIMD = 1, connect D[8:0] to 0. | 
| D_BYPASS | Input | Static | High | Bypass data D registers. Connect to 1, if not registered. See Table 16-147. | 
| D_ARST_N | Input | Dynamic | Low | Asynchronous reset for data D registers. Connect to 1, if not registered. See Table 16-147. | 
| D_SRST_N | Input | Dynamic | Low | Synchronous reset for data D registers. Connect to 1, if not registered. See Table 16-147. | 
| D_EN | Input | Dynamic | High | Enable for data D registers. Connect to 1, if not registered. See Table 16-147. | 
| CARRYIN | Input | Dynamic | High | CARRYIN for input data C. | 
| C[47:0] | Input | Dynamic | High | Input data C. When DOTP = 1, connect C[8:0] to CARRYIN. When SIMD = 1, connect C[8:0] to 0.  | 
| C_BYPASS | Input | Static | High | Bypass CARRYIN and C registers. Connect to 1, if not registered. See Table 16-147. | 
| C_ARST_N | Input | Dynamic | Low | Asynchronous reset for CARRYIN and C registers. Connect to 1, if not registered. See Table 16-147. | 
| C_SRST_N | Input | Dynamic | Low | Synchronous reset for CARRYIN and C registers. Connect to 1, if not registered. See Table 16-147. | 
| C_EN | Input | Dynamic | High | Enable for CARRYIN and C registers. Connect to 1, if not registered. See Table 16-147. | 
| CDIN[47:0] | Input | Cascade | High | Cascaded 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] | Output | High | Result data. See Table 16-143. B2 output must be floating when P is used. | |
| OVFL_CARRYOUT | Output | High | OVERFLOW or CARRYOUT. See Table 16-144. | |
| P_BYPASS | Input | Static | High | Bypass 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_N | Input | Dynamic | Low | Synchronous reset for P and OVFL_CARRYOUT registers. Connect to 1, if not registered. See Table 16-146. | 
| P_EN | Input | Dynamic | High | Enable for P and OVFL_CARRYOUT registers. Connect to 1, if not registered. See Table 16-146. | 
| CDOUT[47:0] | Output | Cascade | High | Cascade 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.  | 
| PASUB | Input | Dynamic | High | Subtract operation for Pre-adder of B and D. | 
| PASUB_BYPASS | Input | Static | High | Bypass PASUB register. Connect to 1, if not registered. See Table 16-145. | 
| PASUB_AD_N | Input | Static | Low | Asynchronous load data for PASUB register. See Table 16-145. | 
| PASUB_SL_N | Input | Dynamic | Low | Synchronous load for PASUB register. Connect
                        to 1, if not registered. See Table 16-145.  | 
| PASUB_SD_N | Input | Static | Low | Synchronous load data for PASUB register. See | 
| PASUB_EN | Input | Dynamic | High | Enable for PASUB register. Connect to 1, if not registered. See Table 16-145. | 
| CDIN_FDBK_SEL[1:0] | Input | Dynamic | High | Select CDIN, P or 0 for operand E. See Table 16-142. | 
| CDIN_FDBK_SEL_BYPASS | Input | Static | High | Select CDIN, P or 0 for operand E. See Table 16-142. | 
| CDIN_FDBK_SEL_AD_N [1:0]  | Input | Static | Low | Asynchronous load data for CDIN_FDBK_SEL register. See Table 16-145.  | 
| CDIN_FDBK_SEL_SL_N | Input | Dynamic | Low | Synchronous load for CDIN_FDBK_SEL register. Connect to 1, if not registered. See Table 16-145. | 
| CDIN_FDBK_SEL_SD_N [1:0]  | Input | Static | Low | Synchronous load data for CDIN_FDBK_SEL register. See Table 16-145.  | 
| CDIN_FDBK_SEL_EN | Input | Dynamic | High | Enable for CDIN_FDBK_SEL register. Connect to 1, if not registered. See Table 16-145. | 
| ARSHFT17 | Input | Dynamic | High | Arithmetic 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_BYPASS | Input | Static | High | Bypass ARSHFT17 register. Connect to 1, if not registered. See Table 16-145. | 
| ARSHFT17_AD_N | Input | Static | Low | Asynchronous load data for ARSHFT17 register. See Table 16-145. | 
| ARSHFT17_SL_N | Input | Dynamic | Low | Synchronous load for ARSHFT17 register. Connect to 1, if not registered. See Table 16-145. | 
| ARSHFT17_SD_N | Input | Static | Low | Synchronous load data for ARSHFT17 register. See Table 16-145. | 
| ARSHFT17_EN | Input | Dynamic | High | Enable for ARSHFT17 register. Connect to 1, if not registered. See Table 16-145. | 
| SUB | Input | Dynamic | High | Subtract operation. | 
| SUB_BYPASS | Input | Static | High | Bypass SUB register. Connect to 1, if not registered. See Table 16-145. | 
| SUB_AD_N | Input | Static | Low | Asynchronous load data for SUB register. See Table 16-145. | 
| SUB_SL_N | Input | Dynamic | Low | Synchronous load for SUB register. Connect to 1, if not registered. Table 16-145. | 
| SUB_SD_N | Input | Static | Low | Synchronous load data for SUB register. See Table 16-145. | 
| SUB_EN | Input | Dynamic | High | Enable for SUB register. Connect to 1, if not registered. See Table 16-145. | 
