ProtoFlex   Carnegie Mellon

Documentation

ProtoFlex

ProtoFlex is a simulation architecture, which uses FPGAs to accelerate full system multiprocessor simulation and to facilitate high-performance instrumentation. Prior FPGA approaches that prototype a complete system in hardware are either too complex when scaling to large-scale configurations or require significant effort to provide full-system support. In contrast, ProtoFlex virtualizes the execution of many logical processors onto a consolidated number of multiple-context execution engines on the FPGA. Through virtualization, the number of engines can be judiciously scaled, as needed, to deliver on necessary simulation performance at a large savings in complexity. Further, to achieve low-complexity full-system support, a hybrid simulation technique called transplanting allows implementing in the FPGA only the frequently encountered behaviors, while a software simulator preserves the abstraction of a complete system.

BlueSPARC

BlueSPARC is a full-system FPGA-based simulator that models the architectural behavior of a 16-CPU UltraSPARC III SMP server and embodies the two key concepts of the ProtoFlex simulation architecture: time-multiplexed interleaving and hybrid simulation with transplanting.

Introduction

General

Directory Structure

The source code of BlueSPARC is organized according to the following directory structure:

  • build: contains generated Verilog files. (This will eventually contain all necessary files to compile the project.)
  • include: containsC include files for the PowerPC. The generate_types.sh script creates mirrored type-definitions.
  • lib: These are Bluespec-related Verilog primitives.
  • logs: date-stamped compile logs
  • obj: Contains intermediate generated files (e.g. *.bi *.bo *.ba). This will eventually contain all necessary files to compile the project.
  • scripts:
    • check_warns.sh: Will go through entire source code and check for “TODO” or “FIX_ME” flags.
    • compile_vcs.sh: Will generate self-contained VCS simulation.
    • compile_xst.sh: Will generate self-containted script to synthesize project using XST.
    • Rest of scripts probably deprecated
  • rtl: Contains all Bluespec and Verilog rtl source code.

ProtoFlex Monitor (PFMON)

Simics

Simics Listener

RTL (Bluespec & Verilog)

I/O Transplants

Micro-Transplants

Simulation

PLI

Other