Raw Resources
                  Michael Taylor, Paul R. Johnson


Some of the links on this page are for internal use only by the Raw group at MIT. Others may not be able to follow them.

The Raw Simulator

For information on the Raw simulator (btl) and the Raw programming environment (starsearch) contact Paul R. Johnson (prj@mit.edu).

The Raw Processor Specification

The Raw specification is located on the main raw document website. It describes the ideas behind the Raw processor. It is based off of this master's thesis. The first 13 chapters are largely unmodified from the thesis of September 1999. They describe the ideas behind the Raw microprocessor, but some of the details (buffer sizes, number of pipeline stages) have changed since. The 14th chapter is kept up-to-date and is used as the canonical reference for the processor design. This chapter assumes that you are very familiar with the MIPS R4000.
The Raw specification is maintained by Michael Taylor.

The Raw Introuduction Day

Videos of presentations discussing various aspects of the Raw chip itself and how to program for it are available here.

Raw Software Engineering tools

The Raw bugzilla bug tracking database is maintained by Ben Greenwald.
Use this to report bugs in the infrastructure and chip.

The Raw blame annotated and cross-referenced source repository is maintained by David Wentzlaff.
This tool can be used to search across all of the raw source code for filenames, text strings, and regular expressions. You can also browse the source.
starsearch is the Raw testing infrastructure and module test repository. Starsearch is a highly leveraged collection of Makefiles that allows new Raw group members to write module tests and applications on Raw and automatically run them on both the verilog and .c simulations of the processor. The starsearch repository also includes a large number of tests that have been written by Raw group members. The tests were run as a regression each night. Each RTL verilog bug that was found by a raw group member earned them a star on the "star chart" outside of NE43-626a.
The starsearch source is maintained by Michael Taylor, Walter Lee, and David Wentzlaff.
btl is the raw cycle-accurate simulator. It matches the hardware behaviour exactly (although the sizes of rams and number of tiles can be configured), but has added debugging functionality. The goal of btl was originally to develop the architecture. At this point, btl's purpose is to aid in the verification of the Raw processor and as a test-bed for raw programming..

btl features a interpretive pipeline simulation engine, around which is wrapped the bC extension language interpreter. bC is a byte-code compiled, interpreted, threaded dialect of C. The bug user interface and machine-level debugging support layer of the simulator are all written in bC. It is very easy to add your own commands to bug by writing your own .bc code and linking it in. In fact, we recommend that you do so. The description of the environment (boot roms, DRAMS, pci buses, print devices) surrounding the simulation raw chip is written in bC, and is user-configurable (see the advanced document on btl). The same devices are re-used in the crudo simulation as well, through the use of the rawpli.

btl replaces rawsim,  which was much less accurate. if you should see references to rawsim in a document, it is likely that you are reading an outdated version.
The btl source is maintained by Michael Taylor.

rgdb is a port of the GNU Debugger ( gdb) that can be used to debug programs running on a Raw board. Initial documentation is available here.
rbinutils is the raw gnu binutils port. It is capable of assembling and creating binaries for both the processor and the static switch.
The rbinutils source is maintained by Ben Greenwald.
rgcc is the raw gcc port. It is used to write OS code and serial test applications for the Raw processor.  Based off of the GCC 2.8.1 for MIPS, it is currently the most robust of our compilers. It contains some minor modifications to match the Raw ISA, but no parallelization support. It is normally used transparently under the starsearch Makefile infrastructure.
The rgcc source is maintained by Matt Frank and Michael Taylor.
archlib is a collection of include files that add support for GCC for items that are best done in assembly language, or at very low level. Functions are implemented that access SPRs, send and receive messages on all networks, calculate population count/parity, and manipulate the caches.
The archlib source is maintained by Michael Taylor.
StreamIt is a programming language and a compilation infrastructure, specifically engineered for modern streaming systems. It is designed to facilitate the programming of large streaming applications, as well as their efficient and effective mapping to a wide variety of target architectures, including commercial-off-the-shelf uniprocessors, multi-clustered architectures, and the emerging class of grid-processors. An implementation for use with Raw exists. StreamIt can be downloaded from the StreamIt website.
rawcc is a prototype raw parallelizing compiler, implemented using SUIF. It takes a sequential C or fortran program and parallelizes it across the raw tiles. The focus of this compiler is more to advance compiler research than to be a generic systems compilation tool. This tool is not released for general usage. We recommend you contact Walter Lee for a list of usage guidelines before trying to use this tool.
The rawcc source is maintained by Walter Lee.
Crudo is the synthesizeable RTL verilog model of the Raw processor. It is written to be synthesized to the IBM SA-27E .15 micron ASIC process.
The crudo source is maintained by Jason Kim (processor), Michael Taylor (cache, testbench) and Fae Ghodrat (switch).
rawpli links the bC devices to the crudo RTL simulation of the chip. It also provides "fastboot functionality" which allows us to short-circuit the snakeboot (intravenous) boot process and direct load the rams and registers of the RTL simulation.
The rawpli source is maintained by Ben Greenwald.
intravenous is the raw bootstrapping system. It is used to package up a simple OS loader program into a boot image (.rbf) that is placed on a serial rom and streamed into the side of the processor in a snake-like fashion. This OS code (see RawOS) is then responsible for pulling over the system image from the PCI bus. We also use the intravenous to boot directly into our module tests. This allows us faster simulation times and less reliance on advanced functionality (like PCI.)

The intravenous source is maintained by Ben Greenwald and Michael Taylor.