OSDN Git Service

netlist: connected_via()
authorPawel Jewstafjew <Pawel.Jewstafjew@gmail.com>
Mon, 18 May 2015 15:48:53 +0000 (16:48 +0100)
committerPawel Jewstafjew <Pawel.Jewstafjew@gmail.com>
Mon, 18 May 2015 15:48:53 +0000 (16:48 +0100)
netlist/netlist.py

index 0a060ac..d281cea 100755 (executable)
@@ -248,38 +248,46 @@ class NetList:
                                return False
                print device.name, pin_name, 'single node nets, instances:', len(pins)
                return True
-        def connected_res(self, device, pin_name, net2):
-               "connected via resistor"
+
+        def connected_via(self, kind, device, pin_name, net2):
+               "connected via kind-device"
                 (pin, net_name) = self.find_net_dev(device, pin_name)
                 nodes = self.netlist[net_name]
                res = []
                for n in nodes.nodes:
-                       if n.device.startswith('R'):
+                       if n.device.startswith(kind):
                                res.append(n)
                if res == []:
-                       print device.name, 'pin', pin, pin_name, 'NOT connected to resistor'
+                       print device.name, 'pin', pin, pin_name, 'NOT connected to', kind+'-device'
                        return False
                if len(res) != 1:
-                       print device.name, 'pin', pin, pin_name, 'connected to multiple resistors'
+                       print device.name, 'pin', pin, pin_name, 'connected to multiple', kind+'-devices'
                        return False
                r = res[0]
-               if r.device.startswith('RA'): # 4 resistors in 8 pin package
+               if (kind == 'R') and r.device.startswith('RA'): # 4 resistors in 8 pin package
                        pin_a = int(r.pin)
                        assert(pin_a >= 1)
                        assert(pin_a <= 8)
                        pin_b = `8+1-pin_a` # the opposite pin
-               else: # assume standard 2-pin resistor
+               else: # assume standard 2-pin component
                        pin_a = int(r.pin)
                        assert(pin_a >= 1)
                        assert(pin_a <= 2)
                        pin_b = `2+1-pin_a` # the opposite pin
                node = Node((r.device, pin_b))
-               #print 'resistor:', r, node, self.find_net(node), net2
+               #print 'through:', r, node, self.find_net(node), net2
                if not self.connected_net(node, net2):
-                       print device.name, pin, pin_name, 'NOT pulled to', net2
+                       print device.name, pin, pin_name, 'NOT connected to', net2, 'via', kind+'-device'
                        return False
                print device.name, pin, pin_name, 'is pulled to', net2
                return True
+        def connected_cap(self, device, pin_name, net2):
+               "connected via capacitor"
+                return self.connected_via('C', device, pin_name, net2)
+        def connected_res(self, device, pin_name, net2):
+               "connected via resistor"
+                return self.connected_via('R', device, pin_name, net2)
+
         def device_nets(self, device):
                mask = Node((device, '*'))
                res = []
@@ -337,7 +345,7 @@ class NetList:
                                print nets
                                return False
                        nets.append(net_name)
-               print device.name, 'uniq_net OK'
+               print device.name, 'separate_pins OK'
                return True
 
 class Parts: