File: drcSimpleTests_2.drc

package info (click to toggle)
klayout 0.30.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 292,204 kB
  • sloc: cpp: 2,068,428; ruby: 47,823; xml: 26,924; python: 14,404; sh: 1,812; tcl: 212; perl: 170; makefile: 112; ansic: 42
file content (113 lines) | stat: -rw-r--r-- 6,014 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113

target($drc_test_target, "TOP")
source($drc_test_source, "TOP")

def self.expect_count(layer, c, hc, where)
  if layer.count != c 
    raise(where + ": Layer count #{layer.count} does not equal #{c}")
  end
  if layer.hier_count != hc 
    raise(where + ": Layer hier count #{layer.hier_count} does not equal #{c}")
  end
end

a1 = input(1)
b1 = input(2)
c1 = input(3)
e1 = input(5)

a1.output(1, 0)
b1.output(2, 0)
c1.output(3, 0)
e1.output(5, 0)
  
c1.rounded_corners(0.5, 0.5, 16).output(1010, 0)
c1.smoothed(1.5).output(1011, 0)
c1.smoothed(1.5, true).output(1012, 0)

a1.texts.output(1020, 0)
a1.texts("A*").output(1021, 0)
a1.texts(text("A*")).output(1022, 0)
a1.texts(pattern("A*")).output(1023, 0)
a1.texts(pattern("A*"), as_dots).extended(0.05, 0.05, 0.05, 0.05).output(1024, 0)
a1.texts(pattern("A*"), as_boxes).output(1025, 0)

a1.middle.sized(0.05).output(1030, 0)
a1.middle(as_dots).extended(0.05, 0.05, 0.05, 0.05).output(1031, 0)
a1.middle(as_boxes).sized(0.05).output(1032, 0)
a1.extent_refs(0.5, 0.5).sized(0.05).output(1040, 0)
a1.extent_refs(:center).sized(0.05).output(1040, 1)
a1.extent_refs(:c).sized(0.05).output(1040, 2)
a1.extent_refs(:bottom).sized(0.05).output(1041, 0)
a1.extent_refs(:b).sized(0.05).output(1041, 1)
a1.extent_refs(:b, as_edges).extended(0.05, 0.05, 0.05, 0.05).output(1041, 2)
a1.extent_refs(:top).sized(0.05).output(1042, 0)
a1.extent_refs(:t).sized(0.05).output(1042, 1)
a1.extent_refs(:left).sized(0.05).output(1043, 0)
a1.extent_refs(:l).sized(0.05).output(1043, 1)
a1.extent_refs(:right).sized(0.05).output(1044, 0)
a1.extent_refs(:r).sized(0.05).output(1044, 1)
a1.extent_refs(:bottom_left).sized(0.05).output(1045, 0)
a1.extent_refs(:bl).sized(0.05).output(1045, 1)
a1.extent_refs(:bottom_center).sized(0.05).output(1046, 0)
a1.extent_refs(:bc).sized(0.05).output(1046, 1)
a1.extent_refs(:bottom_right).sized(0.05).output(1047, 0)
a1.extent_refs(:br).sized(0.05).output(1047, 1)
a1.extent_refs(:top_left).sized(0.05).output(1048, 0)
a1.extent_refs(:tl).sized(0.05).output(1048, 1)
a1.extent_refs(:top_center).sized(0.05).output(1049, 0)
a1.extent_refs(:tc).sized(0.05).output(1049, 1)
a1.extent_refs(:top_right).sized(0.05).output(1050, 0)
a1.extent_refs(:tr).sized(0.05).output(1050, 1)
a1.extent_refs(:left_center).sized(0.05).output(1051, 0)
a1.extent_refs(:lc).sized(0.05).output(1051, 1)
a1.extent_refs(:right_center).sized(0.05).output(1052, 0)
a1.extent_refs(:rc).sized(0.05).output(1052, 1)
a1.extent_refs(0.25, 0.5, 0.5, 0.75).output(1053, 0)

a1.corners.sized(0.05).output(1060, 0)
a1.corners(-90.0, as_boxes).sized(0.05).output(1061, 0)
a1.corners(-90.0, as_dots).extended(0.05, 0.05, 0.05, 0.05).output(1062, 0)
a1.corners(-90.0, as_edge_pairs).polygons(0).output(1063, 0)
a1.corners(-90.0, as_edge_pairs).first_edges.start_segments(0.1).extended(0.05, 0.05, 0.05, 0.05).output(1064, 0)
a1.corners(-90.0, as_edge_pairs).second_edges.start_segments(0.1).extended(0.05, 0.05, 0.05, 0.05).output(1065, 0)

