Title: SpecC and SpecCharts
 1SpecC and SpecCharts
- Reviewed and Presented by 
- Heemin Park and Eric Kwan 
- EE202A - Fall 2001 
- Professor Mani Srivastava
2Overview
- Current problems in embedded systems development 
- The solution  SpecC / SpecCharts 
- Key feature Program State Machine 
- Highlight of SpecC 
- Conclusion 
- Questions 
3Current Design Problem
- Prototype debugging occupy 43 of development 
 time
- Miscommunication of requirement 
- Ambiguous specifications 
- Absence of simulation and synthesis tool ?HUGE 
 design loop
- The reason  lack of a proper specification 
 language
4The solution SpecC  SpecCharts
- Avoid miscommunication of requirement and 
 incomplete / ambiguous specifications
- Proper specifications reduce debugging time by 
 29
- Allow development of synthesis and simulation 
 tools
- Simulate without building a prototype
Planning
Rapid Prototyping
Specification
Performance Evaluation
Implementation
AGILE DESIGN
Prototype 
 5Design Flow using SpecC
Structure / Implementation detail
Order / Timing detail
SpecC
Untimed (causality)
Functional
Timed (estimated) 
Structural
Bus- functional
Timing- accurate 
Cycle- accurate
RTL/IS 
 6Properties of embedded System
- VHDL support the following behavior of embedded 
 systems
- Behavior Decomposition (Partial) 
- Sequential Algorithm 
- Behavior Completion (Partial) 
- Not supported 
- State Transition 
- Exceptions 
7Why did others failed?
Characteristic SpecCharts SpecC VHDL Verilog Esteral State Charts
Behavioral decomposition Yes Yes Partial Yes Yes Yes
State Transition Yes Yes No No No Yes
Exception Yes Yes No Yes Yes Yes
Sequential algorithm Yes Yes Yes Yes Partial No
Behavioral completion Yes Yes Partial Yes Yes No 
 8SpecCharts and SpecC
- Same Idea, different implementation 
- SpecCharts is an extension to VHDL to tailored 
 for embedded system design
- SpecC  specification description language based 
 on C
- Both implement the idea of a Program State 
 Machine (PSM)
9Program State Machine(PSM)
- Hierarchical/Concurrent FSM  Programming 
 language
- Program-state(PS) 
- Status 
- Inactive 
- Executing 
- Complete 
- Computation 
- Leaf 
- Concurrent 
- Sequential 
- conditional transition arcs on completion or 
 immediately
10Program State Machine(Cont)
- SpecCharts 
- PS described by procedures based on VHDL 
- SpecC 
- PS described by procedures in a programming 
 language based on C
Sequential
Concurrent
Leaf
PSM model 
 11SpecChart Descriptions
behavior CheckCode type leaf is begin code_ok 
lt true for (i in 1 to 4) loop wait 
until tone / 1111 and toneevent if 
(tone / user_code(i)) then code_on 
lt false end if end loop end
Textual-version
Graphical-version
Transition on Complete(TOC)
Initial state
Complete state
Transition immediately(TI) (starts from boundary) 
 12Design Flow using SpecCharts
SpecChart Descriptions
SpecCharts to VHDL translator
VHDL Codes
VHDL Simulator
VHDL Synthesizer
VHDL Verification tool 
 13The SpecC Model
- Traditional model 
- Processes and signals 
- Mixture of computation and communication 
- Automatic replacement impossible
- SpecC model 
- Behaviors and channels 
- Separation of computation and communication 
- Plug-and-play
14The SpecC Language
- ANSI-C 
- Program is set of functions 
- Execution starts fromfunction main()
 / HelloWorld.c / include ltstdio.hgt void 
main(void)  printf(Hello World!\n)  
- SpecC 
- Foundation ANSI-C 
- Program is set of behaviors,channels, and 
 interfaces
- Execution starts frombehavior Main.main()
 // HelloWorld.sc include ltstdio.hgt behavior 
Main  void main(void)  printf(Hello 
World!\n)    
 15The SpecC Language
- Basic structure 
- Top behavior 
- Child behaviors 
- Channels 
- Interfaces 
- Variables (wires) 
- Ports
16The SpecC Language
 interface I1  bit630 Read(void) void 
Write(bit630)  channel C1 implements 
I1 behavior B1(in int, I1, out int) behavior 
B(in int p1, out int p2)  int v1 C1 c1 
B1 b1(p1, c1, v1), b2(v1, c1, p2) void 
main(void)  par  b1.main() 
b2.main()    
 17The SpecC Language
Sequentialexecution
FSMexecution
Concurrentexecution
Pipelinedexecution
 behavior B_pipe  B b1, b2, b3 void 
main(void) pipeb1.main() b2.main() 
 b3.main()   
 behavior B_seq  B b1, b2, b3 void 
main(void)  b1.main() b2.main() 
b3.main()  
 behavior B_fsm  B b1, b2, b3, b4, b5, b6 
void main(void)  fsm  b1 b2    
 behavior B_par  B b1, b2, b3 void 
main(void)  parb1.main() b2.main() 
 b3.main()    
 18Design Flow using SpecC
Structure / Implementation detail
Order / Timing detail
SpecC
Untimed (causality)
Functional
Timed (estimated) 
Structural
Bus- functional
Timing- accurate 
Cycle- accurate
RTL/IS 
 19Conclusion
- SpecCharts 
- PSM model of computation for embedded system 
- VHDL base limited support for embedded software 
- SpecC 
- Well-known high-level language with support of 
 PSM
- Design environment still developing 
- Architecture exploration, refinement, 
 communication synthesis,
20Questions 
 21References
- Literature 
- Vahid, F. Narayan, S. Gajski, D.D. SpecCharts 
 a VHDL front-end for embedded systems. IEEE
 Trans. on CAD, Vol.14(No.6), June 1995.
 Pp.694-706.
- SpecC Specification Language and Methodology, by 
 Gajski, Zhu, Dömer, Gerstlauer, Zhao, Kluwer
 Academic Publishers, 2000.
- Circuits and Systems, 2001, Tutorial Guide ISCAS 
 2001, The IEEE International
- The SpecC Language, pp.5.1_1-5.1_12. 
- Modeling and Design with SpecC, pp.5.2_1-5.2_12. 
- SpecC Design Environment, pp.5.6_1-5.6_4. 
- SpecC Open Technology Consortium, pp.5.7_1-5.7_5. 
- Online 
- SpecC web pages at UCIhttp//www.cecs.uci.edu/sp
 ecc/
- SpecC Open Technology Consortium 
 (STOC)http//www.specc.org/