History of the SpecC system: ---------------------------- ========================================================== SpecC ========================================================== Releases, Publications, important changes: ------------------------------------------ Apr 15, 1997: Technical Report ICS-TR-97-15 "The SpecC+ Language" Daniel D. Gajski, Jianwen Zhu, Rainer Doemer Apr, 1997: Technical Report ICS-TR-97-16 "Syntax and Semantics of the SpecC+ Language" Jianwen Zhu, Rainer Doemer, Daniel D. Gajski Jun, 1997: Technical Report ICS-TR-97-26 "Essential Issues in Codesign" Daniel D. Gajski, Jianwen Zhu, Rainer Doemer Jul 29, 1997: Release 1.0 - "quick" implementation by Jianwen Zhu based on SUIF Aug 20, 1997: Start of implementation for version 2.0 Sep 04, 1997: Name changes: "SpecC+" is simplified to "SpecC", "actor" becomes "behavior" Oct, 1997: Book chapter, Kluwer, ISBN 0-7923-8013-4 "Essential Issues in Codesign" Daniel D. Gajski, Jianwen Zhu, Rainer Doemer in "Hardware/Software Co-Design: Principles and Practice" (edited by J. Staunstrup and W. Wolf) Dec, 1997: Paper at SASIMI'97 "Syntax and Semantics of the SpecC Language" Jianwen Zhu, Rainer Doemer, Daniel D. Gajski Dec 10, 1997: Release 2.0 alpha (V1.9.7) - first internal release (for project members only) - current features: SpecC parser, basic internal representation with im- and export (.sir files) - missing features: full type checking, full bitvector support, deparser, simulation model, refinement tools Mar, 1998: Technical Report ICS-TR-98-07 "Methodology for Design of Embedded Systems" Daniel D. Gajski, Gaurav Aggarval, En-Chou Chang, Rainer Doemer, Tadatoshi Ishii, Jon Kleinsmith, Jianwen Zhu Mar 11, 1998: Release 2.0 beta (V1.9.8) - second internal release (for project members only) - completely restructured data structure - initial simulator run-time library - missing features: full type checking, full bitvector support, deparser, simulation model, refinement tools Mar 31, 1998: Technical Report ICS-TR-98-13 "The SpecC Language Reference Manual" Rainer Doemer, Jianwen Zhu, Daniel D. Gajski May 21, 1998: Release 2.0 gamma (V1.9.9) - last pre-release (for project members only) - now bitvectors are supported Jun, 1998: Article in it+ti magazine 3/98, Germany "Specification and Design of Embedded Systems" Rainer Doemer, Daniel D. Gajski, Jianwen Zhu Jun, 1998: Internal Technical Report "The SpecC Internal Representation" Rainer Doemer Jun 03, 1998: Release 2.0 (V2.0.0) - first official release - SpecC compiler with SpecC simulation library, documentation and examples - limitations: type checking incomplete, translation of do-timing construct not implemented, no support of automatic refinement - 57687 lines of code Aug, 1998: Workshop contribution NATO-ASI "IP-centric Methodology and Design with the SpecC Language" Daniel D. Gajski, Rainer Doemer, Jianwen Zhu Sep 16, 1998: Release 2.0.1 (V2.0.1) - new features: support for "real" netlists (concatenated bitslices in port maps), extended SIR with explicit hierarchy for behaviors and channels (improved interface for refinement tools), better semantic checking (port maps), updated documentation, more examples - several (serious) bug fixes - 64053 lines of code Nov 25, 1998: Release 2.0.2 (V2.0.2) - initial toolset for SIR files: sir_list, sir_tree, sir_rename, sir_strip - improved source-level debugger support - improved C++ code generation (new structure) - support for IP components (behavior/channel declaration linked with IP simulation library) - new example demonstrating library and IP issues - specification of a new API for the SIR (Layer 2) with partial implementation - implementation of SIR garbage collector - bug fix in simulation runtime library for detecting deadlock conditions (program abortion with warning) - bug fix for binary import of files - bug fixes to solve severe name space and scoping problems within classes - bug fix in C++ code generation (declaration order) - bug fix to prohibit C++ keywords from being used as identifiers or labels - several other bug fixes - 84166 lines of code Dec 31, 1998: Release 2.0.3 (V2.0.3) - new SIR tools: sir_delete, sir_note - implementation of do-timing construct - improved semantic checking of types, etc. - complete implementation of SIR API, layer 2 - several minor bug fixes - 97612 lines of code Jan 19, 1998: Internal Technical Report "The SpecC Internal Representation", 2nd edition Rainer Doemer Apr 20, 1999: New system maintenance style - development trees moved to dedicated SpecC account - revision control enabled (CVS) May, 1999: Book chapter, Kluwer, ISBN 0-7923-5748-5 "IP-Centric Methodology and Design with the SpecC Language" Daniel D. Gajski, Rainer Doemer, Jianwen Zhu in "System-Level Synthesis" (edited by A. Jerraya, J. Mermet) June 20, 1999: Release 2.0.4 (V2.0.4) - SpecC profiler implemented and integrated (sprof) - SpecC system changed to use shared libraries (by default) - SpecC compiler extended (e.g. IP mode) and options cleaned up - SIR documentation updated - manual pages extended and updated - SpecC system test bench extended - more examples added (traffic light controller, etc.) - numerous, serious bugs fixed (scc, SIR, libsim, libbit) - several minor changes applied and system fine tuned - 105432 lines of code November 15, 1999: Release 2.0.5 (V2.0.5) - several minor bug fixes - added scheduling tools - 116954 lines of code March, 2000: SpecC Book, Kluwer, ISBN 0-7923-7822-9 ("green book") "SpecC: Specification Language and Methodology" D. Gajski, J. Zhu, R. Doemer, A. Gerstlauer, S. Zhao January 31, 2001: Release 2.0.6 (V2.0.6) - replaced libg++ with our own String.cc/String.h - fixed serious bugs (event queue handling, piped bit vectors) - reworked interrupt and trap handling - minor other bug fixes - 119215 lines of code May 2001: 2nd SpecC book, Kluwer, ISBN 0-7923-7387-1 ("yellow book") "System Design: A Practical Guide with SpecC" A. Gerstlauer, R. Doemer, J. Peng, D. Gajski May 24, 2001: Branch for SpecC Reference Compiler (SCRC) - reference compiler and simulator based on SpecC base - reference implementation of SpecC LRM 1.0 as defined by STOC - no refinement tools - very limited documentation and examples - no support for refinement (no API2) - no binary import/export June 1, 2001: Release 2.1.0 (V2.1.0) - separated into different packages: base package (compiler, simulator, libraries) and tools (scheduler, profiler, etc.) - compliance with the SpecC language standard 1.0 - brand new simulation engine with compliance test bench - non-native support for 'long long' types - major improvement of bit vector types - improved 'pipe' construct (pipeline flushing) - elimination of the obsolete 'delta' construct - non-native support of array assignment - support for open and constant port mappings - support for source code import/export - implicit initialization of static variables - semantic checking of port accesses/connections - many bug fixes - 112027 lines of code (base package) August 6, 2001: Release 2.1.1 (V2.1.1) - patch release with bug fixes and support of RedHat 7.1 - support of QuickThreads-based simulation library - bug fix for nested struct/union definitions - acknowledge new C++ keywords 'and', 'or', 'xor, etc. - improved semantic checking for port declarations - several minor fixes and cosmetic changes - 112684 lines of code (base package) January 3, 2002: Release 2.1.2 (V2.1.2) - renamed base package (compiler, simulator, SIR) to 'scc' - major improvement in code generator for better read- and debug-ability (new compiler options -st, -sT, -sw) - new support of Win32 based threads (on CygWin platform) - extended SIR API for use by refinement tools - improved semantic checking in compiler frontend - improved ANSI C++ compatibility of sources (gcc 3.0.x) - several bug fixes (including serious ones) - 119685 lines of code (base package) June 8, 2002: SCE pre-release for DAC 2002 in New Orleans (scc-20020718) - SCE: System-on-Chip Environment, including: - 'sce', graphical user environment - 'sced', integrated source editor - 'scc', integrated compiler and simulator - 'scprof', integrated profiler - 'scar', architecture refinement - 'scrtl', preliminary RTL synthesis - 131178 lines of code (base package) September 23, 2002: Release 2.2.0 alpha (V2.2.a) - first alpha release of SCE on CD-ROM, including - 'sce', graphical user environment - 'sced', integrated source editor - 'scc', integrated compiler and simulator - 'scprof', integrated profiler - 'scar', architecture refinement - 'sccr', communication refinement - 'scrtl', preliminary RTL synthesis - initial support for SpecC language version 2.0: - SpecC standard channel library introduced - support for local states in 'fsm' construct - support for 'wait' with AND-semantics - support for notational short-cuts - support for composite annotations - basic support for 'signal' and 'buffered' variables - major improvements in semantic checking - numerous SIR API extensions and improvements - new SIR tools 'sir_isolate', 'sir_wrap', and 'sir_import' - numerous limitations eliminated - numerous serious bugs fixed - 146439 lines of code (base package) December 12, 2002: SpecC Language Version 2.0 officially approved by the SpecC Technology Open Consortium April 14, 2003: Stable snapshot towards Release 2.2.0 beta (V2.2.b) - SCE beta release, new SCE features include - 'scos', RTOS refinement tool (dynamic scheduling) - 'scrtl', RTL refinement completely reworked - full support of SpecC language version 2.0: - full support for 'signal' and 'buffered' variables (including sliced and/or concatenated port maps) - support for 'rising' and 'falling' edges of signals - full support of 'fsmd' statement - new SpecC Language Reference Manual Version 2.0 included - new SIR tools 'sir_stats', 'sir_gen', 'sir_depend' - numerous serious bug fixes - 174030 lines of code (base package) December, 2003: Snapshot towards Release 2.2.0 gamma (V2.2.c) - initial support for SpecC language version 2.1 - 'after' and 'piped' clauses in 'fsmd' - new SIR features - new scope checking in SIR API 2 - new parent statement pointers - clear distinction between functions and methods (SIR_TYPE_FUNCTION vs. SIR_TYPE_METHOD) - tighter semantic checking - scoping of 'case', 'continue', 'break' statements, etc. - well-restricted 'switch'-'case'-'default' in 'fsmd' - state-transition analysis in 'fsmd' - numerous bug fixes - 180443 lines of code (base package) June 24, 2004: SpecC Reference Compiler Release 2.0 (V2.0) - first open source release of version 2.0 language standard - complete support of SpecC language version 2.0 - optional support for 'piped' and 'after' clauses 'fsmd' - includes SpecC standard channel library - ~115000 lines of code June 24, 2004: Release 2.2.0 (V2.2.0) - synchronized release with SCRC Version 2.0 - maintenance and compatibility issues and fixes - 181377 lines of code (base package) Rainer Doemer, June 24, 2004.