1 | #!/usr/bin/python |
---|
2 | from stratus import * |
---|
3 | |
---|
4 | class muxe (Model) : |
---|
5 | # declaration of the cell s external connectors |
---|
6 | def Interface ( self ) : |
---|
7 | self.ra = SignalIn ( "ra" , 4) |
---|
8 | self.d = SignalIn ( "d" , 4) |
---|
9 | self.r = SignalOut ( "r" , 4) |
---|
10 | self.i = SignalIn ( "i" , 3) |
---|
11 | self.vdd = VddIn ( "vdd" ) |
---|
12 | self.vss = VssIn ( "vss" ) |
---|
13 | |
---|
14 | # generation of the multiplexing commands |
---|
15 | def Netlist ( self ) : |
---|
16 | |
---|
17 | # R selection |
---|
18 | # ra -> R-input |
---|
19 | r_sel_a = Signal ("r_sel_a" , 1 ); |
---|
20 | self.r_sel_a = Inst ( "no2_x1", |
---|
21 | "r_sel_a", |
---|
22 | map = {'i0' : self.i[2], |
---|
23 | 'i1' : self.i[1], |
---|
24 | 'nq' : r_sel_a, |
---|
25 | 'vdd' : self.vdd, |
---|
26 | 'vss' : self.vss |
---|
27 | } |
---|
28 | ) |
---|
29 | |
---|
30 | # D -> R-input |
---|
31 | |
---|
32 | r_sel_d = Signal ("r_sel_d" , 1 ); |
---|
33 | self.r_sel_d = Inst ( "ao22_x2", |
---|
34 | "r_sel_d", |
---|
35 | map = {'i0' : self.i[0], |
---|
36 | 'i1' : self.i[1], |
---|
37 | 'i2' : self.i[2], |
---|
38 | 'q' : r_sel_d, |
---|
39 | 'vdd' : self.vdd, |
---|
40 | 'vss' : self.vss |
---|
41 | } |
---|
42 | ) |
---|
43 | |
---|
44 | # R-input |
---|
45 | |
---|
46 | self.mux = {} |
---|
47 | for i in range ( 4 ) : |
---|
48 | self.mux[i] = Inst ( "oa2a22_x2", |
---|
49 | "mux%ld" % i, |
---|
50 | map = {'i0' : self.ra[i], |
---|
51 | 'i1' : r_sel_a, |
---|
52 | 'i2' : self.d[i], |
---|
53 | 'i3' : r_sel_d, |
---|
54 | 'q' : self.r[i], |
---|
55 | 'vdd' : self.vdd, |
---|
56 | 'vss' : self.vss |
---|
57 | } |
---|
58 | ) |
---|
59 | |
---|
60 | # Instanciation de muxe |
---|
61 | mon_muxe = muxe ( "muxe" ) |
---|
62 | mon_muxe.Interface () |
---|
63 | mon_muxe.Netlist () |
---|
64 | mon_muxe.Save () |
---|