Remove full adder PCB, since it will be redone with resistor arrays.
[trinary.git] / digital_simulator / Entity.py
blob7f9766c56b7abc4ea278e61b804c3c2541e5c2ee
1 #!/usr/bin/python
2 # vim: set fileencoding=utf8
3 # Created:20080211
4 # By Jeff Connelly
6 import Port
8 class Entity(object):
10 def __init__(self, name, ports):
11 """Create a new black box entity.
12 name: name of entity
13 ports: a sequence of Port objects
14 """
15 self.name = name
16 self.IN = []
17 self.OUT = []
18 self.INOUT = []
20 for p in ports:
21 if p.direction == "in":
22 self.IN.append(p)
23 elif p.direction == "out":
24 self.OUT.append(p)
25 else:
26 self.INOUT.append(p)
28 def __init__(self, name, inports = [], outports = [], inoutports = []):
29 """Overloaded constructor, takes the port names from the
30 input lists.
31 name: name of the entity
32 inports: list of names for the in ports
33 outports: list of names for the out ports
34 inoutports: list of names for the inout ports
35 """
36 self.name = name
37 self.IN = []
38 self.OUT = []
39 self.INOUT = []
41 for p in inports:
42 self.IN.append(Port.Port(p, Port.IN, None))
43 for p in outports:
44 self.OUT.append(Port.Port(p, Port.OUT, None))
45 for p in inoutports:
46 self.INOUT.append(Port.Port(p, Port.INOUT, None))
48 def __str__(self):
49 s = "<Entity: %s, %d ports" % (self.name, len(self.IN))
50 i = 0
51 for p in self.IN:
52 i += 1
53 s += "\n%d. %s" % (i, p)
54 for p in self.OUT:
55 i += 1
56 s += "\n%d. %s" % (i, p)
57 for p in self.INOUT:
58 i += 1
59 s += "\n%d. %s" % (i, p)
60 s += ">"
61 return s
63 if __name__ == "__main__":
64 a = Port.Port("a", Port.IN, None)
65 b = Port.Port("b", Port.IN, None)
66 c = Port.Port("c", Port.OUT, None)
67 d = Entity("d", ["1", "2"], ["3"], ["4"])
69 max = Entity("max", [a,b,c])
70 print max, d