Hardware Compilation Reference Material
The process of compiling a design into hardware is quite
a bit different from that of compiling into software
(assembly language). You're not going to have to build a
hardware compiler in this course, but you are going to
hear a bit about how they work....
-
C-to-Gates compiler (C source code)
-
This is a dumb little compiler transating a tiny C-like
language into a gate-level circuit design.
-
Enhanced Version Of C-to-Gates compiler, CGI Interface
-
Here's a CGI interface allowing folks to play with the
above tool.
-
An overview of
Quine-McCluskey logic simplification
-
A nice little draft document I found on the WWW....
-
Bryant's Graph-Based Algorithms for Boolean Function Manipulation
(PDF)
-
This is a (locally cached) updated copy of Bryant's 1986 paper
on BDDs.
-
Karplus' Representing Boolean Functions with If-Then-Else DAGs
(PDF)
-
This is a (locally cached) copy of Karplus' 1988 paper,
which beside presenting a new BDD form, also suggests a
better algorithm to normalize BDDs.
-
BitC Compiler, CGI Interface
-
Here's a CGI interface allowing folks to play with the
the BitC Compiler, bitcc, which is used to compile
code for execution on Kentucky-architecture nanocontrollers.
The first step in this is constructing an optimized
gate-level logic formulation using only 1-of-2 muliplexors...
with is done (in part) using Karplus' algorithm to create
normal form representations. The compiler output here normally
goes through a serialization process, but is still essentially
a parallel circuit design at the stage shown here.
A scary example of simplification of word-level operations
using BitC is here.
-
BitC Compiler, Some Source Code
-
Here are a few key parts of the bitcc compiler
source code:
main.c,
parser.c,
ite.c,
val.c
-
Quine-McClusky Algorithm,
Interactive Demo
-
Well what do you know... I'm not the only person making WWW page
demos for class material after all! This is an excellent little
javascript implementation of Quine-McClusky simplification of a
logic formula. This one was created by Prof. Dr. Thorsten
Thormählen at Philipps-Universität Marburg.
-
PyEDA/Espresso
-
For minimizing two-level circuit designs that output multiple bits,
Quine-MycClusky isn't sufficient.
PyEDA does a pretty good job using the
Espresso library.
-
BBGates Demo
-
Here is a little demo of BBGates,
a compiler that converts C code into an optimized gate-level design.
Advanced Computer Architecture.