ToolsCourseTp8: muxe.py

File muxe.py, 2.1 KB (added by anne, 17 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 ()