This page is under heavy construction and is intended to be the central repository of all information and links related to the design and implementation of BORPH.

BORPH is an Operating System designed for FPGA-based reconfigurable computers. It is an extented version of Linux that handles FPGA resources as if they were CPU's. BORPH introduces the concept of hardware process which behaves just like a normal user program except it is a hardware design running on a FPGA. Hardware processes behave like normal software programs. The BORPH kernel provides standard system services, such as file system access, to hardware processes, allowing them to communicate with the rest of the system easily and systematically.

Currently BORPH runs on the BEE2. It is being ported to the new ROACH board.

Some information about BORPH as implemented on BEE2 can be found from the BEE2 wiki under the page Bee2OperatingSystem.


BORPH: Berkeley Os for ReProgrammable Hardware. (Adapted from my qualifying exam at Cal) [pdf]


Please see my Publication page.


You can download a snapshot of the current BORPH source tree from here. Please refer to the bee2 wiki for more information.

Installation on ROACH

Compiling the kernel

  1. Download and untar the BORPH code into a directory, and move into the directory:
    $ tar -jxvf borph-snapshot-<DATE>.tar.bz2 && \
      cd borph-snapshot-<DATE>
    where <DATE> is the date of the snapshot you have downloaded.
  2. Copy the ROACH configuration file:
    $ cp arch/ppc/configs/roach_defconfig .config
  3. Make the current config:
    $ make oldconfig ARCH=ppc
  4. If your host machine is not a powerpc, then a powerpc cross compiler needs to be installed on you machine, and be available in the PATH environment variable.

    I have used the DENX ELDK ppc cross compiler (available at

    Compile a kernel image for u-boot (change the CROSS_COMPILE argument to your ppc cross compiler prefix):

    $ make uImage ARCH=ppc CROSS_COMPILE=ppc_4xx-
  5. The compiled image will be found at arch/ppc/boot/images/uImage

Booting the kernel from u-boot

  1. If u-boot is not installed, it needs to be copied to the flash memory so that the PPC will boot into it on power-up. (We use the Macraigor Systems debug tools to directly write the image into flash from the PPC).

    The u-boot distribution for ROACH is on the ROACH repository at KAT.

  2. Once u-boot is running, the BORPH kernel image needs to be copied to memory and booted.

    The procedure that I used to do this was to setup a TFTP server on another pc, and connect the ROACH to the PC with an ethernet cable - I then downloaded the image using tftp (e.g tftp 0x8000000 uImage).

    Another way to get the kernel image onto ROACH would be to use a USB drive.

  3. Set the correct boot arguments for the kernel in u-boot (set with the bootargs environment variable).

    The arguments that I used were to set a static IP address to the board, and boot a root file system from a NFS server.

  4. Now BORPH can be booted by running the image from memory (e.g. bootm 0x8000000).

Installation on BEE2

Building the BORPH kernel follows the same instructions for building a standard Linux kernel. A default config file is located at borph_tree/arch/ppc/configs/b2borph_defconfig. A quick summary of steps you will need:
  • tar xzvf borph-version.tar.gz
  • cd borph
  • cp arch/ppc/configs/b2borph_defconfig .config
  • make oldconfig
  • make dep
  • make zImage

Setting Up Root File System

For information on setting up a Debian root file system for use with BORPH on BEE2/ROACH, see this page.