diff options
Diffstat (limited to '')
| -rw-r--r-- | lace.rb | 18 |
1 files changed, 9 insertions, 9 deletions
| @@ -79,25 +79,25 @@ module Lace | |||
| 79 | end | 79 | end |
| 80 | 80 | ||
| 81 | def real_nets(refs) | 81 | def real_nets(refs) |
| 82 | n = 1 | ||
| 83 | nets = {} | 82 | nets = {} |
| 84 | seen = Set.new | 83 | seen = Set.new |
| 85 | @nets.each do | id, net | | 84 | @nets.each do | id, net | |
| 86 | next if seen.member?(net.object_id) | 85 | next if seen.member?(net.object_id) |
| 87 | seen.add(net.object_id) | 86 | seen.add(net.object_id) |
| 88 | name = net.name | ||
| 89 | unless name | ||
| 90 | name = "$unnamed#{n}" | ||
| 91 | n += 1 | ||
| 92 | end | ||
| 93 | raise "Multiple disconnected nets named #{name}" if nets.member?(name) | ||
| 94 | nodes = [] | 87 | nodes = [] |
| 88 | parts = [] | ||
| 95 | refs.each do | ref, comp | | 89 | refs.each do | ref, comp | |
| 96 | comp.pins.each do | pin, pinnet | | 90 | comp.pins.each do | pin, pinnet | |
| 97 | nodes << {:ref => ref, :pin => pin} if definitive_net(pinnet).object_id == net.object_id | 91 | next unless definitive_net(pinnet).object_id == net.object_id |
| 92 | nodes << {:ref => ref, :pin => pin} | ||
| 93 | parts << "#{ref}$#{pin}" | ||
| 98 | end | 94 | end |
| 99 | end | 95 | end |
| 100 | nets[name] = nodes if nodes.size > 1 | 96 | next unless nodes.size > 1 |
| 97 | name = net.name | ||
| 98 | name = parts.sort.join("_") unless name | ||
| 99 | raise "Multiple disconnected nets named #{name}" if nets.member?(name) | ||
| 100 | nets[name] = nodes | ||
| 101 | end | 101 | end |
| 102 | return nets | 102 | return nets |
| 103 | end | 103 | end |