e1.corners(90.0, as_boxes).sized(0.05).output(1066, 0)
e1.corners(90.0, absolute, as_boxes).sized(0.05).output(1067, 0)
e1.corners(90.0, negative, as_boxes).sized(0.05).output(1068, 0)
e1.corners(44.0 .. 46.0, absolute, as_boxes).sized(0.05).output(1069, 0)

a1.select { |p| p.bbox.width < 0.8 }.output(1100, 0)
a1.collect { |p| p.is_box? && p.bbox.enlarged(0.1, 0.1) }.output(1101, 0)
a1.collect_to_region { |p| p.is_box? && p.bbox.enlarged(0.1, 0.1) }.output(1102, 0)
a1.collect_to_edges { |p| p.is_box? && p.bbox.enlarged(0.1, 0.1) }.output(1103, 0)
a1.collect { |p| p.is_box? && p.bbox.transformed(RBA::VCplxTrans::new(1000.0)).enlarged(120, 120) }.output(1104, 0)
a1.collect { |p| p.is_box? && [ p.bbox.transformed(RBA::VCplxTrans::new(1000.0)).enlarged(150, 150), p.bbox.transformed(RBA::VCplxTrans::new(1000.0)).enlarged(120, 120) ] }.output(1105, 0)
lx = polygon_layer
a1.each { |p| p.is_box? && lx.insert(p) }
lx.output(1106, 0)
a1.collect { |p| p.is_box? && RBA::Region::new(p.bbox.transformed(RBA::VCplxTrans::new(1000.0))).sized(120) }.output(1107, 0)
a1.collect { |p| p.is_box? && RBA::Polygon::new(p.bbox.transformed(RBA::VCplxTrans::new(1000.0))) }.output(1108, 0)
a1.collect { |p| p.is_box? && RBA::DPolygon::new(p.bbox) }.output(1109, 0)
a1.collect { |p| p.is_box? && RBA::SimplePolygon::new(p.bbox.transformed(RBA::VCplxTrans::new(1000.0))) }.output(1110, 0)
a1.collect { |p| p.is_box? && RBA::DSimplePolygon::new(p.bbox) }.output(1111, 0)
a1.collect_to_edges { |p| p.is_box? && p.bbox.transformed(RBA::VCplxTrans::new(1000.0)).enlarged(120, 120) }.output(1112, 0)
a1.collect_to_edges { |p| p.is_box? && [ p.bbox.transformed(RBA::VCplxTrans::new(1000.0)).enlarged(150, 150), p.bbox.transformed(RBA::VCplxTrans::new(1000.0)).enlarged(120, 120) ] }.output(1113, 0)
a1.collect_to_edges { |p| p.is_box? && RBA::Region::new(p.bbox.transformed(RBA::VCplxTrans::new(1000.0))).sized(120) }.output(1114, 0)
a1.collect_to_edges { |p| p.is_box? && RBA::Polygon::new(p.bbox.transformed(RBA::VCplxTrans::new(1000.0))) }.output(1115, 0)
a1.collect_to_edges { |p| p.is_box? && RBA::DPolygon::new(p.bbox) }.output(1116, 0)
a1.collect_to_edges { |p| p.is_box? && RBA::SimplePolygon::new(p.bbox.transformed(RBA::VCplxTrans::new(1000.0))) }.output(1117, 0)
a1.collect_to_edges { |p| p.is_box? && RBA::DSimplePolygon::new(p.bbox) }.output(1118, 0)

a1.edges.select { |p| p.length < 0.8 }.output(1120, 0)
a1.edges.collect { |p| p.length < 0.8 && p.transformed(RBA::VCplxTrans::new(1000.0)) }.output(1121, 0)
a1.edges.collect_to_region { |p| p.length < 0.8 && p.bbox.enlarged(0.1, 0.1) }.output(1122, 0)
a1.edges.collect_to_region { |p| p.length < 0.8 && p.bbox.transformed(RBA::VCplxTrans::new(1000.0)).enlarged(100, 100) }.output(1123, 0)

# edge pair collect
a1.width(1.5).collect { |p| p.transformed(RBA::VCplxTrans::new(1000.0)) }.output(1120, 0)
a1.width(1.5).collect_to_edge_pairs { |p| p.transformed(RBA::VCplxTrans::new(1000.0)) }.output(1121, 0)

expect_count(a1.edges, 9, 9, "a1.edges")
expect_count(a1.width(1.5), 5, 5, "a1.width(1.5)")