systemverilogcsp modeling digital asynchronous circuits
play

SystemVerilogCSP: Modeling Digital Asynchronous Circuits Using - PowerPoint PPT Presentation

SystemVerilogCSP: Modeling Digital Asynchronous Circuits Using SystemVerilog Interfaces Arash Saifhashemi 1 Peter A. Beerel 1,2 1 Ming Hsieh Dept. of Electrical Engineering, University of Southern California 2 Fulcrum Microsystems, Calabasas CA,


  1. SystemVerilogCSP: Modeling Digital Asynchronous Circuits Using SystemVerilog Interfaces Arash Saifhashemi 1 Peter A. Beerel 1,2 1 Ming Hsieh Dept. of Electrical Engineering, University of Southern California 2 Fulcrum Microsystems, Calabasas CA, 91302. CPA 2011 University of Limerick, Ireland

  2. Outline • Introduction • Why asynchronous circuit design? • Hardware description languages • SystemVerilog Abstract Communication– Basic Features • Channels - Send, Receive • Channel status and mixed-level simulation • SystemVerilog Abstract Communication– Extended Features • Peek and Probe • Split and synchronized communication • One-to-many and one-to-any channels • Results and Conclusion

  3. Why Asynchronous Circuit Design? • Systems on chip: chips are becoming distributed systems • Communication-dominated 60 IP blocks 350 RAMs: • No globally synchronous clock Communication • Asynchronous alternative Bottleneck • Local handshaking: CSP-like communication • Benefits • Higher speed • Shorter globally critical paths • Lower power consumption • Remove power-hungry global clock • Modules active only when necessary • Robustness to variations Pictures: [Benini’06] • Process, voltage, and temperature

  4. Asynchronous Circuit Design - Today Proprietary CSP • Applications inspired language SystemVerilog • Ethernet Switches (Fulcrum Microsystems) Standard • Ultra high-speed FPGAs (Achronix) Synthesis • Multi-core network on Chip CAD Tools • Ultra low-power chip design Commercially Available Asynchronization • Basic challenges and • Lack of CAD tools to automate designs Optimization • Proteus design flow (USC) • Leverage off of available synchronous CAD Standard tools Physical Design • Starting at a high-level specification written in SystemVerilogCSP Final Layout

  5. Hardware Description Languages • Desirable features of an HDL Synthesis • Concurrency e.g.: A=B || (C=D ; E=F) High level • Timing e.g.: A=B after 5ns (Behavioral) • Support for various levels of abstraction • Support by commercial CAD tools • Support for both synchronous & asynchronous Gate level • Communication abstraction (Netlist) • Ease of design • Design usability: protocols evolve and change • Architecture evaluation before implementation Transistor level (Netlist) • Ease of adoption by synchronous designers • CSP as a basis for a hardware description Simulation/ Verification language • Suitable for modeling abstract communication • Lacks some desirable features

  6. Previous Work • New Language inspired by CSP • Have limited CAD tool support - LARD [Edwards et al], Tangram [Berkel et al], CHP [Martin] • Software languages • No inherent support for timing, limited CAD tool support - JCSP [Welch et. al] • VHDL • Fine grained concurrency is cumbersome [Frankild et al, Renaudin et al, Myers et al] • VerilogCSP • Verilog Programming Language Interface: very slow; cannot handle multi- channel modules [Saifhashemi et al] • Verilog macros are cumbersome and do not support extensions • SystemVerilog (Superset of Verilog) • Initial implementations promising but do not address extensions [Tiempo]

  7. CSP Communication Channels • Abstract communication between processes mid (CSP Channel) s:SENDER r:RECEIVER ( ) SENDER = mid ! v ! SENDER ( ) RECEIVER = mid ? x ! RECEIVER • No notion of hardware implementation details • Semantics based on events on channels between independent processes [Hoare ’ 04]

  8. Outline • Introduction • Why asynchronous circuit design? • Hardware description languages • SystemVerilog Abstract Communication– Basic Features • Channels - Send, Receive • Channel status and mixed-level simulation • SystemVerilog Abstract Communication- Advanced Features • Peek and Probe • Split and synchronized communication • One-to-many and one-to-any channels • Results and Conclusion

  9. Abstract SystemVerilog Channels • Our approach • Use SystemVerilog interface to abstract channel wires as well as Send/Receive tasks mid (SystemVerilog Interface) Abstract s:SENDER r:RECEIVER communication module Sender (interface R); � module Receiver (interface L); � parameter WIDTH = 8; � parameter WIDTH = 8; � logic [WIDTH-1:0] v; � logic [WIDTH-1:0] x; � always � always � begin � begin � v={$random()}%2**(WIDTH-1); � L.Receive(x); � R.Send(v); � #15ns; � #10ns; � end � end � endmodule � endmodule �

  10. Behind The Scenes: Channel Interface • Channel details encapsulated within an “ Interface ” • Implementation details ( below ) hidden from user • Greatly simplifies debugging and evaluation of the design typedef enum {idle, r_pend, s_pend} � ChannelStatus; � typedef enum {P2PhaseBD, P4PhaseBD} � ChannelProtocol; � � interface Channel; � � parameter WIDTH = 8; � � parameter ChannelProtocol hsProtocol = P2PhaseBD; � � ChannelStatus status = idle;// Status of a channel � � logic req=0, ack=0; � // Handshaking signals � � logic hsPhase=1; � // Used in two-phase � � � � � � // handshaking � � logic [WIDTH-1:0] data; � // Data being communicated � endinterface: Channel �

  11. Interface Send and Receive Tasks Arbitrary handshaking protocol Support most commonly used task Send (input logic � task Receive(output logic � � [WIDTH-1:0] d); � � [WIDTH-1:0] d); � � begin � � begin � � � data = d; � � � status = r_pend; � � � req = 1; � � � wait (req == 1 ); � � � status = s_pend; � � � d = data; � � � wait (ack == 1 ); � � � ack = 1; � � � req = 0; � � � wait (req == 0 ); � � � wait (ack == 0 ); � � � ack = 0; � � � status = idle; � � � status = idle; � � � � end � � end �� endtask �� endtask � • Send/Receive tasks are analogous to CSP’s ! (output) and ? (input) • Semantics are based on synchronization of concurrent processes using SystemVerilog ’ s notion of update and evaluation events

  12. Viewing Channel Status • Enumerated types make viewing channel status inherent to all standard SystemVerilog simulators • The designer can monitor if and what processes are engaged in the communication over time mid (SystemVerilog Status of Interface) channels as a s:SENDER r:RECEIVER waveform !

  13. Supports Mixed-Levels of Abstraction • Completed blocks can be simulated with others still at Block1 Block2 Block3 Lreq Rack C behavioral level C PD Ldata Rdata CP CD P Lack Rreq module mp_fb_csp (interface L, interface R); Gate-level logic data; description of High-level description always the buffer of the buffer begin L.Receive(data); (After synthesis) (Before synthesis) R.Send(data); end module mp_fb_gate (interface L, interface R); �� endmodule celement � ce(L.req, pd_bar, c); � � not � inv � (pd_bar, pd); � cap_pass � cp (c, L.ack, R.ack, pd, L.data, R.data); � endmodule �

  14. Supports Design Verification • Co-simulation: Implemented circuit vs. original circuit • It is important to use the same Testbench • Sometimes very complicated • Verifies correct implementation • No need for Shims [Saifhashemi’05] Testbench High Level Description Copy Merge & Compare Lreq Rack C C PD Ldata Rdata CP CD P Lack Rreq

  15. Outline • Introduction • Why asynchronous circuit design? • Hardware description languages • SystemVerilog Abstract Communication– Basic Features • Channels - Send, Receive • Channel status and mixed-level simulation • SystemVerilog Abstract Communication- Advanced Features • Peek and Probe • Split and synchronized communication • One-to-many and one-to-any channels • Results and Conclusion

  16. Peek and Probe • Peek P Q • Sample data task Peek (output logic[WIDTH-1:0] d); � wait (status == s_pend ); � without committing d = data; � endtask � to communication P1 P1 • Probe Arbiter P3 P3 • Is the channel idle? P2 P2 • Usually used for wait(ch0.status!=idle && ch1.status!= idle); � winner = Arbitrate (ch0.status, ch1.status); � arbitration � if(winner == 0) � � ch0.Receive(d); � if(winner ==1) � � ch1.Receive(d); �

  17. Split Communication • Handshaking of different channels might be interleaved in implementation • Modeling interleaved behavior at high level is important for early system evaluation module buf (interface L, interface R); logic data; always module buf_split (interface L, interface R); begin logic data; L.Receive(data); always begin R.Send(data); L.SplitReceive (data, 1); end endmodule R.Send (data); L.SplitReceive (data, 2); � end endmodule

  18. Synchronized Communications • Sometimes P1 implementation forces correlation of Adder P3 communication on P2 multiple channels Concurrent body • Synchronized start always � starts � begin � • Synchronized finish � � fork � � � � A.Receive(a, 1); � • Early performance � � � B.Receive(b, 1); � � � join � evaluation of system � � fork � � � � A.Receive(a, 2); � requires modeling such Acts like a � � � B.Receive(b, 2); � barrier behavior � � join � � � sum = a + b ; � � � SUM.Send(sum); � � end �

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend