Chapter 4: About Design ElementsAttribute Type Allowed Values Default DescriptionUSE_MULT String “MULTIPLY”,“DYNAMIC”,“NONE”USE_PATTERN_DETECTString“NO_PATDET”,“PATDET”USE_SIMD String “ONE48”,“FOUR12”,“TWO24”“MULTIPLY”Selects usage of the Multiplier. Set to NONE tosave power when using only the adder/LogicUnit. The DYNAMIC setting indicates thatthe user is switching between A*B and A:Boperations on the fly and there<strong>for</strong>e needs to getthe worst case timing of the two paths.“NO_PATDET” Set to PATDET to enable pattern detection in thesimulation model and speed files.“ONE48”Selects usage of the SIMD (Single InstructionMultiple Data) adder/Logic Unit. Selects betweenone 48-bit Logic Unit, two 24-bit Logic Units,or four 12-bit Logic Units. Note that all four12 bit Logic Units share the same Instruction(i.e. all can subtract on the same cycle or addon the same cycle). This allows the 48 bit adderto be broken up into smaller adders <strong>for</strong> lesscomputationally intensive applications. SIMDonly has an effect on arithmetic operation (add,accumulate, subtract, etc.) and has no effect onlogical operations.V<strong>HDL</strong> Instantiation Template-- DSP48E1: 25x18 Two’s Complement Multiplier with Integrated 48-Bit, 3-Input Adder/Subtracter/Accumulator or 2-Input Logic Unit-- <strong>Virtex</strong>-6-- <strong>Xilinx</strong> <strong>HDL</strong> <strong>Libraries</strong> <strong>Guide</strong>, version 11.2DSP48E1_inst : DSP48E1generic map (ACASCREG => 1,-- Number of pipeline registers between A/ACIN input and ACOUT output,-- 0, 1, or 2ADREG => 1, -- Number of pipeline registers on pre-adder output, 0 or 1ALUMODEREG => 1, -- Number of pipeline registers on ALUMODE input, 0 or 1AREG => 1, -- Number of pipeline registers on the A input, 0, 1 or 2AUTORESET_PATDET => "NO_RESET", -- NO_RESET, RESET_MATCH, RESET_NOT_MATCHA_INPUT => "DIRECT",-- Selects A input used, "DIRECT" (A port) or "CASCADE" (ACIN port)BCASCREG => 1,-- Number of pipeline registers between B/BCIN input and BCOUT output,-- 0, 1, or 2BREG => 1, -- Number of pipeline registers on the B input, 0, 1 or 2B_INPUT => "DIRECT",-- Selects B input used, "DIRECT" (B port) or "CASCADE" (BCIN port)CARRYINREG => 1, -- Number of pipeline registers <strong>for</strong> the CARRYIN input, 0 or 1CARRYINSELREG => 1, -- Number of pipeline registers <strong>for</strong> the CARRYINSEL input, 0 or 1CREG => 1, -- Number of pipeline registers on the C input, 0 or 1DREG => 1, -- Number of pipeline registers on the D input, 0 or 1INMODEREG => 1, -- Number of pipeline registers on INMODE input, 0 or 1MASK => X"3fffffffffff",-- 48-bit Mask value <strong>for</strong> pattern detectMREG => 1, -- Number of multiplier pipeline registers, 0 or 1OPMODEREG => 1, -- Number of pipeline registers on OPMODE input, 0 or 1PATTERN => X"000000000000", -- 48-bit Pattern match <strong>for</strong> pattern detectPREG => 1, -- Number of pipeline registers on the P output, 0 or 1SEL_MASK => "MASK",-- "C", "MASK", "ROUNDING_MODE1", "ROUNDING_MODE2"SEL_PATTERN => "PATTERN",-- Select pattern value between the "PATTERN" value or the value on-- the "C" portUSE_DPORT => FALSE,-- Select D port usage, TRUE or FALSEUSE_MULT => "MULTIPLY",-- Select multiplier usage, "MULTIPLY", "DYNAMIC", or "NONE" (no-- multiplier)USE_PATTERN_DETECT => "NO_PATDET", -- Enable pattern detect, "PATDET", "NO_PATDET"USE_SIMD => "ONE48"-- SIMD selection, "ONE48", "TWO24", "FOUR12")port map (-- Cascade: 30-bit (each) Cascade PortsACOUT => ACOUT,-- 30-bit A port cascade outputBCOUT => BCOUT,-- 18-bit B port cascade outputCARRYCASCOUT => CARRYCASCOUT, -- 1-bit cascade carry outputMULTSIGNOUT => MULTSIGNOUT, -- 1-bit multiplier sign cascade outputPCOUT => PCOUT,-- 48-bit cascade output<strong>Virtex</strong>-6 <strong>Libraries</strong> <strong>Guide</strong> <strong>for</strong> <strong>HDL</strong> <strong>Designs</strong>126 www.xilinx.com UG623 (v 11.4) December 2, 2009
Chapter 4: About Design Elements);-- Control: 1-bit (each) Control Inputs/Status BitsOVERFLOW => OVERFLOW,-- 1-bit overflow in add/acc outputPATTERNBDETECT => PATTERNBDETECT, -- 1-bit active high pattern bar detect outputPATTERNDETECT => PATTERNDETECT, -- 1-bit active high pattern detect outputUNDERFLOW => UNDERFLOW,-- 1-bit active high underflow in add/acc output-- Data: 4-bit (each) Data PortsCARRYOUT => CARRYOUT,-- 4-bit carry outputP => P,-- 48-bit output-- Cascade: 30-bit (each) Cascade PortsACIN => ACIN,-- 30-bit A cascade data inputBCIN => BCIN,-- 18-bit B cascade inputCARRYCASCIN => CARRYCASCIN, -- 1-bit cascade carry inputMULTSIGNIN => MULTSIGNIN,-- 1-bit multiplier sign inputPCIN => PCIN,-- 48-bit P cascade input-- Control: 4-bit (each) Control Inputs/Status BitsALUMODE => ALUMODE,-- 4-bit ALU control inputCARRYINSEL => CARRYINSEL,-- 3-bit carry select inputCEINMODE => CEINMODE,-- 1-bit active high clock enable input <strong>for</strong> INMODE registersCLK => CLK,-- 1-bit Clock inputINMODE => INMODE,-- 5-bit INMODE control inputOPMODE => OPMODE,-- 7-bit operation mode inputRSTINMODE => RSTINMODE,-- 1-bit reset input <strong>for</strong> INMODE pipeline registers-- Data: 30-bit (each) Data PortsA => A,-- 30-bit A data inputB => B,-- 18-bit B data inputC => C,-- 48-bit C data inputCARRYIN => CARRYIN,-- 1-bit carry input signalD => D,-- 25-bit D data input-- Reset/Clock Enable: 1-bit (each) Reset/Clock Enable InputsCEA1 => CEA1,-- 1-bit active high clock enable input <strong>for</strong> 1st stage A registersCEA2 => CEA2,-- 1-bit active high clock enable input <strong>for</strong> 2nd stage A registersCEAD => CEAD,-- 1-bit active high clock enable input <strong>for</strong> pre-adder output registersCEALUMODE => CEALUMODE,-- 1-bit active high clock enable input <strong>for</strong> ALUMODE registersCEB1 => CEB1,-- 1-bit active high clock enable input <strong>for</strong> 1st stage B registersCEB2 => CEB2,-- 1-bit active high clock enable input <strong>for</strong> 2nd stage B registersCEC => CEC,-- 1-bit active high clock enable input <strong>for</strong> C registersCECARRYIN => CECARRYIN,-- 1-bit active high clock enable input <strong>for</strong> CARRYIN registerCECTRL => CECTRL,-- 1-bit active high clock enable input <strong>for</strong> OPMODE and carry registersCED => CED,-- 1-bit active high clock enable input <strong>for</strong> D registersCEM => CEM,-- 1-bit active high clock enable input <strong>for</strong> multiplier registersCEP => CEP,-- 1-bit active high clock enable input <strong>for</strong> P registersRSTA => RSTA,-- 1-bit reset input <strong>for</strong> A pipeline registersRSTALLCARRYIN => RSTALLCARRYIN, -- 1-bit reset input <strong>for</strong> carry pipeline registersRSTALUMODE => RSTALUMODE,-- 1-bit reset input <strong>for</strong> ALUMODE pipeline registersRSTB => RSTB,-- 1-bit reset input <strong>for</strong> B pipeline registersRSTC => RSTC,-- 1-bit reset input <strong>for</strong> C pipeline registersRSTCTRL => RSTCTRL,-- 1-bit reset input <strong>for</strong> OPMODE pipeline registersRSTD => RSTD,-- 1-bit reset input <strong>for</strong> D pipeline registersRSTM => RSTM,-- 1-bit reset input <strong>for</strong> multiplier registersRSTP => RSTP-- 1-bit reset input <strong>for</strong> P pipeline registers-- End of DSP48E1_inst instantiationVerilog Instantiation Template// DSP48E1: 25x18 Two’s Complement Multiplier with Integrated 48-Bit, 3-Input Adder/Subtracter/Accumulator or 2-Input Logic Unit// <strong>Virtex</strong>-6// <strong>Xilinx</strong> <strong>HDL</strong> Language Template, version 11.1DSP48E1 #(.ACASCREG(1),// Number of pipeline registers between A/ACIN input and ACOUT output,// 0, 1, or 2.ADREG(1), // Number of pipeline registers on pre-adder output, 0 or 1.ALUMODEREG(1), // Number of pipeline registers on ALUMODE input, 0 or 1.AREG(1), // Number of pipeline registers on the A input, 0, 1 or 2.AUTORESET_PATDET("NO_RESET"),.A_INPUT("DIRECT"),.BCASCREG(1),// NO_RESET, RESET_MATCH, RESET_NOT_MATCH// Selects A input used, "DIRECT" (A port) or "CASCADE" (ACIN port)// Number of pipeline registers between B/BCIN input and BCOUT output,// 0, 1, or 2.BREG(1), // Number of pipeline registers on the B input, 0, 1 or 2.B_INPUT("DIRECT"),// Selects B input used, "DIRECT" (B port) or "CASCADE" (BCIN port)<strong>Virtex</strong>-6 <strong>Libraries</strong> <strong>Guide</strong> <strong>for</strong> <strong>HDL</strong> <strong>Designs</strong>UG623 (v 11.4) December 2, 2009 www.xilinx.com 127