// file: flvc2104_rev__2__basic_structure.txt // // date: 30-Aug-2015 Original UltraScale Geometry // // 8-Aug-2016 Rev 2 UltraScale Geometry // // 18-Sep-2016 Move all instances of Solder Mask to SOLDER_MASK_1 // // 13-Jan-2017 Move the SOLDER_MASK_1 used on the pin Vias to // SOLDER_MASK, i.e. relieve the solder mask on the // top and bottom of the pin Vias, Change Dog-Bone // widths, add the small pin Vias for MGT signals, // see the list of pad via drill sizes below. // // 18-Jan-2017 Set the Dog-Bone width of just the MGT pins to // 0.13 mm i.e. the standard width that we use // for High-Speed traces that we do not want the // bare board house to adjust the width of. // // // // REV_2 of the FLVC2104 // -------------------------- // // // // // The intent of this REV_2 is described in aaa_readme_rev_2.txt // // // // // The overall orientation of this Rev 1 component geometry // is pin A1 in the North West corner, i.e. the standard // Xilinx view for this part. // // pin #1 corner --> A1 ... A46 // . . // . . // . . // BF1 ... BF46 // // // // The 46x46 array has 2116 pins but the flvc2104 package // does not have 3 pins in each corner. Thus there are // 2104 pins on this fpga package. 2116 - 12 = 2105. // // // A1, A2 ... A45, A46 // B1 B46 // . . // . . // . . // . . // BE1 BE46 // BF1, BF2 ... BF45, BF46 // // // // // // Pin/Pad Stack names used in the FLVC2104 Geometry // // BGA_2104_SMD_PAD # SMD Pad Only on the Mentor PAD_1 layer // // BGA_2104_PAD_LONG_VIA_NNE # Pad on PAD_1 and via to the North-North-East // BGA_2104_PAD_LONG_VIA_NE # Pad on PAD_1 and via to the North-East // BGA_2104_PAD_LONG_VIA_ENE # Pad on PAD_1 and via to the East-North-East // // BGA_2104_PAD_LONG_VIA_ESE # Pad on PAD_1 and via to the East-South-East // BGA_2104_PAD_LONG_VIA_SE # Pad on PAD_1 and via to the South-East // BGA_2104_PAD_LONG_VIA_SSE # Pad on PAD_1 and via to the South-South-East // // BGA_2104_PAD_LONG_VIA_SSW # Pad on PAD_1 and via to the South-South-West // BGA_2104_PAD_LONG_VIA_SW # Pad on PAD_1 and via to the South-West // BGA_2104_PAD_LONG_VIA_WSW # Pad on PAD_1 and via to the West-South-West // // BGA_2104_PAD_LONG_VIA_WNW # Pad on PAD_1 and via to the West-North-West // BGA_2104_PAD_LONG_VIA_NW # Pad on PAD_1 and via to the North-West // BGA_2104_PAD_LONG_VIA_NNW # Pad on PAD_1 and via to the North-North-West // // // BGA_2104_PAD_SMALL_VIA_NE # BGA Pad with Small MGT pin via to the North-East // BGA_2104_PAD_SMALL_VIA_SE # BGA Pad with Small MGT pin via to the South-East // BGA_2104_PAD_SMALL_VIA_SW # BGA Pad with Small MGT pin via to the South-West // BGA_2104_PAD_SMALL_VIA_NW # BGA Pad with Small MGT pin via to the North-West // // // The tag "LONG" is referring to a via traversing all layers // while we may later use some "SHORT" vias traversing only the high speed layers // // The NNE, ENE, ESE, SSE, SSW, WSW, WNW, NNW padstacks are used for the // outer pins to pull their vias 0.3 mm further away from the periphery. // The via is offset from the SMD pad by 0.8 mm in one cardinal direction // (either X or Y) and offset by 0.5 mm in the other. // // The NE, NW, SE, SW tags are for pin/pad stacks that have their via // via offset by 0.5 mm in both the X and Y directions to put the via // right in the center of the 4 surounding SMD pads. // // The "SMALL_VIA" pin/pad stacks have the same size BGA pad but use // a smaller via drill and pad size. These are for the High-Speed MGT // signals. // // // Review of Large BGA Geometry Setups Hub Specifics at the End // ----------------------------------------------------------------- // // // For background reference recall how the CMX was setup: // // Surface Pad Padstack: // land pad 0.45 mm // Solder Mask 0.55 mm // Paste Mask 0.45 mm // // Through Hole Pin Padstack: // all Pow,Gnd,Sel_I/O // all layers 0.16 dog-bone // finished hole diameter 0.30 mm // land pad 0.61 mm // plane relief 0.85 mm // --> ring width 0.155 mm // --> plane isolation Air Gap 0.120 mm // from the pad // // Blind Pin Padstack: // MGT only Sig 1:3 only // 0.14 mm dog-bone // finished hole diameter 0.25 mm // land pad 0.56 mm // plane relief 0.85 mm // --> ring width 0.155 mm // --> plane isolation Air Gap 0.145 mm // from the pad // // // From the Xilinx Gods for Virtex UltraScale // // They say make the: UG1099 UG575 // --------------------------- ------- ------- // BGA Pad Land 0.51 mm 0.53 mm in diameter // BGA Pad Solder Mask Opening 0.54 mm 0.63 mm in diameter // // Dog-Bone Width 0.15 mm --- // Via Finished Hole 0.25 mm --- in diameter // Via Pad Land 0.48 mm --- in diameter // // They say that for the best re-flow soldering of the // BGA, they want the PCB BGA Land Diameter to match // the diameter of the pad on the device package. // // Note that there are some significant changes compared // to the CMX Virtex-6 package. Basically Xilinx went to // a larger ball size and larger pad diameter for their // UltraScale package. // // // IPC Class II says: 0.25 mm drill --> 0.50 mm pad land dia minimum // 0.30 mm drill --> 0.55 mm pad land dia minimum // // // // What I have done for the Hub FPGA: Final Irrivocable Decisions // ---------------------------------- // // For all of the BGA Ball SMD Pads: // // BGA Pad Land 0.52 mm in diameter // BGA Pad Solder Mask Opening 0.62 mm in diameter // BGA Pad Solder Paste Mask 0.52 mm in diameter // --> edge of Via pad to solder mask 0.050 mm // --> clearance to adjacent via pads 0.157 mm // --> narrowest point of Solder Mask 0.177 mm // // For all Power, Ground, Select I/O pin Vias: // // Via Finished Hole 0.30 mm in diameter // Via Pad Land 0.58 mm in diameter // Via Solder Mask Opening 0.44 mm in diameter // Via Plane Relief 0.82 mm in diameter // Dog-Bone Width 0.16 mm // // --> via donut width around drill hole 0.140 mm // --> via drill edge to plane clearance 0.260 mm // --> via drill hole edge to solder mask 0.070 mm // --> edge of Via pad to solder mask 0.070 mm // --> narrowest point in solder mask 0.177 mm // --> width of Gnd Web between pins 0.180 mm // // For MGT signals only pin Vias: // // Via Finished Hole 0.25 mm in diameter // Via Pad Land 0.52 mm in diameter // Via Solder Mask Opening 0.44 mm in diameter // Via Plane Relief 0.82 mm in diameter // Dog-Bone Width 0.13 mm // // --> via donut width around drill hole 0.135 mm // --> via drill edge to plane clearance 0.285 mm // --> via drill hole edge to solder mask 0.095 mm // --> edge of Via pad to solder mask 0.040 mm // --> narrowest point in solder mask 0.177 mm // --> width of Gnd Web between pins 0.180 mm // // The FPGA pins that will use the smaller via pin setup // is limited to the MGT signals pairs that are listed // in the file: hub_0_ab_fpga_mgt_transceiver_usage.txt. // // // //---------------------------------------------------------------------------- //---------------------------------------------------------------------------- // // Introduction $abort_enable = @false; $$lock_windows(@on) ; $$snap_diagonal(@off) ; $$snap_orthogonal(@off) ; //---------------------------------------------------------------------------- //---------------------------------------------------------------------------- // BGA SMD Pad Only FPGA Pin //---------------------------------------------------------------------------- //---------------------------------------------------------------------------- // // BGA_2104_SMD_PAD SMD Pad Only Pin/Pad Stack $$create_pin("BGA_2104_SMD_PAD", @replace); $$page(0.0,0.0,0.0, @mm, 0.0, 0.0, [0.0, 0.0, 'PI$BGA_2104_SMD_PAD']); $$point_mode(@vertex); $$attribute( "TERMINAL_SURFACE_DEFINITION", ""); $$circle( "PAD_1", 0.000, 0.000, 0.52, 0.0); $$circle( "SOLDER_MASK_1", 0.000, 0.000, 0.62, 0.0); $$circle( "PASTE_MASK_1", 0.000, 0.000, 0.52, 0.0); //---------------------------------------------------------------------------- //---------------------------------------------------------------------------- // Normal BGA SMD Pad and Pin Via FPGA Pin 4x //---------------------------------------------------------------------------- //---------------------------------------------------------------------------- // BGA_2104_PAD_LONG_VIA_NE Pin PadStack Pad with a Via 0.7071mm to the North-East // ----------------------==== ---------- // When using the BGA_2104_PAD_LONG_VIA_NE pin padstack you must instance it with a // $$attribute( "COMPONENT_PIN_DEFINITION", ... // that has X,Y values shifted from the actual bga pad location. // // Specifically when using the BGA_2104_PAD_LONG_VIA_NE pin padstack // COMPONENT_PIN_DEFINITION X value = bga pad X value plus 0.500 mm. // COMPONENT_PIN_DEFINITION Y value = bga pad Y value plus 0.500 mm. $$create_pin("BGA_2104_PAD_LONG_VIA_NE"); $$page(0.0, 0.0, 0.0, @mm, 0.0, 0.0, [0.0,0.0,'PI$BGA_2104_PAD_LONG_VIA_NE'] ); $$point_mode(@vertex); $$attribute( "TERMINAL_THRUHOLE_DEFINITION", ""); $$attribute( "TERMINAL_DRILL_SIZE", "", , @scale , , [0.3, 0.0]); $$circle( "SIGNAL", 0.000, 0.000, 0.58, 0.0); $$circle( "SOLDER_MASK", 0.000, 0.000, 0.44, 0.0); $$circle( "POWER", 0.000, 0.000, 0.82, 0.0); $$circle( "BREAKOUT_1", -0.500, -0.500, 0.52, 0.0); $$circle( "SOLDER_MASK_1", -0.500, -0.500, 0.62, 0.0); $$circle( "PASTE_MASK_1", -0.500, -0.500, 0.52, 0.0); $$path( "BREAKOUT_1", 0.160, , [-0.500, -0.500, 0.000, 0.000] ); //---------------------------------------------------------------------------- // BGA_2104_PAD_LONG_VIA_SE Pin PadStack Pad with a Via 0.7071mm to the South-East // ----------------------==== ---------- // When using the BGA_2104_PAD_LONG_VIA_SE pin padstack you must instance it with a // $$attribute( "COMPONENT_PIN_DEFINITION", ... // that has X,Y values shifted from the actual bga pad location. // // Specifically when using the BGA_2104_PAD_LONG_VIA_SE pin padstack // COMPONENT_PIN_DEFINITION X value = bga pad X value plus 0.500 mm. // COMPONENT_PIN_DEFINITION Y value = bga pad Y value minus 0.500 mm. $$create_pin("BGA_2104_PAD_LONG_VIA_SE"); $$page(0.0, 0.0, 0.0, @mm, 0.0, 0.0, [0.0,0.0,'PI$BGA_2104_PAD_LONG_VIA_SE'] ); $$point_mode(@vertex); $$attribute( "TERMINAL_THRUHOLE_DEFINITION", ""); $$attribute( "TERMINAL_DRILL_SIZE", "", , @scale , , [0.3, 0.0]); $$circle( "SIGNAL", 0.000, 0.000, 0.58, 0.0); $$circle( "SOLDER_MASK", 0.000, 0.000, 0.44, 0.0); $$circle( "POWER", 0.000, 0.000, 0.82, 0.0); $$circle( "BREAKOUT_1", -0.500, 0.500, 0.52, 0.0); $$circle( "SOLDER_MASK_1", -0.500, 0.500, 0.62, 0.0); $$circle( "PASTE_MASK_1", -0.500, 0.500, 0.52, 0.0); $$path( "BREAKOUT_1", 0.160, , [-0.500, 0.500, 0.000, 0.000] ); //---------------------------------------------------------------------------- // BGA_2104_PAD_LONG_VIA_SW Pin PadStack Pad with a Via 0.7071mm to the South-West // ----------------------==== ---------- // When using the BGA_2104_PAD_LONG_VIA_SW pin padstack you must instance it with a // $$attribute( "COMPONENT_PIN_DEFINITION", ... // that has X,Y values shifted from the actual bga pad location. // // Specifically when using the BGA_2104_PAD_LONG_VIA_SW pin padstack // COMPONENT_PIN_DEFINITION X value = bga pad X value minus 0.500 mm. // COMPONENT_PIN_DEFINITION Y value = bga pad Y value minus 0.500 mm. $$create_pin("BGA_2104_PAD_LONG_VIA_SW"); $$page(0.0, 0.0, 0.0, @mm, 0.0, 0.0, [0.0,0.0,'PI$BGA_2104_PAD_LONG_VIA_SW'] ); $$point_mode(@vertex); $$attribute( "TERMINAL_THRUHOLE_DEFINITION", ""); $$attribute( "TERMINAL_DRILL_SIZE", "", , @scale , , [0.3, 0.0]); $$circle( "SIGNAL", 0.000, 0.000, 0.58, 0.0); $$circle( "SOLDER_MASK", 0.000, 0.000, 0.44, 0.0); $$circle( "POWER", 0.000, 0.000, 0.82, 0.0); $$circle( "BREAKOUT_1", 0.500, 0.500, 0.52, 0.0); $$circle( "SOLDER_MASK_1", 0.500, 0.500, 0.62, 0.0); $$circle( "PASTE_MASK_1", 0.500, 0.500, 0.52, 0.0); $$path( "BREAKOUT_1", 0.160, , [ 0.500, 0.500, 0.000, 0.000] ); //---------------------------------------------------------------------------- // BGA_2104_PAD_LONG_VIA_NW Pin PadStack Pad with a Via 0.7071mm to the North-West // ----------------------==== ---------- // When using the BGA_2104_PAD_LONG_VIA_NW pin padstack you must instance it with a // $$attribute( "COMPONENT_PIN_DEFINITION", ... // that has X,Y values shifted from the actual bga pad location. // // Specifically when using the BGA_2104_PAD_LONG_VIA_NW pin padstack // COMPONENT_PIN_DEFINITION X value = bga pad X value minus 0.500 mm. // COMPONENT_PIN_DEFINITION Y value = bga pad Y value plus 0.500 mm. $$create_pin("BGA_2104_PAD_LONG_VIA_NW"); $$page(0.0, 0.0, 0.0, @mm, 0.0, 0.0, [0.0,0.0,'PI$BGA_2104_PAD_LONG_VIA_NW'] ); $$point_mode(@vertex); $$attribute( "TERMINAL_THRUHOLE_DEFINITION", ""); $$attribute( "TERMINAL_DRILL_SIZE", "", , @scale , , [0.3, 0.0]); $$circle( "SIGNAL", 0.000, 0.000, 0.58, 0.0); $$circle( "SOLDER_MASK", 0.000, 0.000, 0.44, 0.0); $$circle( "POWER", 0.000, 0.000, 0.82, 0.0); $$circle( "BREAKOUT_1", 0.500, -0.500, 0.52, 0.0); $$circle( "SOLDER_MASK_1", 0.500, -0.500, 0.62, 0.0); $$circle( "PASTE_MASK_1", 0.500, -0.500, 0.52, 0.0); $$path( "BREAKOUT_1", 0.160, , [ 0.500, -0.500, 0.000, 0.000] ); //---------------------------------------------------------------------------- //---------------------------------------------------------------------------- // Long Dog-Bone BGA SMD Pad and Pin Via FPGA Pin 4x //---------------------------------------------------------------------------- //---------------------------------------------------------------------------- // BGA_2104_PAD_LONG_VIA_NNE Pin PadStack Pad with a Via 0.9434mm to the North-North-East // -----------------------==== ---------------- // aka with a NE via shifted further North // When using the BGA_2104_PAD_LONG_VIA_NNE pin padstack you must instance it with a // $$attribute( "COMPONENT_PIN_DEFINITION", ... // that has X,Y values shifted from the actual bga pad location. // // Specifically when using the BGA_2104_PAD_LONG_VIA_NE pin padstack // COMPONENT_PIN_DEFINITION X value = bga pad X value plus 0.500 mm. // COMPONENT_PIN_DEFINITION Y value = bga pad Y value plus 0.800 mm. $$create_pin("BGA_2104_PAD_LONG_VIA_NNE"); $$page(0.0, 0.0, 0.0, @mm, 0.0, 0.0, [0.0,0.0,'PI$BGA_2104_PAD_LONG_VIA_NNE'] ); $$point_mode(@vertex); $$attribute( "TERMINAL_THRUHOLE_DEFINITION", ""); $$attribute( "TERMINAL_DRILL_SIZE", "", , @scale , , [0.3, 0.0]); $$circle( "SIGNAL", 0.000, 0.000, 0.58, 0.0); $$circle( "SOLDER_MASK", 0.000, 0.000, 0.44, 0.0); $$circle( "POWER", 0.000, 0.000, 0.82, 0.0); $$circle( "BREAKOUT_1", -0.500, -0.800, 0.52, 0.0); $$circle( "SOLDER_MASK_1", -0.500, -0.800, 0.62, 0.0); $$circle( "PASTE_MASK_1", -0.500, -0.800, 0.21, 0.0); $$path( "BREAKOUT_1", 0.160, , [-0.500, -0.800, 0.000, 0.000] ); //---------------------------------------------------------------------------- // BGA_2104_PAD_LONG_VIA_SSE Pin PadStack Pad with a Via 0.9434mm to the South-South-East // -----------------------==== ---------------- // aka with a SE via shifted further South // When using the BGA_2104_PAD_LONG_VIA_SE pin padstack you must instance it with a // $$attribute( "COMPONENT_PIN_DEFINITION", ... // that has X,Y values shifted from the actual bga pad location. // // Specifically when using the BGA_2104_PAD_LONG_VIA_SE pin padstack // COMPONENT_PIN_DEFINITION X value = bga pad X value plus 0.500 mm. // COMPONENT_PIN_DEFINITION Y value = bga pad Y value minus 0.800 mm. $$create_pin("BGA_2104_PAD_LONG_VIA_SSE"); $$page(0.0, 0.0, 0.0, @mm, 0.0, 0.0, [0.0,0.0,'PI$BGA_2104_PAD_LONG_VIA_SSE'] ); $$point_mode(@vertex); $$attribute( "TERMINAL_THRUHOLE_DEFINITION", ""); $$attribute( "TERMINAL_DRILL_SIZE", "", , @scale , , [0.3, 0.0]); $$circle( "SIGNAL", 0.000, 0.000, 0.58, 0.0); $$circle( "SOLDER_MASK", 0.000, 0.000, 0.44, 0.0); $$circle( "POWER", 0.000, 0.000, 0.82, 0.0); $$circle( "BREAKOUT_1", -0.500, 0.800, 0.52, 0.0); $$circle( "SOLDER_MASK_1", -0.500, 0.800, 0.62, 0.0); $$circle( "PASTE_MASK_1", -0.500, 0.800, 0.52, 0.0); $$path( "BREAKOUT_1", 0.160, , [-0.500, 0.800, 0.000, 0.000] ); //---------------------------------------------------------------------------- // BGA_2104_PAD_LONG_VIA_SSW Pin PadStack Pad with a Via 0.9434mm to the South-South-West // -----------------------==== ---------------- // aka with a SW via shifted further South // When using the BGA_2104_PAD_LONG_VIA_SW pin padstack you must instance it with a // $$attribute( "COMPONENT_PIN_DEFINITION", ... // that has X,Y values shifted from the actual bga pad location. // // Specifically when using the BGA_2104_PAD_LONG_VIA_SW pin padstack // COMPONENT_PIN_DEFINITION X value = bga pad X value minus 0.500 mm. // COMPONENT_PIN_DEFINITION Y value = bga pad Y value minus 0.800 mm. $$create_pin("BGA_2104_PAD_LONG_VIA_SSW"); $$page(0.0, 0.0, 0.0, @mm, 0.0, 0.0, [0.0,0.0,'PI$BGA_2104_PAD_LONG_VIA_SSW'] ); $$point_mode(@vertex); $$attribute( "TERMINAL_THRUHOLE_DEFINITION", ""); $$attribute( "TERMINAL_DRILL_SIZE", "", , @scale , , [0.3, 0.0]); $$circle( "SIGNAL", 0.000, 0.000, 0.58, 0.0); $$circle( "SOLDER_MASK", 0.000, 0.000, 0.44, 0.0); $$circle( "POWER", 0.000, 0.000, 0.82, 0.0); $$circle( "BREAKOUT_1", 0.500, 0.800, 0.52, 0.0); $$circle( "SOLDER_MASK_1", 0.500, 0.800, 0.62, 0.0); $$circle( "PASTE_MASK_1", 0.500, 0.800, 0.52, 0.0); $$path( "BREAKOUT_1", 0.160, , [ 0.500, 0.800, 0.000, 0.000] ); //---------------------------------------------------------------------------- // BGA_2104_PAD_LONG_VIA_NNW Pin PadStack Pad with a Via 0.9434mm to the North-North-West // ----------------------==== ---------------- // aka with a NW via shifted further North // When using the BGA_2104_PAD_LONG_VIA_NW pin padstack you must instance it with a // $$attribute( "COMPONENT_PIN_DEFINITION", ... // that has X,Y values shifted from the actual bga pad location. // // Specifically when using the BGA_2104_PAD_LONG_VIA_NW pin padstack // COMPONENT_PIN_DEFINITION X value = bga pad X value minus 0.500 mm. // COMPONENT_PIN_DEFINITION Y value = bga pad Y value plus 0.800 mm. $$create_pin("BGA_2104_PAD_LONG_VIA_NNW"); $$page(0.0, 0.0, 0.0, @mm, 0.0, 0.0, [0.0,0.0,'PI$BGA_2104_PAD_LONG_VIA_NNW'] ); $$point_mode(@vertex); $$attribute( "TERMINAL_THRUHOLE_DEFINITION", ""); $$attribute( "TERMINAL_DRILL_SIZE", "", , @scale , , [0.3, 0.0]); $$circle( "SIGNAL", 0.000, 0.000, 0.58, 0.0); $$circle( "SOLDER_MASK", 0.000, 0.000, 0.44, 0.0); $$circle( "POWER", 0.000, 0.000, 0.82, 0.0); $$circle( "BREAKOUT_1", 0.500, -0.800, 0.52, 0.0); $$circle( "SOLDER_MASK_1", 0.500, -0.800, 0.62, 0.0); $$circle( "PASTE_MASK_1", 0.500, -0.800, 0.52, 0.0); $$path( "BREAKOUT_1", 0.160, , [ 0.500, -0.800, 0.000, 0.000] ); //---------------------------------------------------------------------------- //---------------------------------------------------------------------------- // Long Dog-Bone BGA SMD Pad and Pin Via FPGA Pin 4x //---------------------------------------------------------------------------- //---------------------------------------------------------------------------- // BGA_2104_PAD_LONG_VIA_ENE Pin PadStack Pad with a Via 0.9434mm to the East-North-East // -----------------------==== --------------- // aka with a NE via shifted further East // When using the BGA_2104_PAD_LONG_VIA_NE pin padstack you must instance it with a // $$attribute( "COMPONENT_PIN_DEFINITION", ... // that has X,Y values shifted from the actual bga pad location. // // Specifically when using the BGA_2104_PAD_LONG_VIA_NE pin padstack // COMPONENT_PIN_DEFINITION X value = bga pad X value plus 0.500 mm. // COMPONENT_PIN_DEFINITION Y value = bga pad Y value plus 0.500 mm. $$create_pin("BGA_2104_PAD_LONG_VIA_ENE"); $$page(0.0, 0.0, 0.0, @mm, 0.0, 0.0, [0.0,0.0,'PI$BGA_2104_PAD_LONG_VIA_ENE'] ); $$point_mode(@vertex); $$attribute( "TERMINAL_THRUHOLE_DEFINITION", ""); $$attribute( "TERMINAL_DRILL_SIZE", "", , @scale , , [0.3, 0.0]); $$circle( "SIGNAL", 0.000, 0.000, 0.58, 0.0); $$circle( "SOLDER_MASK", 0.000, 0.000, 0.44, 0.0); $$circle( "POWER", 0.000, 0.000, 0.82, 0.0); $$circle( "BREAKOUT_1", -0.800, -0.500, 0.52, 0.0); $$circle( "SOLDER_MASK_1", -0.800, -0.500, 0.62, 0.0); $$circle( "PASTE_MASK_1", -0.800, -0.500, 0.52, 0.0); $$path( "BREAKOUT_1", 0.160, , [-0.800, -0.500, 0.000, 0.000] ); //---------------------------------------------------------------------------- // BGA_2104_PAD_LONG_VIA_ESE Pin PadStack Pad with a Via 0.9434mm to the East-South-East // -----------------------==== --------------- // aka with a SE via shifted further East // When using the BGA_2104_PAD_LONG_VIA_SE pin padstack you must instance it with a // $$attribute( "COMPONENT_PIN_DEFINITION", ... // that has X,Y values shifted from the actual bga pad location. // // Specifically when using the BGA_2104_PAD_LONG_VIA_SE pin padstack // COMPONENT_PIN_DEFINITION X value = bga pad X value plus 0.800 mm. // COMPONENT_PIN_DEFINITION Y value = bga pad Y value minus 0.500 mm. $$create_pin("BGA_2104_PAD_LONG_VIA_ESE"); $$page(0.0, 0.0, 0.0, @mm, 0.0, 0.0, [0.0,0.0,'PI$BGA_2104_PAD_LONG_VIA_ESE'] ); $$point_mode(@vertex); $$attribute( "TERMINAL_THRUHOLE_DEFINITION", ""); $$attribute( "TERMINAL_DRILL_SIZE", "", , @scale , , [0.3, 0.0]); $$circle( "SIGNAL", 0.000, 0.000, 0.58, 0.0); $$circle( "SOLDER_MASK", 0.000, 0.000, 0.44, 0.0); $$circle( "POWER", 0.000, 0.000, 0.82, 0.0); $$circle( "BREAKOUT_1", -0.800, 0.500, 0.52, 0.0); $$circle( "SOLDER_MASK_1", -0.800, 0.500, 0.62, 0.0); $$circle( "PASTE_MASK_1", -0.800, 0.500, 0.52, 0.0); $$path( "BREAKOUT_1", 0.160, , [-0.800, 0.500, 0.000, 0.000] ); //---------------------------------------------------------------------------- // BGA_2104_PAD_LONG_VIA_WSW Pin PadStack Pad with a Via 0.9434mm to the West-South-West // -----------------------==== --------------- // aka with a SW via shifted further West // When using the BGA_2104_PAD_LONG_VIA_SW pin padstack you must instance it with a // $$attribute( "COMPONENT_PIN_DEFINITION", ... // that has X,Y values shifted from the actual bga pad location. // // Specifically when using the BGA_2104_PAD_LONG_VIA_SW pin padstack // COMPONENT_PIN_DEFINITION X value = bga pad X value minus 0.800 mm. // COMPONENT_PIN_DEFINITION Y value = bga pad Y value minus 0.500 mm. $$create_pin("BGA_2104_PAD_LONG_VIA_WSW"); $$page(0.0, 0.0, 0.0, @mm, 0.0, 0.0, [0.0,0.0,'PI$BGA_2104_PAD_LONG_VIA_WSW'] ); $$point_mode(@vertex); $$attribute( "TERMINAL_THRUHOLE_DEFINITION", ""); $$attribute( "TERMINAL_DRILL_SIZE", "", , @scale , , [0.3, 0.0]); $$circle( "SIGNAL", 0.000, 0.000, 0.58, 0.0); $$circle( "SOLDER_MASK", 0.000, 0.000, 0.44, 0.0); $$circle( "POWER", 0.000, 0.000, 0.82, 0.0); $$circle( "BREAKOUT_1", 0.800, 0.500, 0.52, 0.0); $$circle( "SOLDER_MASK_1", 0.800, 0.500, 0.62, 0.0); $$circle( "PASTE_MASK_1", 0.800, 0.500, 0.52, 0.0); $$path( "BREAKOUT_1", 0.160, , [ 0.800, 0.500, 0.000, 0.000] ); //---------------------------------------------------------------------------- // BGA_2104_PAD_LONG_VIA_WNW Pin PadStack Pad with a Via 0.9434mm to the West-North-West // ----------------------==== --------------- // aka with a NW via shifted further West // When using the BGA_2104_PAD_LONG_VIA_NW pin padstack you must instance it with a // $$attribute( "COMPONENT_PIN_DEFINITION", ... // that has X,Y values shifted from the actual bga pad location. // // Specifically when using the BGA_2104_PAD_LONG_VIA_NW pin padstack // COMPONENT_PIN_DEFINITION X value = bga pad X value minus 0.800 mm. // COMPONENT_PIN_DEFINITION Y value = bga pad Y value plus 0.500 mm. $$create_pin("BGA_2104_PAD_LONG_VIA_WNW"); $$page(0.0, 0.0, 0.0, @mm, 0.0, 0.0, [0.0,0.0,'PI$BGA_2104_PAD_LONG_VIA_WNW'] ); $$point_mode(@vertex); $$attribute( "TERMINAL_THRUHOLE_DEFINITION", ""); $$attribute( "TERMINAL_DRILL_SIZE", "", , @scale , , [0.3, 0.0]); $$circle( "SIGNAL", 0.000, 0.000, 0.58, 0.0); $$circle( "SOLDER_MASK", 0.000, 0.000, 0.44, 0.0); $$circle( "POWER", 0.000, 0.000, 0.82, 0.0); $$circle( "BREAKOUT_1", 0.800, -0.500, 0.52, 0.0); $$circle( "SOLDER_MASK_1", 0.800, -0.500, 0.62, 0.0); $$circle( "PASTE_MASK_1", 0.800, -0.500, 0.52, 0.0); $$path( "BREAKOUT_1", 0.160, , [ 0.800, -0.500, 0.000, 0.000] ); //---------------------------------------------------------------------------- //---------------------------------------------------------------------------- // MGT Signal Only BGA SMD Pad and Small Pin Via FPGA Pin 4x //---------------------------------------------------------------------------- //---------------------------------------------------------------------------- // BGA_2104_PAD_SMALL_VIA_NE Pin PadStack Pad with a Via 0.7071mm to the North-East // ----------------------==== ---------- // When using the BGA_2104_PAD_SMALL_VIA_NE pin padstack you must instance it with a // $$attribute( "COMPONENT_PIN_DEFINITION", ... // that has X,Y values shifted from the actual bga pad location. // // Specifically when using the BGA_2104_PAD_SMALL_VIA_NE pin padstack // COMPONENT_PIN_DEFINITION X value = bga pad X value plus 0.500 mm. // COMPONENT_PIN_DEFINITION Y value = bga pad Y value plus 0.500 mm. $$create_pin("BGA_2104_PAD_SMALL_VIA_NE"); $$page(0.0, 0.0, 0.0, @mm, 0.0, 0.0, [0.0,0.0,'PI$BGA_2104_PAD_SMALL_VIA_NE'] ); $$point_mode(@vertex); $$attribute( "TERMINAL_THRUHOLE_DEFINITION", ""); $$attribute( "TERMINAL_DRILL_SIZE", "", , @scale , , [0.25, 0.0]); $$circle( "SIGNAL", 0.000, 0.000, 0.52, 0.0); $$circle( "SOLDER_MASK", 0.000, 0.000, 0.44, 0.0); $$circle( "POWER", 0.000, 0.000, 0.82, 0.0); $$circle( "BREAKOUT_1", -0.500, -0.500, 0.52, 0.0); $$circle( "SOLDER_MASK_1", -0.500, -0.500, 0.62, 0.0); $$circle( "PASTE_MASK_1", -0.500, -0.500, 0.52, 0.0); $$path( "BREAKOUT_1", 0.13, , [-0.500, -0.500, 0.000, 0.000] ); //---------------------------------------------------------------------------- // BGA_2104_PAD_SMALL_VIA_SE Pin PadStack Pad with a Via 0.7071mm to the South-East // ----------------------==== ---------- // When using the BGA_2104_PAD_SMALL_VIA_SE pin padstack you must instance it with a // $$attribute( "COMPONENT_PIN_DEFINITION", ... // that has X,Y values shifted from the actual bga pad location. // // Specifically when using the BGA_2104_PAD_SMALL_VIA_SE pin padstack // COMPONENT_PIN_DEFINITION X value = bga pad X value plus 0.500 mm. // COMPONENT_PIN_DEFINITION Y value = bga pad Y value minus 0.500 mm. $$create_pin("BGA_2104_PAD_SMALL_VIA_SE"); $$page(0.0, 0.0, 0.0, @mm, 0.0, 0.0, [0.0,0.0,'PI$BGA_2104_PAD_SMALL_VIA_SE'] ); $$point_mode(@vertex); $$attribute( "TERMINAL_THRUHOLE_DEFINITION", ""); $$attribute( "TERMINAL_DRILL_SIZE", "", , @scale , , [0.25, 0.0]); $$circle( "SIGNAL", 0.000, 0.000, 0.52, 0.0); $$circle( "SOLDER_MASK", 0.000, 0.000, 0.44, 0.0); $$circle( "POWER", 0.000, 0.000, 0.82, 0.0); $$circle( "BREAKOUT_1", -0.500, 0.500, 0.52, 0.0); $$circle( "SOLDER_MASK_1", -0.500, 0.500, 0.62, 0.0); $$circle( "PASTE_MASK_1", -0.500, 0.500, 0.52, 0.0); $$path( "BREAKOUT_1", 0.13, , [-0.500, 0.500, 0.000, 0.000] ); //---------------------------------------------------------------------------- // BGA_2104_PAD_SMALL_VIA_SW Pin PadStack Pad with a Via 0.7071mm to the South-West // ----------------------==== ---------- // When using the BGA_2104_PAD_SMALL_VIA_SW pin padstack you must instance it with a // $$attribute( "COMPONENT_PIN_DEFINITION", ... // that has X,Y values shifted from the actual bga pad location. // // Specifically when using the BGA_2104_PAD_SMALL_VIA_SW pin padstack // COMPONENT_PIN_DEFINITION X value = bga pad X value minus 0.500 mm. // COMPONENT_PIN_DEFINITION Y value = bga pad Y value minus 0.500 mm. $$create_pin("BGA_2104_PAD_SMALL_VIA_SW"); $$page(0.0, 0.0, 0.0, @mm, 0.0, 0.0, [0.0,0.0,'PI$BGA_2104_PAD_SMALL_VIA_SW'] ); $$point_mode(@vertex); $$attribute( "TERMINAL_THRUHOLE_DEFINITION", ""); $$attribute( "TERMINAL_DRILL_SIZE", "", , @scale , , [0.25, 0.0]); $$circle( "SIGNAL", 0.000, 0.000, 0.52, 0.0); $$circle( "SOLDER_MASK", 0.000, 0.000, 0.44, 0.0); $$circle( "POWER", 0.000, 0.000, 0.82, 0.0); $$circle( "BREAKOUT_1", 0.500, 0.500, 0.52, 0.0); $$circle( "SOLDER_MASK_1", 0.500, 0.500, 0.62, 0.0); $$circle( "PASTE_MASK_1", 0.500, 0.500, 0.52, 0.0); $$path( "BREAKOUT_1", 0.13, , [ 0.500, 0.500, 0.000, 0.000] ); //---------------------------------------------------------------------------- // BGA_2104_PAD_SMALL_VIA_NW Pin PadStack Pad with a Via 0.7071mm to the North-West // ----------------------==== ---------- // When using the BGA_2104_PAD_SMALL_VIA_NW pin padstack you must instance it with a // $$attribute( "COMPONENT_PIN_DEFINITION", ... // that has X,Y values shifted from the actual bga pad location. // // Specifically when using the BGA_2104_PAD_SMALL_VIA_NW pin padstack // COMPONENT_PIN_DEFINITION X value = bga pad X value minus 0.500 mm. // COMPONENT_PIN_DEFINITION Y value = bga pad Y value plus 0.500 mm. $$create_pin("BGA_2104_PAD_SMALL_VIA_NW"); $$page(0.0, 0.0, 0.0, @mm, 0.0, 0.0, [0.0,0.0,'PI$BGA_2104_PAD_SMALL_VIA_NW'] ); $$point_mode(@vertex); $$attribute( "TERMINAL_THRUHOLE_DEFINITION", ""); $$attribute( "TERMINAL_DRILL_SIZE", "", , @scale , , [0.25, 0.0]); $$circle( "SIGNAL", 0.000, 0.000, 0.52, 0.0); $$circle( "SOLDER_MASK", 0.000, 0.000, 0.44, 0.0); $$circle( "POWER", 0.000, 0.000, 0.82, 0.0); $$circle( "BREAKOUT_1", 0.500, -0.500, 0.52, 0.0); $$circle( "SOLDER_MASK_1", 0.500, -0.500, 0.62, 0.0); $$circle( "PASTE_MASK_1", 0.500, -0.500, 0.52, 0.0); $$path( "BREAKOUT_1", 0.13, , [ 0.500, -0.500, 0.000, 0.000] ); //---------------------------------------------------------------------------- //---------------------------------------------------------------------------- // // End of the FPGA Pin Definitions // //---------------------------------------------------------------------------- //---------------------------------------------------------------------------- //---------------------------------------------------------------------------- // Now start the actual description of the FLVC2104 Rev 2 $$create_component("FLVC_2104_Geom", @replace); $$page(0.0,0.0,0.0, @mm, 0.0, 0.0, [0.0, 0.0, 'CO$FLVC_2104_Geom']); $$point_mode(@vertex); $$attribute( "COMPONENT_HEIGHT", "1.20", , @scale , , [0.0, 0.0] ); // // Component Outline // $$initial([ 23.5, 23.5 ], , @nosnap ); $$terminal([ -23.5, 23.5 ]); $$terminal([ -23.5, -23.5 ]); $$terminal([ 23.5, -23.5 ]); $$terminal([ 23.5, 23.5 ]); $$attribute( "COMPONENT_PLACEMENT_OUTLINE", "", @mark, @scale ); // Horizontal Lines $$path( "SILKSCREEN_1", 0.25 , , [-23.00, 24.25, 23.00, 24.25] ); $$path( "SILKSCREEN_1", 0.25 , , [-23.00, -24.25, 23.00, -24.25] ); // Vertical Lines $$path( "SILKSCREEN_1", 0.25 , , [-24.25, 23.00, -24.25, -23.00] ); $$path( "SILKSCREEN_1", 0.25 , , [ 24.25, 23.00, 24.25, -23.00] ); // Diagonal Line $$path( "SILKSCREEN_1", 0.25 , , [-23.00, 24.25, -24.25, 23.00] ); $$text( "SILKSCREEN_1", "A1", -27.0, 23.0, 2.5, @BC, 0, 0.7, 0.25, "std", "None", 0.0, 0.0 ); $$text( "SILKSCREEN_1", "^$ref", 0.0, 26.0, 2.5, @BC, 0, 0.7, 0.25, "std", "None", 0.0, 0.0 ); // Setup the Local Fiducial Marks // // Place Local Fiducial Marks at: // the "pin #1" corner i.e. pin "A1" // and at the other 3 corners. $$circle( "PAD_1", 24.50, 24.50, 1.0, 0.0); $$circle( "SOLDER_MASK_1", 24.50, 24.50, 1.3, 0.0); $$circle( "PAD_1", 24.50, -24.50, 1.0, 0.0); $$circle( "SOLDER_MASK_1", 24.50, -24.50, 1.3, 0.0); $$circle( "PAD_1", -24.50, 24.50, 1.0, 0.0); $$circle( "SOLDER_MASK_1", -24.50, 24.50, 1.3, 0.0); $$circle( "PAD_1", -24.50, -24.50, 1.0, 0.0); $$circle( "SOLDER_MASK_1", -24.50, -24.50, 1.3, 0.0); // // Define a default Pad-Stack // $$attribute( "COMPONENT_DEFAULT_PADSTACK", "BGA_2104_SMD_PAD"); // // Now setup all of the pins in the FLVC2104 Geometry //