API enhancement for NetlistCrossReference: obtaining information from one object only (net, circuit), does not need a pair anymore

This commit is contained in:
Matthias Koefferlein
2025-05-22 20:54:21 +02:00
parent 90c4f654b6
commit 57c2add00a
4 changed files with 236 additions and 0 deletions
+84
View File
@@ -81,12 +81,36 @@ class DBNetlistCrossReference_TestClass < TestBase
end
assert_equal(info.join(","), "/1:Match,BULK/6:Match,IN/2:Match,OUT/3:Match,VDD/5:Match,VSS/4:Match")
info = []
xref.each_pin_pair(cp_inv2.first) do |p|
info << [ p.first, p.second ].collect { |s| s ? s.name : "(nil)" }.join("/") + ":" + p.status.to_s
end
assert_equal(info.join(","), "/1:Match,BULK/6:Match,IN/2:Match,OUT/3:Match,VDD/5:Match,VSS/4:Match")
info = []
xref.each_pin_pair(cp_inv2.second) do |p|
info << [ p.first, p.second ].collect { |s| s ? s.name : "(nil)" }.join("/") + ":" + p.status.to_s
end
assert_equal(info.join(","), "/1:Match,BULK/6:Match,IN/2:Match,OUT/3:Match,VDD/5:Match,VSS/4:Match")
info = []
xref.each_net_pair(cp_inv2) do |p|
info << [ p.first, p.second ].collect { |s| s ? s.name : "(nil)" }.join("/") + ":" + p.status.to_s
end
assert_equal(info.join(","), "/1:Match,BULK/6:Match,IN/2:Match,OUT/3:Match,VDD/5:Match,VSS/4:Match")
info = []
xref.each_net_pair(cp_inv2.first) do |p|
info << [ p.first, p.second ].collect { |s| s ? s.name : "(nil)" }.join("/") + ":" + p.status.to_s
end
assert_equal(info.join(","), "/1:Match,BULK/6:Match,IN/2:Match,OUT/3:Match,VDD/5:Match,VSS/4:Match")
info = []
xref.each_net_pair(cp_inv2.second) do |p|
info << [ p.first, p.second ].collect { |s| s ? s.name : "(nil)" }.join("/") + ":" + p.status.to_s
end
assert_equal(info.join(","), "/1:Match,BULK/6:Match,IN/2:Match,OUT/3:Match,VDD/5:Match,VSS/4:Match")
netp_bulk = nil
xref.each_net_pair(cp_inv2) do |p|
if p.first.name == "BULK"
@@ -100,30 +124,90 @@ class DBNetlistCrossReference_TestClass < TestBase
end
assert_equal(info.join(","), "B/B")
info = []
xref.each_net_terminal_pair(netp_bulk.first) do |p|
info << [ p.first, p.second ].collect { |s| s ? s.terminal_def.name : "(nil)" }.join("/")
end
assert_equal(info.join(","), "B/B")
info = []
xref.each_net_terminal_pair(netp_bulk.second) do |p|
info << [ p.first, p.second ].collect { |s| s ? s.terminal_def.name : "(nil)" }.join("/")
end
assert_equal(info.join(","), "B/B")
info = []
xref.each_net_pin_pair(netp_bulk) do |p|
info << [ p.first, p.second ].collect { |s| s ? s.pin.name : "(nil)" }.join("/")
end
assert_equal(info.join(","), "BULK/6")
info = []
xref.each_net_pin_pair(netp_bulk.first) do |p|
info << [ p.first, p.second ].collect { |s| s ? s.pin.name : "(nil)" }.join("/")
end
assert_equal(info.join(","), "BULK/6")
info = []
xref.each_net_pin_pair(netp_bulk.second) do |p|
info << [ p.first, p.second ].collect { |s| s ? s.pin.name : "(nil)" }.join("/")
end
assert_equal(info.join(","), "BULK/6")
info = []
xref.each_net_subcircuit_pin_pair(netp_bulk) do |p|
info << [ p.first, p.second ].collect { |s| s ? s.pin.name : "(nil)" }.join("/")
end
assert_equal(info.join(","), "")
info = []
xref.each_net_subcircuit_pin_pair(netp_bulk.first) do |p|
info << [ p.first, p.second ].collect { |s| s ? s.pin.name : "(nil)" }.join("/")
end
assert_equal(info.join(","), "")
info = []
xref.each_net_subcircuit_pin_pair(netp_bulk.second) do |p|
info << [ p.first, p.second ].collect { |s| s ? s.pin.name : "(nil)" }.join("/")
end
assert_equal(info.join(","), "")
info = []
xref.each_device_pair(cp_inv2) do |p|
info << [ p.first, p.second ].collect { |s| s ? s.name : "(nil)" }.join("/") + ":" + p.status.to_s
end
assert_equal(info.join(","), "/$1:Match,/$3:Match")
info = []
xref.each_device_pair(cp_inv2.first) do |p|
info << [ p.first, p.second ].collect { |s| s ? s.name : "(nil)" }.join("/") + ":" + p.status.to_s
end
assert_equal(info.join(","), "/$1:Match,/$3:Match")
info = []
xref.each_device_pair(cp_inv2.second) do |p|
info << [ p.first, p.second ].collect { |s| s ? s.name : "(nil)" }.join("/") + ":" + p.status.to_s
end
assert_equal(info.join(","), "/$1:Match,/$3:Match")
info = []
xref.each_subcircuit_pair(cp_inv2) do |p|
info << [ p.first, p.second ].collect { |s| s ? s.name : "(nil)" }.join("/") + ":" + p.status.to_s
end
assert_equal(info.join(","), "")
info = []
xref.each_subcircuit_pair(cp_inv2.first) do |p|
info << [ p.first, p.second ].collect { |s| s ? s.name : "(nil)" }.join("/") + ":" + p.status.to_s
end
assert_equal(info.join(","), "")
info = []
xref.each_subcircuit_pair(cp_inv2.second) do |p|
info << [ p.first, p.second ].collect { |s| s ? s.name : "(nil)" }.join("/") + ":" + p.status.to_s
end
assert_equal(info.join(","), "")
cp_inv2pair = nil
xref.each_circuit_pair do |cp|
if cp.first && cp.first.name == "INV2PAIR"