-
Notifications
You must be signed in to change notification settings - Fork 1
nachiket/tdfc
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
------------------------------------------------------------------------------ ABOUT This document describes how to find, build, use, and maintain Eylon Caspi, [email protected] tdfc, the SCORE TDF compiler, version 1.160, 9/1/05. Nachiket Kapre, [email protected] tdfc, the SCORE TDF compiler with extensions for GraphMachine compilation, version 1.17, 8/27/2009. ------------------------------------------------------------------------------ FINDING TDFC (1) Distribution The latest version of tdfc, compiled for x86 Linux, is available via NFS on the U.C.Berkeley, Computer Science, BRASS group's file space: /project/cs/brass/a/tools/brass/gold/SCORE/tdfc/ (2) CVS tdfc source code lives in the BRASS CVS repository. At Berkeley, use: setenv CVSROOT /project/cs/brass/a/tools/brass/develop/CVSROOT Remotely, use: setenv CVSROOT :ext:[email protected]:/project/cs/brass/a/tools/brass/develop/CVSROOT setenv CVS_RSH ssh ------------------------------------------------------------------------------ DIRECTORY HIERARCHY + tdfc + CHANGES - History of changes + Makefile - Makefile to build tdfc + README.txt - This document + TODO - Future work + TODO-cc - Future work for ``tdfc -ecc'' (old?) + apps/ - Application build tree + everilog-158-BASE/ - Application build tree for tdfc 1.158 + everilog-160-BASE/ - Application build tree for tdfc 1.160 + cctest/ - Test cases to debug ``tdfc -ecc'' + debug/ - Test cases to debug tdfc + examples/ - TDF examples + i386-any-cygwin/ - Compile tdfc in here (Cygwin) + i386-any-linux/ - Compile tdfc in here (Linux) + info/ - Documentation + dev notes (some old) + powerpc-apple-darwin/ - Compile tdfc in here (Mac OS X) + src/ - tdfc Source code + tdfc -> i386-any-linux/tdfc - Symbolic link to compiled tdfc + test/ - Test cases to regress tdfc (old) + tools/ - Scripts to assist compiling TDF + verilog/ - Components for ``tdfc -everilog'' + misc/ - Hand coded Verilog examples, tests + queues/ - Hand coded Verilog queues + segmentops/ - Hand coded Verilog segment operators + zle/ - Hand coded zero-length encoder app ------------------------------------------------------------------------------ BUILDING TDFC tdfc is used primarily on x86 Linux, but it has been successfully compiled for: - x86 Linux (default Makefile), - x86 Windows with Cygwin, - Mac OS X - Solaris Required tools / libraries: - g++ 2.96 (or another version compatible with LEDA) - GNU flex (tested version 2.5.4) - GNU bison (tested version 1.5.4) - GNU make (tested version 3.80) - LEDA (tested version 3.7.1 - 4.2) About LEDA: - LEDA = Library of Efficient Data structures and Algorithms - Originally free from Max Plank Institut Informatik - Now commercial from Algorithmic Solutions <http://www.algorithmic-solutions.com/enleda.htm> - LEDA 3.7.1 source code: /project/cs/brass/a/tools/free/LEDA-3.7.1/ - LEDA 3.7.1 binaries for x86 Linux, g++ 2.96: (recommended) /project/cs/brass/a/tools/free/LEDA-3.7.1/LEDA-3.7.1-i386-linux-g++-2.96/ - LEDA binaries for other compilers / architectures: /project/cs/brass/a/tools/free/LEDA-*/ - Note, our versions of LEDA are old and incompatible with g++ 3 Building tdfc: - Edit ``Makefile'' for your architecture and LEDA version - cd i386-any-linux (or another architectural build directory) - ln -s ../Makefile - make depend - make tdfc - cd .. - ln -s i386-any-linux/tdfc ------------------------------------------------------------------------------ USING TDFC tdfc manual (man page): tdfc/info/tdfc.man Compiling to FPGA: tdfc/info/compiling-to-fpga-howto.txt tdfc/info/compiling-to-fpga-limitations.txt Compiling to C: tdfc/info/howto/tdfc.html TDF language reference: ``Programming SCORE'' <http://brass.cs.berkeley.edu/documents/programming-score.html> ------------------------------------------------------------------------------ COMPILING JOE'S SEVEN MULTIMEDIA APPS TO FPGA - Joe Yeh's seven multimedia applications, tested on Xilinx Virtex-II Pro: IIR - IIR filter jpeg_decode_nopar - JPEG image decoder jpeg_encode_nopar - JPEG image encoder mpeg_encode_nopar - MPEG 1 video encoder, {IPP} frame pattern mpeg_encode_PB - MPEG 1 video encoder, {IBBPBB} frame pattern wavelet - Wavelet image encoder wavelet_decode - Wavelet image decoder - cd apps - cp -rp everilog-160-BASE everilog-160 - new copy of appl. build tree - cd everilog-160 - cvs co `cat APPS` - get 7 applications - foreach app (`cat APPS`) pushd $app ./make-synplify - run tdfc on each application popd - To compile the resulting Verilog to FPGA, see: Compiling to FPGA: tdfc/info/compiling-to-fpga-howto.txt - Results: Stream graphs: tdfc/info/netlists-tdfc-1.160/ Structural statistics: tdfc/info/STATS-160-apps.txt Clock rates (no PAR): tdfc/info/STATS-160-L3W0-syn180-ise61i-platforms.txt Complete results: ``Design Automation for Streaming Systems'' <http://www.cs.berkeley.edu/~eylon/phd/> ------------------------------------------------------------------------------ MAINTAINING TDFC - Important source files: * tdfc/src/tdfc.cc - Main entry, cmd line, main compile flow * tdfc/src/tree.h - Base class for TDF abstract syntax tree * tdfc/src/tokenize_tdf.l - Flex tokenizer front-end * tdfc/src/parse_tdf.y - Bison lexical analyzer front-end * tdfc/src/cc*.cc - C back-end (``tdfc -ecc'') * tdfc/src/everilog*.cc - Verilog back-end (``tdfc -everilog'') * tdfc/src/Q_*.h - Verilog queues from tdfc/verilog/queues - Compiler flow: * tdfc/info/tdfc-passes-new.ppt - CVS discipline: * Check out from CVS: cvs co tdfc cd tdfc * Edit source files * Edit CHANGES file to reflect history, assign new version number * Check in to CVS: cvs commit * Tag version 1.XXX: cvs tag v1_XXX * Additional info: tdfc/info/howto/modify-tdfc.html ------------------------------------------------------------------------------
About
A compiler for the streaming SCORE framework
Resources
Stars
Watchers
Forks
Packages 0
No packages published