ToolsCourseTp8: muxe.py

File muxe.py, 2.1 KB (added by anne, 19 years ago)
Line 
1#!/usr/bin/python
2from stratus import *
3
4class 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
61mon_muxe = muxe ( "muxe" )
62mon_muxe.Interface ()
63mon_muxe.Netlist ()
64mon_muxe.Save ()