mirror of https://github.com/KLayout/klayout.git
Allowing RBA::Net objects for DRCLayer#nets as well
This commit is contained in:
parent
35bd336d3a
commit
3068dd2798
|
|
@ -5186,6 +5186,7 @@ CODE
|
||||||
# @brief Pulls net shapes from selected or all nets, optionally annotating nets with properties
|
# @brief Pulls net shapes from selected or all nets, optionally annotating nets with properties
|
||||||
# @synopsis layer.nets
|
# @synopsis layer.nets
|
||||||
# @synopsis layer.nets(net_filter)
|
# @synopsis layer.nets(net_filter)
|
||||||
|
# @synopsis layer.nets(net_object)
|
||||||
# @synopsis layer.nets(circuit_filter, net_filter)
|
# @synopsis layer.nets(circuit_filter, net_filter)
|
||||||
# @synopsis layer.nets(netter, ...)
|
# @synopsis layer.nets(netter, ...)
|
||||||
# @synopsis layer.nets(prop(key), ...)
|
# @synopsis layer.nets(prop(key), ...)
|
||||||
|
|
@ -5202,7 +5203,7 @@ CODE
|
||||||
# complete - subnets from subcircuits are not selected. The net name is taken from
|
# complete - subnets from subcircuits are not selected. The net name is taken from
|
||||||
# the net's home circuit (to topmost location where all net connections are formed).
|
# the net's home circuit (to topmost location where all net connections are formed).
|
||||||
# You can specify a circuit filter to select nets from certain circuits only or
|
# You can specify a circuit filter to select nets from certain circuits only or
|
||||||
# give a RBA::Circuit object explicitly.
|
# give a RBA::Circuit object explicitly. You can also specify RBA::Net objects directly.
|
||||||
#
|
#
|
||||||
# @code
|
# @code
|
||||||
# connect(metal1, via1)
|
# connect(metal1, via1)
|
||||||
|
|
@ -5230,6 +5231,8 @@ CODE
|
||||||
|
|
||||||
@engine._context("nets") do
|
@engine._context("nets") do
|
||||||
|
|
||||||
|
nets = nil
|
||||||
|
|
||||||
# parse arguments
|
# parse arguments
|
||||||
filters = nil
|
filters = nil
|
||||||
circuits = nil
|
circuits = nil
|
||||||
|
|
@ -5241,6 +5244,9 @@ CODE
|
||||||
filters << a
|
filters << a
|
||||||
elsif a.is_a?(1.class)
|
elsif a.is_a?(1.class)
|
||||||
prop_id = a
|
prop_id = a
|
||||||
|
elsif a.is_a?(RBA::Net)
|
||||||
|
nets ||= []
|
||||||
|
nets << a
|
||||||
elsif a.is_a?(RBA::Circuit)
|
elsif a.is_a?(RBA::Circuit)
|
||||||
circuits ||= []
|
circuits ||= []
|
||||||
circuits << a
|
circuits << a
|
||||||
|
|
@ -5272,13 +5278,14 @@ CODE
|
||||||
circuits ||= []
|
circuits ||= []
|
||||||
circuits += netlist.circuits_by_name(circuit_filter)
|
circuits += netlist.circuits_by_name(circuit_filter)
|
||||||
end
|
end
|
||||||
nets = nil
|
|
||||||
if !circuits
|
if !circuits
|
||||||
if filters
|
if filters
|
||||||
nets = filters.collect { |f| netlist.nets_by_name(f) }.flatten
|
nets ||= []
|
||||||
|
nets += filters.collect { |f| netlist.nets_by_name(f) }.flatten
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
nets = circuits.collect do |circuit|
|
nets ||= []
|
||||||
|
nets += circuits.collect do |circuit|
|
||||||
(filters || ["*"]).collect { |f| circuit.nets_by_name(f) }.flatten
|
(filters || ["*"]).collect { |f| circuit.nets_by_name(f) }.flatten
|
||||||
end.flatten
|
end.flatten
|
||||||
end
|
end
|
||||||
|
|
|
||||||
|
|
@ -68,11 +68,14 @@ l1.nets(self._netter).output(101, 0)
|
||||||
l1.nets(prop(1)).output(102, 0)
|
l1.nets(prop(1)).output(102, 0)
|
||||||
l1.nets(prop(nil)).output(103, 0)
|
l1.nets(prop(nil)).output(103, 0)
|
||||||
|
|
||||||
l1.nets("X").output(110, 0)
|
x1 = l1.nets("X")
|
||||||
|
x1.output(110, 0)
|
||||||
l1.nets("TOP", "X").output(111, 0)
|
l1.nets("TOP", "X").output(111, 0)
|
||||||
l1.nets("TOP", "NOTEXIST").output(112, 0)
|
l1.nets("TOP", "NOTEXIST").output(112, 0)
|
||||||
l1.nets("NOTEXIST", "NOTEXIST").output(113, 0)
|
l1.nets("NOTEXIST", "NOTEXIST").output(113, 0)
|
||||||
|
|
||||||
|
x2 = l1.nets(*netlist.nets_by_name("X"))
|
||||||
|
(x1 ^ x2).output(114, 0)
|
||||||
|
|
||||||
# checks with property constraints
|
# checks with property constraints
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue