mirror of https://github.com/KLayout/klayout.git
62 lines
1.8 KiB
Plaintext
62 lines
1.8 KiB
Plaintext
|
|
# shielded/transparent
|
|
|
|
source($drc_test_source, "TOP")
|
|
target($drc_test_target)
|
|
|
|
a = input(1, 0)
|
|
b = input(2, 0)
|
|
|
|
a.output(1, 0)
|
|
b.output(2, 0)
|
|
|
|
def split_vs_normal(r, f1, f2, *args)
|
|
d1 = r.send(f1, *args)[0].data
|
|
d2 = r.send(f2, *args).data
|
|
d1.each.collect(&:to_s).sort == d2.each.collect(&:to_s).sort || raise("#{f1.to_s} vs. #{f2.to_s} check failed: #{d1.to_s} != #{d2.to_s}")
|
|
end
|
|
|
|
def splitn_vs_normal(r, f1, f2, *args)
|
|
d1 = r.send(f1, *args)[1].data
|
|
d2 = r.send(f2, *args).data
|
|
d1.each.collect(&:to_s).sort == d2.each.collect(&:to_s).sort || raise("#{f1.to_s} vs. #{f2.to_s} check failed: #{d1.to_s} != #{d2.to_s}")
|
|
end
|
|
|
|
a.covering(b).output(100, 0)
|
|
a.covering(b, 1..1).output(101, 0)
|
|
a.covering(b, 2..2).output(102, 0)
|
|
a.covering(b, 3..3).output(103, 0)
|
|
b.inside(a).output(110, 0)
|
|
a.not_covering(b).output(120, 0)
|
|
b.not_inside(a).output(130, 0)
|
|
|
|
split_vs_normal(a, :split_covering, :covering, b)
|
|
split_vs_normal(a, :split_covering, :covering, b, 1..1)
|
|
split_vs_normal(a, :split_covering, :covering, b, 2..2)
|
|
split_vs_normal(a, :split_covering, :covering, b, 3..3)
|
|
split_vs_normal(b, :split_inside, :inside, a)
|
|
splitn_vs_normal(a, :split_covering, :not_covering, b)
|
|
splitn_vs_normal(b, :split_inside, :not_inside, a)
|
|
|
|
deep
|
|
|
|
a = input(1, 0)
|
|
b = input(2, 0)
|
|
|
|
a.covering(b).output(200, 0)
|
|
a.covering(b, 1..1).output(201, 0)
|
|
a.covering(b, 2..2).output(202, 0)
|
|
a.covering(b, 3..3).output(203, 0)
|
|
b.inside(a).output(210, 0)
|
|
a.not_covering(b).output(220, 0)
|
|
b.not_inside(a).output(230, 0)
|
|
|
|
split_vs_normal(a, :split_covering, :covering, b)
|
|
split_vs_normal(a, :split_covering, :covering, b, 1..1)
|
|
split_vs_normal(a, :split_covering, :covering, b, 2..2)
|
|
split_vs_normal(a, :split_covering, :covering, b, 3..3)
|
|
split_vs_normal(b, :split_inside, :inside, a)
|
|
splitn_vs_normal(a, :split_covering, :not_covering, b)
|
|
splitn_vs_normal(b, :split_inside, :not_inside, a)
|
|
|