Presentation is loading. Please wait.

Presentation is loading. Please wait.

Introduction to Silicon Programming in the Tangram/Haste language Material adapted from lectures by: Prof.dr.ir Kees van Berkel [Dr. Johan Lukkien] [Dr.ir.

Similar presentations


Presentation on theme: "Introduction to Silicon Programming in the Tangram/Haste language Material adapted from lectures by: Prof.dr.ir Kees van Berkel [Dr. Johan Lukkien] [Dr.ir."— Presentation transcript:

1

2 Introduction to Silicon Programming in the Tangram/Haste language Material adapted from lectures by: Prof.dr.ir Kees van Berkel [Dr. Johan Lukkien] [Dr.ir. Ad Peeters] at the Technical University of Eindhoven, the Netherlands

3 Philips Research, Kees van Berkel, Ad Peeters, 2002-09-102 TU/e Handshake signaling and data request a r active side passive side acknowledge a k data a d request a r active side passive side acknowledge a k data a d push channel versus pull channel

4 Philips Research, Kees van Berkel, Ad Peeters, 2002-09-103 TU/e Handshake signaling: push channel ack a k req a r time early a d broad a d late a d

5 Philips Research, Kees van Berkel, Ad Peeters, 2002-09-104 TU/e Data bundling In order to maintain event ordering at both sides of a channel, the circuit must satisfy data bundling constraint: for push channel: delay along request wire must exceed delay of data wire; for pull channel: delay along acknowledge wire must exceed delay of data wire.

6 Philips Research, Kees van Berkel, Ad Peeters, 2002-09-105 TU/e Handshake signaling: pull channel ack a k req a r time early a d broad a d late a d When data wires are invalid: multiple and incomplete transitions allowed.

7 Philips Research, Kees van Berkel, Ad Peeters, 2002-09-106 TU/e Tangram assignment x:= f(y,z) yw zw y f z   xw 0 |x xr xw 1 Handshake circuit y f z   |x y f z   |x

8 Philips Research, Kees van Berkel, Ad Peeters, 2002-09-107 TU/e Four-phase data transfer   b c  r / b r time b d / c d b a / c r c a /  a 1 2 3 4 5

9 Philips Research, Kees van Berkel, Ad Peeters, 2002-09-108 TU/e Handshake latch  [ [ w  ; [w  : r d := w d ] [] r  ; r  ] ] 1-bit handshake latch: w d  w r  r d   w d  w r  r d  w k = w r r k = r r x rw wdwd wrwr rdrd

10 Philips Research, Kees van Berkel, Ad Peeters, 2002-09-109 TU/e N-bit handshake latch wrwr w d1 r d1 w d2 wkwk r d2 w dN rdNrdN... r rkrk area, delay, energy area: 2(N+1) gate eqs. delay per cycle: 4 gate delays energy per write cycle: 4 + 0.5*2N transitions, in average

11 Philips Research, Kees van Berkel, Ad Peeters, 2002-09-1010 TU/e Transferrer  [ [ a  : (b   ; c   )] ; [ a  : (b   ; c d := b d ; c   ; c d :=  )] ]  a bc a r a k brbr bkbk bdbd ckck crcr cdcd

12 Philips Research, Kees van Berkel, Ad Peeters, 2002-09-1011 TU/e Multiplexer  [ [ a  : c   ; a  : (c d := a d ; c   ; c d :=  ) [] b  : c   ; b  : (c d := b d ; c   ; c d :=  ) ] ] Restriction:  a r   b r must hold at all times! | a b c

13 Philips Research, Kees van Berkel, Ad Peeters, 2002-09-1012 TU/e Multiplexer realization data circuit control circuit

14 Philips Research, Kees van Berkel, Ad Peeters, 2002-09-1013 TU/e Logic/arithmetic operator  [ [ a  : (b   || c   ) ] ; [ a  : ((b   || c   ) ; a d := f(b d, c d ))] ] Cheaper realization (delay sensitive):  [ [ a  : (b   || c   ) ] ; [ a  : ((b   || c   ) ; a d := f(b d, c d ))] ; “delay” ; a d :=  ] f b c a

15 Philips Research, Kees van Berkel, Ad Peeters, 2002-09-1014 TU/e A one-place fifo buffer byte = type [0..255] & BUF1 = main proc (a?chan byte & b!chan byte). begin x: var byte | forever do a?x ; b!x od end BUF1 ab

16 Philips Research, Kees van Berkel, Ad Peeters, 2002-09-1015 TU/e A one-place fifo buffer byte = type [0..255] & BUF1 = main proc (a?chan byte & b!chan byte). begin x: var byte | forever do a?x ; b!x od end   ;  x  ba  ;  a a x b b   x   ; x x

17 Philips Research, Kees van Berkel, Ad Peeters, 2002-09-1016 TU/e 2-place buffer byte = type [0..255] & BUF1 = proc (a?chan byte & b!chan byte). begin x: var byte | forever do a?x ; b!x od end & BUF2: main proc (a?chan byte & c!chan byte). begin b: chan byte | BUF1(a,b) || BUF1(b,c) end BUF1 a b c

18 Philips Research, Kees van Berkel, Ad Peeters, 2002-09-1017 TU/e Two-place ripple buffer

19 Philips Research, Kees van Berkel, Ad Peeters, 2002-09-1018 TU/e Two-place wagging buffer ba  byte = type [0..255] & wag2: main proc (a?chan byte & b!chan byte). begin x,y: var byte | a?x ; forever do (a?y || b!x) ; (a?x || b!y) od end

20 Philips Research, Kees van Berkel, Ad Peeters, 2002-09-1019 TU/e Two-place ripple register … begin x0, x1: var byte | forever do b!x1 ; x1:=x0; a?x0 od end

21 Philips Research, Kees van Berkel, Ad Peeters, 2002-09-1020 TU/e 4-place ripple register byte = type [0..255] & rip4: main proc (a?chan byte & b!chan byte). begin x0, x1, x2, x3: var byte | forever do b!x3 ; x3:=x2 ; x2:=x1 ; x1:=x0 ; a?x0 od end

22 Philips Research, Kees van Berkel, Ad Peeters, 2002-09-1021 TU/e 4-place ripple register area : N (A var + A seq ) cycle time : T c = (N+1) T := cycle energy: E c = N E := x0x1x2x3 x0x3 x2x3x1x2x0x1x0

23 Philips Research, Kees van Berkel, Ad Peeters, 2002-09-1022 TU/e Introducing vacancies … begin x0, x1, x2, x3, v: var byte | forever do (b!x3 ; x3:=x2 ; x2:=v) || (v:=x1 ; x1:=x0 ; a?x0) od end what is wrong?

24 Philips Research, Kees van Berkel, Ad Peeters, 2002-09-1023 TU/e Introducing vacancies forever do ((b!x3 ; x3:=x2) || (v:=x1 ; x1:=x0 ; a?x0)) ; x2:=v od or: forever do ((b!x3 ; x3:=x2) || (v:=x1 ; x1:=x0)) ; (x2:=v || a?x0) od

25 Philips Research, Kees van Berkel, Ad Peeters, 2002-09-1024 TU/e “synchronous” 4-p ripple register forever do (s0:=m0 || s1:=m1 || s2:=m2 || b!m3 ) ; ( a?m0 || m1:=s0 || m2:=s1 || m3:=s2) od m0 s0 m1 s1 m2 s2 m3 x0b m0 s0 m1 s1 m2 s2 m3 x0b m0 s0 m1 s1 m2 s2 m3 x0b m0 s0 m1 s1 m2 s2 m3 x0b m0 s0 m1 s1 m2 s2 m3 x0b

26 Philips Research, Kees van Berkel, Ad Peeters, 2002-09-1025 TU/e 4-place wagging register forever do b!x1 ; x1:=x0 ; a?x0 ; b!y1 ; y1:=y0 ; a?y0 od x0x1 x2x3y0y1 a b x1 x2b x0x1 a x0 b a y1 bby0y1a y0 a

27 Philips Research, Kees van Berkel, Ad Peeters, 2002-09-1026 TU/e 8-place register 4-way wagging forever do b!u1 ; u1:=u0 ; a?u0 ; b!v1 ; v1:=v0 ; a?v0 ; b!x1 ; x1:=x0 ; a?x0 ; b!y1 ; y1:=y0 ; a?y0 od

28 Philips Research, Kees van Berkel, Ad Peeters, 2002-09-1027 TU/e Four 8  8 shift registers compared

29 Philips Research, Kees van Berkel, Ad Peeters, 2002-09-1028 TU/e Tangram/Haste Purpose: programming language for asynchronous VLSI circuits. Creator: Tangram team @ Philips Research Labs (proto- Tangram 1986; release 2 in 1998). Inspiration: Hoare’s CSP, Dijkstra’s GCL. Lectures: no formal introduction; manual hand-out (learn by example, learn by doing). Main tools: compiler, analyzer, simulator, viewer.

30 Philips Research, Kees van Berkel, Ad Peeters, 2002-09-1029 TU/e 2-place buffer byte = type [0..255] & BUF1 = proc (a?chan byte & b!chan byte). begin x: var byte | forever do a?x ; b!x od end & BUF2: main proc (a?chan byte & c!chan byte). begin b: chan byte | BUF1(a,b) || BUF1(b,c) end BUF1 a b c

31 Philips Research, Kees van Berkel, Ad Peeters, 2002-09-1030 TU/e Median filter median: main proc (a? chan W & b! chan W). begin x,y,z: var W & xy, yz, zw: var bool | forever do ((z:=y; y:=x) || yz:=xy) ; a?x ; (xy:= x<=y || zx:= z<=x) ; if zx=xy then b!x or xy=yz then b!y or yz=zx then b!z fi od end Median ab

32 Philips Research, Kees van Berkel, Ad Peeters, 2002-09-1031 TU/e Greatest Common Divisor gcd: main proc (ab?chan > & c!chan byte). begin x,y: var byte | forever do ab? > ; do x y then x:= x-y od ; c!x od end GCD abc

33 Philips Research, Kees van Berkel, Ad Peeters, 2002-09-1032 TU/e Nacking Arbiter nack : main proc (a?chan bool & b!chan bool). begin na,nb: var bool | > := > ; forever do sel probe(a) then a!nb || na:= na#nb or probe(b) then b!na || nb:= nb#na les od end Nacking arbiter a b

34 Philips Research, Kees van Berkel, Ad Peeters, 2002-09-1033 TU/e C : Tangram  handshake circuit T  ab C(T) = ;  ac SR C(R;S)=

35 Philips Research, Kees van Berkel, Ad Peeters, 2002-09-1034 TU/e C : Tangram  handshake circuit ;  ac SR C(R;S)= ac SR ;  | b

36 Philips Research, Kees van Berkel, Ad Peeters, 2002-09-1035 TU/e C : Tangram  handshake circuit C (R||S) = SR ||   o | rx  i

37 Philips Research, Kees van Berkel, Ad Peeters, 2002-09-1036 TU/e Tangram Compilation Tangram program T Handshake circuit VLSI circuit C E Handshake process H ||  · H · T = || · C ·T

38 Philips Research, Kees van Berkel, Ad Peeters, 2002-09-1037 TU/e VLSI programming of asynchronous circuits expander Tangram program Handshake circuit Asynchronous circuit (netlist of gates) compiler simulator feedback behavior, area, time, energy, test coverage

39 Philips Research, Kees van Berkel, Ad Peeters, 2002-09-1038 TU/e Tangram tool box Let Rlin4.tg be a Tangram program: htcomp -B Rlin4 –compiles Rlin4.tg into Rlin4.hcl, a handshake circuit htmap Rlin4 –produces Rlin4*.v files, a CMOS standard-cell circuit htsim Rlin4 a b –executes Rlin4.hcl with files a, b for input/output htview Rlin4 –provides interactive viewing of simulation results

40 Philips Research, Kees van Berkel, Ad Peeters, 2002-09-1039 TU/e Tangram program “Conway” B1 = type [0..1] & B2 = type > & B3 = type > & P = … & Q = … & R = … & conway: main proc (a?chan B2 & d!chan B3). begin b,c: chan B1 | P(a,b) || Q(b,c) || R(c,d) end PQR abcd

41 Philips Research, Kees van Berkel, Ad Peeters, 2002-09-1040 TU/e Tangram program “Conway” & P = proc(a?chan B2 & b!chan B1). begin x: var B2 | forever do a?x; b!x.0; b!x.1 od end & Q= proc(b?chan B1 & c!chan B1). begin y: var B1 | forever do b?y; c!y od end & R= proc(c?chan B1 & d!chan B3). begin x,y,z: var B1 | forever do c?x; c?y; c?z; d! > od end

42 Philips Research, Kees van Berkel, Ad Peeters, 2002-09-1041 TU/e VLSI programming for … Low costs: –introduce resource sharing. Low delay (high throughput): –introduce parallelism. Low energy (low power): –reduce activity; …

43 Philips Research, Kees van Berkel, Ad Peeters, 2002-09-1042 TU/e VLSI programming for low costs Keep it simple!! Introduce resource sharing: commands, auxiliary variables, expressions, operators. Enable resource sharing, by: –reducing parallelism –making similar commands equal

44 Philips Research, Kees van Berkel, Ad Peeters, 2002-09-1043 TU/e Command sharing S ; … ; S P : proc(). S P() ; … ; P() S 00 S 11 | S 00 11

45 Philips Research, Kees van Berkel, Ad Peeters, 2002-09-1044 TU/e Command sharing: example a?x ; … ; a?x ax : proc(). a?x ax() ; … ; ax()  11 | 00 |  axw | 00 11  a

46 Philips Research, Kees van Berkel, Ad Peeters, 2002-09-1045 TU/e Procedure definition vs declaration Procedure definition: P = proc (). S –provides a textual shorthand (expansion) –each call generates copy of resource, i.e. no sharing Procedure declaration: P : proc (). S –defines a sharable resource –each call generates access to this resource

47 Philips Research, Kees van Berkel, Ad Peeters, 2002-09-1046 TU/e Command sharing Applies only to sequentially used commands. Saves resources, almost always (i.e. when command is more costly than a mixer). Impact on delay and energy often favorable. Introduced by means of procedure declaration. Makes Tangram program less well readable. Therefore, apply after program is correct & sound. Should really be applied by compiler.

48 Philips Research, Kees van Berkel, Ad Peeters, 2002-09-1047 TU/e Sharing of auxiliary variables x:=E is an auto assignment when E depends on x. This is compiled as aux:=E; x:= aux, where aux is a “fresh” auxiliary variable. With multiple auto assignments to x, as in: x:=E;... ; x:=F auxiliary variables can be shared, as in: aux:=E; aux2x();... ; aux:=F; aux2x() with aux2x(): proc(). x:=aux

49 Philips Research, Kees van Berkel, Ad Peeters, 2002-09-1048 TU/e Expression sharing x:=E ; … ; a!E f : func(). E x:=f() ; … ; a!f() | E e0e0 e1e1 E e0e0 E e1e1

50 Philips Research, Kees van Berkel, Ad Peeters, 2002-09-1049 TU/e Expression sharing Applies only to sequentially used expressions. Often saves resources, (i.e. when expression is more costly than the demultiplexer). Introduced by means of function declarations. Makes Tangram program less well readable. Therefore apply after program is correct & sound. Should really be applied by compiler.

51 Philips Research, Kees van Berkel, Ad Peeters, 2002-09-1050 TU/e Operator sharing Consider x0 := y0+z0 ; … ; x1 := y1+z1. Operator + can be shared by introducing add : func(a,b? var T): T. a+b and applying it as in x0 := add(y0, z0) ; … ; x1 := add(y1,z1).

52 Philips Research, Kees van Berkel, Ad Peeters, 2002-09-1051 TU/e Operator sharing: the costs Operator sharing may introduce multiplexers to (all) inputs of the operator and a demultiplexer to its output. This form of sharing only reduces costs when: –operator is expensive, –some input(s) and/or output are common.

53 Philips Research, Kees van Berkel, Ad Peeters, 2002-09-1052 TU/e Operator sharing: example Consider x := y+z0 ; … ; x := y+z1. Operator + can be shared by introducing add2y : proc(b? var T). x:=y+b and applying it as in add2y(z0) ; … ; add2y(z1).

54 Philips Research, Kees van Berkel, Ad Peeters, 2002-09-1053 TU/e Greatest Common Divisor gcd: main proc (ab?chan > & c!chan byte). begin x,y: var byte | forever do ab? > ; do x y then x:= x-y od ; c!x od end GCD abc

55 Philips Research, Kees van Berkel, Ad Peeters, 2002-09-1054 TU/e Assigment: make GCD smaller Both assignments (y:= y-x and x:= x-y) are auto assignments and hence require an auxiliary variable. Program requires 4 arithmetic resources (twice < and –). Reduce costs of GCD by saving on auxiliary variables and arithmetic resources. (Beware the costs of multiplexing!) Use of ff variables not allowed for this exercise.


Download ppt "Introduction to Silicon Programming in the Tangram/Haste language Material adapted from lectures by: Prof.dr.ir Kees van Berkel [Dr. Johan Lukkien] [Dr.ir."

Similar presentations


Ads by Google