Components and abstraction levels for system-on-chip Giovanni Funchal STMicroelectronics Verimag Synchron’2008
Introduction Simulation mechanics In practice Contributions Future work Imagine a system… Display USB FM radio PAL/NTSC TV-out Internet radio, podcasts 16Gb Flash Browser 256Mb RAM WLAN RF MPEG4 5Mp camera Bluetooth Internet 2Mp camera WCDMA, GSM MP3 E-mail MMS/SMS Java Operating Maps System GPS Microphone Keypad Battery Giovanni Funchal Components and abstraction levels for system-on-chip 2
Introduction Simulation mechanics In practice Contributions Future work … -on-chip STMicroelectronics Nokia N96 Nomadik STn8815 Giovanni Funchal Components and abstraction levels for system-on-chip 3
Introduction Simulation mechanics In practice Contributions Future work Design flow RTL model Giovanni Funchal Components and abstraction levels for system-on-chip 4
Introduction Simulation mechanics In practice Contributions Future work Register transfer level Precise description of hardware Synchronous, deterministic Giovanni Funchal Components and abstraction levels for system-on-chip 5
Introduction Simulation mechanics In practice Contributions Future work Design flow RTL model Fabrication Giovanni Funchal Components and abstraction levels for system-on-chip 6
Introduction Simulation mechanics In practice Contributions Future work Design flow Software RTL model Fabrication Giovanni Funchal Components and abstraction levels for system-on-chip 7
Introduction Simulation mechanics In practice Contributions Future work Design flow Too late! Software RTL model Fabrication Giovanni Funchal Components and abstraction levels for system-on-chip 8
Introduction Simulation mechanics In practice Contributions Future work Design flow Software RTL model Fabrication Giovanni Funchal Components and abstraction levels for system-on-chip 9
Introduction Simulation mechanics In practice Contributions Future work Design flow Software Simulator RTL model Fabrication Giovanni Funchal Components and abstraction levels for system-on-chip 10
Introduction Simulation mechanics In practice Contributions Future work Design flow Too slow! Software Simulator RTL model Fabrication Giovanni Funchal Components and abstraction levels for system-on-chip 11
Introduction Simulation mechanics In practice Contributions Future work Design flow Simpler, faster Software TLM model Simulator RTL model Fabrication Giovanni Funchal Components and abstraction levels for system-on-chip 12
Introduction Simulation mechanics In practice Contributions Future work Abstraction levels TLM models • Early (sw dev) • Less precise • Fast RTL models • Late (hw fab) • Precise • Slow Giovanni Funchal Components and abstraction levels for system-on-chip 13
Introduction Simulation mechanics In practice Contributions Future work Transaction level modeling Abstract transfers of data Asynchronous, non-deterministic Giovanni Funchal Components and abstraction levels for system-on-chip 14
Components and abstraction levels for system-on-chip Giovanni Funchal STMicroelectronics Verimag Synchron’2008
Introduction Simulation mechanics In practice Contributions Future work Components Component Target port Initiator port Data interface Interrupt interf. Giovanni Funchal Components and abstraction levels for system-on-chip 16
Introduction Simulation mechanics In practice Contributions Future work Components What’s inside? Giovanni Funchal Components and abstraction levels for system-on-chip 17
Introduction Simulation mechanics In practice Contributions Future work SystemC • Processes (C++ code) Ready Running Waiting Giovanni Funchal Components and abstraction levels for system-on-chip 18
Introduction Simulation mechanics In practice Contributions Future work SystemC • Processes (C++ code) • Events Ready Running Waiting Giovanni Funchal Components and abstraction levels for system-on-chip 19
Introduction Simulation mechanics In practice Contributions Future work SystemC • Processes (C++ code) • Events • Scheduler Ready Running Waiting Giovanni Funchal Components and abstraction levels for system-on-chip 20
Introduction Simulation mechanics In practice Contributions Future work SystemC • Processes (C++ code) – wait() • Events • Scheduler Ready Running wait() Waiting Giovanni Funchal Components and abstraction levels for system-on-chip 21
Introduction Simulation mechanics In practice Contributions Future work Transactions in SystemC void irq() { port. irq(); … } Giovanni Funchal Components and abstraction levels for system-on-chip 22
Introduction Simulation mechanics In practice Contributions Future work Transactions in SystemC void irq() { port. irq(); … } Interface function calls Giovanni Funchal Components and abstraction levels for system-on-chip 23
Introduction Simulation mechanics In practice Contributions Future work An example Video Display decoder controller Memory Giovanni Funchal Components and abstraction levels for system-on-chip 24
Introduction Simulation mechanics In practice Contributions Future work Decoder: Display: decode(image); do { write (mem, image); x = read (flag); write (flag, true); } while(!x); wait(irq); img = read (mem); display(img); irq (); Giovanni Funchal Components and abstraction levels for system-on-chip 25
Introduction Simulation mechanics In practice Contributions Future work Decoder: Display: decode(image); do { write (mem, image); x = read (flag); write (flag, true); } while(!x); wait(irq); img = read (mem); display(img); irq (); Giovanni Funchal Components and abstraction levels for system-on-chip 26
Introduction Simulation mechanics In practice Contributions Future work Decoder: Display: decode(image); do { write (mem, image); x = read (flag); write (flag, true); } while(!x); wait(irq); img = read (mem); display(img); irq (); Giovanni Funchal Components and abstraction levels for system-on-chip 27
Introduction Simulation mechanics In practice Contributions Future work Decoder: Display: decode(image); do { write (mem, image); x = read (flag); write (flag, true); } while(!x); wait(irq); img = read (mem); display(img); irq (); Giovanni Funchal Components and abstraction levels for system-on-chip 28
Introduction Simulation mechanics In practice Contributions Future work Decoder: Display: decode(image); do { write (mem, image); x = read (flag); write (flag, true); } while(!x); wait(irq); img = read (mem); display(img); irq (); Giovanni Funchal Components and abstraction levels for system-on-chip 29
Introduction Simulation mechanics In practice Contributions Future work Decoder: Display: decode(image); do { write (mem, image); x = read (flag); write (flag, true); } while(!x); wait(irq); img = read (mem); display(img); irq (); Giovanni Funchal Components and abstraction levels for system-on-chip 30
Introduction Simulation mechanics In practice Contributions Future work yield() • Like “wait()” but without saying what it is waiting for • The scheduler may choose the same process again Giovanni Funchal Components and abstraction levels for system-on-chip 31
Introduction Simulation mechanics In practice Contributions Future work Decoder: Display: decode(image); do { write (mem, image); yield(); write (flag, true); x = read (flag); wait(irq); yield(); } while(!x); img = read (mem); display(img); irq (); Giovanni Funchal Components and abstraction levels for system-on-chip 32
Introduction Simulation mechanics In practice Contributions Future work Decoder: Display: decode(image); do { write (mem, image); yield(); write (flag, true); x = read (flag); wait(irq); } while(!x); img = read (mem); display(img); irq (); Giovanni Funchal Components and abstraction levels for system-on-chip 33
Introduction Simulation mechanics In practice Contributions Future work Decoder: Display: decode(image); do { write (mem, image); yield(); write (flag, true); x = read (flag); wait(irq); } while(!x); img = read (mem); display(img); irq (); Giovanni Funchal Components and abstraction levels for system-on-chip 34
Introduction Simulation mechanics In practice Contributions Future work Decoder: Display: decode(image); do { write (mem, image); yield(); write (flag, true); x = read (flag); wait(irq); } while(!x); img = read (mem); display(img); irq (); Giovanni Funchal Components and abstraction levels for system-on-chip 35
Introduction Simulation mechanics In practice Contributions Future work Decoder: Display: decode(image); do { write (mem, image); yield(); write (flag, true); x = read (flag); wait(irq); } while(!x); img = read (mem); display(img); irq (); Giovanni Funchal Components and abstraction levels for system-on-chip 36
Introduction Simulation mechanics In practice Contributions Future work Observations • “yield()” 1. Avoids livelocks by possibly giving other processes a chance to run 2. Finds bugs (next slides) Giovanni Funchal Components and abstraction levels for system-on-chip 37
Recommend
More recommend