Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
P
Pearl River
Manage
Activity
Members
Labels
Plan
Issues
0
Issue boards
Milestones
Wiki
Code
Merge requests
0
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package Registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Manufacturing
Pearl River
Commits
5e816d4a
Commit
5e816d4a
authored
6 years ago
by
David Lanzendörfer
Browse files
Options
Downloads
Patches
Plain Diff
Updating script and making alignment issues go away
parent
f31022c2
No related branches found
Branches containing commit
No related tags found
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
Vendors/HKUST/Python/make_masks.py
+40
-28
40 additions, 28 deletions
Vendors/HKUST/Python/make_masks.py
with
40 additions
and
28 deletions
Vendors/HKUST/Python/make_masks.py
+
40
−
28
View file @
5e816d4a
...
...
@@ -2,10 +2,10 @@
import
gdspy
import
numpy
#spacing=
10
00
spacing
=
500
frame_width
=
200
square_middle
=
18750
#spacing=0
.
0
spacing
=
500
.0
frame_width
=
200
.0
square_middle
=
18750
.0
darkfield_masks
=
[
[
"
nwell
"
,
"
pwell
"
,
"
pbase
"
,
"
nbase
"
],
...
...
@@ -19,10 +19,10 @@ brightfield_masks = [
]
def
get_offset
(
idx
):
x0
=
20000
y0
=
20500
x1
=
95000
y1
=
95500
x0
=
20000
.0
y0
=
20500
.0
x1
=
95000
.0
y1
=
95500
.0
if
(
idx
==
0
):
return
[
x0
,
y1
]
...
...
@@ -33,13 +33,11 @@ def get_offset(idx):
elif
(
idx
==
3
):
return
[
x1
,
y0
]
else
:
return
[
0
,
0
]
return
[
0
.0
,
0.
0
]
def
get_layer_location
(
idx
,
w
,
h
):
def
get_layer_location
(
idx
,
sidelengt
h
):
ret
=
get_offset
(
idx
)
#18750
ret
[
0
]
=
ret
[
0
]
-
w
/
2
ret
[
1
]
=
ret
[
1
]
-
h
/
2
if
(
idx
==
0
):
ret
[
0
]
=
ret
[
0
]
+
square_middle
ret
[
1
]
=
ret
[
1
]
-
square_middle
...
...
@@ -53,6 +51,9 @@ def get_layer_location(idx,w,h):
ret
[
0
]
=
ret
[
0
]
-
square_middle
ret
[
1
]
=
ret
[
1
]
+
square_middle
ret
[
0
]
=
ret
[
0
]
-
sidelength
/
2
ret
[
1
]
=
ret
[
1
]
-
sidelength
/
2
return
ret
def
get_frame
(
bb
):
...
...
@@ -60,13 +61,13 @@ def get_frame(bb):
p1
=
bb
[
0
]
p2
=
bb
[
1
]
pp1
=
[
p1
[
0
]
-
spacing
,
p1
[
1
]
-
(
spacing
+
frame_width
)]
pp2
=
[
p1
[
0
]
-
(
spacing
+
frame_width
),
p2
[
1
]
+
(
spacing
+
frame_width
)]
pp1
=
[
p1
[
0
]
-
spacing
,
p1
[
1
]
-
(
spacing
+
frame_width
)]
pp2
=
[
p1
[
0
]
-
(
spacing
+
frame_width
),
p2
[
1
]
+
(
spacing
+
frame_width
)]
stripe
=
gdspy
.
Rectangle
(
pp1
,
pp2
,
layer
=
1
,
datatype
=
0
)
ret
.
append
(
stripe
)
pp1
=
[
p2
[
0
]
+
spacing
,
p1
[
1
]
-
(
spacing
+
frame_width
)]
pp2
=
[
p2
[
0
]
+
(
spacing
+
frame_width
),
p2
[
1
]
+
(
spacing
+
frame_width
)]
pp1
=
[
p2
[
0
]
+
spacing
,
p1
[
1
]
-
(
spacing
+
frame_width
)]
pp2
=
[
p2
[
0
]
+
(
spacing
+
frame_width
),
p2
[
1
]
+
(
spacing
+
frame_width
)]
stripe
=
gdspy
.
Rectangle
(
pp1
,
pp2
,
layer
=
1
,
datatype
=
0
)
ret
.
append
(
stripe
)
...
...
@@ -118,16 +119,14 @@ def make_masks(frame,mask_type,mask_mappings):
#we have four tiles ready to be filled
for
idx
in
range
(
4
):
if
(
len
(
m
)
>
idx
):
cellname
=
"
mask_
"
+
m
[
idx
]
tp
=
get_offset
(
idx
)
fs
=
2000
tp
[
1
]
=
97800
fs
=
2000
.0
tp
[
1
]
=
97800
.0
if
((
idx
==
2
)
or
(
idx
==
3
)):
tp
[
1
]
=
16000
tp
[
1
]
=
16000
.0
if
((
idx
==
1
)
or
(
idx
==
3
)):
tp
[
0
]
=
tp
[
0
]
-
(
75000
/
2
)
text
=
gdspy
.
Text
(
cellname
,
fs
,
tp
)
tp
[
0
]
=
tp
[
0
]
-
(
75000.0
/
2
)
text
=
gdspy
.
Text
(
m
[
idx
],
fs
,
tp
)
toppgs
=
gdspy
.
fast_boolean
(
toppgs
,
text
,
"
xor
"
,
precision
=
0.001
,
max_points
=
800
,
layer
=
0
)
topcell
=
gdspy
.
Cell
(
mask_type
+
str
(
i
))
topcell
.
add
(
toppgs
)
...
...
@@ -144,28 +143,41 @@ def make_masks(frame,mask_type,mask_mappings):
pgs
=
mirrored_polygons
(
cell
)
bb
=
cell
.
get_bounding_box
()
bb
=
bb
*
5
zeroing_offset
=
[
0
,
0
]
zeroing_offset
[
0
]
=
bb
[
0
][
0
]
zeroing_offset
[
1
]
=
bb
[
0
][
1
]
bb
[
0
]
=
bb
[
0
]
-
zeroing_offset
bb
[
1
]
=
bb
[
1
]
-
zeroing_offset
bb
=
bb
*
5
w
=
bb
[
1
][
0
]
-
bb
[
0
][
0
]
h
=
bb
[
1
][
1
]
-
bb
[
0
][
1
]
offset
=
get_layer_location
(
idx
,
w
,
h
)
l
=
bb
[
1
][
0
]
if
(
l
<
bb
[
1
][
1
]):
l
=
bb
[
1
][
1
]
offset
=
get_layer_location
(
idx
,
l
)
for
pg
in
pgs
:
pg
=
pg
*
5
pg
=
pg
+
offset
topcell
.
add
(
gdspy
.
Polygon
(
pg
))
bb
[
0
][
0
]
=
0
bb
[
0
][
1
]
=
0
bb
[
1
][
0
]
=
l
bb
[
1
][
1
]
=
l
bb
[
0
]
=
bb
[
0
]
+
offset
bb
[
1
]
=
bb
[
1
]
+
offset
for
stripe
in
get_frame
(
bb
):
topcell
.
add
(
stripe
)
#polypath = gdspy.PolyPath([get_offset(0),get_offset(3)],width=2)
#topcell.add(polypath)
#polypath = gdspy.PolyPath([get_offset(1),get_offset(2)],width=2)
#topcell.add(polypath)
topcell
=
topcell
.
flatten
(
single_layer
=
1
)
outgdsii
.
add
(
topcell
)
outgdsii
.
write_gds
(
"
Vendors/HKUST/Masks/
"
+
mask_type
+
str
(
i
)
+
"
.gds
"
)
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment