Growing Solver-Aided Languages with ROSETTE

Size: px
Start display at page:

Download "Growing Solver-Aided Languages with ROSETTE"

Transcription

1 Growing Solver-Aided Languages with ROSETTE Emina Torlak & Rastislav Bodik U.C. Berkeley

2 solver-aided domain-specific language Solver-aided DSL (SDSL) Noun 1. A high-level language in which partially implemented programs can be executed, verified, debugged and synthesized with the aid of a constraint solver. 2

3 programming specification assume pre(x) P(x) { } assert post(p(x)) 3

4 programming formula, input/ output pairs, traces, another program, assume pre(x) P(x) { } assert post(p(x)) 3

5 programming with a solver? assume pre(x) P(x) { } assert post(p(x)) translate( ) SAT/SMT solver 4

6 programming with a solver: code checking Is there a valid input x for which P(x) violates the spec? assume pre(x) P(x) { } assert post(p(x)) x. pre(x) post(p(x)) SAT/SMT solver CBMC [Oxford], Dafny [MSR], Jahob [EPFL], Miniatur / MemSAT [IBM], etc. 5

7 programming with a solver: code checking Is there a valid input x for which P(x) violates the spec? assume pre(x) P(x) { } assert post(p(x)) x = 42 x. pre(x) post(p(x)) SAT/SMT solver counterexample model CBMC [Oxford], Dafny [MSR], Jahob [EPFL], Miniatur / MemSAT [IBM], etc. 5

8 programming with a solver: localizing faults Given x and x, what subset of P is responsible for P(x) x? assume pre(x) P(x) { v = x + 2 } assert post(p(x)) pre(x) post(x ) x = P(x) SAT/SMT solver BugAssist [UCLA / MPI-SWS] 6

9 programming with a solver: localizing faults Given x and x, what subset of P is responsible for P(x) x? assume pre(x) P(x) { v = x + 2 } assert post(p(x)) pre(x) post(x ) x = P(x) SAT/SMT solver repair candidates MIN CORE / MAXSAT BugAssist [UCLA / MPI-SWS] 6

10 programming with a solver: angelic execution Given x, choose v at runtime so that P(x, v) satisfies the spec. assume pre(x) P(x) { v = choose() } assert post(p(x)) v. pre(x) post(p(x, v)) SAT/SMT solver Kaplan [EPFL], PBnJ [UCLA], Skalch [Berkeley], Squander [MIT], etc. 7

11 programming with a solver: angelic execution Given x, choose v at runtime so that P(x, v) satisfies the spec. assume pre(x) P(x) { v = choose() } assert post(p(x)) v = 0, v. pre(x) post(p(x, v)) SAT/SMT solver trace model Kaplan [EPFL], PBnJ [UCLA], Skalch [Berkeley], Squander [MIT], etc. 7

12 programming with a solver: synthesis Replace?? with expression e so that Pe(x) satisfies the spec on all valid inputs. assume pre(x) P(x) { v =?? } assert post(p(x)) e. x. pre(x) post(pe(x)) SAT/SMT solver Comfusy [EPFL], Sketch [Berkeley / MIT] 8

13 programming with a solver: synthesis Replace?? with expression e so that Pe(x) satisfies the spec on all valid inputs. assume pre(x) P(x) { v = x?? 2 } assert post(p(x)) e. x. pre(x) post(pe(x)) SAT/SMT solver expressions model Comfusy [EPFL], Sketch [Berkeley / MIT] 8

14 but building solver-aided languages is hard P(x) { }??? (Q x ) R(x) : Each new SDSL created by careful custom compilation to constraints, requiring years of training and experience. translate( ) translate( ) translate( ) SAT/SMT solver 9

15 a solver-aided framework for building SDSLs P(x) { }??? (Q x ) interpret( ) API( ) interpret( ) R(x) : ROSETTE Implement a library or an interpreter for your SDSL, and get a synthesizer, verifier, debugger and angelic oracle for programs in that SDSL. 10

