41 | | # declaration des connecteurs |
42 | | def Interface ( self ): |
43 | | self.a = SignalIn ( "a" , 4 ) |
44 | | self.b = SignalIn ( "b" , 4 ) |
45 | | self.c = SignalIn ( "c" , 4 ) |
46 | | self.v = SignalIn ( "v" , 1 ) |
47 | | self.cout = SignalOut ( "cout", 1 ) |
48 | | self.s = SignalOut ( "s" , 4 ) |
49 | | self.cmd = SignalIn ( "cmd" , 1 ) |
50 | | self.vdd = VddIn ( "vdd" ) |
51 | | self.vss = VssIn ( "vss" ) |
52 | | # instanciation des operateurs |
53 | | def Netlist ( self ): |
54 | | # declaration des signaux internes |
55 | | d_aux = Signal ( "d_aux", 4 ) |
56 | | e_aux = Signal ( "e_aux", 4 ) |
57 | | ovr = Signal ( "ovr" , 1 ) |
58 | | # generation |
59 | | Generate ( "DpgenNand2", "instance_nand2_4bits" |
60 | | , param = { ’nbit’ : 4 } |
61 | | ) |
62 | | # instanciation |
63 | | self.instance_nand2_4bits = Inst ( "instance_nand2_4bits" |
64 | | , map = { ’i0’ : Cat ( self.v |
65 | | , self.v |
66 | | , self.v |
67 | | , self.v ) |
68 | | , ’i1’ : self.a |
69 | | , ’nq’ : d_aux |
70 | | , ’vdd’ : self.vdd |
71 | | , ’vss’ : self.vss |
72 | | } |
73 | | ) |
74 | | Generate ( "DpgenOr2", "instance_or2_4bits" |
75 | | , param = { ’nbit’ : 4 } |
76 | | ) |
77 | | self.instance_or2_4bits = Inst ( "instance_or2_4bits" |
78 | | , map = { ’i0’ : d_aux |
79 | | , ’i1’ : self.b |
80 | | , ’q’ : e_aux |
81 | | , ’vdd’ : self.vdd |
82 | | , ’vss’ : self.vss |
83 | | } |
84 | | ) |
85 | | Generate ( "DpgenAdsb2f", "instance_add2_4bits" |
86 | | , param = { ’nbit’ : 4 } |
87 | | ) |
88 | | self.instance_add2_4bits = Inst ( "instance_add2_4bits" |
89 | | , map = { ’i0’ : e_aux |
90 | | , ’i1’ : self.c |
91 | | , ’q’ : self.s |
92 | | , ’add_sub’ : self.cmd |
93 | | , ’c31’ : self.cout |
94 | | , ’c30’ : ovr |
95 | | , ’vdd’ : self.vdd |
96 | | , ’vss’ : self.vss |
97 | | } |
98 | | ) |
| 40 | # declaration des connecteurs |
| 41 | def Interface ( self ): |
| 42 | self.a = SignalIn ( "a" , 4 ) |
| 43 | self.b = SignalIn ( "b" , 4 ) |
| 44 | self.c = SignalIn ( "c" , 4 ) |
| 45 | self.v = SignalIn ( "v" , 1 ) |
| 46 | self.cout = SignalOut ( "cout", 1 ) |
| 47 | self.s = SignalOut ( "s" , 4 ) |
| 48 | self.cmd = SignalIn ( "cmd" , 1 ) |
| 49 | self.vdd = VddIn ( "vdd" ) |
| 50 | self.vss = VssIn ( "vss" ) |
| 51 | # instanciation des operateurs |
| 52 | def Netlist ( self ): |
| 53 | # declaration des signaux internes |
| 54 | d_aux = Signal ( "d_aux", 4 ) |
| 55 | e_aux = Signal ( "e_aux", 4 ) |
| 56 | ovr = Signal ( "ovr" , 1 ) |
| 57 | # generation |
| 58 | Generate ( "DpgenNand2", "instance_nand2_4bits" |
| 59 | , param = { ’nbit’ : 4 } |
| 60 | ) |
| 61 | # instanciation |
| 62 | self.instance_nand2_4bits = Inst ( "instance_nand2_4bits" |
| 63 | , map = { ’i0’ : Cat ( self.v |
| 64 | , self.v |
| 65 | , self.v |
| 66 | , self.v ) |
| 67 | , ’i1’ : self.a |
| 68 | , ’nq’ : d_aux |
| 69 | , ’vdd’ : self.vdd |
| 70 | , ’vss’ : self.vss |
| 71 | } |
| 72 | ) |
| 73 | Generate ( "DpgenOr2", "instance_or2_4bits" |
| 74 | , param = { ’nbit’ : 4 } |
| 75 | ) |
| 76 | self.instance_or2_4bits = Inst ( "instance_or2_4bits" |
| 77 | , map = { ’i0’ : d_aux |
| 78 | , ’i1’ : self.b |
| 79 | , ’q’ : e_aux |
| 80 | , ’vdd’ : self.vdd |
| 81 | , ’vss’ : self.vss |
| 82 | } |
| 83 | ) |
| 84 | Generate ( "DpgenAdsb2f", "instance_add2_4bits" |
| 85 | , param = { ’nbit’ : 4 } |
| 86 | ) |
| 87 | self.instance_add2_4bits = Inst ( "instance_add2_4bits" |
| 88 | , map = { ’i0’ : e_aux |
| 89 | , ’i1’ : self.c |
| 90 | , ’q’ : self.s |
| 91 | , ’add_sub’ : self.cmd |
| 92 | , ’c31’ : self.cout |
| 93 | , ’c30’ : ovr |
| 94 | , ’vdd’ : self.vdd |
| 95 | , ’vss’ : self.vss |
| 96 | } |
| 97 | ) |