BaseJump: Building the DNA For Open Source ASIC Systems

Our vision is to create a path that allows researchers to prototype their ideas without worrying about all of the intricacies of I/O, packaging, PC board design and FPGA coding.

Our goal is to shave 10-15 people-years off of a typical ASIC prototype
development process, and at the same time enable artifacts that are
of superior performance to what most research groups would have the resources to do.

We have implemented a complete system that extends from the pad ring of the chip all the way out. You just need to design your verilog to connect to our simple interface, and then make use of the pre-built components that we have developed and tested. Push it through IC Compiler, PrimeTime and Calibre to a tapeout. The rest of the way has already been thought out.
Current Users:

            U of Cambridge

Prof. Michael Taylor
Bespoke Silicon Group
University of Washington CSE and EE

Sub-page Links

BaseJump STL
BaseJump RoCC Doc
RV-IOV: RISC-V IO Virtualization
BaseJump Manycore
BaseJump FPGA Bridge

Most of these components have been combined and used in the
511 RISC-V Core Open Source Celerity chip which was taped out
in TSMC 16nm FinFet technology:

BaseJump STL: A standard library for SystemVerilog

This library has many of the standard components that you use in hardware design.
But these ones are nicely parameterized, and try to use latency-insensitive
interfaces where it does not hurt performance.

We are always looking for those who want to contribute, write testing code,
or offer feedback.

These are good projects for students looking for summer projects. See the repository here.

BaseJump Socket Interface

The BaseJump Socket Interface provides a quick and easy way to prototype I/O for your system. You match up your RTL with our Network-On-Chip interface, and then you can use our package, board, and FPGA firmware to make a complete system!

You can use our RTL, socket interface, our pad ring, our package, and our board all independently of each other. But you will minimize design time and cost if you use them all together!

Our socket interface, pad ring, package and board are all jointly optimized for signal integrity.

BaseJump Padring

Often times VLSI chips have a metal stack that is lower resistance in one direction than another. You should align the low resistance direction so that it connects to the sides of the pad ring, as they have more connections to core Vdd/Vss. We place outputs on the top/bottom of the padring, and allocate more I/O Vdd/Vss to these sides. Separating inputs and outputs reduces noise on inputs.

The markers indicate which part of the pad out you would keep for each size of die (e.g. 3x3,4x4,5x5). For smaller die, some bond wires will not be attached. The ball out of the package is fixed and cannot be changed.

If you do repurpose the package and have not designed a package before, we suggest you keep the BaseJump Socket Interface (pad ring arrangement) we have on the diagram, and maintain the direction and type of the pin (i.e. input, output, core Vdd, core Vss, I/O Vdd, I/O Vss), and also try to assign similar purposes to each pin.

Here are the Padrings for 5x5 and 4x4 chips.
Your I/Os should have the same position relative to center of each chip side.

Here is the geometrical specs for the package when it interfaces to this padring. Bond wire lengths and bond angles are for a 5x5 die.
Verilog macros for the package and pad ring are given here.

The BaseJump BGA Package

To use your silicon, you need a package. High-performance packages are in short supply in academia; typically people are relegated to using low-performance PGA, QFP or QFN packages.

To support BaseJump Socket, we created a wirebond Ball Grid Array (BGA) package that can be broadly used. It has special features that allow it to be adopted across many different chip designs.

It is suitable for chips between 3x3 mm and 6x6 mm but is most optimized for 4x4 mm and 5x5mm. You can provide our package geometry file and your bondpad coordinates to your wirebonding house, and they will tell you if it is bondable.

Traces are length-matched and impedance controlled, there is a section for PLL, and separate voltage rails for I/O and Core VDD. Although mostly re-purposable, signal wires have special capabilities (e.g. clock, pll, jtag, flow control credits) that you can take advantage of if you do assignment correctly. High-speed 100-ohm differential pairs are provided for clocks or other purposes. We can provide advice for you on how to assign your signals, just email.

Bond Wires Balls
Connections to Substrate Bond Pads that go to individual balls 144 144
Connections to BGA internal VDD, I/O VDD, VSS and I/O VSS Planes/Rings 188 39, 41, 40, 88
Total 332352

The BaseJump Double Trouble Motherboard (Emulates BaseJump Socket Compliant ASIC)

Before taping out your chip, you can emulate both your FPGA-firmware
and your ASIC verilog code, using the Double Trouble daughterboard.

