[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
gEDA-user: Open-source C compiler targets FPGAs
Open-source C compiler targets FPGAs
By Richard Goering, EEdesign
Oct 18, 2002 (2:41 PM)
URL: http://www.eedesign.com/story/OEG20021018S0060
LOS ALAMOS, N.M. — Seeking to eliminate the need for detailed hardware
expertise for FPGA design, a research group at the Los Alamos National
Laboratory (LANL) here has developed an open-source C compiler for
reconfigurable logic. Called Streams-C, the compiler doesn't generally
yield the performance of RTL design but claims to boost productivity by
10 to 100 fold.
Streams-C accepts a subset of the C programming language, performs
behavioral synthesis, and outputs synthesizable RTL VHDL code. It
currently targets Xilinx Virtex-2000 devices on Annapolis Microsystems'
Firebird board, but claims to be easily retargetable.
The compiler was developed under Defense Advanced Research Projects
Agency funding under the direction of Maya Gokhale, project leader for
deployable adaptive processing systems at LANL. Gokhale said she'd been
developing compilers since 1988, and wrote a compiler for the Splash
machine, one of the first reconfigurable computers.
Then, she came across a new approach — a compiler that relies heavily
on parallel processing. "After a few years of looking at the problem, I
realized that most of the application space could be described well
with a stream-oriented communicating sequential processes model," she
said.
The result was Stream-C, which is freely available for research and
government purposes, with a commercial licensing process underway.
Gokhale said that in addition to LANL, several universities are using
the compiler, and EDA companies have expressed interest in
commercializing it.
Gokhale said the compiler makes FPGA design available to software
engineers, but they should still have an "abstract notion" of
hardware. "One way to get performance is to tile application-specific
arithmetic units across a chip," she noted. "Telling the compiler to
unroll inner loops is a way to do that."
What's not needed, she said, is a knowledge of the hardware at a clock
cycle level. In fact, Streams-C doesn't provide any access to what's
going on at this level. In contrast to SystemC, which provides both
behavioral and structural views, Streams-C is purely behavioral. It
assigns operations to clock cycles, thus providing behavioral
synthesis.
As with most highly automated techniques, there's a performance and
area tradeoff for using the compiler. Gokhale said that LANL has run
some comparisons to designs done at the register-transfer level by
experienced hardware engineers, and found comparisons ranging
from "nearly comparable" to one design that had two times the clock
frequency and one-fourth the area of the chip generated with Streams-C.
That faster and smaller design, however, was completed by an
experienced hardware designer who spent six months optimizing it.
Streams-C, in contrast, can get from C to VHDL in "seconds," Gokhale
said. "I would say the productivity is like a factor of 10 or 100 over
hand-done hardware," she noted.
In addition to design creation, Streams-C comes with a simulator. "You
can simulate the logic of the parallel program at a functional level,
and get rid of a lot of deadlock and livelock conditions," Gokhale
said.
Streams-C accepts a subset of C. It includes array records, but doesn't
handle generalized pointers. It has pragma extensions that let users
assign arrays to different memories. Additionally, the user creates an
architecture definition file that describes the target FPGA board.
A shortcoming of pure C is that it doesn't represent concurrency. The
notion of concurrency does exist in Streams-C, Gokhale said, but in a
different fashion from HDLs. "It's a parallel programming language,"
she said. "You have an annotation where you say a subroutine is really
an independent process. In the main program you initiate each of the
processes, and they're concurrently activated."
Streams-C, which runs on Linux PCs, uses the Stanford University
Intermediate Format (SUIF) compiler tool set to parse and analyze C
programs. Two passes have been added to the SUIF compiler flow — one
for analysis and scheduling, another for VHDL generation. It can
pipeline inner loops and can unroll loops, and it automatically
schedules memory access from external memories.
Gokhale said Streams-C can be targeted to platforms other than Firebird
through the architectural definition file. The user would also need to
rebuild the FIFOs for the new target FPGA.
While Streams-C is "completely open" for research or government work,
Gokhale said LANL is still working out licensing for commercial
users. "One of the contributions of this work is that the source code
is completely open," she said. "Anybody can look at it and see how to
do behavioral synthesis. It's very useful as a teaching tool."
Streams-C is available from LANL's reconfigurable computing web site.
That site also offers a library of pipelined, parameterized modules for
floating-point operations, a digital receiver library, and Virtex
radiation test software.