230 likes | 371 Vues
This presentation outlines key concepts in software synthesis for embedded systems, emphasizing hardware/software co-design. It covers essential background, including the significance of reactive real-time systems, and explores high-level design and formal languages in optimizing software from specifications. The presentation also discusses task synthesis, language translation, code generation, and scheduling, demonstrating the critical balance between performance and resource management. Key examples highlight how structured approaches and tools can enhance efficiency and execution in embedded software applications.
E N D
Software SynthesisEE202A PresentationOctober 18, 2001 Young H. Cho and Seung Hyun Kim
Outline • Background • HW/SW Co-design • Software Synthesis • Summary
Background • Embedded Software • Constrained Structure • “Simple,” Multiple Tasks • Target Architecture
HW/SW Co-design • Reactive Real-time System • Mixed HW/SW System • Software – Flexibility • Hardware – Performance SW HW
HW/SW Co-Design Formal Languages Partitioning SW Synthesis HW Synthesis Co-Simulation And Formal Verification RTOS Tasks Logic Synthesis Code Optimization Logic Optimization Board Level Prototyping
A C B Partitioning High-Level Design • Formal Languages • Textual Representation • Graphical Representation • Design Partitioning • Platform Resource • HW/SW Synthesis
A C B Software Synthesis • Goal: Optimized software from high-level specification • Issues to consider • Target hardware support • Retargetable compilers • Result: Efficient code for the target processor begin X1=TaskA(W); X2=TaskA(W); Y=TaskB(X1); result=TaskC(X2,Y); end
Code Generation • Static Code • Static (object) code for each tasks • Library of inline codes • Code optimization • Task Handling • Resource management • Static/dynamic scheduling • Communication
Task A Upsample 1 to 3 main(Samples *In) { while() { /* Schedule 2A */ for (j=0;j<2;j++) { /* inline code: Task A */ for (i=0;i<3;i++) { OutA[j*3+i]=InA[j]; } } for (k=0;k<3;k++) { /* inline code: Task B */ Reg=OutA[k*2] +OutA[k*2+1]; OutB[k]=Reg>>1; } } } for (i=0;i<3;i++) { Out[i]=In; } 3 2 (TaskA) 3 (TaskB) 2 Task B Downsample 2 to 1 Reg=In[0]+In[1]; Out=Reg>>1; High-Level Description Static Code Code Generation & Schedule Software Synthesis Example
Programming Models • FSM Model • Co-design Finite State Machine (CFSM) • Dataflow Models • Synchronous Dataflow (SDF) • Boolean Dataflow • Dynamic Dataflow • Processor Network • Others
CFSM • Extended FSM • Globally Asynchronous Locally Synchronous (GALS) • Unbiased towards HW or SW • Reactive, control-dominated systems • Size of the systems that can be mapped
SW Synthesis with CFSM • Software Graph (S-Graph) • Task Synthesis • Real-Time Operating System (RTOS) • Machine Code Compilation
BEGIN present_c = 1 false true a = ?c false true a’ := a a’ := a + 1 a’ := 0 emit_y := 0 emit_y := 1 END S-Graph • Control/Data-Flow Diagram • Directed Acyclic Graph (DAG) module simpleCFSM: input c: integer; output y; var a: integer in loop await c; if a = ?c then a := 0; emit y; else a := a + 1; end if end loop end var end module
Task Synthesis • Construction • Translation of transition function of CFSM • Recursively built from the reactive function • Optimization • Reordering or collapsing test nodes • Code-size estimation • Translation • Target language (e.g., C code)
RTOS • Scheduling • Individual CFSM • Communication Mechanisms • Set of flags • Memory mapped I/O port of the micro-controller • Polling or interrupts • Synthesis or Commercial RTOS
Cost/Performance Estimation • Accurate and Quick Estimation • Code size • Min/max execution time • Considerations • Code structures • System platform • Solution • Assign cost/timing parameters
a 1 D 2 b 1 2D 2 c SDF • Digital Signal Processing • Graphical Representation • Actors/Nodes • Directed edges • Delays • Synchrony • Consume Tokens • Produce Tokens • Fixed number of Tokens
Schedule/Memory • Static scheduling • Determine task buffer size • Memory efficient edge delay • Deterministic at compile time
SW Synthesis with SDF • Library of actor code blocks • Determine static schedule • Optimal code size • Performance • Inline code using schedule
Summary • HW/SW Co-design • Software Synthesis • Highly optimized code • Timing constraints • Efficient Resource Usage • Highest performance per cost • Control over implementation cost
Related Research • Berkeley HW/SW Co-Design Group • http://www-cad.eecs.berkeley.edu/~polis • Berkeley Ptolemy Group • http://ptolemy.eecs.berkeley.edu • CHINOOK • http://www.cs.washington.edu/research/chinook/ • VULCAN • Cadence Cierto VCC • Jeckle: the JAVA ECL compiler
References • A. Sangiovanni-Vincentelli, “What is software synthesis?,” Computer Design Editorial, Department of EECS, UC Berkeley, Berkeley, CA, June 1997. • Berkeley POLIS Group, “A Framework for Hardware-Software Co-Design of Embedded System,” POLIS Website, Department of EECS, UC Berkeley, Berkeley, CA, 1997. • F. Thoen, M. Cornero, G. Goosens, and H. DeMan, “Software synthesis for real-time information processing systems,” ACM SIGPLAN, Vol. 30, No. 11, November 1995. • Linkoping University HW/SW Co-design Course Website, http://www.ida.liu.se/~zebpe/codesign/, 1998. • EE249 “Design of Embedded Systems: Models, Validations, and Synthesis,” http://www-cad.eecs.berkeley.edu/~polis/class/index.html, UC Berkeley, CA. 2001. • P. Chou, and G. Borriello, “Software scheduling in the co-synthesis of reactive real-time systems,’ 31st ACM/IEEE Design Automation Conference, San Diego, CA, pp. 1-4, June 1994. ..
References • E. Lee, “Embedded software,” UC Berkeley ERL Memorandum M01/26, http://ptolemy.eecs.berkeley.edu/publications/papers/01/embsystems/ • F. Balarin, L. Lavagno, P. Murthy, and A. Sangiovanni-Vincentelli, “Scheduling for embedded real-time systems,” IEEE Design & Test of Computers, Vol. 15, No. 1, pp. 71-82, January-March 1998. http://ielimg.ihs.com/iel3/54/14269/00655185.pdf • S. Bhattacharyya, R. Leupers, and P. Marwedel, “Software synthesis and code generation for signal processing systems,” IEEE Transactions on Circuits and Systems-II: Analog and Digital Signal Processing, Vol. 47, No. 9, pp. 849-875, September 2000. • S. Bhattacharyya, P. Murthy, and E. Lee, “Synthesis of embedded software dataflow specifications,” Journal of VLSI Signal Processing Systems, Vol. 21, No. 2, pp. 151-166, June 1999.