Stream-Oriented FPGA Computing in the Streams-C High Level Language

  • Authors:
  • Maya B. Gokhale;Janice M. Stone;Jeff Arnold;Mirek Kalinowski

  • Affiliations:
  • -;-;-;-

  • Venue:
  • FCCM '00 Proceedings of the 2000 IEEE Symposium on Field-Programmable Custom Computing Machines
  • Year:
  • 2000

Quantified Score

Hi-index 0.00

Visualization

Abstract

Stream oriented processing is an important methodology used in FPGA-based parallel processing. Characteristics of stream-oriented computing include high-data-rate flow of one or more data sources; fixed size, small stream payload (one byte to one word); compute-intensive operations, usually low precision fixed point, on the data stream; access to small local memories holding coefficients and other constants; and occasional synchronization between computational phases. In this paper, we describe language constructs, compiler technology, and hardware/software libraries embodying the Streams-C system, which has been developed to support stream-oriented computation on FPGA-based parallel computers. The language is implemented as a small set of library functions callable from a C language program.The Streams-C compiler synthesizes hardware circuits for multiple FPGAs as well as a multi-threaded software program for the control processor. Our system includes a functional simulation environment based on POSIX threads, allowing the programmer to simulate the collection of parallel processes and their communication at the functional level. Finally, we present an application written in both Streams-C and hand-coded in VHDL. Compared to the handcrafted design, the Streams-C-generated circuit takes 3x the area and runs at 1/2 the clock rate. In terms of time to market, the hand-done design took a month to develop by an experienced hardware developer. The Streams-C design took a couple of days, for a productivity increase of 10x.