WIP: DRC properties constraints now need explicit generation of output properties.

This commit is contained in:
Matthias Koefferlein
2023-01-21 14:04:06 +01:00
parent 9b64224cb4
commit 38808fccf7
12 changed files with 161 additions and 49 deletions
+15 -15
View File
@@ -40,15 +40,15 @@ l4_wp.output(16, 0)
# booleans with properties constraints
l3_wp.and(l4_wp, props_eq).output(20, 0)
l3_wp1.and(l4_wp, props_eq).output(21, 0)
l3_wp2as1.and(l4_wp, props_eq).output(22, 0)
l3_nowp.and(l4_wp, props_eq).output(23, 0)
l3_wp.and(l4_wp, props_eq + props_copy).output(20, 0)
l3_wp1.and(l4_wp, props_eq + props_copy).output(21, 0)
l3_wp2as1.and(l4_wp, props_eq + props_copy).output(22, 0)
l3_nowp.and(l4_wp, props_eq + props_copy).output(23, 0)
l3_wp.and(l4_wp, props_ne).output(30, 0)
l3_wp1.and(l4_wp, props_ne).output(31, 0)
l3_wp2as1.and(l4_wp, props_ne).output(32, 0)
l3_nowp.and(l4_wp, props_ne).output(33, 0)
l3_wp.and(l4_wp, props_ne + props_copy).output(30, 0)
l3_wp1.and(l4_wp, props_ne + props_copy).output(31, 0)
l3_wp2as1.and(l4_wp, props_ne + props_copy).output(32, 0)
l3_nowp.and(l4_wp, props_ne + props_copy).output(33, 0)
l3_wp.and(l4_wp, props_copy).output(40, 0)
l3_wp1.and(l4_wp, props_copy).output(41, 0)
@@ -79,15 +79,15 @@ l1.nets("NOTEXIST", "NOTEXIST").output(113, 0)
l1_nets = l1.nets
l1_nets.space(1.0.um, projection).polygons.output(200, 0)
l1_nets.space(1.0.um, projection, props_eq).polygons.output(201, 0)
l1_nets.space(1.0.um, projection, props_ne).polygons.output(202, 0)
l1_nets.space(1.0.um, projection, props_eq + props_copy).polygons.output(201, 0)
l1_nets.space(1.0.um, projection, props_ne + props_copy).polygons.output(202, 0)
l1_nets.space(1.0.um, projection, props_copy).polygons.output(203, 0)
l1_nets.width(1.0.um, projection).polygons.output(204, 0)
l1_nets.width(1.0.um, projection, props_copy).polygons.output(205, 0)
l1_nets.drc(space(projection) < 1.0.um).polygons.output(210, 0)
l1_nets.drc(space(projection) < 1.0.um, props_eq).polygons.output(211, 0)
l1_nets.drc(space(projection) < 1.0.um, props_ne).polygons.output(212, 0)
l1_nets.drc(space(projection) < 1.0.um, props_eq + props_copy).polygons.output(211, 0)
l1_nets.drc(space(projection) < 1.0.um, props_ne + props_copy).polygons.output(212, 0)
l1_nets.drc(space(projection) < 1.0.um, props_copy).polygons.output(213, 0)
l1_nets.drc(width(projection) < 1.0.um).polygons.output(214, 0)
l1_nets.drc(width(projection) < 1.0.um, props_copy).polygons.output(215, 0)
@@ -103,10 +103,10 @@ l1_nets.space(1.0.um, projection, props_copy).edges.extended_in(10.nm).output(22
# sizing with properties
l1_nets_sized = l1_nets.sized(0.2.um)
l1_nets_sized.and(l1_nets_sized, props_ne).output(300, 0) # overlap of different nets, same layer
l1_nets_sized.and(l1_nets_sized, props_ne + props_copy).output(300, 0) # overlap of different nets, same layer
l1_nets.drc(primary.sized(0.2.um) & foreign.sized(0.2.um)).output(310, 0)
l1_nets.drc(primary.sized(0.2.um) & foreign.sized(0.2.um), props_ne).output(311, 0)
l1_nets.drc(primary.sized(0.2.um) & foreign.sized(0.2.um), props_eq).output(312, 0)
l1_nets.drc(primary.sized(0.2.um) & foreign.sized(0.2.um), props_ne + props_copy).output(311, 0)
l1_nets.drc(primary.sized(0.2.um) & foreign.sized(0.2.um), props_eq + props_copy).output(312, 0)
l1_nets.drc(primary.sized(0.2.um) & foreign.sized(0.2.um), props_copy).output(313, 0)