1 / 55

Part II. MINIMALIST: DESIGN EXAMPLES + HANDS-ON TUTORIAL

Part II. MINIMALIST: DESIGN EXAMPLES + HANDS-ON TUTORIAL. Steven M. Nowick Columbia University (nowick@cs.columbia.edu) July 16-17, 2002. MINIMALIST: Download Site. Accessible on the Web from: http://www.cs.columbia.edu/async Currently, two versions: SPARC-solaris, Linux Includes:

Download Presentation

Part II. MINIMALIST: DESIGN EXAMPLES + HANDS-ON TUTORIAL

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Part II.MINIMALIST: DESIGN EXAMPLES +HANDS-ON TUTORIAL Steven M. Nowick Columbia University (nowick@cs.columbia.edu) July 16-17, 2002

  2. MINIMALIST: Download Site Accessible on the Web from: http://www.cs.columbia.edu/async Currently, two versions: SPARC-solaris, Linux Includes: complete tutorial (text + PDF slides) benchmark examples other documentation

  3. EXAMPLE #1: Martin Q-Element AR BR AA BA From Caltech:Alain Martin, “Programming in VLSI: from Communicationg Processes to Delay-Insensitive Circuits”. Chapter in “Developments in Concurrency and Communication”, (ed. C.A.R. Hoare), Addison Wesley, UT Year of Programming Series, pp. 1-64 (1990).

  4. EXAMPLE #1: Martin Q-Element AR BR AA BA Handshaking Protocol: AR+ AA+ AR- AA- BR+ BA+ BR- BA-

  5. Example #1: Martin Q-Element Handshaking Protocol: Burst-Mode Specification: AR+ input BR+ output BA+ BR- BA- AA+ AR- AA-

  6. 0 1 2 3 Example #1: Martin Q-Element Handshaking Protocol: Burst-Mode Specification: AR+ input AR+/BR+ BR+ input burst/ output burst output BA+ BA+/BR- AR-/AA- BR- BA-/AA+ BA- AA+ AR- AA-

  7. Example #1: Martin Q-Element Running MINIMALIST:the Simple Approach Step #0. Getting Started ...(a) make a ‘minimalist’ subdirectory in your home directory: > mkdir minimalist(b) go to it: > cd minimalist (c) create a new subdirectory: > mkdir tutorial1(d) go to it: > cd tutorial1 (e) copy BM spec into ‘tutorial1’ subdirectory: > cp /softs/minimalist/examples/martin-q-element/ martin-q-element.bms .

  8. Example #1: Martin Q-Element Running MINIMALIST:the Simple Approach Step #0. Getting Started (cont.) ... (f) to start up the MINIMALIST ‘shell’, type: > MinShellMINIMALIST will respond with a new prompt: minimalist> You are now using “MinShell”. This environment allows you to do synthesis runs, display specs + circuits, get online help, and even run many standard Unix commands (cp, mv, ls, pwd, …). (In general, you will want to activate “MinShell” at the start of a MINIMALIST synthesis session.)

  9. 0 1 2 3 Example #1: Martin Q-Element Running MINIMALIST:the Simple Approach Step #1. Show BM Specification(a) Look at “BMS” text file: >more martin-q-element.bms AR+/BR+ BA+/BR- name martin_q_elementInput AR 0 Input BA 0 Output BR 0 Output AA 0 0 1 AR+ | BR+ 1 2 BA+ | BR- 2 3 BA- | AA+3 0 AR- | AA- AR-/AA- BA-/AA+

  10. 0 1 2 3 Example #1: Martin Q-Element Running MINIMALIST:the Simple Approach Step #1. Show BM Specification (cont.)(b) Graphic Display: >plot_qt martin-q-element.bms AR+/BR+ BA+/BR- AR-/AA- BA-/AA+

  11. Example #1: Martin Q-Element Running MINIMALIST:the Simple Approach Step #2. Synthesize BM Implementation: > minimalist-basic martin-q-element.bms Step #3. Display It: (a) Text: 2-Level Equations + Results Summary >[see displayed text output] (b) Plot AND/OR Circuit: [follow displayed instructions:] > plot_qt martin_q_element-L.sol (c) Plot NAND/NAND Circuit: [follow displayed instructions:] > plot_nand martin_q_element-L.sol

  12. Example #1: Martin Q-Element AR Martin Implementation: (“QDI”) BR C AA BA AR Burst-Mode Implementation: (Fund. Mode) BA BR BA AR AA BA C-elementnow replaced by: -NOR2 -NAND2 AR Y0

  13. EXAMPLE #2A: Tangram Mixer TANGRAM Mixer = “Call Element” AR CR AA CA BR BA From Philips Research Lab: “TANGRAM” System, K. van Berkel, “VLSI Programming of Asynchronous Circuit for Low Power”. Chapter in “Asynchronous Digital Design”, (eds. G. Birtwistle and A. Davis), Springer-Verlag, Workshop in Computing Series, pp. 152-210 (1995).

  14. 0 AR CR AA CA BR BA EXAMPLE #2A: Tangram Mixer TANGRAM Mixer:Deriving a BM Specification ... Protocol: at most one requester (A or B) is active at any time! BR+/... AR+/...

  15. 0 1 2 AR CR AA CA BR BA EXAMPLE #2A: Tangram Mixer TANGRAM Mixer:Deriving a BM Specification ... Protocol: ‘A’ request - BR+/... AR+/CR+ #1 #2 #4 #3 COMPLETE THE BURST-MODE SPEC … THEN CREATE A .BMS FILE …! ==> next slide

  16. Example #2A: Tangram Mixer [… waiting while you create your BM spec; when done, go to next slide.]

  17. 6 5 4 3 0 2 1 EXAMPLE #2A: Tangram Mixer Deriving a Burst-Mode Specification...: #1 AR #2 BR+/CR+ CR #4 AR+/CR+ AA #3 CA BR BA CA+/BA+ CA+/AA+ Events #1-4...:first, rising transitionsthen, falling transitions-use same protocol for both A and B requests -assume at most one of A/B channels active at any time! (see choice in state #0) AR-/CR- BR-/CR- CA-/AA- CA-/BA-

  18. Example #2A: Tangram Mixer Running MINIMALIST:the Simple Approach Step #0. Getting Started ...(a) go back into “examples” directory: > cd ..(b) create a new subdirectory: > mkdir tutorial2A(c) go to it: > cd tutorial2A (d) edit/create file for your BM spec: > emacs (or vi) my-tangram-mixer.bms When done: compare your own BMS spec with … /softs/minimalist/examples/tangram-mixer/tangram-mixer.bms

  19. Example #2A: Tangram Mixer Step #1. Show BM Specification:Graphic Display: >plot_qt my-tangram-mixer.bms Step #2. Synthesize BM Implementation: >minimalist-basic my-tangram-mixer.bms Step #3. Display It: (a) 2-Level Equations + Results Summary: > [see displayed output] (b) Plot AND/OR Circuit: > [follow instructions](c) Plot NAND/NAND Circuit: >[follow instructions]

  20. Example #2A: Tangram Mixer Now, do another synthesis run, and compare:using an “area-oriented” script, with fedback outputs Step #2. Synthesize BM Implementation: >minimalist-area my-tangram-mixer.bms Step #3. Display It: (a) 2-Level Equations + Results Summary: > [see displayed output] (b) Plot AND/OR Circuit: > [follow instructions](c) Plot NAND/NAND Circuit: >[follow instructions]

  21. C C Example #2A: Tangram Mixer CA AA MINIMALIST Implementation: (Fund. Mode) AR CR BR BA CA TangramImplementation: (“QDI”) CA AA AR CR BR BA CA

  22. 0 1 3 2 4 6 5 EXAMPLE #2B: Concurrent Mixer Basic Protocol: events #1-4... Now… create a more concurrent BM Specification! ... BR+/CR+ AR+/CR+ #1 AR #2 CR #4 AA #3 CA BR CA+/AA+ CA+/BA+ BA BR-/CR- AR-/CR- CA-/BA- CA-/AA-

  23. 0 1 2 3 6 5 4 EXAMPLE #2B: Concurrent Mixer Basic Protocol: Concurrent Protocol: BR+/ CR+ AR+/ CR+ […waiting while you create a more concurrent Burst-Mode specification for a mixer; when done, go to next slide.] CA+/ AA+ CA+/BA+ AR-/ CR- BR-/CR- CA-/ BA- CA-/ AA-

  24. 0 6 5 1 2 4 3 3 4 2 1 0 EXAMPLE #2B: Concurrent Mixer Basic Protocol: BM Spec Concurrent Protocol: BM Spec BR+/ CR+ AR+/ CR+ BR+/ CR+ AR+/ CR+ CA+/ BA+ CA+/ AA+ CA+/BA+ CR- CA+/ AA+ CR- BR-/ CR- AR-/ CR- AR- CA-/ AA- BR- CA-/ BA- CA-/ BA- CA-/ AA-

  25. Example #2B: Concurrent Mixer Step #0. Getting Started ...(a) go back into “examples” directory: > cd ..(b) create a new subdirectory: > mkdir tutorial2B(c) go to it: > cd tutorial2B (d) edit/create file for your own BM spec: > emacs (or vi) my-concur-mixer.bms (e) when done, compare your BM spec to the one in... : >/softs/minimalist/examples/concur-mixer/ concur-mixer.bms Step #1. Show BM Specification (a) Graphic Display: >plot_qt concur-mixer.bms

  26. Example #2B: Concurrent Mixer Step #2. Synthesize BM Implementation: >minimalist-basic concur-mixer.bms Step #3. Display It: (a) 2-Level Equations + Results Summary: >[see displayed output] (b) Plot AND/OR Circuit: > [follow instructions](c) Plot NAND/NAND Circuit: >[follow instructions]

  27. Example #2B: Concurrent Mixer Now, do another synthesis run…:using an “area-oriented” script (and compare results)…. Step #2. Synthesize BM Implementation: >minimalist-area concur-mixer.bms Step #3. Display It: (a) 2-Level Equations + Results Summary: >[see displayed output] (b) Plot AND/OR Circuit: > [follow instructions](c) Plot NAND/NAND Circuit: >[follow instructions]

  28. EXAMPLE #2C: “While” Module Problem: Design a Burst-Mode “While” (i.e., Loop) Controller Now, you will design an entire BM Specification from start-to-finish … ! Simple Block Diagram (with channels): Balsa/Tangram Equivalent: ACTIVATE ACT #1 #2 #3 CHECKloop condition DT DO EXECUTE loop body Basic Operation: 1.Activate “while” component 2. Check loop variable - if 0, exit (go to #1) - if 1, continue to #3 3. Execute loop body Repeat #2/#3 until loop var false data channel

  29. EXAMPLE #2C: “While”Module Detailed Block Diagram: DETAILED OPERATION: 1. Wait until module activated(ACT_req+) 2. Request loop variable(DT_req+) a.if loop variable = 0(DT_d0+) - complete handshake on DT - complete handshake on ACT - return to #1 (wait for next activation) b.if loop variable = 1(DT_d1+) - complete handshake on DT - execute loop body (i.e., do full handshake on DO) - go to #2 (start next loop test) passive channel ACTIVATE (ACT) ACT_req ACT_ack DT_req DO_req DT_d0 DO_ack DT_d1 EXECUTEloop body (DO) CHECK loop Condition (DT) dual-rail data (0 or 1) active channel active channel

  30. EXAMPLE #2C: “While”Module DETAILED OPERATION: 1. Wait until module activated(ACT_req+) 2. Request loop variable(DT_req+) a.if loop variable = 0(DT_d0+) - complete handshake on DT - complete handshake on ACT - return to #1 (wait for next activation) b.if loop variable = 1(DT_d1+) - complete handshake on DT - execute loop body (i.e., do full handshake on DO) - go to #2 (start next loop test) OPTIMIZATIONS (optional): A. You may overlap these 2 handshakes (i.e. make them concurrent) B. You may overlap these 2 handshakes (i.e. make them concurrent), as long as: - DT is reset (and not changing) during the active phase of DO

  31. 5 4 3 0 2 1 Example #3: “HP-IR” (HP Labs) Inputs: intitreq itevent2ticks ctrincack Outputs: iteventreq ctrincreq From HP Labs/Stanford “Stetson” Project:SEE figs. 10, 11, pp. 17-18:A.Marshall, B.Coates, P.Siegel,“Designing an Asynchronous Communications Chip”, IEEE Design&Test of Computers, vol. 11:2, pp. 8-21 (1994) intitreq-/ iteventreq- intitreq+/ iteventreq+ intitreq+/ iteventreq+ itevent2ticks+/ ctrincreq+ iteventreq+ intitreq+/ iteventreq+ itevent2ticks- ctrincack+/ ctrincreq- itevent2ticks- intitreq-/ ctrincreq- ctrincack-/ iteventreq+ Initial values: in state #0, all inputs & outputs are 0

  32. Example #3: HP-IR Running MINIMALIST:the Simple Approach Step #0. Getting Started ...(a) go back into “examples” directory: > cd ..(b) create a new subdirectory: > mkdir tutorial3(c) go to it: > cd tutorial3 (d) copy the BM spec: > cp /softs/minimalist/examples/hp-ir/hp-ir.bms . Step #1. Show BM Specification (a) Graphic Display: >plot_qt hp-ir.bms

  33. Example #3: HP-IR Running MINIMALIST:the Simple Approach • Several Useful Scripts: • Produce 1 -- or 4 -- Circuit Implementations For Each Script • - fedback vs. non-fedback outputs • - single-output vs. ‘output-disjoint’ (shared products) • - different cost functions, ... • (a) BASIC (critical race-free):“minimalist-crf”,“minimalist-crf-suite” > no optimal state assignment (b) SPEED: “minimalist-speed”, “minimalist-speed-suite” • (c) AREA:“minimalist-area”, “minimalist-area-suite”

  34. Example #3: HP-IR Running MINIMALIST:the Simple Approach Step #2. Synthesize BM Implementation:[try each!] >minimalist-crf hp-ir.bms >minimalist-crf-suite hp-ir.bms >minimalist-speed hp-ir.bms >minimalist-speed-suite hp-ir.bms >minimalist-area hp-ir.bms >minimalist-area-suite hp-ir.bms Step #3. Display It: (a) 2-Level Equations + Results Summary: >[see displayed output] (b) Plot AND/OR Circuit: > [follow instructions](c) Plot NAND/NAND Circuit: >[follow instructions]

  35. Example #3: HP-IR Running MINIMALIST:the Simple Approach Step #4. Convert to Verilog Output:[optional] >pla2verilog.tcl <PLA file name> GETTING HELP: …extensive on-line help available at all times; type: >help for a list of options.

  36. Example #3: HP-IR Running MINIMALIST:the Simple Approach “Generalized C-Element”Implementations: Produces“SET”/“RESET”functions for each output + next-state 2 Common Implementation Styles: - gC-element:“SET”=pull-down, “RESET”=pull-up - gC output: has inverter +“keeper” (to hold state) - C-element (2-input): implement “SET” and “RESET” as logic networks (2-level), feed eacb into C-element - “RESET”: invert, before feeding into C-element (d) GC SCRIPTS: “minimalist-gc”, “minimalist-gc-suite”

  37. Example #3: HP-IR Running MINIMALIST:the Simple Approach Step #2. Synthesize BM Implementation:[try each!] >minimalist-gc hp-ir.bms >minimalist-gc-suite hp-ir.bms Step #3. Display It: (a) 2-Level Equations + Results Summary: >[see displayed output] (b) Plot AND/OR Circuit: > [follow instructions](c) Plot NAND/NAND Circuit: >[follow instructions] NOTE: (b) and (c) currently only display separate SET and RESET functions (not GC elements!)

  38. Example #4: RF-Control Running MINIMALIST:Using the MINIMALIST “Shell” From HP Labs/Stanford “Stetson” ProjectA.Marshall, B.Coates, P.Siegel,“Designing an Asynchronous Communications Chip”, IEEE Design&Test of Computers, vol. 11:2, pp. 8-21 (1994)

  39. Example #4: RF-Control Running MINIMALIST:Using the MINIMALIST “Shell” Step #0. Getting Started ...(a) go back into “examples” directory: > cd ..(b) create a new subdirectory: > mkdir tutorial4(c) go to it: > cd tutorial4 (d) copy the BM spec: > cp /softs/minimalist/examples/rf-control/rf-control.bms .

  40. Example #4: RF-Control Step #1. Show BM Specification(a) Look at “BMS” text file: >more rf-control.bms 0 1 RFFrameReq+ | IntSDReq+ ControlResetAck- 1 2 SOFEventOK+ | IntSDReq- 2 3 SOFEventOK- | IntSDReq+3 4 EOFEventOK+ | HIFCommitReq+ IntSDReq- 4 5 EOFEventOK- HIFCommitAck+ | HIFCommitReq+ SCEoTSReq+5 6 HIFCommitAck- SCEoTSAck+ | SCEoTSReq- 6 7 SCEoTSAck- | RFFrameAck+7 8 RFFrameReq- | RFFrameAck- 8 1 RFFrameReq+ | IntSDReq+ 3 9 CtrEoTSAck+ | IntSDReq- 9 10 CtrEoTSAck- | SCEoTSReq+ 10 11 SCEoTSAck+ | SCEoTSReq- 11 3 SCEoTSAck- | IntSDReq+ name RF_controlInput RFFrameReq 0 Input SOFEventOK 0Input EOFEventOK 0Input CtrEoTSAck 0 Input SCEotSAck 0Input HIFCommitAck 0 Output ControlResetAck 0 Output RFFrameAck 0Output IntSDReq 0Output SCEoTSReq 0Output HIFCommitReq 0 [… continued on right column ==> ]

  41. Example #4: RF-Control Running MINIMALIST:Using the MINIMALIST “Shell” Step #2. Synthesize BM Implementation: > MinShell > read-spec rf-control.bms > help … …. > min-states #basic state minimization >help assign-states > assign-states#basic (crit race-free) state assignment > helpmin-logic> min-logic #basic logic minimization

  42. Example #4: RF-Control Running MINIMALIST:Using the MINIMALIST “Shell” Step #3. Display It: (a) 2-Level Equations + Results Summary: >[see displayed output] (b) Plot AND/OR Circuit: > [follow instructions](c) Plot NAND/NAND Circuit: >[follow instructions]

  43. Example #4: RF-Control Running MINIMALIST:Using the MINIMALIST “Shell” Step #2. A Different Run!: > read-spec rf-control.bms > help … …. > min-states #state minimization >help assign-states > assign-states -O -P -S -s #optimal state assignment (-O) #target output logic only (-S) #single-output logic (-s) #target critical I/O paths (-P) > helpmin-logic> min-logic -P -s #better logic minimization: #single-output logic (-s) #target critical I/O paths (-P)

  44. Example #4: RF-Control Running MINIMALIST:Using the MINIMALIST “Shell” Step #2. Yet Another Run!: > read-spec rf-control.bms > help ... > min-states -F#state minimization,w/fedback#outputs as state vars (-F) >help assign-states > assign-states-F-L -O #optimal state assignment (-O)#w/fedback outputs (-F) #shared products (no -d or -s) # (i.e. “multi-output minimztn”) #target total literal count (-L) > helpmin-logic> min-logic -F-L #w/fedback outputs (-F) #shared products (no -d or -s) #(i.e. “multi-output minimztn”) #target total literal count (-L)

  45. Example #4: RF-Control Running MINIMALIST:Using the MINIMALIST “Shell” Step #3. Display It: (a) 2-Level Equations + Results Summary: >[see displayed output] (b) Plot AND/OR Circuit: > [follow instructions](c) Plot NAND/NAND Circuit: >[follow instructions]

  46. Example #5: Handling Large Examples (“P1 Controller”) From HP Labs/Stanford “Stetson”ProjectA.Marshall, B.Coates, P.Siegel,“Designing an Asynchronous Communications Chip”, IEEE Design&Test of Computers, vol. 11:2, pp. 8-21 (1994) Step #0. Getting Started ...(a) go back into “examples” directory: > cd ..(b) create a new subdirectory: > mkdir tutorial5(c) go to it: > cd tutorial5 (d) copy the BM spec: > cp /softs/minimalist/examples/stetson/p1.bms .

  47. Example #5: Handling Large Examples (“P1 Controller”) Step #1. Show BM Specification(a) Look at “BMS” text file: >more p1.bms Summary: a large async controller 13 inputs 14 outputs 33 (burst-mode) states Step #1. Show BM Specification (cont.)(b) Graphic Display: >plot_qt p1.bms

  48. Example #5: Handling Large Examples (“P1 Controller”) Our Synthesis Strategy: for faster runtime, avoid using “optimal” state assignment (… instead, just use simple “non-optimal” critical race-free assignment) Initial Synthesis Run: Using SCRIPTS Step #2. Synthesize BM Implementation: >minimalist-crf p1.bms Step #3. Display It: (a) 2-Level Equations + Results Summary: >[see displayed output] (b) Plot AND/OR Circuit: > [follow instructions](c) Plot NAND/NAND Circuit: >[follow instructions]

  49. Example #5: Handling Large Examples (“P1 Controller”) An Alternative Run: Using the MINIMALIST “Shell” Step #2. Synthesize BM Implementation: > read-spec p1.bms > help … …. > min-states -F#state minimization: with fedback outputs >help assign-states > assign-states -F -C #non-optimal state assignment (-C);#assumes fedback outputs (-F) > helpmin-logic> min-logic -F -L -s #logic minimization: for literal optzn (-L); #single-output logic (-s) [for better runtime]; #assumes fedback outputs (-F)

  50. Example #5: Handling Large Examples (“P1 Controller”) An Alternative Run: Using the MINIMALIST “Shell” Step #3. Display It: (a) 2-Level Equations + Results Summary: >[see displayed output] (b) Plot AND/OR Circuit: > [follow instructions](c) Plot NAND/NAND Circuit: >[follow instructions] … Compare the 2 different implementations: see Step #3(a) for statistics

More Related