The Double Trouble Daughterboard has two Spartan-6 FPGAs, referred to as the "Gateway FPGA" and the "ASIC FPGA". The ASIC FPGA is replaced by your real ASIC chip in the "Real Trouble" Daughterboard.

The Gateway FPGA has the code for controlling the on-board power supplies, and for forwarding data between the full-duplex high-speed source-synchronous link to the ASIC FPGA and the LPC FMC connector (which goes to an ML-605 or similar Xilinx XUP host.) It also provides resources for clock generation.

Spartan-6 was used to keep the cost low ($200 for the GW FPGA), and because it allows a large voltage range (up to 3.3V) for I/O's, and because it allows tuning of both input and output delays, allowing for high-speed I/O. Termination is external for debug probing and to allow heat to dissipated outside of the chips, which are wirebond BGA and only have 3W budgets.

The board has (unless noted, these are connected to the GW FPGA):

Version 1.0 of the board is 10-layer impedance-controlled board, designed with Mentorgraphics PADS.

View the BaseJump Double Trouble Design Document.

View the BaseJump Double Trouble Version 1.00 Schematic.

View the BaseJump Double Trouble FPGA Ballouts.

View the BaseJump Double Trouble High Speed Firmware Design Document.
View the BaseJump Double Trouble V 1.0 Bootstrapping Document.

Download/view Double Trouble 1.0 Design Files.

View the Rev 1 BaseJump Double Trouble PCB Fab Quote, BaseJump Double Trouble PCB Fab Request,
BaseJump Double Trouble Stackup (from ChinaFastPCB)
and BaseJump Double Trouble Assembly Quote (Hughes Circuits).

(Note that the PCB fab quote includes "paste cost", which is the cost of
making metal stencils for doing your own in-house assembly. We experimented with
this--we purchased some reflow ovens--but decided to go outside for it, and
they did not use the stencils.)

Version 1.2 of the board is a 14-layer impedance-controlled board, designed with Mentorgraphics PADS.
It offers some tweaks for better power integrity (capacitors, 14-layers with better stackup and plane arrangement)
as well as optimized capacitor sizing and placement.

The BaseJump Real Trouble Motherboard (BaseJump Socket Compliant)

This daughterboard design is largely identical to the Double Trouble board but instead will have the BaseJump BGA footprint instead of the "ASIC FPGA". The board has been tested and is up and running in our lab.

The BaseJump High Speed FPGA Bridge

The BaseJump High Speed FPGA Bridge is designed to work with the BaseJump BGA package.
It is synthesizeable SystemVerilog that implements a high-speed DDR source synchronous communication channel.

It is designed to be instantiated into an ASIC, and allows high speed communication through the BaseJump BGA package to another FPGA. We also support, for Double and Real Trouble, an additional hop that goes from a "gateway" FPGA over FMC to an ML-605 or Zedboard which hosts the DRAM memory system and/or and PCI-E host to a PC. The idea is that if you reuse the BaseJump Socket Interface, you can attached your RTL verilog to a working I/O system with very little effort.


Note: we refactored these files to address SystemVerilog issues across FPGA synthesis tools -- these are the updated files.

See refactored files.

BaseJump BSG PCI Express Implementation

This module allows an Virtex-6 ML-605 board to communicate with Linux 2.6 via the PCI Express connector. The abstraction is a number of flow-controlled FIFOs that are mapped into user space Linux. Your user code reads and writes to the FIFOs via memory-mapped I/O.

Source code is available here:

UCSD has a PC<-->FPGA board infrastructure called RIFFA. It has a wider variety of supported boards, but focuses on DMA from DRAM. We would guess that the latency is higher but that the throughput is better.

The BaseJump RV-IOV (RISC-V Virtualization)

Further Steps

Contact information: Contact Prof. Michael B. Taylor for more information.

This work funded by National Science Foundation Grant #1059333
(Collaborative Research: II-NEW: Prototyping Platform to Enable Power-Centric Multicore Research).

Thanks to Prof. Chris Batten of Cornell and Prof. Steven Swanson for feedback and collaboration.

Thanks to Ningxiao Sun for his stellar Double Trouble PCB design, and for Scott Davidson, Shengye Wang, Luis Vega and Bunnie Huang for all of their engineering assistance on the board!

Terms: You may use this infrastructure at your own risk, and as long as you agree not to hold us liable for any issues that occur as a result of your use of the infrastructure. This infrastructure is intended for prototyping uses only and has not been validated for use in any product.