16 a tiny solver-aided extension of racket top-level-form = general-top-level-form (#%expression expr) (module id name-id (#%plain-module-begin module-level-form...)) (begin top-level-form...) (begin-for-syntax top-level-form...) module-level-form = general-top-level-form (#%provide raw-provide-spec...) (begin-for-syntax module-level-form...) general-top-level-form = expr (define-values (id...) expr) (define-syntaxes (id...) expr) (#%require raw-require-spec...) (define-symbolic id expr) (define-symbolic* id expr) (assert expr) (solve expr) (verify expr) (debug [expr...+] expr) Racket expr = id (#%plain-lambda formals expr...+) (case-lambda (formals expr...+)...) (if expr expr expr) (begin expr...+) (begin0 expr expr...) (let-values ([(id...) expr]...) expr...+) (letrec-values ([(id...) expr]...) expr...+) (set! id expr) (quote datum) (quote-syntax datum) (with-continuation-mark expr expr expr) (#%plain-app expr...+) (#%top. id) (#%variable-reference id) (#%variable-reference (#%top. id)) (#%variable-reference) (synthesize #:forall expr #:guarantee expr) ROSETTE formals = (id...) (id...+. id) id 11

17 with a symbolic evaluator and compiler debug solve transform, evaluate & compile to constraints verify SDSL + program synthesize ROSETTE racket solver KODKOD 12

18 with a symbolic evaluator and compiler debug solve map solution to program level verify SDSL + program synthesize ROSETTE racket solver KODKOD 12

19 with a symbolic evaluator and compiler debug solve map solution to program level verify SDSL + program synthesize ROSETTE racket solver KODKOD 12

20 rosette by example: an SDSL for circuits Why a circuit language? A teaching aid An oracle for testing circuit transformations in SAT-based solvers Fa Tb Tc Td Fa Tb Tc Td spec impl Bool n Bool Bool n Bool 13

21 rosette by example: an SDSL for circuits Why a circuit language? A teaching aid An oracle for testing circuit transformations in SAT-based solvers Fa Tb Tc Td Fa Tb Tc Td spec impl verify a, b, c, d. impl(a, b, c, d) spec(a, b, c, d) 13

22 rosette by example: an SDSL for circuits Why a circuit language? A teaching aid An oracle for testing circuit transformations in SAT-based solvers F T T T F T T T spec impl F T debug 13

23 rosette by example: an SDSL for circuits Why a circuit language? A teaching aid An oracle for testing circuit transformations in SAT-based solvers Fa Tb Tc Td Fa Tb Tc Td synthesize spec impl 13

24 a tiny circuit language (tcl) in racket Warm up A classic DSL for testing and verification of circuits. a b c d a b spec verify a, b, c, d. impl(a, b, c, d) spec(a, b, c, d) c d impl 14

25 a sample tcl program #lang s-exp tcl (define-circuit (RBC-parity a b c d) (! (<=> (<=> a b) (<=> c d)))) (define-circuit (AIG-parity a b c d) (&& (! (&& (! (&& (! (&& a b)) (&& (! a) (! b)))) (! (&& (&& (! c) (! d)) (! (&& c d)))))) (! (&& (&& (! (&& a b)) (! (&& (! a) (! b)))) (&& (! (&& (! c) (! d))) (! (&& c d))))))) A circuit is a procedure that works on boolean values. (verify-circuit AIG-parity RBC-parity) 15

26 a sample tcl program #lang s-exp tcl (define-circuit (RBC-parity a b c d) (! (<=> (<=> a b) (<=> c d)))) (define-circuit (AIG-parity a b c d) (&& (! (&& (! (&& (! (&& a b)) (&& (! a) (! b)))) (! (&& (&& (! c) (! d)) (! (&& c d)))))) (! (&& (&& (! (&& a b)) (! (&& (! a) (! b)))) (&& (! (&& (! c) (! d))) (! (&& c d))))))) > (RBC-parity #f #f #t #f) #t > (AIG-parity #f #f #t #f) #t (verify-circuit AIG-parity RBC-parity) 15

27 a sample tcl program #lang s-exp tcl (define-circuit (RBC-parity a b c d) (! (<=> (<=> a b) (<=> c d)))) (define-circuit (AIG-parity a b c d) (&& (! (&& (! (&& (! (&& a b)) (&& (! a) (! b)))) (! (&& (&& (! c) (! d)) (! (&& c d)))))) (! (&& (&& (! (&& a b)) (! (&& (! a) (! b)))) (&& (! (&& (! c) (! d))) (! (&& c d))))))) Reduced Boolean Circuit (, ) And Inverter Graph (, ) (verify-circuit AIG-parity RBC-parity) 15

28 a sample tcl program #lang s-exp tcl (define-circuit (RBC-parity a b c d) (! (<=> (<=> a b) (<=> c d)))) (define-circuit (AIG-parity a b c d) (&& (! (&& (! (&& (! (&& a b)) (&& (! a) (! b)))) (! (&& (&& (! c) (! d)) (! (&& c d)))))) (! (&& (&& (! (&& a b)) (! (&& (! a) (! b)))) (&& (! (&& (! c) (! d))) (! (&& c d))))))) (verify-circuit AIG-parity RBC-parity) Verifies equivalence of two n-ary circuit functions. 15

29 a shallow embedding of tcl in racket 1 #lang racket 3 (define-syntax-rule 4 (define-circuit (id in...) expr) 5 (define (id in...) expr)) (define-circuit (RBC-parity a b c d) (! (<=> (<=> a b) (<=> c d)))) 16

30 a shallow embedding of tcl in racket 1 #lang racket 3 (define-syntax-rule 4 (define-circuit (id in...) expr) 5 (define (id in...) expr)) (define (RBC-parity a b c d) (! (<=> (<=> a b) (<=> c d)))) 16

31 a shallow embedding of tcl in racket 1 #lang racket 3 (define-syntax-rule 4 (define-circuit (id in...) expr) 5 (define (id in...) expr)) (define (RBC-parity a b c d) (! (<=> (<=> a b) (<=> c d)))) 7 (define (! a) (if a #f #t)) 8 (define (&& a b) (if a b #f)) 9 (define ( a b) (if a #t b)) 10 (define (<=> a b) (if a b (! b))) 16

32 a shallow embedding of tcl in racket 1 #lang racket 3 (define-syntax-rule 4 (define-circuit (id in...) expr) 5 (define (id in...) expr)) 7 (define (! a) (if a #f #t)) 8 (define (&& a b) (if a b #f)) 9 (define ( a b) (if a #t b)) 10 (define (<=> a b) (if a b (! b))) 12 (define (verify-circuit impl spec) 13 (define n (procedure-arity spec)) 14 (for ([i (expt 2 n)]) 15 (define bits (for/list ([j n]) (bitwise-bit-set? i j))) 16 (unless (eq? (apply impl bits) (apply spec bits)) 17 (error "failed on" bits)))) Naive exhaustive verifier. 16

33 a shallow embedding of tcl in racket 1 #lang racket 3 (define-syntax-rule 4 (define-circuit (id in...) expr) 5 (define (id in...) expr)) 7 (define (! a) (if a #f #t)) 8 (define (&& a b) (if a b #f)) 9 (define ( a b) (if a #t b)) 10 (define (<=> a b) (if a b (! b))) 12 (define (verify-circuit impl spec) 13 (define n (procedure-arity spec)) 14 (for ([i (expt 2 n)]) 15 (define bits (for/list ([j n]) (bitwise-bit-set? i j))) 16 (unless (eq? (apply impl bits) (apply spec bits)) 17 (error "failed on" bits)))) 19 (provide 20! && <=> define-circuit verify-circuit 21 #%datum #%app #%module-begin #%top-interaction) #lang s-exp tcl 16

34 verifying circuits with tcl #lang s-exp tcl (define-circuit (RBC-parity a b c d) (! (<=> (<=> a b) (<=> c d)))) (define-circuit (AIG-parity a b c d) (&& (! (&& (! (&& (! (&& a b)) (&& (! a) (! b)))) (! (&& (&& (! c) (! d)) (! (&& c d)))))) (! (&& (&& (! (&& a b)) (! (&& (! a) (! b)))) (&& (! (&& (! c) (! d))) (! (&& c d))))))) j failed on (#f #f #f #f) > (RBC-parity #f #f #f #f) #f > (AIG-parity #f #f #f #f) #t (verify-circuit AIG-parity RBC-parity) 17

35 verifying circuits with tcl #lang s-exp tcl (define-circuit (RBC-parity a b c d) (! (<=> (<=> a b) (<=> c d)))) (define-circuit (AIG-parity a b c d) (&& (! (&& (! (&& (! (&& a b)) (&& (! a) (! b)))) (! (&& (&& (! c) (! d)) (! (&& c d)))))) (! (&& (&& (! (&& a b)) (! (&& (! a) (! b)))) (&& (! (&& (! c) (! d))) (! (&& c d))))))) j failed on (#f #f #f #f) > (RBC-parity #f #f #f #f) #f > (AIG-parity #f #f #f #f) #t (verify-circuit AIG-parity RBC-parity) Where is the bug? How to fix it? Verify circuits with many inputs? 17

36 porting tcl to rosette 1 #lang racket 3 (define-syntax-rule 4 (define-circuit (id in...) expr) 5 (define (id in...) expr)) 7 (define (! a) (if a #f #t)) 8 (define (&& a b) (if a b #f)) 9 (define ( a b) (if a #t b)) 10 (define (<=> a b) (if a b (! b))) 12 (define (verify-circuit impl spec) 13 (define n (procedure-arity spec)) 14 (for ([i (expt 2 n)]) 15 (define bits (for/list ([j n]) (bitwise-bit-set? i j))) 16 (unless (eq? (apply impl bits) (apply spec bits)) 17 (error "failed on" bits)))) 19 (provide 20! && <=> define-circuit verify-circuit 21 #%datum #%app #%module-begin #%top-interaction) 18

37 porting tcl to rosette 1 #lang racket s-exp rosette 3 (define-syntax-rule 4 (define-circuit (id in...) expr) 5 (define (id in...) expr)) 7 (define (! a) (if a #f #t)) 8 (define (&& a b) (if a b #f)) 9 (define ( a b) (if a #t b)) 10 (define (<=> a b) (if a b (! b))) 12 (define (verify-circuit impl spec) 13 (define n (procedure-arity spec)) 14 (for ([i (expt 2 n)]) 15 (define bits (for/list ([j n]) (bitwise-bit-set? i j))) 16 (unless (eq? (apply impl bits) (apply spec bits)) 17 (error "failed on" bits)))) 19 (provide 20! && <=> define-circuit verify-circuit 21 #%datum #%app #%module-begin #%top-interaction) 18

38 tcl with solver-aided verification (tcl+) 1 #lang s-exp rosette 3 (define-syntax-rule 4 (define-circuit (id in...) expr) 5 (define (id in...) expr)) 7 (define (verify-circuit impl spec) 8 (define input (symbolic-input spec)) 9 (evaluate input (verify (correct impl spec input)))) 11 (define (symbolic-input spec) 12 (for/list ([i (procedure-arity spec)]) 13 (define-symbolic* b boolean?) 14 b)) 16 (define (correct impl spec input) 17 (assert (eq? (apply impl input) (apply spec input)))) 19 (provide 20! && <=> define-circuit verify-circuit 21 #%datum #%app #%module-begin #%top-interaction) 19

39 tcl with solver-aided verification (tcl+) 1 #lang s-exp rosette 3 (define-syntax-rule 4 (define-circuit (id in...) expr) 5 (define (id in...) expr)) 7 (define (verify-circuit impl spec) 8 (define input (symbolic-input spec)) 9 (evaluate input (verify (correct impl spec input)))) 11 (define (symbolic-input spec) 12 (for/list ([i (procedure-arity spec)]) 13 (define-symbolic* b boolean?) 14 b)) Creates a list of fresh symbolic boolean constants to use as input to the circuits. 16 (define (correct impl spec input) 17 (assert (eq? (apply impl input) (apply spec input)))) 19 (provide 20! && <=> define-circuit verify-circuit 21 #%datum #%app #%module-begin #%top-interaction) 19

40 tcl with solver-aided verification (tcl+) 1 #lang s-exp rosette 3 (define-syntax-rule 4 (define-circuit (id in...) expr) 5 (define (id in...) expr)) 7 (define (verify-circuit impl spec) 8 (define input (symbolic-input spec)) 9 (evaluate input (verify (correct impl spec input)))) 11 (define (symbolic-input spec) 12 (for/list ([i (procedure-arity spec)]) 13 (define-symbolic* b boolean?) 14 b)) (verify expr) searches for an interpretation of symbolic constants that causes expr to fail. 16 (define (correct impl spec input) 17 (assert (eq? (apply impl input) (apply spec input)))) 19 (provide 20! && <=> define-circuit verify-circuit 21 #%datum #%app #%module-begin #%top-interaction) 19

41 verifying circuits with tcl+ #lang s-exp tcl+ (define-circuit (RBC-parity a b c d) (! (<=> (<=> a b) (<=> c d)))) (define-circuit (AIG-parity a b c d) (&& (! (&& (! (&& (! (&& a b)) (&& (! a) (! b)))) (! (&& (&& (! c) (! d)) (! (&& c d)))))) (! (&& (&& (! (&& a b)) (! (&& (! a) (! b)))) (&& (! (&& (! c) (! d))) (! (&& c d))))))) (#f #t #t #t) > (RBC-parity #f #t #t #t) #t > (AIG-parity #f #t #t #t) #f (verify-circuit AIG-parity RBC-parity) 20

42 debugging circuits with tcl+ (desiderata) #lang s-exp tcl+ (define-circuit (RBC-parity a b c d) (! (<=> (<=> a b) (<=> c d)))) (define/debug (AIG-parity a b c d) (&& (! (&& (! (&& (! (&& a b)) (&& (! a) (! b)))) (! (&& (&& (! c) (! d)) (! (&& c d)))))) (! (&& (&& (! (&& a b)) (! (&& (! a) (! b)))) (&& (! (&& (! c) (! d))) (! (&& c d))))))) specification implementation (debug-circuit AIG-parity RBC-parity (#f #t #t #t)) Why does the implementation differ from the specification on this input? 21

43 extending tcl+ with solver-aided debugging 22 (require 23 rosette/lang/debug 24 rosette/lib/tools/render) 26 (define (debug-circuit impl spec input) 27 (render 28 (debug [boolean?] 29 (correct impl spec input)))) 31 (provide debug-circuit define/debug quote) (debug [t] expr) computes a minimal set of expressions of type t that are responsible for the failure in expr. 22

44 debugging circuits with tcl+ (a minimal core) #lang s-exp tcl+ (define-circuit (RBC-parity a b c d) (! (<=> (<=> a b) (<=> c d)))) (define/debug (AIG-parity a b c d) (&& (! (&& (! (&& (! (&& a b)) (&& (! a) (! b)))) (! (&& (&& (! c) (! d)) (! (&& c d)))))) (! (&& (&& (! (&& a b)) (! (&& (! a) (! b)))) (&& (! (&& (! c) (! d))) (! (&& c d))))))) (debug-circuit AIG-parity RBC-parity (#f #t #t #t)) Non-core (grayed-out) expressions are irrelevant to the failure: there is no way to fix the behavior of AIGparity on the sample input by editing these expressions. 23

45 synthesizing circuits with tcl+ (desiderata) #lang s-exp tcl+ (define-circuit (RBC-parity a b c d) (! (<=> (<=> a b) (<=> c d)))) (define-circuit (AIG-parity a b c d) (&& (Circuit [! &&] a b c d #:depth 3) (! (&& (&& (! (&& a b)) (! (&& (! a) (! b)))) (&& (! (&& (! c) (! d))) (! (&& c d))))))) A sketch of the desired repair. (synthesize-circuit AIG-parity RBC-parity) Complete the sketch so that the given circuits are equivalent on all inputs. 24

46 extending tcl+ with solver-aided synthesis 32 (require rosette/lib/meta/meta) 34 (define (synthesize-circuit impl spec) 35 (define input (symbolic-input spec)) 36 (generate-forms 37 (synthesize #:forall input 38 #:guarantee (correct impl spec input)))) 40 (define-synthax (Circuit [op1 op2...] expr... #:depth d) 41 #:assert (>= d 0) 42 ([choose op1 identity] 43 [choose 44 expr ([choose op2...] 46 (Circuit [op1 op2...] expr... #:depth (- d 1)) 47 (Circuit [op1 op2...] expr... #:depth (- d 1)))])) (synthesize #:forall V #:guarantee expr[v, H]) searches for an interpretation of the symbolic constants H that guarantees expr will succeed for all interpretations of V. 49 (provide synthesize-circuit Circuit (for-syntax #%datum)) 25

47 extending tcl+ with solver-aided synthesis 32 (require rosette/lib/meta/meta) 34 (define (synthesize-circuit impl spec) 35 (define input (symbolic-input spec)) 36 (generate-forms 37 (synthesize #:forall input 38 #:guarantee (correct impl spec input)))) 40 (define-synthax (Circuit [op1 op2...] expr... #:depth d) 41 #:assert (>= d 0) 42 ([choose op1 identity] 43 [choose 44 expr ([choose op2...] 46 (Circuit [op1 op2...] expr... #:depth (- d 1)) 47 (Circuit [op1 op2...] expr... #:depth (- d 1)))])) 49 (provide synthesize-circuit Circuit (for-syntax #%datum)) To construct a circuit, choose a unary operator (or identity) and apply it either to one of the provided terminal expressions or to a circuit constructed using one of the given binary operators. 25

48 synthesizing circuits with tcl+ (the repair) #lang s-exp tcl+ (define-circuit (RBC-parity a b c d) (! (<=> (<=> a b) (<=> c d)))) (&& (Circuit [! &&] a b c d #:depth 3) (! (&& (&& (! (&& a b)) (! (&& (! (define-circuit (AIG-parity a b c d) (&& (! (&& (! (&& (! (&& a b)) (! (&& (! a) (! b))))) (! (&& (! (&& c d)) (! (&& (! c) (! d))))))) (! (&& (&& (! (&& a b)) (! (&& (! a) (! b)))) (&& (! (&& (! c) (! d))) (! (&& c d))))))) (synthesize-circuit AIG-parity RBC-parity) 26

49 stacking interpreters to synthesize a compiler RBC rax AIG TTL+. RBC. RBC rax(rbc) Z3 27

50 stacking interpreters to synthesize a compiler RBC rax AIG Deep SDSL embedding TTL+ Z3. RBC. RBC rax(rbc) Synthesized a rewriter from RBCs to AIGs that works for all RBCs of bounded size. 27

51 web, spatial programming, superoptimization 28

52 websynth: web scraping by demonstration Diamonds, Rihanna Sail, AWOLNATION Websynth synthesizes a scraping script given a web page and a few examples of desired data, using a declarative SDSL (XPaths). Implemented by two undergraduate students in a few weeks. 29

53 websynth: web scraping by demonstration itunes IMBDb AlAnon 30 Diamonds, Rihanna Sail, AWOLNATION synthesis time (sec) number of examples 29

54 partitioning code & data for a low power chip DB003 Evaluation Board Reference for EVB001 Instructions/Second vs Power ~100x Figure by Per Ljung GreenArrays GA144 Processor 2. Basic Architecture The purpose of this board is to facilitate evaluation and application prototyping using GreenArrays chips. Because no single I/O complement would be suitable for all likely uses, this board has two GA144 chips: One (called "Host") configured with sufficient I/O for intensive software development, and the other (called "Target") with as little I/O committed as possible so that pure, dedicated applications may be prototyped. 2.1 Highlights Three FTDI USB to serial chips provide high speed (960 kbaud) communications for interactive software development and general-purpose host communications. An onboard switching regulator takes power from the USB connectors and/or a conventional "wall wart" power supply. Whichever of these is offering the highest voltage is used by the regulator. A barrier strip provides for connection of bench power supplies. Each of the power buses of the two GA144 chips may selectively be run from external power in lieu of the onboard regulator, allowing you to run either chip from any desired VDD voltage and also facilitating current measurements. The Host chip is supplied with an SPI boot flash holding 1 MByte of nonvolatile data, an external SRAM with 1 MWord (2 MBytes) of memory; and may optionally use a dual voltage MMC card such as the 2 Gigabyte unit we have selected for in-house use. These memory resources may be used in conjunction with Virtual Machines such as eforth and polyforth, or for direct use by your own F18 code. The Target chip is committed to as few I/O connections as possible. The sources for its reset signal are fully configurable, and with the exception of a SERDES line connecting it with the Host chip, all other communications (two 2-wire serial interfaces) may be disconnected so that the chip is fully isolated and thus all practical I/O is available for any desired use. Roughly half the board is prototyping area, mainly populated with a grid of plated through holes on 0.1 inch centers. By soldering suitable headers to this grid, you can provide for expansion using various prototyping fixtures such as 30

55 partitioning code & data for a low power chip DB003 Evaluation Board Reference for EVB001 Instructions/Second vs Power ~100x GreenArrays GA144 Processor 2. Basic Architecture The purpose of this board is to facilitate evaluation and application prototyping using GreenArrays chips. Because no single I/O complement would be suitable for all likely uses, this board has two GA144 chips: One (called "Host") configured with sufficient I/O for intensive software development, and the other (called "Target") with as little I/O committed as possible so that pure, dedicated applications may be prototyped. Figure by Per Ljung Stack-based 18-bit architecture 32 instructions 8 x 18 array of asynchronous cores No shared resources (cache, memory) Limited communication, neighbors only < 300 byte memory per core 2.1 Highlights Three FTDI USB to serial chips provide high speed (960 kbaud) communications for interactive software development and general-purpose host communications. An onboard switching regulator takes power from the USB connectors and/or a conventional "wall wart" power supply. Whichever of these is offering the highest voltage is used by the regulator. A barrier strip provides for connection of bench power supplies. Each of the power buses of the two GA144 chips may selectively be run from external power in lieu of the onboard regulator, allowing you to run either chip from any desired VDD voltage and also facilitating current measurements. The Host chip is supplied with an SPI boot flash holding 1 MByte of nonvolatile data, an external SRAM with 1 MWord (2 MBytes) of memory; and may optionally use a dual voltage MMC card such as the 2 Gigabyte unit we have selected for in-house use. These memory resources may be used in conjunction with Virtual Machines such as eforth and polyforth, or for direct use by your own F18 code. The Target chip is committed to as few I/O connections as possible. The sources for its reset signal are fully configurable, and with the exception of a SERDES line connecting it with the Host chip, all other communications (two 2-wire serial interfaces) may be disconnected so that the chip is fully isolated and thus all practical I/O is available for any desired use. Roughly half the board is prototyping area, mainly populated with a grid of plated through holes on 0.1 inch centers. By soldering suitable headers to this grid, you can provide for expansion using various prototyping fixtures such as 30

56 partitioning code & data for a low power chip DB003 Evaluation Board Reference for EVB001 Instructions/Second vs Power ~100x GreenArrays GA144 Processor 2. Basic Architecture The purpose of this board is to facilitate evaluation and application prototyping using GreenArrays chips. Because no single I/O complement would be suitable for all likely uses, this board has two GA144 chips: One (called "Host") configured with sufficient I/O for intensive software development, and the other (called "Target") with as little I/O committed as possible so that pure, dedicated applications may be prototyped. Figure by Per Ljung Stack-based 18-bit architecture 32 instructions 8 x 18 array of asynchronous cores No shared resources (cache, memory) Limited communication, neighbors only < 300 byte memory per core 2.1 Highlights Three FTDI USB to serial chips provide high speed (960 kbaud) communications for interactive software development and general-purpose host communications. Whichever of these is offering the highest voltage is used by the regulator. Manual function partitioning: barrier strip provides for connection of bench power supplies. Each of the power buses of the two GA144 chips may break functions up into aaselectively pipeline be run from external power in lieu of the onboard regulator, allowing you to run either chip from any desired V voltage and also facilitating current measurements. with a few operations perthe Host core. chip is supplied with an SPI boot flash holding 1 MByte of nonvolatile data, an external SRAM with 1 MWord An onboard switching regulator takes power from the USB connectors and/or a conventional "wall wart" power supply. DD (2 MBytes) of memory; and may optionally use a dual voltage MMC card such as the 2 Gigabyte unit we have selected for in-house use. These memory resources may be used in conjunction with Virtual Machines such as eforth and polyforth, or for direct use by your own F18 code. The Target chip is committed to as few I/O connections as possible. The sources for its reset signal are fully configurable, and with the exception of a SERDES connectingphothilimthana it with the Host chip, all other communications (two Drawing bylinemangpo 2-wire serial interfaces) may be disconnected so that the chip is fully isolated and thus all practical I/O is available for any desired use. Roughly half the board is prototyping area, mainly populated with a grid of plated through holes on 0.1 inch centers. By soldering suitable headers to this grid, you can provide for expansion using various prototyping fixtures such as 30

57 partitioning code & data for a low power chip high-level program per-core high-level programs per-core optimized machine code partitioner code generator new programming model new approach using synthesis Mangpo Phothilimthana Nishant Totla 31

58 partitioning code & data for a low power chip high-level program per-core high-level programs per-core optimized machine code partitioner code generator new programming model new approach using synthesis Mangpo Phothilimthana Nishant Totla 31

59 partitioning code & data for a low power chip one iteration of MD5 hash optimal code partitioning (synthesized in 5 min) 256-byte mem per core initial data placement specified M i K i R i high R M F 105 <<< 106 K low 2 3 M F 4 5 <<< 6 K 32

60 component-based synthesis of loop free code (define-fragment (fast-max x y) #:ensures (lambda (x y result) (= result (if (> x y) x y))) 1000 completed timeout #:library (bvlib [{bvneg bvge bvand} 1] [{bvxor} 2])) Gulwani et al. PLDI 11 synthesis time (sec) (define (fast-max x y) (let* ([t1 (bvge x y]) [t2 (bvneg t1]) [t3 (bvxor y x]) [t4 (bvand t3 t2]) [t5 (bvxor y t4)]) t5)) 1 Hacker s Delight benchmarks 33

61 34

62 ROSETTE {emina, 34

Growing Solver-Aided Languages with ROSETTE

Growing Solver-Aided Languages with ROSETTE Growing Solver-Aided Languages with ROSETTE Emina Torlak & Rastislav Bodik U.C. Berkeley ExCAPE June 10, 2013 solver-aided domain-specific language Solver-aided DSL (SDSL) Noun 1. A high-level language

More information

Programming with Constraint Solvers CS294: Program Synthesis for Everyone

Programming with Constraint Solvers CS294: Program Synthesis for Everyone Programming with Constraint Solvers CS294: Program Synthesis for Everyone Ras Bodik Emina Torlak Division of Computer Science University of California, Berkeley Today Today: we describe four programming

More information

Synthesis and Verification for All Emina Torlak

Synthesis and Verification for All Emina Torlak Synthesis and Verification for All Emina Torlak University of Washington emina@cs.washington.edu homes.cs.washington.edu/~emina/ Emina Racket Racket a programmable programming language Racket a programmable

More information

Synthesis-Aided Compiler for Low-Power Spatial Architectures

Synthesis-Aided Compiler for Low-Power Spatial Architectures Synthesis-Aided Compiler for Low-Power Spatial Architectures Phitchaya Mangpo Phothilimthana, Tikhon Jelvis, Rohin Shah, Nishant Totla, Sarah Chasins, and Ras Bodik 2 unusual ISA small memory narrow bitwidth

More information

Program Synthesis for Forth Forth Day 2012

Program Synthesis for Forth Forth Day 2012 Program Synthesis for Forth Forth Day 2012 Computer Science UC Berkeley Ras Bodik Mangpo Phitchaya Phothilimthana Tikhon Jelvis Rohin Shah Synthesis with sketches Extend your language with two constructs

More information

Program Synthesis for Forth Forth Day 2012

Program Synthesis for Forth Forth Day 2012 Program Synthesis for Forth Forth Day 2012 Computer Science UC Berkeley Ras Bodik Mangpo Phitchaya Phothilimthana Tikhon Jelvis Rohin Shah Synthesis with sketches Extend your language with two constructs

More information

Optimizing Synthesis with Metasketches

Optimizing Synthesis with Metasketches Optimizing Synthesis Artifact with Metasketches * POPL * Consistent * Complete * Well Documented * Easy to Reuse * Evaluated * AEC * James Bornholt Emina Torlak Dan Grossman Luis Ceze University of Washington

More information

Course Overview CS294: Program Synthesis for Everyone

Course Overview CS294: Program Synthesis for Everyone Course Overview CS294: Program Synthesis for Everyone Ras Bodik Emina Torlak Division of Computer Science University of California, Berkeley The name of the course this CS294 topics course has been listed

More information

Abstractions and small languages in synthesis CS294: Program Synthesis for Everyone

Abstractions and small languages in synthesis CS294: Program Synthesis for Everyone Abstractions and small languages in synthesis CS294: Program Synthesis for Everyone Ras Bodik Emina Torlak Division of Computer Science University of California, Berkeley Today Today: we describe why high-level

More information

CSC410 Program Synthesis AZADEH FARZAN FALL 2017

CSC410 Program Synthesis AZADEH FARZAN FALL 2017 CSC410 Program Synthesis AZADEH FARZAN FALL 2017 The idea Produce small code fragments that satisfy the given specification As a programming aid: It helps you write programs. The insight is yours, the

More information

Arduino Uno. Arduino Uno R3 Front. Arduino Uno R2 Front

Arduino Uno. Arduino Uno R3 Front. Arduino Uno R2 Front Arduino Uno Arduino Uno R3 Front Arduino Uno R2 Front Arduino Uno SMD Arduino Uno R3 Back Arduino Uno Front Arduino Uno Back Overview The Arduino Uno is a microcontroller board based on the ATmega328 (datasheet).

More information

EECS 219C: Formal Methods Syntax-Guided Synthesis (selected/adapted slides from FMCAD 13 tutorial by R. Alur) Sanjit A. Seshia EECS, UC Berkeley

EECS 219C: Formal Methods Syntax-Guided Synthesis (selected/adapted slides from FMCAD 13 tutorial by R. Alur) Sanjit A. Seshia EECS, UC Berkeley EECS 219C: Formal Methods Syntax-Guided Synthesis (selected/adapted slides from FMCAD 13 tutorial by R. Alur) Sanjit A. Seshia EECS, UC Berkeley Solving SyGuS Is SyGuS same as solving SMT formulas with

More information

CEIBO FE-5111 Development System

CEIBO FE-5111 Development System CEIBO FE-5111 Development System Development System for Atmel W&M T89C5111 Microcontrollers FEATURES Emulates Atmel W&M T89C5111 4K Code Memory Real-Time Emulation and Trace Frequency up to 33MHz/5V ISP

More information

HIERARCHICAL DESIGN. RTL Hardware Design by P. Chu. Chapter 13 1

HIERARCHICAL DESIGN. RTL Hardware Design by P. Chu. Chapter 13 1 HIERARCHICAL DESIGN Chapter 13 1 Outline 1. Introduction 2. Components 3. Generics 4. Configuration 5. Other supporting constructs Chapter 13 2 1. Introduction How to deal with 1M gates or more? Hierarchical

More information

Outline HIERARCHICAL DESIGN. 1. Introduction. Benefits of hierarchical design

Outline HIERARCHICAL DESIGN. 1. Introduction. Benefits of hierarchical design Outline HIERARCHICAL DESIGN 1. Introduction 2. Components 3. Generics 4. Configuration 5. Other supporting constructs Chapter 13 1 Chapter 13 2 1. Introduction How to deal with 1M gates or more? Hierarchical

More information

Introduction to Programming (Java) 2/12

Introduction to Programming (Java) 2/12 Introduction to Programming (Java) 2/12 Michal Krátký Department of Computer Science Technical University of Ostrava Introduction to Programming (Java) 2008/2009 c 2006 2008 Michal Krátký Introduction

More information

ARDUINO MEGA 2560 REV3 Code: A000067

ARDUINO MEGA 2560 REV3 Code: A000067 ARDUINO MEGA 2560 REV3 Code: A000067 The MEGA 2560 is designed for more complex projects. With 54 digital I/O pins, 16 analog inputs and a larger space for your sketch it is the recommended board for 3D

More information

SpaceSearch: A Library for Building and Verifying Solver-Aided Tools

SpaceSearch: A Library for Building and Verifying Solver-Aided Tools SpaceSearch: A Library for Building and Verifying Solver-Aided Tools Konstantin Steven S. Stefan Weitz Lyubomirsky Heule Emina Torlak Michael D. Ernst Zachary Tatlock Reduction Reduction SMT Reduction

More information

Getting Started with Evaluation Board EVB001

Getting Started with Evaluation Board EVB001 GreenArrays AN004 Getting Started with Eval Board EVB001 Application Note AN004 Revised 10/08/11 Getting Started with Evaluation Board EVB001 The GreenArrays EVB001 Evaluation Board is a versatile and

More information

Synthesizing Memory Models

Synthesizing Memory Models Synthesizing Memory Models from Framework Sketches and Litmus Tests James Bornholt Emina Torlak University of Washington Memory consistency models define memory reordering behaviors on mul>processors Memory

More information

Software Verification : Introduction

Software Verification : Introduction Software Verification : Introduction Ranjit Jhala, UC San Diego April 4, 2013 What is Algorithmic Verification? Algorithms, Techniques and Tools to ensure that Programs Don t Have Bugs (What does that

More information

ARDUINO UNO REV3 SMD Code: A The board everybody gets started with, based on the ATmega328 (SMD).

ARDUINO UNO REV3 SMD Code: A The board everybody gets started with, based on the ATmega328 (SMD). ARDUINO UNO REV3 SMD Code: A000073 The board everybody gets started with, based on the ATmega328 (SMD). The Arduino Uno SMD R3 is a microcontroller board based on the ATmega328. It has 14 digital input/output

More information

ARDUINO MEGA ADK REV3 Code: A000069

ARDUINO MEGA ADK REV3 Code: A000069 ARDUINO MEGA ADK REV3 Code: A000069 OVERVIEW The Arduino MEGA ADK is a microcontroller board based on the ATmega2560. It has a USB host interface to connect with Android based phones, based on the MAX3421e

More information

Automated Software Analysis Techniques For High Reliability: A Concolic Testing Approach. Moonzoo Kim

Automated Software Analysis Techniques For High Reliability: A Concolic Testing Approach. Moonzoo Kim Automated Software Analysis Techniques For High Reliability: A Concolic Testing Approach Moonzoo Kim Contents Automated Software Analysis Techniques Background Concolic testing process Example of concolic

More information

Runtime Checking for Program Verification Systems

Runtime Checking for Program Verification Systems Runtime Checking for Program Verification Systems Karen Zee, Viktor Kuncak, and Martin Rinard MIT CSAIL Tuesday, March 13, 2007 Workshop on Runtime Verification 1 Background Jahob program verification

More information

ARDUINO M0 PRO Code: A000111

ARDUINO M0 PRO Code: A000111 ARDUINO M0 PRO Code: A000111 The Arduino M0 Pro is an Arduino M0 with a step by step debugger With the new Arduino M0 Pro board, the more creative individual will have the potential to create one s most

More information

S2C K7 Prodigy Logic Module Series

S2C K7 Prodigy Logic Module Series S2C K7 Prodigy Logic Module Series Low-Cost Fifth Generation Rapid FPGA-based Prototyping Hardware The S2C K7 Prodigy Logic Module is equipped with one Xilinx Kintex-7 XC7K410T or XC7K325T FPGA device

More information

CEIBO FE-51RD2 Development System

CEIBO FE-51RD2 Development System CEIBO FE-51RD2 Development System Development System for Atmel AT89C51RD2 Microcontrollers FEATURES Emulates Atmel AT89C51RD2 60K Code Memory Real-Time Emulation Frequency up to 40MHz / 3V, 5V ISP and

More information

ARDUINO LEONARDO ETH Code: A000022

ARDUINO LEONARDO ETH Code: A000022 ARDUINO LEONARDO ETH Code: A000022 All the fun of a Leonardo, plus an Ethernet port to extend your project to the IoT world. You can control sensors and actuators via the internet as a client or server.

More information

1 Lexical Considerations

1 Lexical Considerations Massachusetts Institute of Technology Department of Electrical Engineering and Computer Science 6.035, Spring 2013 Handout Decaf Language Thursday, Feb 7 The project for the course is to write a compiler

More information

ARDUINO UNO REV3 Code: A000066

ARDUINO UNO REV3 Code: A000066 ARDUINO UNO REV3 Code: A000066 The UNO is the best board to get started with electronics and coding. If this is your first experience tinkering with the platform, the UNO is the most robust board you can

More information

um-fpu Application Note 9 Adding a Serial Connection to um-fpu V2

um-fpu Application Note 9 Adding a Serial Connection to um-fpu V2 um-fpu Application Note 9 Adding a Serial Connection to um-fpu V2 This application note describes various methods of adding a serial connection to the um-fpu to provide support for debugging um-fpu code

More information

PLDI: U: Type Assisted Synthesis of Recursive Transformers on Algebraic Datatypes

PLDI: U: Type Assisted Synthesis of Recursive Transformers on Algebraic Datatypes PLDI: U: Type Assisted Synthesis of Recursive Transformers on Algebraic Datatypes Jeevana Priya Inala MIT jinala@mit.edu Advisor: Armando Solar-Lezama 1. Problem and Motivation As programming languages

More information

CEIBO FE-W7 Development System

CEIBO FE-W7 Development System CEIBO FE-W7 Development System Development System for Winbond W7xxxx Microcontrollers FEATURES Emulates Winbond W77xxx or W78xxx Microcontrollers 125K Code Memory Real-Time Emulation Frequency up to fmax

More information

Synthesis of Loop-free Programs

Synthesis of Loop-free Programs Synthesis of Loop-free Programs Sumit Gulwani Microsoft Research, Redmond sumitg@microsoft.com Susmit Jha University of California, Berkeley jha@eecs.berkeley.edu Ashish Tiwari SRI International, Menlo

More information

Chlorophyll: Synthesis-Aided Compiler for Low-Power Spatial Architectures

Chlorophyll: Synthesis-Aided Compiler for Low-Power Spatial Architectures Chlorophyll: Synthesis-Aided Compiler for Low-Power Spatial Architectures Phitchaya Phothilimthana Electrical Engineering and Computer Sciences University of California at Berkeley Technical Report No.

More information

32 bit Micro Experimenter Board Description and Assembly manual

32 bit Micro Experimenter Board Description and Assembly manual 32 bit Micro Experimenter Board Description and Assembly manual Thank you for purchasing the KibaCorp 32 bit Micro Experimenter. KibaCorp is dedicated to Microcontroller education for the student, hobbyist

More information

Lab 01 Arduino 程式設計實驗. Essential Arduino Programming and Digital Signal Process

Lab 01 Arduino 程式設計實驗. Essential Arduino Programming and Digital Signal Process Lab 01 Arduino 程式設計實驗 Essential Arduino Programming and Digital Signal Process Arduino Arduino is an open-source electronics prototyping platform based on flexible, easy-to-use hardware and software. It's

More information

PremierWave 2050 Enterprise Wi-Fi IoT Module Evaluation Kit User Guide

PremierWave 2050 Enterprise Wi-Fi IoT Module Evaluation Kit User Guide PremierWave 2050 Enterprise Wi-Fi IoT Module Evaluation Kit User Guide Part Number 900-765-R Revision A February 2016 Intellectual Property 2016 Lantronix, Inc. All rights reserved. No part of the contents

More information

CEIBO FE-5131A Development System

CEIBO FE-5131A Development System CEIBO FE-5131A Development System Development System for Atmel AT89C5131A Microcontrollers FEATURES Emulates AT89C5131/AT89C5131A with 6/12 Clocks/Cycle 31K Code Memory Software Trace Real-Time Emulation

More information

CSE507. Practical Applications of SAT. Computer-Aided Reasoning for Software. Emina Torlak

CSE507. Practical Applications of SAT. Computer-Aided Reasoning for Software. Emina Torlak Computer-Aided Reasoning for Software CSE507 Practical Applications of SAT courses.cs.washington.edu/courses/cse507/18sp/ Emina Torlak emina@cs.washington.edu Today Past 2 lectures The theory and mechanics

More information

ARDUINO LEONARDO WITH HEADERS Code: A000057

ARDUINO LEONARDO WITH HEADERS Code: A000057 ARDUINO LEONARDO WITH HEADERS Code: A000057 Similar to an Arduino UNO, can be recognized by computer as a mouse or keyboard. The Arduino Leonardo is a microcontroller board based on the ATmega32u4 (datasheet).

More information

DCN23 Digital Crossover with 2 inputs and 3 outputs

DCN23 Digital Crossover with 2 inputs and 3 outputs DCN23 Digital Crossover with 2 inputs and 3 outputs Features High performance Burr-Brown converters 24bit resolution 96kHz sampling frequency XOverWizard software Optical isolated USB interface 48 biquads

More information

Arduino ADK Rev.3 Board A000069

Arduino ADK Rev.3 Board A000069 Arduino ADK Rev.3 Board A000069 Overview The Arduino ADK is a microcontroller board based on the ATmega2560 (datasheet). It has a USB host interface to connect with Android based phones, based on the MAX3421e

More information

The Typed Racket Reference

The Typed Racket Reference The Typed Racket Reference Version 5.1 Sam Tobin-Hochstadt February 14, 2011 #lang typed/racket/base #lang typed/racket 1 1 Type Reference Any Any Racket value. All other types are subtypes of Any. Nothing

More information

Finding and Fixing Bugs in Liquid Haskell. Anish Tondwalkar

Finding and Fixing Bugs in Liquid Haskell. Anish Tondwalkar Finding and Fixing Bugs in Liquid Haskell Anish Tondwalkar Overview Motivation Liquid Haskell Fault Localization Fault Localization Evaluation Predicate Discovery Predicate Discovery Evaluation Conclusion

More information

Macro Debugger. Version 5.1. Ryan Culpepper. February 14, 2011

Macro Debugger. Version 5.1. Ryan Culpepper. February 14, 2011 Macro Debugger Version 5.1 Ryan Culpepper February 14, 2011 The macro-debugger collection contains two tools: a stepper for macro expansion and a standalone syntax browser. The macro stepper shows the

More information

Implementing Tile-based Chip Multiprocessors with GALS Clocking Styles

Implementing Tile-based Chip Multiprocessors with GALS Clocking Styles Implementing Tile-based Chip Multiprocessors with GALS Clocking Styles Zhiyi Yu, Bevan Baas VLSI Computation Lab, ECE Department University of California, Davis, USA Outline Introduction Timing issues

More information

PXA270 EPIC Computer with Power Over Ethernet & Six Serial Protocols SBC4670

PXA270 EPIC Computer with Power Over Ethernet & Six Serial Protocols SBC4670 PXA270 EPIC Computer with Power Over Ethernet & Six Serial Protocols SBC4670 Features RoHS 520MHz Low-power ARM processor w/ 800 x 600 Color LCD Power Over Ethernet and 10/100BASE-T Ethernet GPS module

More information

QSFP Breakout. Data Sheet. Datasheet QSFP Breakout. 1 Overview. Table of Contents. 2 Features

QSFP Breakout. Data Sheet. Datasheet QSFP Breakout. 1 Overview. Table of Contents. 2 Features 1 Overview The is an interface board designed to connect the high speed lines of a QSFP module to SMA connectors for test and evaluation. In addition to high speed breakout, the unit can be controlled

More information

Wave Generator Xpress

Wave Generator Xpress ! READ THIS FIRST! This revision of Wave Generator Data Sheet is valid for devices sold from September 2011. Please check your unit hardware revision. The hardware revision is composed of the 2 first digits

More information

A Toolbox for Counter-Example Analysis and Optimization

A Toolbox for Counter-Example Analysis and Optimization A Toolbox for Counter-Example Analysis and Optimization Alan Mishchenko Niklas Een Robert Brayton Department of EECS, University of California, Berkeley {alanmi, een, brayton}@eecs.berkeley.edu Abstract

More information

High-Level Information Interface

High-Level Information Interface High-Level Information Interface Deliverable Report: SRC task 1875.001 - Jan 31, 2011 Task Title: Exploiting Synergy of Synthesis and Verification Task Leaders: Robert K. Brayton and Alan Mishchenko Univ.

More information

Dwarf Boards. DB057 : 40-pin controller board

Dwarf Boards. DB057 : 40-pin controller board Dwarf Boards DB057 : 40-pin controller board PICmicro, In-Circuit Serial Programming and ICSP are registered trademarks of Microchip Technology Inc. DB057 for USB PIC DB057 for non-usb PIC Introduction

More information

Research Collection. Formal background and algorithms. Other Conference Item. ETH Library. Author(s): Biere, Armin. Publication Date: 2001

Research Collection. Formal background and algorithms. Other Conference Item. ETH Library. Author(s): Biere, Armin. Publication Date: 2001 Research Collection Other Conference Item Formal background and algorithms Author(s): Biere, Armin Publication Date: 2001 Permanent Link: https://doi.org/10.3929/ethz-a-004239730 Rights / License: In Copyright

More information

imcu7100evb User s Guide

imcu7100evb User s Guide Version 1.0 2011 WIZnet Co., Inc. All Rights Reserved. For more information, visit our website at http://www.wiznet.co.kr Copyright 2011WIZnet Co., Inc. All rights reserved. Table of Contents 1 Overview...3

More information

Functional Programming in Hardware Design

Functional Programming in Hardware Design Functional Programming in Hardware Design Tomasz Wegrzanowski Saarland University Tomasz.Wegrzanowski@gmail.com 1 Introduction According to the Moore s law, hardware complexity grows exponentially, doubling

More information

SFP+ Breakout 2. Data Sheet. Datasheet SFP+ Breakout. 1 Overview. Table of Contents. 2 Features

SFP+ Breakout 2. Data Sheet. Datasheet SFP+ Breakout. 1 Overview. Table of Contents. 2 Features Data Sheet 2 1 Overview The is an interface board designed to connect the high speed lines of an SFP or SFP+ module to SMA connectors for test and evaluation. In addition to high speed breakout, the unit

More information

Test and Verification Solutions. ARM Based SOC Design and Verification

Test and Verification Solutions. ARM Based SOC Design and Verification Test and Verification Solutions ARM Based SOC Design and Verification 7 July 2008 1 7 July 2008 14 March 2 Agenda System Verification Challenges ARM SoC DV Methodology ARM SoC Test bench Construction Conclusion

More information

Macro Debugger: Inspecting Macro Expansion

Macro Debugger: Inspecting Macro Expansion Macro Debugger: Inspecting Macro Expansion Version 5.3.6 Ryan Culpepper August 9, 2013 The macro-debugger collection contains two tools: a stepper for macro expansion and a standalone syntax browser. The

More information

Building Dependable COTS Microkernel-based Systems using MAFALDA

Building Dependable COTS Microkernel-based Systems using MAFALDA Building Dependable COTS Microkernel-based Systems using MAFALDA Jean-Charles Fabre, Manuel Rodríguez, Jean Arlat, Frédéric Salles and Jean-Michel Sizun LAAS-CNRS Toulouse, France PRDC-2000, UCLA, Los

More information

Lexical Considerations

Lexical Considerations Massachusetts Institute of Technology Department of Electrical Engineering and Computer Science 6.035, Spring 2010 Handout Decaf Language Tuesday, Feb 2 The project for the course is to write a compiler

More information

Goal: We want to build an autonomous vehicle (robot)

Goal: We want to build an autonomous vehicle (robot) Goal: We want to build an autonomous vehicle (robot) This means it will have to think for itself, its going to need a brain Our robot s brain will be a tiny computer called a microcontroller Specifically

More information

Lexical Considerations

Lexical Considerations Massachusetts Institute of Technology Department of Electrical Engineering and Computer Science 6.035, Fall 2005 Handout 6 Decaf Language Wednesday, September 7 The project for the course is to write a

More information

Model Checking Software Programs with. First Order Logic Specifications using AIG Solvers

Model Checking Software Programs with. First Order Logic Specifications using AIG Solvers Model Checking Software Programs with 1 First Order Logic Specifications using AIG Solvers Fadi A. Zaraket, Mohamad Noureddine arxiv:1409.6825v1 [cs.se] 24 Sep 2014 Abstract Static verification techniques

More information

DEVBOARD3 DATASHEET. 10Mbits Ethernet & SD card Development Board PIC18F67J60 MICROCHIP

DEVBOARD3 DATASHEET. 10Mbits Ethernet & SD card Development Board PIC18F67J60 MICROCHIP DEVBOARD3 DATASHEET 10Mbits Ethernet & SD card PIC18F67J60 MICROCHIP Version 1.0 - March 2009 DEVBOARD3 Version 1.0 March 2009 Page 1 of 7 The DEVBOARD3 is a proto-typing board used to quickly and easily

More information

Automation in Cryptology

Automation in Cryptology Automation in Cryptology Ashish Tiwari Abstract Inspired by the recent work on sketching-based synthesis of programs [SLRBE05, SLTB + 06], we have developed a language for specifying sketches, or partially

More information

«Computer Science» Requirements for applicants by Innopolis University

«Computer Science» Requirements for applicants by Innopolis University «Computer Science» Requirements for applicants by Innopolis University Contents Architecture and Organization... 2 Digital Logic and Digital Systems... 2 Machine Level Representation of Data... 2 Assembly

More information

Cause Clue Clauses: Error Localization using Maximum Satisfiability

Cause Clue Clauses: Error Localization using Maximum Satisfiability Cause Clue Clauses: Error Localization using Maximum Satisfiability Manu Jose University of California, Los Angeles mjose@cs.ucla.edu Rupak Majumdar MPI-SWS, Kaiserslautern & University of California,

More information

Scaling Program Synthesis by Exploiting Existing Code

Scaling Program Synthesis by Exploiting Existing Code Scaling Program Synthesis by Exploiting Existing Code James Bornholt Emina Torlak University of Washington Synthesis: write programs automatically Syntax Semantics Synthesis: write programs automatically

More information

CM5000 DATASHEET v0.1

CM5000 DATASHEET v0.1 CM5000 DATASHEET - 2 - http://www.advanticsys.com/cm5000.html v0.1 Table of Contents 1. INTRODUCTION... 5 2. HARDWARE CHARACTERISTICS... 6 2.1 CM5000 DIAGRAMS... 6 2.2 MICROCONTROLLER DESCRIPTION - TI

More information

Network Verification: Reflections from Electronic Design Automation (EDA)

Network Verification: Reflections from Electronic Design Automation (EDA) Network Verification: Reflections from Electronic Design Automation (EDA) Sharad Malik Princeton University MSR Faculty Summit: 7/8/2015 $4 Billion EDA industry EDA Consortium $350 Billion Semiconductor

More information

Ant6. 6 Channel H Bridge 3-Axis Bipolar Stepper Motor Controller. Technical Reference Manual PCB Rev 1.0.

Ant6. 6 Channel H Bridge 3-Axis Bipolar Stepper Motor Controller. Technical Reference Manual PCB Rev 1.0. Ant6 6 Channel H Bridge 3-Axis Bipolar Stepper Motor Controller Technical Reference Manual PCB Rev 1.0 www.soc-robotics.com Copyright 2008. SOC Robotics, Inc. 1 Manual Rev 0.9 Warranty Statement SOC Robotics

More information

Programming in the MAXQ environment

Programming in the MAXQ environment AVAILABLE The in-circuit debugging and program-loading features of the MAXQ2000 microcontroller combine with IAR s Embedded Workbench development environment to provide C or assembly-level application

More information

A Brief Introduction to Scheme (I)

A Brief Introduction to Scheme (I) A Brief Introduction to Scheme (I) Philip W. L. Fong pwlfong@cs.uregina.ca Department of Computer Science University of Regina Regina, Saskatchewan, Canada Scheme Scheme I p.1/44 Scheme: Feature Set A

More information

Program Synthesis. SWE 795, Spring 2017 Software Engineering Environments

Program Synthesis. SWE 795, Spring 2017 Software Engineering Environments Program Synthesis SWE 795, Spring 2017 Software Engineering Environments Today HW3 is due next week in class! Part 1 (Lecture)(~50 mins) Break! Part 2 (Discussion)(~60 mins) Discussion of readings Part

More information

Hello, and welcome to this presentation of the STM32L4 System Configuration Controller.

Hello, and welcome to this presentation of the STM32L4 System Configuration Controller. Hello, and welcome to this presentation of the STM32L4 System Configuration Controller. 1 Please note that this presentation has been written for STM32L47x/48x devices. The key differences with other devices

More information

CoLinkEx_LPC11C14 EVB Kit User Guide

CoLinkEx_LPC11C14 EVB Kit User Guide CoLinkEx_LPC11C14 EVB Kit User Guide Rev. 1.0 Release: 2012-05-07 Website: http://www.coocox.org Forum: http://www.coocox.org/forum/forum.php?id=1 Techinal: master@coocox.com Market: market@coocox.com

More information

Hardware describing languages, high level tools and Synthesis

Hardware describing languages, high level tools and Synthesis Hardware describing languages, high level tools and Synthesis Hardware describing languages (HDL) Compiled/Interpreted Compiled: Description compiled into C and then into binary or directly into binary

More information

Compiling a Gesture Recognition Application for an Ultra Low-Power Architecture

Compiling a Gesture Recognition Application for an Ultra Low-Power Architecture Compiling a Gesture Recognition Application an Ultra Low-Power Architecture Phitchaya Mangpo Phothilimthana Michael Schuldt Rastislav Bodik Classification Applications sensor data computation Intensive

More information

Language to Specify Syntax-Guided Synthesis Problems

Language to Specify Syntax-Guided Synthesis Problems Language to Specify Syntax-Guided Synthesis Problems Mukund Raghothaman Abhishek Udupa Saturday 25 th January, 2014 1 Introduction We present a language to specify syntax guided synthesis (SyGuS) problems.

More information

Type Assisted Synthesis of Programs with Algebraic Data Types

Type Assisted Synthesis of Programs with Algebraic Data Types Type Assisted Synthesis of Programs with Algebraic Data Types Jeevana Priya Inala MIT Collaborators: Xiaokang Qiu (MIT), Ben Lerner (Brown), Armando Solar-Lezama (MIT) Example - Desugaring a simple language

More information

CS61A Midterm 2 Review (v1.1)

CS61A Midterm 2 Review (v1.1) Spring 2006 1 CS61A Midterm 2 Review (v1.1) Basic Info Your login: Your section number: Your TA s name: Midterm 2 is going to be held on Tuesday 7-9p, at 1 Pimentel. What will Scheme print? What will the

More information

CS Computer Architecture

CS Computer Architecture CS 35101 Computer Architecture Section 600 Dr. Angela Guercio Fall 2010 Computer Systems Organization The CPU (Central Processing Unit) is the brain of the computer. Fetches instructions from main memory.

More information

An Introduction to Satisfiability Modulo Theories

An Introduction to Satisfiability Modulo Theories An Introduction to Satisfiability Modulo Theories Philipp Rümmer Uppsala University Philipp.Ruemmer@it.uu.se February 13, 2019 1/28 Outline From theory... From DPLL to DPLL(T) Slides courtesy of Alberto

More information

Arduino Dock 2. The Hardware

Arduino Dock 2. The Hardware Arduino Dock 2 The Arduino Dock 2 is our supercharged version of an Arduino Uno R3 board. These two boards share the same microcontroller, the ATmel ATmega328P microcontroller (MCU), and have identical

More information

Installation Guide Serial Interface T942SI

Installation Guide Serial Interface T942SI Installation Guide 2003-02-8/ Ver. C Contents.... General... 2 Board Description... 2 3 Installation... 4 3. Mounting... 4 3.2 Opening the Housing... 4 3.3 Mounting together with other Units... 5 3.4 Wiring

More information

23. Digital Baseband Design

23. Digital Baseband Design 23. Digital Baseband Design Algorithm-to-VLSI Circuit Refinement (Floating Point) Tradeoff (SNR Loss, BER) (Fixed Point) VHDL, Verilog VHDL, Verilog Memory Control For I=0 to I=15 Sum = Sum + array[i]

More information

TLE9869 Eval.Kit V1.0 Users Manual

TLE9869 Eval.Kit V1.0 Users Manual TLE9869 Eval.Kit V1.0 Users Manual Contents Abbreviations... 2 1 Concept... 3 2 Interconnects... 4 3 Test Points... 5 4 Jumper Settings... 6 5 Communication Interfaces... 7 5.1 LIN (via Banana jack and

More information

Syntax-Guided Program Synthesis. Rajeev Alur. University of Pennsylvania

Syntax-Guided Program Synthesis. Rajeev Alur. University of Pennsylvania Syntax-Guided Program Synthesis Rajeev Alur University of Pennsylvania 1 Goal: Programming computers easier than communicating with people Can programming be liberated, period. David Harel, IEEE Computer,

More information

Syntax-Guided Program Synthesis. Rajeev Alur

Syntax-Guided Program Synthesis. Rajeev Alur Syntax-Guided Program Synthesis Rajeev Alur University of Pennsylvania 1 Goal: Programming computers easier than communicating with people Can programming be liberated, period. David Harel, IEEE Computer,

More information

ESE Back End 2.0. D. Gajski, S. Abdi. (with contributions from H. Cho, D. Shin, A. Gerstlauer)

ESE Back End 2.0. D. Gajski, S. Abdi. (with contributions from H. Cho, D. Shin, A. Gerstlauer) ESE Back End 2.0 D. Gajski, S. Abdi (with contributions from H. Cho, D. Shin, A. Gerstlauer) Center for Embedded Computer Systems University of California, Irvine http://www.cecs.uci.edu 1 Technology advantages

More information

EN2911X: Reconfigurable Computing Lecture 01: Introduction

EN2911X: Reconfigurable Computing Lecture 01: Introduction EN2911X: Reconfigurable Computing Lecture 01: Introduction Prof. Sherief Reda Division of Engineering, Brown University Fall 2009 Methods for executing computations Hardware (Application Specific Integrated

More information

Functional Programming. Pure Functional Languages

Functional Programming. Pure Functional Languages Functional Programming Pure functional PLs S-expressions cons, car, cdr Defining functions read-eval-print loop of Lisp interpreter Examples of recursive functions Shallow, deep Equality testing 1 Pure

More information

Introduction to Visual Basic and Visual C++ Introduction to Java. JDK Editions. Overview. Lesson 13. Overview

Introduction to Visual Basic and Visual C++ Introduction to Java. JDK Editions. Overview. Lesson 13. Overview Introduction to Visual Basic and Visual C++ Introduction to Java Lesson 13 Overview I154-1-A A @ Peter Lo 2010 1 I154-1-A A @ Peter Lo 2010 2 Overview JDK Editions Before you can write and run the simple

More information

_ V1.0. Freescale MPC5607B Bolero Mini Target Board. User s Manual. Ordering code

_ V1.0. Freescale MPC5607B Bolero Mini Target Board. User s Manual. Ordering code _ V1.0 User s Manual Freescale MPC5607B Bolero Mini Target Board MPC5607B Target Board Ordering code ITMPC5607B-208 Copyright 2013 isystem AG. All rights reserved. winidea is a trademark of isystem AG.

More information

keyestudio Keyestudio MEGA 2560 R3 Board

keyestudio Keyestudio MEGA 2560 R3 Board Keyestudio MEGA 2560 R3 Board Introduction: Keyestudio Mega 2560 R3 is a microcontroller board based on the ATMEGA2560-16AU, fully compatible with ARDUINO MEGA 2560 REV3. It has 54 digital input/output

More information

Chapter 2: Memory Hierarchy Design (Part 3) Introduction Caches Main Memory (Section 2.2) Virtual Memory (Section 2.4, Appendix B.4, B.

Chapter 2: Memory Hierarchy Design (Part 3) Introduction Caches Main Memory (Section 2.2) Virtual Memory (Section 2.4, Appendix B.4, B. Chapter 2: Memory Hierarchy Design (Part 3) Introduction Caches Main Memory (Section 2.2) Virtual Memory (Section 2.4, Appendix B.4, B.5) Memory Technologies Dynamic Random Access Memory (DRAM) Optimized

More information

6.1 Combinational Circuits. George Boole ( ) Claude Shannon ( )

6.1 Combinational Circuits. George Boole ( ) Claude Shannon ( ) 6. Combinational Circuits George Boole (85 864) Claude Shannon (96 2) Signals and Wires Digital signals Binary (or logical ) values: or, on or off, high or low voltage Wires. Propagate digital signals

More information

Lab 6 Debugging. Objective. Introduction. Prelab

Lab 6 Debugging. Objective. Introduction. Prelab UNIVERSITY OF CALIFORNIA AT BERKELEY COLLEGE OF ENGINEERING DEPARTMENT OF ELECTRICAL ENGINEERING AND COMPUTER SCIENCE Lab 6 Debugging Objective You will explore several techniques for debugging a digital

More information