diff --git a/caravel.py b/caravel.py
index 80fbdb1..a0b3519 100644
--- a/caravel.py
+++ b/caravel.py
@@ -1,5 +1,6 @@
import logging
import json
+import os
class CaravelConfig():
@@ -7,6 +8,7 @@ class CaravelConfig():
def __init__(self, projects, num_projects):
self.projects = projects
self.num_projects = num_projects
+ self.script_dir = os.path.dirname(os.path.realpath(__file__))
# create macro file & positions, power hooks
def create_macro_config(self):
@@ -87,7 +89,7 @@ def create_macro_config(self):
logging.info(f"total user macros placed: {num_macros_placed}")
- with open("upw_config.json") as fh:
+ with open(os.path.join(self.script_dir, 'caravel_template', 'upw_config.json')) as fh:
caravel_config = json.load(fh)
power_domains = "vccd1 vssd1 vccd1 vssd1"
@@ -215,12 +217,12 @@ def instantiate(self):
# Write to file
with open('verilog/rtl/user_project_wrapper.v', 'w') as fh:
# Insert the Caravel preamble
- with open("upw_pre.v", "r") as fh_pre:
+ with open(os.path.join(self.script_dir, 'caravel_template', 'upw_pre.v')) as fh_pre:
fh.write(fh_pre.read())
# Indent, join, and insert the module instances
fh.write("\n".join([(" " + x).rstrip() for x in body]))
# Insert the Caravel postamble
- with open("upw_post.v", "r") as fh_post:
+ with open(os.path.join(self.script_dir, 'caravel_template', 'upw_post.v')) as fh_post:
fh.write(fh_post.read())
# build the blackbox_project_includes.v file - used for blackboxing when building the GDS
diff --git a/caravel_template/caravel.lyp b/caravel_template/caravel.lyp
new file mode 100644
index 0000000..44b67d1
--- /dev/null
+++ b/caravel_template/caravel.lyp
@@ -0,0 +1,8226 @@
+
+
+
+ #ccccd9
+ #ccccd9
+ 0
+ 0
+ C7
+ C0
+ true
+ false
+ false
+ 1
+ false
+ false
+ 0
+ prBoundary.boundary - 235/4
+ 235/4@1
+
+
+ #00ffff
+ #00ffff
+ 0
+ 0
+ C20
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ pwell.drawing - 64/44
+ 64/44@1
+
+
+ #ffbff2
+ #ffbff2
+ 0
+ 0
+ C38
+ C0
+ true
+ false
+ false
+ 1
+ false
+ false
+ 0
+ pwell.pin - 122/16
+ 122/16@1
+
+
+ #9900e6
+ #9900e6
+ 0
+ 0
+ C1
+ C0
+ true
+ false
+ false
+ 1
+ false
+ false
+ 0
+ pwell.label - 64/59
+ 64/59@1
+
+
+ #ffbff2
+ #ffbff2
+ 0
+ 0
+ I1
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ pwell.res - 64/13
+ 64/13@1
+
+
+ #ffbff2
+ #ffbff2
+ 0
+ 0
+ C1
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ pwell.cut - 64/14
+ 64/14@1
+
+
+ #ffffff
+ #96c8ff
+ 0
+ 0
+ C38
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ pwelliso.pin - 44/16
+ 44/16@1
+
+
+ #9900e6
+ #9900e6
+ 0
+ 0
+ C1
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ pwelliso.label - 44/5
+ 44/5@1
+
+
+ #00cc66
+ #00cc66
+ 0
+ 0
+ I0
+ C0
+ true
+ false
+ false
+ 1
+ false
+ false
+ 0
+ nwell.drawing - 64/20
+ 64/20@1
+
+
+ #ff00ff
+ #ff00ff
+ 0
+ 0
+ C2
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ nwell.net - 84/23
+ 84/23@1
+
+
+ #268c6b
+ #268c6b
+ 0
+ 0
+ C36
+ C0
+ true
+ false
+ false
+ 1
+ false
+ false
+ 0
+ nwell.pin - 64/16
+ 64/16@1
+
+
+ #333399
+ #333399
+ 0
+ 0
+ C1
+ C0
+ true
+ false
+ false
+ 1
+ false
+ false
+ 0
+ nwell.label - 64/5
+ 64/5@1
+
+
+ #c8ffc8
+ #c8ffc8
+ 0
+ 0
+ C47
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ dnwell.drawing - 64/18
+ 64/18@1
+
+
+ #00ffff
+ #00ffff
+ 0
+ 0
+ C6
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ vhvi.drawing - 74/21
+ 74/21@1
+
+
+ #00ff00
+ #00ff00
+ 0
+ 0
+ C34
+ C0
+ true
+ false
+ false
+ 1
+ false
+ false
+ 0
+ diff.drawing - 65/20
+ 65/20@1
+
+
+ #00ff00
+ #00ff00
+ 0
+ 0
+ I1
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ diff.res - 65/13
+ 65/13@1
+
+
+ #00ff00
+ #00ff00
+ 0
+ 0
+ C1
+ C0
+ true
+ false
+ false
+ 1
+ false
+ false
+ 0
+ diff.cut - 65/14
+ 65/14@1
+
+
+ #268c6b
+ #268c6b
+ 0
+ 0
+ C36
+ C0
+ false
+ false
+ false
+ 1
+ false
+ false
+ 0
+ diff.pin - 65/16
+ 65/16@1
+
+
+ #c8ffc8
+ #c8ffc8
+ 0
+ 0
+ C1
+ C0
+ false
+ true
+ false
+ 1
+ false
+ false
+ 0
+ diff.label - 65/6
+ 65/6@1
+
+
+ #00ff00
+ #00ff00
+ 0
+ 0
+ C5
+ C0
+ false
+ true
+ false
+ 1
+ false
+ false
+ 0
+ diff.net - 65/23
+ 65/23@1
+
+
+ #00ff00
+ #00ff00
+ 0
+ 0
+ C0
+ C0
+ false
+ true
+ false
+ 1
+ false
+ false
+ 0
+ diff.boundary - 65/4
+ 65/4@1
+
+
+ #9900e6
+ #9900e6
+ 0
+ 0
+ C36
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ diff.hv - 65/8
+ 65/8@1
+
+
+ #d9cc00
+ #d9cc00
+ 0
+ 0
+ C34
+ C0
+ true
+ false
+ false
+ 1
+ false
+ false
+ 0
+ tap.drawing - 65/44
+ 65/44@1
+
+
+ #d9cc00
+ #d9cc00
+ 0
+ 0
+ C6
+ C0
+ false
+ true
+ false
+ 1
+ false
+ false
+ 0
+ tap.pin - 65/48
+ 65/48@1
+
+
+ #d9cc00
+ #d9cc00
+ 0
+ 0
+ C5
+ C0
+ false
+ true
+ false
+ 1
+ false
+ false
+ 0
+ tap.net - 65/41
+ 65/41@1
+
+
+ #d9cc00
+ #d9cc00
+ 0
+ 0
+ C0
+ C0
+ false
+ true
+ false
+ 1
+ false
+ false
+ 0
+ tap.boundary - 65/60
+ 65/60@1
+
+
+ #fff464
+ #fff464
+ 0
+ 0
+ C1
+ C0
+ false
+ true
+ false
+ 1
+ false
+ false
+ 0
+ tap.label - 65/5
+ 65/5@1
+
+
+ #00ffff
+ #00ffff
+ 0
+ 0
+ I2
+ C0
+ true
+ false
+ false
+ 1
+ false
+ false
+ 0
+ psdm.drawing - 94/20
+ 94/20@1
+
+
+ #afff80
+ #afff80
+ 0
+ 0
+ I2
+ C0
+ true
+ false
+ false
+ 1
+ false
+ false
+ 0
+ nsdm.drawing - 93/44
+ 93/44@1
+
+
+ #ff9d9d
+ #ff9d9d
+ 0
+ 0
+ I5
+ C0
+ true
+ false
+ false
+ 1
+ false
+ false
+ 0
+ poly.drawing - 66/20
+ 66/20@1
+
+
+ #ff8000
+ #ff8000
+ 0
+ 0
+ C38
+ C0
+ true
+ false
+ false
+ 1
+ false
+ false
+ 0
+ poly.pin - 66/16
+ 66/16@1
+
+
+ #ff0000
+ #ff0000
+ 0
+ 0
+ I1
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ poly.res - 66/13
+ 66/13@1
+
+
+ #ff0000
+ #ff0000
+ 0
+ 0
+ C1
+ C0
+ true
+ false
+ false
+ 1
+ false
+ false
+ 0
+ poly.cut - 66/14
+ 66/14@1
+
+
+ #ff0000
+ #ff0000
+ 0
+ 0
+ I1
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ poly.gate - 66/9
+ 66/9@1
+
+
+ #ffafaf
+ #ffafaf
+ 0
+ 0
+ C1
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ poly.label - 66/5
+ 66/5@1
+
+
+ #ff0000
+ #ff0000
+ 0
+ 0
+ C0
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ poly.boundary - 66/4
+ 66/4@1
+
+
+ #ff0000
+ #ff0000
+ 0
+ 0
+ C1
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ poly.probe - 66/25
+ 66/25@1
+
+
+ #ff0000
+ #ff0000
+ 0
+ 0
+ C36
+ C0
+ true
+ false
+ false
+ 1
+ false
+ false
+ 0
+ poly.short - 66/15
+ 66/15@1
+
+
+ #ff0000
+ #ff0000
+ 0
+ 0
+ C5
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ poly.net - 66/23
+ 66/23@1
+
+
+ #ff0000
+ #ff0000
+ 0
+ 0
+ C1
+ C0
+ true
+ false
+ false
+ 1
+ false
+ false
+ 0
+ poly.model - 66/83
+ 66/83@1
+
+
+ #00cc66
+ #00cc66
+ 0
+ 0
+ C50
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ ldntm.drawing - 11/44
+ 11/44@1
+
+
+ #96c8ff
+ #ffffff
+ 0
+ 0
+ C15
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ lvtn.drawing - 125/44
+ 125/44@1
+
+
+ #ff8000
+ #ffffff
+ 0
+ 0
+ C14
+ C0
+ true
+ false
+ false
+ 1
+ false
+ false
+ 0
+ hvtp.drawing - 78/44
+ 78/44@1
+
+
+ #ff0000
+ #e61f0d
+ 0
+ 0
+ C14
+ C0
+ false
+ true
+ false
+ 1
+ false
+ false
+ 0
+ hvtr.drawing - 18/20
+ 18/20@1
+
+
+ #9900e6
+ #9900e6
+ 0
+ 0
+ C41
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ tunm.drawing - 80/20
+ 80/20@1
+
+
+ #008050
+ #008050
+ 0
+ 0
+ I0
+ C0
+ true
+ false
+ false
+ 1
+ false
+ false
+ 0
+ licon1.drawing - 66/44
+ 66/44@1
+
+
+ #ffffcc
+ #ffffcc
+ 0
+ 0
+ C0
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ licon1.boundary - 66/60
+ 66/60@1
+
+
+ #ffe6bf
+ #c8ffff
+ 0
+ 0
+ C6
+ C0
+ false
+ true
+ false
+ 1
+ false
+ false
+ 0
+ licon1.pin - 66/58
+ 66/58@1
+
+
+ #ffffcc
+ #ffffcc
+ 0
+ 0
+ C5
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ licon1.net - 66/41
+ 66/41@1
+
+
+ #bf4026
+ #bf4026
+ 0
+ 0
+ C0
+ C0
+ true
+ false
+ false
+ 1
+ false
+ false
+ 0
+ npc.drawing - 95/20
+ 95/20@1
+
+
+ #ff9d9d
+ #ff9d9d
+ 16
+ 16
+ I0
+ C0
+ true
+ false
+ false
+ 1
+ false
+ false
+ 0
+ li1.drawing - 67/20
+ 67/20@1
+
+
+ #bf4026
+ #bf4026
+ 0
+ 0
+ I0
+ C0
+ true
+ false
+ false
+ 1
+ false
+ false
+ 0
+ li1.pin - 67/16
+ 67/16@1
+
+
+ #ffe6bf
+ #ffe6bf
+ 0
+ 0
+ I1
+ C0
+ false
+ true
+ false
+ 1
+ false
+ false
+ 0
+ li1.res - 67/13
+ 67/13@1
+
+
+ #ffe6bf
+ #ffe6bf
+ 0
+ 0
+ C1
+ C0
+ false
+ true
+ false
+ 1
+ false
+ false
+ 0
+ li1.cut - 67/14
+ 67/14@1
+
+
+ #bf4026
+ #bf4026
+ 0
+ 0
+ C1
+ C0
+ true
+ false
+ false
+ 1
+ false
+ false
+ 0
+ li1.label - 67/5
+ 67/5@1
+
+
+ #ffe6bf
+ #ffe6bf
+ 0
+ 0
+ C53
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ li1.net - 67/23
+ 67/23@1
+
+
+ #d9e6ff
+ #d9e6ff
+ 0
+ 0
+ C0
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ li1.boundary - 67/4
+ 67/4@1
+
+
+ #bf4026
+ #bf4026
+ 0
+ 0
+ C53
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ li1.blockage - 67/10
+ 67/10@1
+
+
+ #ffe6bf
+ #ffe6bf
+ 0
+ 0
+ C36
+ C0
+ true
+ false
+ false
+ 1
+ false
+ false
+ 0
+ li1.short - 67/15
+ 67/15@1
+
+
+ #ffe6bf
+ #ffe6bf
+ 0
+ 0
+ C1
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ li1.probe - 67/25
+ 67/25@1
+
+
+ #ccccd9
+ #ccccd9
+ 0
+ 0
+ C1
+ C0
+ true
+ false
+ false
+ 1
+ false
+ false
+ 0
+ mcon.drawing - 67/44
+ 67/44@1
+
+
+ #ccccd9
+ #ccccd9
+ 0
+ 0
+ C0
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ mcon.boundary - 67/60
+ 67/60@1
+
+
+ #ffffcc
+ #d9e6ff
+ 0
+ 0
+ C6
+ C0
+ false
+ true
+ false
+ 1
+ false
+ false
+ 0
+ mcon.pin - 67/48
+ 67/48@1
+
+
+ #ccccd9
+ #ccccd9
+ 0
+ 0
+ C5
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ mcon.net - 67/41
+ 67/41@1
+
+
+ #80a8ff
+ #80a8ff
+ 0
+ 0
+ I2
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ met1.drawing - 68/20
+ 68/20@1
+
+
+ #0000ff
+ #0000ff
+ 0
+ 0
+ I1
+ C0
+ false
+ true
+ false
+ 1
+ false
+ false
+ 0
+ met1.res - 68/13
+ 68/13@1
+
+
+ #0000ff
+ #0000ff
+ 0
+ 0
+ C1
+ C0
+ false
+ true
+ false
+ 1
+ false
+ false
+ 0
+ met1.cut - 68/14
+ 68/14@1
+
+
+ #5e00e6
+ #5e00e6
+ 0
+ 0
+ C6
+ C0
+ true
+ false
+ false
+ 1
+ false
+ false
+ 0
+ met1.pin - 68/16
+ 68/16@1
+
+
+ #96c8ff
+ #96c8ff
+ 0
+ 0
+ C1
+ C0
+ true
+ false
+ false
+ 1
+ false
+ false
+ 0
+ met1.label - 68/5
+ 68/5@1
+
+
+ #5e00e6
+ #5e00e6
+ 0
+ 0
+ C5
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ met1.net - 68/23
+ 68/23@1
+
+
+ #0000ff
+ #0000ff
+ 0
+ 0
+ C0
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ met1.boundary - 68/4
+ 68/4@1
+
+
+ #0000ff
+ #0000ff
+ 0
+ 0
+ C53
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ met1.blockage - 68/10
+ 68/10@1
+
+
+ #0000ff
+ #0000ff
+ 0
+ 0
+ C36
+ C0
+ true
+ false
+ false
+ 1
+ false
+ false
+ 0
+ met1.short - 68/15
+ 68/15@1
+
+
+ #0000ff
+ #0000ff
+ 0
+ 0
+ C1
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ met1.probe - 68/25
+ 68/25@1
+
+
+ #0000ff
+ #0000ff
+ 0
+ 0
+ C25
+ C0
+ false
+ true
+ false
+ 1
+ false
+ false
+ 0
+ met1.option1 - 68/32
+ 68/32@1
+
+
+ #0000ff
+ #0000ff
+ 0
+ 0
+ C26
+ C0
+ false
+ true
+ false
+ 1
+ false
+ false
+ 0
+ met1.option2 - 68/33
+ 68/33@1
+
+
+ #0000ff
+ #0000ff
+ 0
+ 0
+ C27
+ C0
+ false
+ true
+ false
+ 1
+ false
+ false
+ 0
+ met1.option3 - 68/34
+ 68/34@1
+
+
+ #0000ff
+ #0000ff
+ 0
+ 0
+ C28
+ C0
+ false
+ true
+ false
+ 1
+ false
+ false
+ 0
+ met1.option4 - 68/35
+ 68/35@1
+
+
+ #0000ff
+ #0000ff
+ 0
+ 0
+ C29
+ C0
+ false
+ true
+ false
+ 1
+ false
+ false
+ 0
+ met1.option5 - 68/36
+ 68/36@1
+
+
+ #0000ff
+ #0000ff
+ 0
+ 0
+ C30
+ C0
+ false
+ true
+ false
+ 1
+ false
+ false
+ 0
+ met1.option6 - 68/37
+ 68/37@1
+
+
+ #0000ff
+ #0000ff
+ 0
+ 0
+ C31
+ C0
+ false
+ true
+ false
+ 1
+ false
+ false
+ 0
+ met1.option7 - 68/38
+ 68/38@1
+
+
+ #0000ff
+ #0000ff
+ 0
+ 0
+ C32
+ C0
+ false
+ true
+ false
+ 1
+ false
+ false
+ 0
+ met1.option8 - 68/39
+ 68/39@1
+
+
+ #5e00e6
+ #5e00e6
+ 0
+ 0
+ C1
+ C0
+ true
+ false
+ false
+ 1
+ false
+ false
+ 0
+ via.drawing - 68/44
+ 68/44@1
+
+
+ #5e00e6
+ #5e00e6
+ 0
+ 0
+ C0
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ via.boundary - 68/60
+ 68/60@1
+
+
+ #5e00e6
+ #5e00e6
+ 0
+ 0
+ C5
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ via.net - 68/41
+ 68/41@1
+
+
+ #ae7dff
+ #ae7dff
+ 0
+ 0
+ C6
+ C0
+ false
+ true
+ false
+ 1
+ false
+ false
+ 0
+ via.pin - 68/58
+ 68/58@1
+
+
+ #c080ff
+ #c080ff
+ 0
+ 0
+ I11
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ met2.drawing - 69/20
+ 69/20@1
+
+
+ #ff00ff
+ #ff00ff
+ 0
+ 0
+ I1
+ C0
+ false
+ true
+ false
+ 1
+ false
+ false
+ 0
+ met2.res - 69/13
+ 69/13@1
+
+
+ #ff00ff
+ #ff00ff
+ 0
+ 0
+ C1
+ C0
+ false
+ true
+ false
+ 1
+ false
+ false
+ 0
+ met2.cut - 69/14
+ 69/14@1
+
+
+ #ff00ff
+ #ff00ff
+ 0
+ 0
+ C45
+ C0
+ true
+ false
+ false
+ 1
+ false
+ false
+ 0
+ met2.pin - 69/16
+ 69/16@1
+
+
+ #ffc8ff
+ #ffc8ff
+ 0
+ 0
+ C1
+ C0
+ true
+ false
+ false
+ 1
+ false
+ false
+ 0
+ met2.label - 69/5
+ 69/5@1
+
+
+ #ff00ff
+ #ff00ff
+ 0
+ 0
+ C5
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ met2.net - 69/23
+ 69/23@1
+
+
+ #ff00ff
+ #ff00ff
+ 0
+ 0
+ C0
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ met2.boundary - 69/4
+ 69/4@1
+
+
+ #ff00ff
+ #ff00ff
+ 0
+ 0
+ C53
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ met2.blockage - 69/10
+ 69/10@1
+
+
+ #ff00ff
+ #ff00ff
+ 0
+ 0
+ C36
+ C0
+ true
+ false
+ false
+ 1
+ false
+ false
+ 0
+ met2.short - 69/15
+ 69/15@1
+
+
+ #ff00ff
+ #ff00ff
+ 0
+ 0
+ C1
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ met2.probe - 69/25
+ 69/25@1
+
+
+ #ff00ff
+ #ff00ff
+ 0
+ 0
+ C25
+ C0
+ false
+ true
+ false
+ 1
+ false
+ false
+ 0
+ met2.option1 - 69/32
+ 69/32@1
+
+
+ #ff00ff
+ #ff00ff
+ 0
+ 0
+ C26
+ C0
+ false
+ true
+ false
+ 1
+ false
+ false
+ 0
+ met2.option2 - 69/33
+ 69/33@1
+
+
+ #ff00ff
+ #ff00ff
+ 0
+ 0
+ C27
+ C0
+ false
+ true
+ false
+ 1
+ false
+ false
+ 0
+ met2.option3 - 69/34
+ 69/34@1
+
+
+ #ff00ff
+ #ff00ff
+ 0
+ 0
+ C28
+ C0
+ false
+ true
+ false
+ 1
+ false
+ false
+ 0
+ met2.option4 - 69/35
+ 69/35@1
+
+
+ #ff00ff
+ #ff00ff
+ 0
+ 0
+ C29
+ C0
+ false
+ true
+ false
+ 1
+ false
+ false
+ 0
+ met2.option5 - 69/36
+ 69/36@1
+
+
+ #ff00ff
+ #ff00ff
+ 0
+ 0
+ C30
+ C0
+ false
+ true
+ false
+ 1
+ false
+ false
+ 0
+ met2.option6 - 69/37
+ 69/37@1
+
+
+ #ff00ff
+ #ff00ff
+ 0
+ 0
+ C31
+ C0
+ false
+ true
+ false
+ 1
+ false
+ false
+ 0
+ met2.option7 - 69/38
+ 69/38@1
+
+
+ #ff00ff
+ #ff00ff
+ 0
+ 0
+ C32
+ C0
+ false
+ true
+ false
+ 1
+ false
+ false
+ 0
+ met2.option8 - 69/39
+ 69/39@1
+
+
+ #ff8000
+ #ff8000
+ 0
+ 0
+ I1
+ C0
+ true
+ true
+ false
+ 3
+ false
+ false
+ 0
+ via2.drawing - 69/44
+ 69/44@1
+
+
+ #ff8000
+ #ff8000
+ 0
+ 0
+ C0
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ via2.boundary - 69/60
+ 69/60@1
+
+
+ #ff8000
+ #ff8000
+ 0
+ 0
+ C6
+ C0
+ false
+ true
+ false
+ 1
+ false
+ false
+ 0
+ via2.pin - 69/58
+ 69/58@1
+
+
+ #ff8000
+ #ff8000
+ 0
+ 0
+ C5
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ via2.net - 69/41
+ 69/41@1
+
+
+ #8000ff
+ #8000ff
+ 0
+ 0
+ I5
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ met3.drawing - 70/20
+ 70/20@1
+
+
+ #00ffff
+ #00ffff
+ 0
+ 0
+ I1
+ C0
+ false
+ true
+ false
+ 1
+ false
+ false
+ 0
+ met3.res - 70/13
+ 70/13@1
+
+
+ #00ffff
+ #00ffff
+ 0
+ 0
+ C1
+ C0
+ false
+ true
+ false
+ 1
+ false
+ false
+ 0
+ met3.cut - 70/14
+ 70/14@1
+
+
+ #00ffff
+ #00ffff
+ 0
+ 0
+ C34
+ C0
+ true
+ false
+ false
+ 1
+ false
+ false
+ 0
+ met3.pin - 70/16
+ 70/16@1
+
+
+ #c8ffff
+ #c8ffff
+ 0
+ 0
+ C1
+ C0
+ true
+ false
+ false
+ 1
+ false
+ false
+ 0
+ met3.label - 70/5
+ 70/5@1
+
+
+ #00ffff
+ #00ffff
+ 0
+ 0
+ C5
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ met3.net - 70/23
+ 70/23@1
+
+
+ #00ffff
+ #00ffff
+ 0
+ 0
+ C0
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ met3.boundary - 70/4
+ 70/4@1
+
+
+ #00ffff
+ #00ffff
+ 0
+ 0
+ C53
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ met3.blockage - 70/10
+ 70/10@1
+
+
+ #00ffff
+ #00ffff
+ 0
+ 0
+ C36
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ met3.short - 70/15
+ 70/15@1
+
+
+ #00ffff
+ #00ffff
+ 0
+ 0
+ I1
+ C0
+ false
+ true
+ false
+ 1
+ false
+ false
+ 0
+ met3.fuse - 70/17
+ 70/17@1
+
+
+ #00ffff
+ #00ffff
+ 0
+ 0
+ C1
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ met3.probe - 70/25
+ 70/25@1
+
+
+ #00ffff
+ #00ffff
+ 0
+ 0
+ C25
+ C0
+ false
+ true
+ false
+ 1
+ false
+ false
+ 0
+ met3.option1 - 70/32
+ 70/32@1
+
+
+ #00ffff
+ #00ffff
+ 0
+ 0
+ C26
+ C0
+ false
+ true
+ false
+ 1
+ false
+ false
+ 0
+ met3.option2 - 70/33
+ 70/33@1
+
+
+ #00ffff
+ #00ffff
+ 0
+ 0
+ C27
+ C0
+ false
+ true
+ false
+ 1
+ false
+ false
+ 0
+ met3.option3 - 70/34
+ 70/34@1
+
+
+ #00ffff
+ #00ffff
+ 0
+ 0
+ C28
+ C0
+ false
+ true
+ false
+ 1
+ false
+ false
+ 0
+ met3.option4 - 70/35
+ 70/35@1
+
+
+ #00ffff
+ #00ffff
+ 0
+ 0
+ C29
+ C0
+ false
+ true
+ false
+ 1
+ false
+ false
+ 0
+ met3.option5 - 70/36
+ 70/36@1
+
+
+ #00ffff
+ #00ffff
+ 0
+ 0
+ C30
+ C0
+ false
+ true
+ false
+ 1
+ false
+ false
+ 0
+ met3.option6 - 70/37
+ 70/37@1
+
+
+ #00ffff
+ #00ffff
+ 0
+ 0
+ C31
+ C0
+ false
+ true
+ false
+ 1
+ false
+ false
+ 0
+ met3.option7 - 70/38
+ 70/38@1
+
+
+ #00ffff
+ #00ffff
+ 0
+ 0
+ C32
+ C0
+ false
+ true
+ false
+ 1
+ false
+ false
+ 0
+ met3.option8 - 70/39
+ 70/39@1
+
+
+ #268c6b
+ #268c6b
+ 0
+ 0
+ I1
+ C0
+ true
+ false
+ false
+ 3
+ false
+ false
+ 0
+ via3.drawing - 70/44
+ 70/44@1
+
+
+ #268c6b
+ #268c6b
+ 0
+ 0
+ C0
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ via3.boundary - 70/60
+ 70/60@1
+
+
+ #268c6b
+ #268c6b
+ 0
+ 0
+ C6
+ C0
+ false
+ true
+ false
+ 1
+ false
+ false
+ 0
+ via3.pin - 70/48
+ 70/48@1
+
+
+ #268c6b
+ #268c6b
+ 0
+ 0
+ C5
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ via3.net - 70/41
+ 70/41@1
+
+
+ #c080ff
+ #c080ff
+ 0
+ 0
+ I2
+ C0
+ true
+ false
+ false
+ 1
+ false
+ false
+ 0
+ met4.drawing - 71/20
+ 71/20@1
+
+
+ #5e00e6
+ #5e00e6
+ 0
+ 0
+ I1
+ C0
+ false
+ true
+ false
+ 1
+ false
+ false
+ 0
+ met4.res - 71/13
+ 71/13@1
+
+
+ #5e00e6
+ #5e00e6
+ 0
+ 0
+ C1
+ C0
+ false
+ true
+ false
+ 1
+ false
+ false
+ 0
+ met4.cut - 71/14
+ 71/14@1
+
+
+ #5e00e6
+ #5e00e6
+ 0
+ 0
+ C34
+ C0
+ true
+ false
+ false
+ 1
+ false
+ false
+ 0
+ met4.pin - 71/16
+ 71/16@1
+
+
+ #ae7dff
+ #ae7dff
+ 0
+ 0
+ C1
+ C0
+ true
+ false
+ false
+ 1
+ false
+ false
+ 0
+ met4.label - 71/5
+ 71/5@1
+
+
+ #5e00e6
+ #5e00e6
+ 0
+ 0
+ C5
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ met4.net - 71/23
+ 71/23@1
+
+
+ #5e00e6
+ #5e00e6
+ 0
+ 0
+ C0
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ met4.boundary - 71/4
+ 71/4@1
+
+
+ #5e00e6
+ #5e00e6
+ 0
+ 0
+ C53
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ met4.blockage - 71/10
+ 71/10@1
+
+
+ #5e00e6
+ #5e00e6
+ 0
+ 0
+ C36
+ C0
+ true
+ false
+ false
+ 1
+ false
+ false
+ 0
+ met4.short - 71/15
+ 71/15@1
+
+
+ #5e00e6
+ #5e00e6
+ 0
+ 0
+ I1
+ C0
+ false
+ true
+ false
+ 1
+ false
+ false
+ 0
+ met4.fuse - 71/17
+ 71/17@1
+
+
+ #5e00e6
+ #5e00e6
+ 0
+ 0
+ C1
+ C0
+ true
+ false
+ false
+ 1
+ false
+ false
+ 0
+ met4.probe - 71/25
+ 71/25@1
+
+
+ #5e00e6
+ #5e00e6
+ 0
+ 0
+ C25
+ C0
+ false
+ true
+ false
+ 1
+ false
+ false
+ 0
+ met4.option1 - 71/32
+ 71/32@1
+
+
+ #5e00e6
+ #5e00e6
+ 0
+ 0
+ C26
+ C0
+ false
+ true
+ false
+ 1
+ false
+ false
+ 0
+ met4.option2 - 71/33
+ 71/33@1
+
+
+ #5e00e6
+ #5e00e6
+ 0
+ 0
+ C27
+ C0
+ false
+ true
+ false
+ 1
+ false
+ false
+ 0
+ met4.option3 - 71/34
+ 71/34@1
+
+
+ #5e00e6
+ #5e00e6
+ 0
+ 0
+ C28
+ C0
+ false
+ true
+ false
+ 1
+ false
+ false
+ 0
+ met4.option4 - 71/35
+ 71/35@1
+
+
+ #5e00e6
+ #5e00e6
+ 0
+ 0
+ C29
+ C0
+ false
+ true
+ false
+ 1
+ false
+ false
+ 0
+ met4.option5 - 71/36
+ 71/36@1
+
+
+ #5e00e6
+ #5e00e6
+ 0
+ 0
+ C30
+ C0
+ false
+ true
+ false
+ 1
+ false
+ false
+ 0
+ met4.option6 - 71/37
+ 71/37@1
+
+
+ #5e00e6
+ #5e00e6
+ 0
+ 0
+ C31
+ C0
+ false
+ true
+ false
+ 1
+ false
+ false
+ 0
+ met4.option7 - 71/38
+ 71/38@1
+
+
+ #5e00e6
+ #5e00e6
+ 0
+ 0
+ C32
+ C0
+ false
+ true
+ false
+ 1
+ false
+ false
+ 0
+ met4.option8 - 71/39
+ 71/39@1
+
+
+ #500080
+ #500080
+ 0
+ 0
+ I0
+
+ true
+ false
+ false
+ 3
+ false
+ false
+ 0
+ via4.drawing - 71/44
+ 71/44@1
+
+
+ #ffff00
+ #ffff00
+ 0
+ 0
+ C0
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ via4.boundary - 71/60
+ 71/60@1
+
+
+ #ffff00
+ #ffff00
+ 0
+ 0
+ C6
+ C0
+ false
+ true
+ false
+ 1
+ false
+ false
+ 0
+ via4.pin - 71/48
+ 71/48@1
+
+
+ #ffff00
+ #ffff00
+ 0
+ 0
+ C5
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ via4.net - 71/41
+ 71/41@1
+
+
+ #004080
+ #004080
+ 0
+ 0
+ I9
+ C0
+ true
+ false
+ false
+ 1
+ false
+ false
+ 0
+ met5.drawing - 72/20
+ 72/20@1
+
+
+ #d9cc00
+ #d9cc00
+ 0
+ 0
+ I1
+ C0
+ false
+ true
+ false
+ 1
+ false
+ false
+ 0
+ met5.res - 72/13
+ 72/13@1
+
+
+ #d9cc00
+ #d9cc00
+ 0
+ 0
+ C1
+ C0
+ false
+ true
+ false
+ 1
+ false
+ false
+ 0
+ met5.cut - 72/14
+ 72/14@1
+
+
+ #d9cc00
+ #d9cc00
+ 0
+ 0
+ C34
+ C0
+ true
+ false
+ false
+ 1
+ false
+ false
+ 0
+ met5.pin - 72/16
+ 72/16@1
+
+
+ #fff464
+ #fff464
+ 0
+ 0
+ C1
+ C0
+ true
+ false
+ false
+ 1
+ false
+ false
+ 0
+ met5.label - 72/5
+ 72/5@1
+
+
+ #d9cc00
+ #d9cc00
+ 0
+ 0
+ C5
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ met5.net - 72/23
+ 72/23@1
+
+
+ #d9cc00
+ #d9cc00
+ 0
+ 0
+ C0
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ met5.boundary - 72/4
+ 72/4@1
+
+
+ #d9cc00
+ #d9cc00
+ 0
+ 0
+ C53
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ met5.blockage - 72/10
+ 72/10@1
+
+
+ #d9cc00
+ #d9cc00
+ 0
+ 0
+ C36
+ C0
+ true
+ false
+ false
+ 1
+ false
+ false
+ 0
+ met5.short - 72/15
+ 72/15@1
+
+
+ #d9cc00
+ #d9cc00
+ 0
+ 0
+ I1
+ C0
+ false
+ true
+ false
+ 1
+ false
+ false
+ 0
+ met5.fuse - 72/17
+ 72/17@1
+
+
+ #d9cc00
+ #d9cc00
+ 0
+ 0
+ C1
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ met5.probe - 72/25
+ 72/25@1
+
+
+ #d9cc00
+ #d9cc00
+ 0
+ 0
+ C25
+ C0
+ false
+ true
+ false
+ 1
+ false
+ false
+ 0
+ met5.option1 - 72/32
+ 72/32@1
+
+
+ #d9cc00
+ #d9cc00
+ 0
+ 0
+ C26
+ C0
+ false
+ true
+ false
+ 1
+ false
+ false
+ 0
+ met5.option2 - 72/33
+ 72/33@1
+
+
+ #d9cc00
+ #d9cc00
+ 0
+ 0
+ C27
+ C0
+ false
+ true
+ false
+ 1
+ false
+ false
+ 0
+ met5.option3 - 72/34
+ 72/34@1
+
+
+ #d9cc00
+ #d9cc00
+ 0
+ 0
+ C28
+ C0
+ false
+ true
+ false
+ 1
+ false
+ false
+ 0
+ met5.option4 - 72/35
+ 72/35@1
+
+
+ #d9cc00
+ #d9cc00
+ 0
+ 0
+ C29
+ C0
+ false
+ true
+ false
+ 1
+ false
+ false
+ 0
+ met5.option5 - 72/36
+ 72/36@1
+
+
+ #d9cc00
+ #d9cc00
+ 0
+ 0
+ C30
+ C0
+ false
+ true
+ false
+ 1
+ false
+ false
+ 0
+ met5.option6 - 72/37
+ 72/37@1
+
+
+ #d9cc00
+ #d9cc00
+ 0
+ 0
+ C31
+ C0
+ false
+ true
+ false
+ 1
+ false
+ false
+ 0
+ met5.option7 - 72/38
+ 72/38@1
+
+
+ #d9cc00
+ #d9cc00
+ 0
+ 0
+ C32
+ C0
+ false
+ true
+ false
+ 1
+ false
+ false
+ 0
+ met5.option8 - 72/39
+ 72/39@1
+
+
+ #00cc66
+ #00cc66
+ 0
+ 0
+ C50
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ nsm.drawing - 61/20
+ 61/20@1
+
+
+ #ffffcc
+ #ffffcc
+ 0
+ 0
+ C20
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ pad.drawing - 76/20
+ 76/20@1
+
+
+ #d9e6ff
+ #d9e6ff
+ 0
+ 0
+ C1
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ pad.label - 76/5
+ 76/5@1
+
+
+ #d9e6ff
+ #d9e6ff
+ 0
+ 0
+ C34
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ pad.pin - 76/16
+ 76/16@1
+
+
+ #ff00ff
+ #ff00ff
+ 0
+ 0
+ I1
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ pnp.drawing - 82/44
+ 82/44@1
+
+
+ #ffc8ff
+ #ffc8ff
+ 0
+ 0
+ C1
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ pnp.label - 82/59
+ 82/59@1
+
+
+ #00ffff
+ #00ffff
+ 0
+ 0
+ I1
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ npn.drawing - 82/20
+ 82/20@1
+
+
+ #c8ffff
+ #c8ffff
+ 0
+ 0
+ C1
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ npn.label - 82/5
+ 82/5@1
+
+
+ #ffffff
+ #96c8ff
+ 0
+ 0
+ C38
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ rpm.drawing - 86/20
+ 86/20@1
+
+
+ #9900e6
+ #9900e6
+ 0
+ 0
+ C4
+ C0
+ true
+ false
+ false
+ 1
+ false
+ false
+ 0
+ hvi.drawing - 75/20
+ 75/20@1
+
+
+ #ffb232
+ #ffb232
+ 0
+ 0
+ C0
+ C0
+ true
+ true
+ false
+ 3
+ false
+ false
+ 0
+ capacitor.drawing - 82/64
+ 82/64@1
+
+
+ #ffe6bf
+ #ffe6bf
+ 0
+ 0
+ C14
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ ncm.drawing - 92/44
+ 92/44@1
+
+
+ #ff8000
+ #ff8000
+ 0
+ 0
+ C0
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ cncm.drawing - 96/44
+ 96/44@1
+
+
+ #ff0000
+ #ff0000
+ 0
+ 0
+ C0
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ cncm.mask - 17/0
+ 17/0@1
+
+
+ #ffe6bf
+ #ffe6bf
+ 0
+ 0
+ C20
+ C1
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ pmm.drawing - 85/44
+ 85/44@1
+
+
+ #bf4026
+ #bf4026
+ 0
+ 0
+ C40
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ pmm2.drawing - 77/20
+ 77/20@1
+
+
+ #e61f0d
+ #e61f0d
+ 0
+ 0
+ C47
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ rdl.drawing - 74/20
+ 74/20@1
+
+
+ #e61f0d
+ #e61f0d
+ 0
+ 0
+ C34
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ rdl.pin - 74/16
+ 74/16@1
+
+
+ #ff6464
+ #ff6464
+ 0
+ 0
+ C1
+ C0
+ true
+ false
+ false
+ 1
+ false
+ false
+ 0
+ rdl.label - 74/5
+ 74/5@1
+
+
+ #ffbff2
+ #ffbff2
+ 0
+ 0
+ I1
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ rdl.res - 74/13
+ 74/13@1
+
+
+ #ffbff2
+ #ffbff2
+ 0
+ 0
+ C1
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ rdl.cut - 74/14
+ 74/14@1
+
+
+ #e61f0d
+ #e61f0d
+ 0
+ 0
+ C36
+ C0
+ false
+ true
+ false
+ 1
+ false
+ false
+ 0
+ rdl.short - 74/15
+ 74/15@1
+
+
+ #e61f0d
+ #e61f0d
+ 0
+ 0
+ C25
+ C0
+ false
+ true
+ false
+ 1
+ false
+ false
+ 0
+ rdl.option1 - 89/32
+ 89/32@1
+
+
+ #e61f0d
+ #e61f0d
+ 0
+ 0
+ C26
+ C0
+ false
+ true
+ false
+ 1
+ false
+ false
+ 0
+ rdl.option2 - 89/33
+ 89/33@1
+
+
+ #e61f0d
+ #e61f0d
+ 0
+ 0
+ C27
+ C0
+ false
+ true
+ false
+ 1
+ false
+ false
+ 0
+ rdl.option3 - 89/34
+ 89/34@1
+
+
+ #e61f0d
+ #e61f0d
+ 0
+ 0
+ C28
+ C0
+ false
+ true
+ false
+ 1
+ false
+ false
+ 0
+ rdl.option4 - 89/35
+ 89/35@1
+
+
+ #e61f0d
+ #e61f0d
+ 0
+ 0
+ C29
+ C0
+ false
+ true
+ false
+ 1
+ false
+ false
+ 0
+ rdl.option5 - 89/36
+ 89/36@1
+
+
+ #e61f0d
+ #e61f0d
+ 0
+ 0
+ C30
+ C0
+ false
+ true
+ false
+ 1
+ false
+ false
+ 0
+ rdl.option6 - 89/37
+ 89/37@1
+
+
+ #e61f0d
+ #e61f0d
+ 0
+ 0
+ C31
+ C0
+ false
+ true
+ false
+ 1
+ false
+ false
+ 0
+ rdl.option7 - 89/38
+ 89/38@1
+
+
+ #e61f0d
+ #e61f0d
+ 0
+ 0
+ C32
+ C0
+ false
+ true
+ false
+ 1
+ false
+ false
+ 0
+ rdl.option8 - 89/39
+ 89/39@1
+
+
+ #ccccd9
+ #333399
+ 0
+ 0
+ C7
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ ubm.drawing - 127/21
+ 127/21@1
+
+
+ #ffbff2
+ #ffbff2
+ 0
+ 0
+ C20
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ bump.drawing - 127/22
+ 127/22@1
+
+
+ #d9cc00
+ #d9cc00
+ 0
+ 0
+ C0
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ inductor.drawing - 82/24
+ 82/24@1
+
+
+ #fff464
+ #fff464
+ 0
+ 0
+ C1
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ inductor.label - 82/25
+ 82/25@1
+
+
+ #333399
+ #ffffff
+ 0
+ 0
+ C25
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ inductor.term1 - 82/26
+ 82/26@1
+
+
+ #333399
+ #ffffff
+ 0
+ 0
+ C26
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ inductor.term2 - 82/27
+ 82/27@1
+
+
+ #333399
+ #ffffff
+ 0
+ 0
+ C27
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ inductor.term3 - 82/28
+ 82/28@1
+
+
+ #ccccd9
+ #ccccd9
+ 0
+ 0
+ C20
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ cfom.drawing - 22/20
+ 22/20@1
+
+
+ #ccccd9
+ #ccccd9
+ 0
+ 0
+ C13
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ cfom.mask - 23/0
+ 23/0@1
+
+
+ #ccccd9
+ #ccccd9
+ 0
+ 0
+ C14
+ C0
+ true
+ false
+ false
+ 1
+ false
+ false
+ 0
+ cfom.maskAdd - 22/21
+ 22/21@1
+
+
+ #ccccd9
+ #ccccd9
+ 0
+ 0
+ C11
+ C0
+ true
+ false
+ false
+ 1
+ false
+ false
+ 0
+ cfom.maskDrop - 22/22
+ 22/22@1
+
+
+ #268c6b
+ #268c6b
+ 0
+ 0
+ I1
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ cfom.waffleDrop - 22/24
+ 22/24@1
+
+
+ #ccccd9
+ #ccccd9
+ 0
+ 0
+ C20
+ C0
+ false
+ true
+ false
+ 1
+ false
+ false
+ 0
+ fom.dummy - 22/23
+ 22/23@1
+
+
+ #268c6b
+ #268c6b
+ 0
+ 0
+ C20
+ C0
+ false
+ true
+ false
+ 1
+ false
+ false
+ 0
+ cnwm.drawing - 109/44
+ 109/44@1
+
+
+ #268c6b
+ #268c6b
+ 0
+ 0
+ C13
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ cnwm.mask - 21/0
+ 21/0@1
+
+
+ #268c6b
+ #268c6b
+ 0
+ 0
+ C14
+ C0
+ false
+ true
+ false
+ 1
+ false
+ false
+ 0
+ cnwm.maskAdd - 109/43
+ 109/43@1
+
+
+ #268c6b
+ #268c6b
+ 0
+ 0
+ C11
+ C0
+ false
+ true
+ false
+ 1
+ false
+ false
+ 0
+ cnwm.maskDrop - 109/42
+ 109/42@1
+
+
+ #ffffff
+ #ffffff
+ 0
+ 0
+ C0
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ cdnm.drawing - 110/20
+ 110/20@1
+
+
+ #d9cc00
+ #d9cc00
+ 0
+ 0
+ C17
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ cdnm.mask - 48/0
+ 48/0@1
+
+
+ #d9cc00
+ #d9cc00
+ 0
+ 0
+ C14
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ cdnm.maskAdd - 110/21
+ 110/21@1
+
+
+ #d9cc00
+ #d9cc00
+ 0
+ 0
+ C3
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ cdnm.maskDrop - 110/22
+ 110/22@1
+
+
+ #96c8ff
+ #ffffcc
+ 0
+ 0
+ C0
+ C0
+ false
+ true
+ false
+ 1
+ false
+ false
+ 0
+ clvtnm.drawing - 25/44
+ 25/44@1
+
+
+ #96c8ff
+ #ffffff
+ 0
+ 0
+ C0
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ clvtnm.mask - 25/0
+ 25/0@1
+
+
+ #96c8ff
+ #ffffff
+ 0
+ 0
+ C14
+ C0
+ false
+ true
+ false
+ 1
+ false
+ false
+ 0
+ clvtnm.maskAdd - 25/43
+ 25/43@1
+
+
+ #96c8ff
+ #0000ff
+ 0
+ 0
+ C3
+ C0
+ false
+ true
+ false
+ 1
+ false
+ false
+ 0
+ clvtnm.maskDrop - 25/42
+ 25/42@1
+
+
+ #ff8000
+ #ffffcc
+ 0
+ 0
+ C0
+ C0
+ false
+ true
+ false
+ 1
+ false
+ false
+ 0
+ chvtpm.drawing - 88/44
+ 88/44@1
+
+
+ #ff8000
+ #ffffff
+ 0
+ 0
+ C0
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ chvtpm.mask - 97/0
+ 97/0@1
+
+
+ #ff8000
+ #ffffff
+ 0
+ 0
+ C14
+ C0
+ false
+ true
+ false
+ 1
+ false
+ false
+ 0
+ chvtpm.maskAdd - 97/43
+ 97/43@1
+
+
+ #ff8000
+ #0000ff
+ 0
+ 0
+ C3
+ C0
+ false
+ true
+ false
+ 1
+ false
+ false
+ 0
+ chvtpm.maskDrop - 97/42
+ 97/42@1
+
+
+ #ff0000
+ #d9e6ff
+ 0
+ 0
+ C0
+ C0
+ false
+ true
+ false
+ 1
+ false
+ false
+ 0
+ chvtrm.drawing - 98/44
+ 98/44@1
+
+
+ #ff0000
+ #e61f0d
+ 0
+ 0
+ C0
+ C0
+ false
+ true
+ false
+ 1
+ false
+ false
+ 0
+ chvtrm.mask - 98/0
+ 98/0@1
+
+
+ #ff0000
+ #e61f0d
+ 0
+ 0
+ C14
+ C0
+ false
+ true
+ false
+ 1
+ false
+ false
+ 0
+ chvtrm.maskAdd - 98/43
+ 98/43@1
+
+
+ #ff0000
+ #d9e6ff
+ 0
+ 0
+ C3
+ C0
+ false
+ true
+ false
+ 1
+ false
+ false
+ 0
+ chvtrm.maskDrop - 98/42
+ 98/42@1
+
+
+ #ffffff
+ #ffffff
+ 0
+ 0
+ C0
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ ctunm.drawing - 96/20
+ 96/20@1
+
+
+ #8c8ca6
+ #8c8ca6
+ 0
+ 0
+ C0
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ ctunm.mask - 20/0
+ 20/0@1
+
+
+ #ffffff
+ #ffffff
+ 0
+ 0
+ C14
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ ctunm.maskAdd - 96/21
+ 96/21@1
+
+
+ #ffffff
+ #ffffff
+ 0
+ 0
+ C3
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ ctunm.maskDrop - 96/22
+ 96/22@1
+
+
+ #ff0000
+ #ff0000
+ 0
+ 0
+ C0
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ conom.drawing - 87/44
+ 87/44@1
+
+
+ #ff0000
+ #ff0000
+ 0
+ 0
+ C0
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ conom.mask - 88/0
+ 88/0@1
+
+
+ #ff0000
+ #ff0000
+ 0
+ 0
+ C14
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ conom.maskAdd - 87/43
+ 87/43@1
+
+
+ #ff0000
+ #ff0000
+ 0
+ 0
+ C3
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ conom.maskDrop - 87/42
+ 87/42@1
+
+
+ #00cc66
+ #00cc66
+ 0
+ 0
+ C20
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ cnsdm.drawing - 29/20
+ 29/20@1
+
+
+ #00cc66
+ #00cc66
+ 0
+ 0
+ C13
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ cnsdm.mask - 30/0
+ 30/0@1
+
+
+ #00cc66
+ #00cc66
+ 0
+ 0
+ C14
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ cnsdm.maskAdd - 29/21
+ 29/21@1
+
+
+ #00cc66
+ #00cc66
+ 0
+ 0
+ C11
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ cnsdm.maskDrop - 29/22
+ 29/22@1
+
+
+ #ffff00
+ #ffff00
+ 0
+ 0
+ C20
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ cpsdm.drawing - 31/20
+ 31/20@1
+
+
+ #ffff00
+ #ffff00
+ 0
+ 0
+ C13
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ cpsdm.mask - 32/0
+ 32/0@1
+
+
+ #ffff00
+ #ffff00
+ 0
+ 0
+ C14
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ cpsdm.maskAdd - 31/21
+ 31/21@1
+
+
+ #ffff00
+ #ffff00
+ 0
+ 0
+ C11
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ cpsdm.maskDrop - 31/22
+ 31/22@1
+
+
+ #d9cc00
+ #d9cc00
+ 0
+ 0
+ C20
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ cntm.drawing - 26/20
+ 26/20@1
+
+
+ #d9cc00
+ #d9cc00
+ 0
+ 0
+ C13
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ cntm.mask - 27/0
+ 27/0@1
+
+
+ #d9cc00
+ #d9cc00
+ 0
+ 0
+ C14
+ C0
+ false
+ true
+ false
+ 1
+ false
+ false
+ 0
+ cntm.maskAdd - 26/21
+ 26/21@1
+
+
+ #d9cc00
+ #d9cc00
+ 0
+ 0
+ C11
+ C0
+ false
+ true
+ false
+ 1
+ false
+ false
+ 0
+ cntm.maskDrop - 26/22
+ 26/22@1
+
+
+ #ffff00
+ #ffff00
+ 0
+ 0
+ C20
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ hvntm.drawing - 125/20
+ 125/20@1
+
+
+ #fff5e6
+ #fff5e6
+ 0
+ 0
+ C20
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ chvntm.drawing - 38/20
+ 38/20@1
+
+
+ #fff5e6
+ #fff5e6
+ 0
+ 0
+ C13
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ chvntm.mask - 39/0
+ 39/0@1
+
+
+ #fff5e6
+ #fff5e6
+ 0
+ 0
+ C14
+ C0
+ false
+ true
+ false
+ 1
+ false
+ false
+ 0
+ chvntm.maskAdd - 38/21
+ 38/21@1
+
+
+ #fff5e6
+ #fff5e6
+ 0
+ 0
+ C11
+ C0
+ false
+ true
+ false
+ 1
+ false
+ false
+ 0
+ chvntm.maskDrop - 38/22
+ 38/22@1
+
+
+ #00cc66
+ #00cc66
+ 0
+ 0
+ C20
+ C0
+ false
+ true
+ false
+ 1
+ false
+ false
+ 0
+ cldntm.drawing - 11/20
+ 11/20@1
+
+
+ #00cc66
+ #00cc66
+ 0
+ 0
+ C13
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ cldntm.mask - 11/0
+ 11/0@1
+
+
+ #ff8000
+ #ff8000
+ 0
+ 0
+ C0
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ clvom.drawing - 45/20
+ 45/20@1
+
+
+ #268c6b
+ #268c6b
+ 0
+ 0
+ C17
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ clvom.mask - 46/0
+ 46/0@1
+
+
+ #268c6b
+ #268c6b
+ 0
+ 0
+ C14
+ C0
+ false
+ true
+ false
+ 1
+ false
+ false
+ 0
+ clvom.maskAdd - 45/21
+ 45/21@1
+
+
+ #8c8ca6
+ #8c8ca6
+ 0
+ 0
+ C3
+ C0
+ false
+ true
+ false
+ 1
+ false
+ false
+ 0
+ clvom.maskDrop - 45/22
+ 45/22@1
+
+
+ #ff8000
+ #ff8000
+ 0
+ 0
+ C20
+ C0
+ false
+ true
+ false
+ 1
+ false
+ false
+ 0
+ cp1m.drawing - 33/44
+ 33/44@1
+
+
+ #ff8000
+ #ff8000
+ 0
+ 0
+ C13
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ cp1m.mask - 28/0
+ 28/0@1
+
+
+ #ff8000
+ #ff8000
+ 0
+ 0
+ C14
+ C0
+ true
+ false
+ false
+ 1
+ false
+ false
+ 0
+ cp1m.maskAdd - 33/43
+ 33/43@1
+
+
+ #9900e6
+ #9900e6
+ 0
+ 0
+ I1
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ cp1m.waffleDrop - 33/24
+ 33/24@1
+
+
+ #ff8000
+ #ff8000
+ 0
+ 0
+ C11
+ C0
+ true
+ false
+ false
+ 1
+ false
+ false
+ 0
+ cp1m.maskDrop - 33/42
+ 33/42@1
+
+
+ #ffffff
+ #ffffff
+ 0
+ 0
+ C0
+ C0
+ false
+ true
+ false
+ 1
+ false
+ false
+ 0
+ cli1m.drawing - 115/44
+ 115/44@1
+
+
+ #00ffff
+ #00ffff
+ 0
+ 0
+ C11
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ cli1m.mask - 56/0
+ 56/0@1
+
+
+ #00ffff
+ #00ffff
+ 0
+ 0
+ C14
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ cli1m.maskAdd - 115/43
+ 115/43@1
+
+
+ #00ffff
+ #00ffff
+ 0
+ 0
+ C3
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ cli1m.maskDrop - 115/42
+ 115/42@1
+
+
+ #ffffff
+ #ffffff
+ 0
+ 0
+ C0
+ C0
+ false
+ true
+ false
+ 1
+ false
+ false
+ 0
+ clicm1.drawing - 106/44
+ 106/44@1
+
+
+ #d9e6ff
+ #d9e6ff
+ 0
+ 0
+ C0
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ clicm1.mask - 43/0
+ 43/0@1
+
+
+ #d9e6ff
+ #d9e6ff
+ 0
+ 0
+ C14
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ clicm1.maskAdd - 106/43
+ 106/43@1
+
+
+ #d9e6ff
+ #d9e6ff
+ 0
+ 0
+ C3
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ clicm1.maskDrop - 106/42
+ 106/42@1
+
+
+ #0000ff
+ #0000ff
+ 0
+ 0
+ C20
+ C0
+ false
+ true
+ false
+ 1
+ false
+ false
+ 0
+ cmm1.drawing - 62/20
+ 62/20@1
+
+
+ #0000ff
+ #0000ff
+ 0
+ 0
+ C13
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ cmm1.mask - 36/0
+ 36/0@1
+
+
+ #0000ff
+ #0000ff
+ 0
+ 0
+ C14
+ C0
+ false
+ true
+ false
+ 1
+ false
+ false
+ 0
+ cmm1.maskAdd - 62/21
+ 62/21@1
+
+
+ #0000ff
+ #0000ff
+ 0
+ 0
+ C11
+ C0
+ false
+ true
+ false
+ 1
+ false
+ false
+ 0
+ cmm1.maskDrop - 62/22
+ 62/22@1
+
+
+ #0000ff
+ #0000ff
+ 0
+ 0
+ I1
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ cmm1.waffleDrop - 62/24
+ 62/24@1
+
+
+ #ffffcc
+ #ffffcc
+ 0
+ 0
+ C0
+ C0
+ false
+ true
+ false
+ 1
+ false
+ false
+ 0
+ cviam.drawing - 105/20
+ 105/20@1
+
+
+ #ffffcc
+ #ffffcc
+ 0
+ 0
+ C17
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ cviam.mask - 40/0
+ 40/0@1
+
+
+ #ffffcc
+ #ffffcc
+ 0
+ 0
+ C14
+ C0
+ false
+ true
+ false
+ 1
+ false
+ false
+ 0
+ cviam.maskAdd - 105/21
+ 105/21@1
+
+
+ #ffffcc
+ #ffffcc
+ 0
+ 0
+ C3
+ C0
+ false
+ true
+ false
+ 1
+ false
+ false
+ 0
+ cviam.maskDrop - 105/22
+ 105/22@1
+
+
+ #ffbff2
+ #ffbff2
+ 0
+ 0
+ C20
+ C0
+ false
+ true
+ false
+ 1
+ false
+ false
+ 0
+ cmm2.drawing - 105/44
+ 105/44@1
+
+
+ #ffbff2
+ #ffbff2
+ 0
+ 0
+ C13
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ cmm2.mask - 41/0
+ 41/0@1
+
+
+ #ffbff2
+ #ffbff2
+ 0
+ 0
+ C14
+ C0
+ false
+ true
+ false
+ 1
+ false
+ false
+ 0
+ cmm2.maskAdd - 105/43
+ 105/43@1
+
+
+ #ffbff2
+ #ffbff2
+ 0
+ 0
+ C11
+ C0
+ false
+ true
+ false
+ 1
+ false
+ false
+ 0
+ cmm2.maskDrop - 105/42
+ 105/42@1
+
+
+ #ffbff2
+ #ffbff2
+ 0
+ 0
+ I1
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ cmm2.waffleDrop - 105/52
+ 105/52@1
+
+
+ #333399
+ #333399
+ 0
+ 0
+ C0
+ C0
+ false
+ true
+ false
+ 1
+ false
+ false
+ 0
+ cviam2.drawing - 108/20
+ 108/20@1
+
+
+ #333399
+ #333399
+ 0
+ 0
+ C17
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ cviam2.mask - 44/0
+ 44/0@1
+
+
+ #333399
+ #333399
+ 0
+ 0
+ C14
+ C0
+ false
+ true
+ false
+ 1
+ false
+ false
+ 0
+ cviam2.maskAdd - 108/21
+ 108/21@1
+
+
+ #333399
+ #333399
+ 0
+ 0
+ C3
+ C0
+ false
+ true
+ false
+ 1
+ false
+ false
+ 0
+ cviam2.maskDrop - 108/22
+ 108/22@1
+
+
+ #5e00e6
+ #5e00e6
+ 0
+ 0
+ C20
+ C0
+ false
+ true
+ false
+ 1
+ false
+ false
+ 0
+ cmm3.drawing - 107/20
+ 107/20@1
+
+
+ #5e00e6
+ #5e00e6
+ 0
+ 0
+ C13
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ cmm3.mask - 34/0
+ 34/0@1
+
+
+ #5e00e6
+ #5e00e6
+ 0
+ 0
+ C14
+ C0
+ false
+ true
+ false
+ 1
+ false
+ false
+ 0
+ cmm3.maskAdd - 107/21
+ 107/21@1
+
+
+ #5e00e6
+ #5e00e6
+ 0
+ 0
+ C11
+ C0
+ false
+ true
+ false
+ 1
+ false
+ false
+ 0
+ cmm3.maskDrop - 107/22
+ 107/22@1
+
+
+ #5e00e6
+ #5e00e6
+ 0
+ 0
+ I1
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ cmm3.waffleDrop - 107/24
+ 107/24@1
+
+
+ #ffffff
+ #ffffff
+ 0
+ 0
+ C0
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ cnpc.drawing - 44/20
+ 44/20@1
+
+
+ #e61f0d
+ #e61f0d
+ 0
+ 0
+ C39
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ cnpc.mask - 49/0
+ 49/0@1
+
+
+ #e61f0d
+ #e61f0d
+ 0
+ 0
+ C14
+ C0
+ false
+ true
+ false
+ 1
+ false
+ false
+ 0
+ cnpc.maskAdd - 44/43
+ 44/43@1
+
+
+ #e61f0d
+ #e61f0d
+ 0
+ 0
+ C3
+ C0
+ false
+ true
+ false
+ 1
+ false
+ false
+ 0
+ cnpc.maskDrop - 44/42
+ 44/42@1
+
+
+ #268c6b
+ #268c6b
+ 0
+ 0
+ C0
+ C0
+ false
+ true
+ false
+ 1
+ false
+ false
+ 0
+ cviam3.drawing - 112/20
+ 112/20@1
+
+
+ #268c6b
+ #268c6b
+ 0
+ 0
+ C17
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ cviam3.mask - 50/0
+ 50/0@1
+
+
+ #268c6b
+ #268c6b
+ 0
+ 0
+ C14
+ C0
+ false
+ true
+ false
+ 1
+ false
+ false
+ 0
+ cviam3.maskAdd - 112/21
+ 112/21@1
+
+
+ #268c6b
+ #268c6b
+ 0
+ 0
+ C3
+ C0
+ false
+ true
+ false
+ 1
+ false
+ false
+ 0
+ cviam3.maskDrop - 112/22
+ 112/22@1
+
+
+ #00cc66
+ #00cc66
+ 0
+ 0
+ C20
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ cnsm.mask - 22/0
+ 22/0@1
+
+
+ #ffe6bf
+ #ffe6bf
+ 0
+ 0
+ C20
+ C0
+ false
+ true
+ false
+ 1
+ false
+ false
+ 0
+ cpdm.drawing - 104/44
+ 104/44@1
+
+
+ #ffe6bf
+ #ffe6bf
+ 0
+ 0
+ C13
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ cpdm.mask - 37/0
+ 37/0@1
+
+
+ #ffe6bf
+ #ffe6bf
+ 0
+ 0
+ C14
+ C0
+ false
+ true
+ false
+ 1
+ false
+ false
+ 0
+ cpdm.maskAdd - 104/43
+ 104/43@1
+
+
+ #ffe6bf
+ #ffe6bf
+ 0
+ 0
+ C11
+ C0
+ false
+ true
+ false
+ 1
+ false
+ false
+ 0
+ cpdm.maskDrop - 104/42
+ 104/42@1
+
+
+ #8c8ca6
+ #0000ff
+ 0
+ 0
+ C0
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ cpmm.drawing - 91/44
+ 91/44@1
+
+
+ #8c8ca6
+ #8c8ca6
+ 0
+ 0
+ C13
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ cpbo.mask - 99/0
+ 99/0@1
+
+
+ #00cc66
+ #00cc66
+ 0
+ 0
+ C13
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ cmm4.mask - 51/0
+ 51/0@1
+
+
+ #00cc66
+ #00cc66
+ 0
+ 0
+ C14
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ cmm4.maskAdd - 112/43
+ 112/43@1
+
+
+ #00cc66
+ #00cc66
+ 0
+ 0
+ C11
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ cmm4.maskDrop - 112/42
+ 112/42@1
+
+
+ #00cc66
+ #00cc66
+ 0
+ 0
+ I1
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ cmm4.waffleDrop - 112/4
+ 112/4@1
+
+
+ #00ffff
+ #00ffff
+ 0
+ 0
+ C0
+ C0
+ false
+ true
+ false
+ 1
+ false
+ false
+ 0
+ cviam4.drawing - 117/20
+ 117/20@1
+
+
+ #00ffff
+ #00ffff
+ 0
+ 0
+ C17
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ cviam4.mask - 58/0
+ 58/0@1
+
+
+ #00ffff
+ #00ffff
+ 0
+ 0
+ C14
+ C0
+ false
+ true
+ false
+ 1
+ false
+ false
+ 0
+ cviam4.maskAdd - 117/21
+ 117/21@1
+
+
+ #00ffff
+ #00ffff
+ 0
+ 0
+ C3
+ C0
+ false
+ true
+ false
+ 1
+ false
+ false
+ 0
+ cviam4.maskDrop - 117/22
+ 117/22@1
+
+
+ #ff8000
+ #ff8000
+ 0
+ 0
+ C13
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ cmm5.mask - 59/0
+ 59/0@1
+
+
+ #ff8000
+ #ff8000
+ 0
+ 0
+ I1
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ cmm5.waffleDrop - 117/4
+ 117/4@1
+
+
+ #0000ff
+ #0000ff
+ 0
+ 0
+ C0
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ target.drawing - 76/44
+ 76/44@1
+
+
+ #ffffff
+ #ffffff
+ 0
+ 0
+ C0
+ C0
+ false
+ true
+ false
+ 1
+ false
+ false
+ 0
+ cctm1.drawing - 101/44
+ 101/44@1
+
+
+ #ffffff
+ #ffffff
+ 0
+ 0
+ C17
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ cctm1.mask - 35/0
+ 35/0@1
+
+
+ #ffffff
+ #ffffff
+ 0
+ 0
+ C14
+ C0
+ false
+ true
+ false
+ 1
+ false
+ false
+ 0
+ cctm1.maskAdd - 101/43
+ 101/43@1
+
+
+ #ffffff
+ #ffffff
+ 0
+ 0
+ C3
+ C0
+ false
+ true
+ false
+ 1
+ false
+ false
+ 0
+ cctm1.maskDrop - 101/42
+ 101/42@1
+
+
+ #ffffff
+ #ffffff
+ 0
+ 0
+ C0
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ crpm.drawing - 53/44
+ 53/44@1
+
+
+ #ffffff
+ #ffffff
+ 0
+ 0
+ C0
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ crpm.mask - 96/0
+ 96/0@1
+
+
+ #ffffff
+ #ffffff
+ 0
+ 0
+ C14
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ crpm.maskAdd - 53/43
+ 53/43@1
+
+
+ #ffffff
+ #ffffff
+ 0
+ 0
+ C3
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ crpm.maskDrop - 53/42
+ 53/42@1
+
+
+ #e61f0d
+ #e61f0d
+ 0
+ 0
+ C47
+ C0
+ false
+ true
+ false
+ 1
+ false
+ false
+ 0
+ ccu1m.mask - 93/0
+ 93/0@1
+
+
+ #bf4026
+ #bf4026
+ 0
+ 0
+ C40
+ C0
+ false
+ true
+ false
+ 1
+ false
+ false
+ 0
+ cpmm2.mask - 94/0
+ 94/0@1
+
+
+ #ccccd9
+ #333399
+ 0
+ 0
+ C7
+ C0
+ false
+ true
+ false
+ 1
+ false
+ false
+ 0
+ cubm.mask - 100/0
+ 100/0@1
+
+
+ #ffbff2
+ #ffbff2
+ 0
+ 0
+ C20
+ C0
+ false
+ true
+ false
+ 1
+ false
+ false
+ 0
+ cbump.mask - 101/0
+ 101/0@1
+
+
+ #00bfff
+ #00bfff
+ 0
+ 0
+ C0
+ C0
+ true
+ true
+ false
+ 3
+ false
+ false
+ 0
+ overlap.drawing - 90/20
+ 90/20@1
+
+
+ #ff7f50
+ #ff7f50
+ 0
+ 0
+ C0
+ C0
+ true
+ true
+ false
+ 3
+ false
+ false
+ 0
+ overlap.boundary - 90/4
+ 90/4@1
+
+
+ #ff8000
+ #ff8000
+ 0
+ 0
+ C0
+ C0
+ true
+ false
+ false
+ 3
+ false
+ false
+ 0
+ areaid.lowTapDensity - 81/14
+ 81/14@1
+
+
+ #ffbff2
+ #ffbff2
+ 0
+ 0
+ C0
+ C0
+ true
+ true
+ false
+ 3
+ false
+ false
+ 0
+ areaid.notCritSide - 81/15
+ 81/15@1
+
+
+ #adff2f
+ #adff2f
+ 0
+ 0
+ C2
+ C0
+ true
+ true
+ false
+ 3
+ false
+ false
+ 0
+ areaid.injection - 81/17
+ 81/17@1
+
+
+ #bebed8
+ #bebed8
+ 0
+ 0
+ C2
+ C0
+ true
+ true
+ false
+ 3
+ false
+ false
+ 0
+ areaid.rfdiode - 81/125
+ 81/125@1
+
+
+ #ffffff
+ #ffffff
+ 0
+ 0
+ C0
+ C0
+ true
+ true
+ false
+ 3
+ false
+ false
+ 0
+ areaid.seal - 81/1
+ 81/1@1
+
+
+ #d9e6ff
+ #d9e6ff
+ 0
+ 0
+ C0
+ C0
+ true
+ false
+ false
+ 3
+ false
+ false
+ 0
+ areaid.core - 81/2
+ 81/2@1
+
+
+ #ffffcc
+ #ffffcc
+ 0
+ 0
+ C0
+ C0
+ true
+ true
+ false
+ 3
+ false
+ false
+ 0
+ areaid.frame - 81/3
+ 81/3@1
+
+
+ #d9cc00
+ #d9cc00
+ 0
+ 0
+ C0
+ C0
+ true
+ false
+ false
+ 3
+ false
+ false
+ 0
+ areaid.esd - 81/19
+ 81/19@1
+
+
+ #ffe6bf
+ #ffe6bf
+ 0
+ 0
+ C0
+ C0
+ true
+ true
+ false
+ 3
+ false
+ false
+ 0
+ areaid.dieCut - 81/11
+ 81/11@1
+
+
+ #00ff00
+ #00ff00
+ 0
+ 0
+ C0
+ C0
+ true
+ true
+ false
+ 3
+ false
+ false
+ 0
+ areaid.moduleCut - 81/10
+ 81/10@1
+
+
+ #00ffff
+ #00ffff
+ 0
+ 0
+ C0
+ C0
+ true
+ true
+ false
+ 3
+ false
+ false
+ 0
+ areaid.frameRect - 81/12
+ 81/12@1
+
+
+ #333399
+ #ccccd9
+ 0
+ 0
+ C22
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ areaid.substrateCut - 81/53
+ 81/53@1
+
+
+ #ffff00
+ #ffff00
+ 0
+ 0
+ C0
+ C0
+ true
+ false
+ false
+ 3
+ false
+ false
+ 0
+ areaid.diode - 81/23
+ 81/23@1
+
+
+ #ff00ff
+ #ff00ff
+ 0
+ 0
+ C0
+ C0
+ true
+ false
+ false
+ 3
+ false
+ false
+ 0
+ areaid.standardc - 81/4
+ 81/4@1
+
+
+ #ffe6bf
+ #ffe6bf
+ 0
+ 0
+ C0
+ C5
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ areaid.deadZon - 81/50
+ 81/50@1
+
+
+ #ff8000
+ #ff8000
+ 0
+ 0
+ C0
+ C5
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ areaid.critCorner - 81/51
+ 81/51@1
+
+
+ #ffffcc
+ #ffffcc
+ 0
+ 0
+ C0
+ C5
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ areaid.critSid - 81/52
+ 81/52@1
+
+
+ #8c8ca6
+ #c8ffc8
+ 0
+ 0
+ C20
+ C0
+ true
+ true
+ false
+ 3
+ false
+ false
+ 0
+ areaid.opcDrop - 81/54
+ 81/54@1
+
+
+ #00bfff
+ #00ffe7
+ 0
+ 0
+ C1
+ C0
+ true
+ true
+ false
+ 3
+ false
+ false
+ 0
+ areaid.waffleWindow - 81/13
+ 81/13@1
+
+
+ #daa520
+ #daa520
+ 0
+ 0
+ C0
+ C0
+ true
+ true
+ false
+ 3
+ false
+ false
+ 0
+ areaid.extendedDrain - 81/57
+ 81/57@1
+
+
+ #ffbff2
+ #ffbff2
+ 0
+ 0
+ C0
+ C0
+ true
+ true
+ false
+ 3
+ false
+ false
+ 0
+ areaid.lvNative - 81/60
+ 81/60@1
+
+
+ #9900e6
+ #9900e6
+ 0
+ 0
+ C0
+ C0
+ true
+ true
+ false
+ 3
+ false
+ false
+ 0
+ areaid.photo - 81/81
+ 81/81@1
+
+
+ #ff00ff
+ #00ff00
+ 0
+ 0
+ C0
+ C0
+ true
+ true
+ false
+ 3
+ false
+ false
+ 0
+ areaid.etest - 81/101
+ 81/101@1
+
+
+ #ff0000
+ #ff0000
+ 0
+ 0
+ C0
+ C0
+ true
+ true
+ false
+ 3
+ false
+ false
+ 0
+ areaid.hvnwell - 81/63
+ 81/63@1
+
+
+ #9900e6
+ #9900e6
+ 0
+ 0
+ C0
+ C0
+ true
+ true
+ false
+ 3
+ false
+ false
+ 0
+ areaid.rdlprobepad - 81/27
+ 81/27@1
+
+
+ #00bfff
+ #00bfff
+ 0
+ 0
+ C0
+ C0
+ true
+ false
+ false
+ 3
+ false
+ false
+ 0
+ areaid.sigPadDiff - 81/6
+ 81/6@1
+
+
+ #c8ffc8
+ #c8ffc8
+ 0
+ 0
+ C0
+ C0
+ true
+ true
+ false
+ 3
+ false
+ false
+ 0
+ areaid.sigPadWell - 81/7
+ 81/7@1
+
+
+ #ff7f50
+ #ff7f50
+ 0
+ 0
+ C0
+ C0
+ true
+ false
+ false
+ 3
+ false
+ false
+ 0
+ areaid.sigPadMetNtr - 81/8
+ 81/8@1
+
+
+ #ff6464
+ #ff6464
+ 0
+ 0
+ C0
+ C0
+ true
+ true
+ false
+ 3
+ false
+ false
+ 0
+ areaid.analog - 81/79
+ 81/79@1
+
+
+ #ffff00
+ #ffffff
+ 0
+ 0
+ C0
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ prune.drawing - 84/44
+ 84/44@1
+
+
+ #0000ff
+ #0000ff
+ 0
+ 0
+ C0
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ padCenter.drawing - 81/20
+ 81/20@1
+
+
+ #8c8ca6
+ #8c8ca6
+ 0
+ 0
+ C7
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ met1.psa1 - 68/88
+ 68/88@1
+
+
+ #8c8ca6
+ #8c8ca6
+ 0
+ 0
+ C37
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ met2.psa1 - 69/88
+ 69/88@1
+
+
+ #8c8ca6
+ #8c8ca6
+ 0
+ 0
+ C49
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ met3.psa1 - 70/88
+ 70/88@1
+
+
+ #8c8ca6
+ #8c8ca6
+ 0
+ 0
+ C15
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ met4.psa1 - 71/88
+ 71/88@1
+
+
+ #8c8ca6
+ #8c8ca6
+ 0
+ 0
+ C42
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ met5.psa1 - 72/88
+ 72/88@1
+
+
+ #00ffe7
+ #00ffe7
+ 0
+ 0
+ C7
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ met1.psa2 - 68/89
+ 68/89@1
+
+
+ #00ffe7
+ #00ffe7
+ 0
+ 0
+ C37
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ met2.psa2 - 69/89
+ 69/89@1
+
+
+ #00ffe7
+ #00ffe7
+ 0
+ 0
+ C49
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ met3.psa2 - 70/89
+ 70/89@1
+
+
+ #00ffe7
+ #00ffe7
+ 0
+ 0
+ C15
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ met4.psa2 - 71/89
+ 71/89@1
+
+
+ #00ffe7
+ #00ffe7
+ 0
+ 0
+ C42
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ met5.psa2 - 72/89
+ 72/89@1
+
+
+ #ffffcc
+ #ffffcc
+ 0
+ 0
+ C7
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ met1.psa3 - 68/90
+ 68/90@1
+
+
+ #ffffcc
+ #ffffcc
+ 0
+ 0
+ C37
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ met2.psa3 - 69/90
+ 69/90@1
+
+
+ #ffffcc
+ #ffffcc
+ 0
+ 0
+ C49
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ met3.psa3 - 70/90
+ 70/90@1
+
+
+ #ffffcc
+ #ffffcc
+ 0
+ 0
+ C15
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ met4.psa3 - 71/90
+ 71/90@1
+
+
+ #ffffcc
+ #ffffcc
+ 0
+ 0
+ C42
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ met5.psa3 - 72/90
+ 72/90@1
+
+
+ #802626
+ #802626
+ 0
+ 0
+ C7
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ met1.psa4 - 68/91
+ 68/91@1
+
+
+ #802626
+ #802626
+ 0
+ 0
+ C37
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ met2.psa4 - 69/91
+ 69/91@1
+
+
+ #802626
+ #802626
+ 0
+ 0
+ C49
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ met3.psa4 - 70/91
+ 70/91@1
+
+
+ #802626
+ #802626
+ 0
+ 0
+ C15
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ met4.psa4 - 71/91
+ 71/91@1
+
+
+ #802626
+ #802626
+ 0
+ 0
+ C42
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ met5.psa4 - 72/91
+ 72/91@1
+
+
+ #333399
+ #333399
+ 0
+ 0
+ C7
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ met1.psa5 - 68/92
+ 68/92@1
+
+
+ #333399
+ #333399
+ 0
+ 0
+ C37
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ met2.psa5 - 69/92
+ 69/92@1
+
+
+ #333399
+ #333399
+ 0
+ 0
+ C49
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ met3.psa5 - 70/92
+ 70/92@1
+
+
+ #333399
+ #333399
+ 0
+ 0
+ C15
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ met4.psa5 - 71/92
+ 71/92@1
+
+
+ #333399
+ #333399
+ 0
+ 0
+ C42
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ met5.psa5 - 72/92
+ 72/92@1
+
+
+ #fa8072
+ #fa8072
+ 0
+ 0
+ C7
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ met1.psa6 - 68/93
+ 68/93@1
+
+
+ #fa8072
+ #fa8072
+ 0
+ 0
+ C37
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ met2.psa6 - 69/93
+ 69/93@1
+
+
+ #fa8072
+ #fa8072
+ 0
+ 0
+ C49
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ met3.psa6 - 70/93
+ 70/93@1
+
+
+ #fa8072
+ #fa8072
+ 0
+ 0
+ C15
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ met4.psa6 - 71/93
+ 71/93@1
+
+
+ #fa8072
+ #fa8072
+ 0
+ 0
+ C42
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ met5.psa6 - 72/93
+ 72/93@1
+
+
+ #ff0000
+ #ff0000
+ 0
+ 0
+ C10
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ rdl.psa1 - 74/88
+ 74/88@1
+
+
+ #0000ff
+ #0000ff
+ 0
+ 0
+ C10
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ rdl.psa2 - 74/89
+ 74/89@1
+
+
+ #00cc66
+ #00cc66
+ 0
+ 0
+ C10
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ rdl.psa3 - 74/90
+ 74/90@1
+
+
+ #ffffff
+ #ffffff
+ 0
+ 0
+ C10
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ rdl.psa4 - 74/91
+ 74/91@1
+
+
+ #ffff00
+ #ffff00
+ 0
+ 0
+ C10
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ rdl.psa5 - 74/92
+ 74/92@1
+
+
+ #bf4026
+ #bf4026
+ 0
+ 0
+ C10
+ C0
+ true
+ true
+ false
+ 1
+ false
+ false
+ 0
+ rdl.psa6 - 74/93
+ 74/93@1
+
+
+ #ffe6bf
+ #ffe6bf
+ 0
+ 0
+ C20
+ C1
+ false
+ true
+ false
+ 1
+ false
+ false
+ 0
+ blanking.drawing - 124/40
+ 124/40@1
+
+
+
+
+ ................
+ ................
+ ................
+ ................
+ ................
+ ................
+ ................
+ ................
+ ................
+ ................
+ ................
+ ................
+ ................
+ ................
+ ................
+ ................
+
+ 1
+ blank
+
+
+
+ ****************
+ ****************
+ ****************
+ ****************
+ ****************
+ ****************
+ ****************
+ ****************
+ ****************
+ ****************
+ ****************
+ ****************
+ ****************
+ ****************
+ ****************
+ ****************
+
+ 2
+ solid
+
+
+
+ ..*...*...*...*.
+ ................
+ *...*...*...*...
+ ................
+ ..*...*...*...*.
+ ................
+ *...*...*...*...
+ ................
+ ..*...*...*...*.
+ ................
+ *...*...*...*...
+ ................
+ ..*...*...*...*.
+ ................
+ *...*...*...*...
+ ................
+
+ 3
+ dots
+
+
+
+ ................
+ ................
+ ................
+ ****************
+ ................
+ ................
+ ................
+ ****************
+ ................
+ ................
+ ................
+ ****************
+ ................
+ ................
+ ................
+ ****************
+
+ 4
+ hLine
+
+
+
+ ..*...*...*...*.
+ ..*...*...*...*.
+ ..*...*...*...*.
+ ..*...*...*...*.
+ ..*...*...*...*.
+ ..*...*...*...*.
+ ..*...*...*...*.
+ ..*...*...*...*.
+ ..*...*...*...*.
+ ..*...*...*...*.
+ ..*...*...*...*.
+ ..*...*...*...*.
+ ..*...*...*...*.
+ ..*...*...*...*.
+ ..*...*...*...*.
+ ..*...*...*...*.
+
+ 5
+ vLine
+
+
+
+ *...*...*...*...
+ .*.*.*.*.*.*.*.*
+ ..*...*...*...*.
+ .*.*.*.*.*.*.*.*
+ *...*...*...*...
+ .*.*.*.*.*.*.*.*
+ ..*...*...*...*.
+ .*.*.*.*.*.*.*.*
+ *...*...*...*...
+ .*.*.*.*.*.*.*.*
+ ..*...*...*...*.
+ .*.*.*.*.*.*.*.*
+ *...*...*...*...
+ .*.*.*.*.*.*.*.*
+ ..*...*...*...*.
+ .*.*.*.*.*.*.*.*
+
+ 6
+ cross
+
+
+
+ ...*...*...*...*
+ ...*...*...*...*
+ ...*...*...*...*
+ ****************
+ ...*...*...*...*
+ ...*...*...*...*
+ ...*...*...*...*
+ ****************
+ ...*...*...*...*
+ ...*...*...*...*
+ ...*...*...*...*
+ ****************
+ ...*...*...*...*
+ ...*...*...*...*
+ ...*...*...*...*
+ ****************
+
+ 7
+ grid
+
+
+
+ ...*...*...*...*
+ ..*...*...*...*.
+ .*...*...*...*..
+ *...*...*...*...
+ ...*...*...*...*
+ ..*...*...*...*.
+ .*...*...*...*..
+ *...*...*...*...
+ ...*...*...*...*
+ ..*...*...*...*.
+ .*...*...*...*..
+ *...*...*...*...
+ ...*...*...*...*
+ ..*...*...*...*.
+ .*...*...*...*..
+ *...*...*...*...
+
+ 8
+ slash
+
+
+
+ *...*...*...*...
+ .*...*...*...*..
+ ..*...*...*...*.
+ ...*...*...*...*
+ *...*...*...*...
+ .*...*...*...*..
+ ..*...*...*...*.
+ ...*...*...*...*
+ *...*...*...*...
+ .*...*...*...*..
+ ..*...*...*...*.
+ ...*...*...*...*
+ *...*...*...*...
+ .*...*...*...*..
+ ..*...*...*...*.
+ ...*...*...*...*
+
+ 9
+ backSlash
+
+
+
+ **......**......
+ ..*.......*.....
+ ...**......**...
+ .....*.......*..
+ ......**......**
+ *.......*.......
+ .**......**.....
+ ...*.......*....
+ ....**......**..
+ ......*.......*.
+ *......**......*
+ .*.......*......
+ ..**......**....
+ ....*.......*...
+ .....**......**.
+ .......*.......*
+
+ 10
+ hZigZag
+
+
+
+ *....*....*.....
+ *.....*....*....
+ .*....*.....*...
+ ..*....*....*...
+ ..*.....*....*..
+ ...*....*.....*.
+ ....*....*....*.
+ ....*.....*....*
+ *....*....*.....
+ *.....*....*....
+ .*....*.....*...
+ ..*....*....*...
+ ..*.....*....*..
+ ...*....*.....*.
+ ....*....*....*.
+ ....*.....*....*
+
+ 11
+ vZigZag
+
+
+
+ ................
+ ................
+ ...*****...*****
+ ...*...*...*...*
+ ...*...*...*...*
+ ****...*****...*
+ ................
+ ................
+ ................
+ ................
+ ...*****...*****
+ ...*...*...*...*
+ ...*...*...*...*
+ ****...*****...*
+ ................
+ ................
+
+ 12
+ hCurb
+
+
+
+ .....*.......*..
+ .....*.......*..
+ .....*.......*..
+ ..****....****..
+ ..*.......*.....
+ ..*.......*.....
+ ..*.......*.....
+ ..****....****..
+ .....*.......*..
+ .....*.......*..
+ .....*.......*..
+ ..****....****..
+ ..*.......*.....
+ ..*.......*.....
+ ..*.......*.....
+ ..****....****..
+
+ 13
+ vCurb
+
+
+
+ ****************
+ ..*.......*.....
+ ..*.......*.....
+ ..*.......*.....
+ ****************
+ ......*.......*.
+ ......*.......*.
+ ......*.......*.
+ ****************
+ ..*.......*.....
+ ..*.......*.....
+ ..*.......*.....
+ ****************
+ ......*.......*.
+ ......*.......*.
+ ......*.......*.
+
+ 14
+ brick
+
+
+
+ ................
+ ..*.......*.....
+ ..*.......*.....
+ ..*.......*.....
+ *****...*****...
+ ..*.......*.....
+ ..*.......*.....
+ ..*.......*.....
+ ................
+ .....*.......*..
+ .....*.......*..
+ .....*.......*..
+ ...*****...*****
+ .....*.......*..
+ .....*.......*..
+ .....*.......*..
+
+ 15
+ dagger
+
+
+
+ ................
+ ..*.............
+ ..*.............
+ ..*.............
+ *****...........
+ ..*.............
+ ..*.............
+ ..*.............
+ ................
+ .............*..
+ .............*..
+ .............*..
+ ...........*****
+ .............*..
+ .............*..
+ .............*..
+
+ 16
+ sparseDagger
+
+
+
+ ................
+ ..........*.....
+ ..........*.....
+ ..........*.....
+ ........*****...
+ ..........*.....
+ ..........*.....
+ ..........*.....
+ ................
+ .....*..........
+ .....*..........
+ .....*..........
+ ...*****........
+ .....*..........
+ .....*..........
+ .....*..........
+
+ 17
+ sparseDagger2
+
+
+
+ ................
+ ....*...........
+ ...*.*..........
+ ..*...*.........
+ .*.....*........
+ *********.......
+ ................
+ ................
+ ................
+ ...........*....
+ ..........*.*...
+ .........*...*..
+ ........*.....*.
+ .......*********
+ ................
+ ................
+
+ 18
+ triangle
+
+
+
+ ................
+ .*.....*.....*..
+ ..*...**....*...
+ ...*.*.*...*....
+ ....*..*..*.....
+ .....*.*.*......
+ ......***.......
+ .......*........
+ ......***.......
+ .....*.*.*......
+ ....*..*..*.....
+ ...*...*...*....
+ ..*....*....*...
+ .*..*******..*..
+ ................
+ ................
+
+ 19
+ Xone
+
+
+
+ ................
+ .*....**.....*..
+ ..*..*..*...*...
+ ...**....*.*....
+ ....*....**.....
+ .....*...*......
+ ......*.*.......
+ .......*........
+ ......*.*.......
+ .....*...*......
+ ....*.....*.....
+ ...**......*....
+ ..*.*.......*...
+ .*..******...*..
+ ................
+ ................
+
+ 20
+ Xtwo
+
+
+
+ ................
+ ................
+ ......*.......*.
+ ................
+ ................
+ ................
+ ..*.......*.....
+ ................
+ ................
+ ................
+ ......*.......*.
+ ................
+ ................
+ ................
+ ..*.......*.....
+ ................
+
+ 21
+ spareDots
+
+
+
+ ................
+ ................
+ ................
+ ................
+ ................
+ ......*.......*.
+ ................
+ ................
+ ................
+ ................
+ ................
+ ................
+ ..*.......*.....
+ ................
+ ................
+ ................
+
+ 22
+ spareDots21
+
+
+
+ ................
+ ................
+ ......*.......*.
+ ................
+ ................
+ ................
+ ................
+ ................
+ ................
+ ................
+ ..*.......*.....
+ ................
+ ................
+ ................
+ ................
+ ................
+
+ 23
+ spareDots22
+
+
+
+ ****....****....
+ ****....****....
+ ****....****....
+ ****....****....
+ ....****....****
+ ....****....****
+ ....****....****
+ ....****....****
+ ****....****....
+ ****....****....
+ ****....****....
+ ****....****....
+ ....****....****
+ ....****....****
+ ....****....****
+ ....****....****
+
+ 24
+ checker
+
+
+
+ ....****....****
+ ....****....****
+ ....****....****
+ ....****....****
+ ****....****....
+ ****....****....
+ ****....****....
+ ****....****....
+ ....****....****
+ ....****....****
+ ....****....****
+ ....****....****
+ ****....****....
+ ****....****....
+ ****....****....
+ ****....****....
+
+ 25
+ checker2
+
+
+
+ ................
+ ................
+ ................
+ ................
+ .......*........
+ ......**........
+ .......*........
+ .......*........
+ .......*........
+ .......*........
+ ......***.......
+ ................
+ ................
+ ................
+ ................
+ ................
+
+ 26
+ one
+
+
+
+ ................
+ ................
+ ................
+ ................
+ ................
+ .......**.......
+ ......*..*......
+ .........*......
+ ........*.......
+ .......*........
+ ......*.........
+ ......****......
+ ................
+ ................
+ ................
+ ................
+
+ 27
+ two
+
+
+
+ ................
+ ................
+ ................
+ ................
+ ................
+ ......***.......
+ .....*...*......
+ .........*......
+ .......**.......
+ .........*......
+ .....*...*......
+ ......***.......
+ ................
+ ................
+ ................
+ ................
+
+ 28
+ three
+
+
+
+ ................
+ ................
+ ................
+ ................
+ ................
+ ................
+ ................
+ ................
+ .............*..
+ ............**..
+ ...........*.*..
+ ..........*..*..
+ .........******.
+ .............*..
+ .............*..
+ ................
+
+ 29
+ four
+
+
+
+ ................
+ ................
+ ................
+ ......***.......
+ .....*..........
+ .....*..........
+ .....***........
+ ........*.......
+ ........*.......
+ .....***........
+ ................
+ ................
+ ................
+ ................
+ ................
+ ................
+
+ 30
+ five
+
+
+
+ ................
+ ................
+ ................
+ ................
+ .......***......
+ ......*.........
+ ......*.........
+ ......****......
+ ......*...*.....
+ ......*...*.....
+ .......***......
+ ................
+ ................
+ ................
+ ................
+ ................
+
+ 31
+ six
+
+
+
+ ................
+ ................
+ ................
+ .....******.....
+ ..........*.....
+ .........*......
+ .........*......
+ ........*.......
+ ........*.......
+ .......*........
+ ......*.........
+ .....*..........
+ ................
+ ................
+ ................
+ ................
+
+ 32
+ seven
+
+
+
+ ................
+ ................
+ ................
+ ................
+ ......***.......
+ .....*...*......
+ .....*...*......
+ ......***.......
+ .....*...*......
+ .....*...*......
+ ......***.......
+ ................
+ ................
+ ................
+ ................
+ ................
+
+ 33
+ eight
+
+
+
+ *..............*
+ .*............*.
+ ..*..........*..
+ ...*........*...
+ ....*......*....
+ .....*....*.....
+ ......*..*......
+ .......**.......
+ .......**.......
+ ......*..*......
+ .....*....*.....
+ ....*......*....
+ ...*........*...
+ ..*..........*..
+ .*............*.
+ *..............*
+
+ 34
+ box45
+
+
+
+ .*.*.*.*.*.*.*.*
+ *.*.*.*.*.*.*.*.
+ .*.*.*.*.*.*.*.*
+ *.*.*.*.*.*.*.*.
+ .*.*.*.*.*.*.*.*
+ *.*.*.*.*.*.*.*.
+ .*.*.*.*.*.*.*.*
+ *.*.*.*.*.*.*.*.
+ .*.*.*.*.*.*.*.*
+ *.*.*.*.*.*.*.*.
+ .*.*.*.*.*.*.*.*
+ *.*.*.*.*.*.*.*.
+ .*.*.*.*.*.*.*.*
+ *.*.*.*.*.*.*.*.
+ .*.*.*.*.*.*.*.*
+ *.*.*.*.*.*.*.*.
+
+ 35
+ gray50
+
+
+
+ *...*...*...*...
+ ................
+ ..*...*...*...*.
+ ................
+ *...*...*...*...
+ ................
+ ..*...*...*...*.
+ ................
+ *...*...*...*...
+ ................
+ ..*...*...*...*.
+ ................
+ *...*...*...*...
+ ................
+ ..*...*...*...*.
+ ................
+
+ 36
+ gray25
+
+
+
+ .*.*.*...*.*.*..
+ ................
+ ...*...*...*...*
+ ................
+ .*...*.*.*...*.*
+ ................
+ ...*...*...*...*
+ ................
+ .*.*.*...*.*.*..
+ ................
+ ...*...*...*...*
+ ................
+ .*...*.*.*...*.*
+ ................
+ ...*...*...*...*
+ ................
+
+ 37
+ snow
+
+
+
+ ..*.......*.....
+ ...*.......*....
+ ....*.......*...
+ .....*.......*..
+ ......*.......*.
+ .......*.......*
+ *.......*.......
+ .*.......*......
+ ..*.......*.....
+ ...*.......*....
+ ....*.......*...
+ .....*.......*..
+ ......*.......*.
+ .......*.......*
+ *.......*.......
+ .*.......*......
+
+ 38
+ backSlash2
+
+
+
+ *.....*.*.....*.
+ .*...*...*...*..
+ ..*.*.....*.*...
+ ...*...*...*...*
+ ..*.*.....*.*...
+ .*...*...*...*..
+ *.....*.*.....*.
+ ...*...*...*...*
+ *.....*.*.....*.
+ .*...*...*...*..
+ ..*.*.....*.*...
+ ...*...*...*...*
+ ..*.*.....*.*...
+ .*...*...*...*..
+ *.....*.*.....*.
+ ...*...*...*...*
+
+ 39
+ lattice
+
+
+
+ **..**..**..**..
+ **..**..**..**..
+ ..**..**..**..**
+ ..**..**..**..**
+ **..**..**..**..
+ **..**..**..**..
+ ..**..**..**..**
+ ..**..**..**..**
+ **..**..**..**..
+ **..**..**..**..
+ ..**..**..**..**
+ ..**..**..**..**
+ **..**..**..**..
+ **..**..**..**..
+ ..**..**..**..**
+ ..**..**..**..**
+
+ 40
+ smallChecker
+
+
+
+ ....*...........
+ ...*.*..........
+ ..*...*.........
+ .*.....*........
+ *.......*.......
+ .*.......*......
+ ..*.......*.....
+ ...*.......*....
+ ....*.......*...
+ .....*.......*..
+ ......*.......*.
+ .......*.......*
+ ........*.....*.
+ .........*...*..
+ ..........*.*...
+ ...........*....
+
+ 41
+ slantBox
+
+
+
+ .*...*...*...*..
+ *...*...*...*...
+ ...*...*...*...*
+ ..*...*...*...*.
+ .*...*...*...*..
+ *...*...*...*...
+ ...*...*...*...*
+ ..*...*...*...*.
+ .*...*...*...*..
+ *...*...*...*...
+ ...*...*...*...*
+ ..*...*...*...*.
+ .*...*...*...*..
+ *...*...*...*...
+ ...*...*...*...*
+ ..*...*...*...*.
+
+ 42
+ slash2
+
+
+
+ ...*.......*....
+ ..*.......*.....
+ .*.......*......
+ *.......*.......
+ .......*.......*
+ ......*.......*.
+ .....*.......*..
+ ....*.......*...
+ ...*.......*....
+ ..*.......*.....
+ .*.......*......
+ *.......*.......
+ .......*.......*
+ ......*.......*.
+ .....*.......*..
+ ....*.......*...
+
+ 43
+ bigSlash
+
+
+
+ ****....****....
+ *..*....*..*....
+ *..*....*..*....
+ ****....****....
+ ................
+ ................
+ ................
+ ................
+ ****....****....
+ *..*....*..*....
+ *..*....*..*....
+ ****....****....
+ ................
+ ................
+ ................
+ ................
+
+ 44
+ boxes
+
+
+
+ ..**......**....
+ .*..*....*..*...
+ *....*..*....*..
+ *....*..*....*..
+ .*..*....*..*...
+ ..**......**....
+ ................
+ ................
+ ..**......**....
+ .*..*....*..*...
+ *....*..*....*..
+ *....*..*....*..
+ .*..*....*..*...
+ ..**......**....
+ ................
+ ................
+
+ 45
+ circles
+
+
+
+ .**..**..**..**.
+ ...*...*...*...*
+ *...*...*...*...
+ .**..**..**..**.
+ .**..**..**..**.
+ *...*...*...*...
+ ...*...*...*...*
+ .**..**..**..**.
+ .**..**..**..**.
+ ...*...*...*...*
+ *...*...*...*...
+ .**..**..**..**.
+ .**..**..**..**.
+ *...*...*...*...
+ ...*...*...*...*
+ .**..**..**..**.
+
+ 46
+ zigzag
+
+
+
+ ................
+ *.*.*.*.*.*.*.*.
+ ................
+ ...*....*....*..
+ ................
+ *.*.*.*.*.*.*.*.
+ ................
+ ...*....*....*..
+ ................
+ *.*.*.*.*.*.*.*.
+ ................
+ ...*....*....*..
+ ................
+ *.*.*.*.*.*.*.*.
+ ................
+ ...*....*....*..
+
+ 47
+ lightMesh
+
+
+
+ ...............*
+ ..............*.
+ .............*..
+ ............*...
+ ...........*....
+ ..........*.....
+ .........*......
+ ........*.......
+ .......*........
+ ......*.........
+ .....*..........
+ ....*...........
+ ...*............
+ ..*.............
+ .*..............
+ *...............
+
+ 48
+ hugeSlash
+
+
+
+ *...............
+ .*..............
+ ..*.............
+ ...*............
+ ....*...........
+ .....*..........
+ ......*.........
+ .......*........
+ ........*.......
+ .........*......
+ ..........*.....
+ ...........*....
+ ............*...
+ .............*..
+ ..............*.
+ ...............*
+
+ 49
+ hugeSlash2
+
+
+
+ *.........*.....
+ .....*..........
+ ..*.........*...
+ .......*........
+ ....*.........*.
+ .*.......*......
+ ......*.........
+ ...*.......*....
+ ........*.......
+ .....*.......*..
+ *.........*.....
+ .......*........
+ ..*.........*...
+ .........*......
+ ....*.........*.
+ ...........*....
+
+ 50
+ curve
+
+
+
+ ....*....*....*.
+ ..*.............
+ *.......*.......
+ .............*..
+ .......*........
+ ............*...
+ .....*..........
+ ...*.......*....
+ *...............
+ ................
+ .........*......
+ ................
+ ......*........*
+ ...*............
+ *............*..
+ ..........*.....
+
+ 51
+ curve2
+
+
+
+ ...........*....
+ ..........*.*...
+ .........*...*..
+ ........*.....*.
+ .........*...*..
+ ..........*.*...
+ ...........*....
+ ................
+ ................
+ ...*............
+ ..*.*...........
+ .*...*..........
+ *.....*.........
+ .*...*..........
+ ..*.*...........
+ ...*............
+
+ 52
+ diams
+
+
+
+ ................
+ ................
+ ................
+ ................
+ ................
+ ................
+ ................
+ ................
+ ................
+ ...*............
+ ..*.*...........
+ .*...*..........
+ *.....*.........
+ .*...*..........
+ ..*.*...........
+ ...*............
+
+ 53
+ sparsediam
+
+
+
+ .......*.......*
+ ......*.........
+ .....*..........
+ ................
+ ................
+ ................
+ .*..............
+ *...............
+ .......*.......*
+ ..............*.
+ .............*..
+ ................
+ ................
+ ................
+ .........*......
+ ........*.......
+
+ 54
+ rain
+
+
+
+ *
+
+ 55
+
+
+
+ ***
+ 1
+ solid
+
+
+ ****..
+ 2
+ dashed
+
+
+ *..
+ 3
+ dots
+
+
+ ***..*..
+ 4
+ dashDot
+
+
+ **..
+ 5
+ shortDash
+
+
+ ****..**..
+ 6
+ doubleDash
+
+
+ *...
+ 7
+ hidden
+
+
+
+ 8
+
+
+
diff --git a/caravel_template/dump_pic.rb b/caravel_template/dump_pic.rb
new file mode 100644
index 0000000..7bdf5c9
--- /dev/null
+++ b/caravel_template/dump_pic.rb
@@ -0,0 +1 @@
+RBA::Application.instance.main_window.current_view.save_image("./tinytapeout.png",2000,2000)
diff --git a/caravel_template/klayoutrc b/caravel_template/klayoutrc
new file mode 100644
index 0000000..f08f5ef
--- /dev/null
+++ b/caravel_template/klayoutrc
@@ -0,0 +1,247 @@
+
+
+ false
+ false
+ 10.0
+ true
+ auto
+ true
+ 1
+ by-name
+ auto
+ 50
+ false
+ false
+
+ any-top
+ 1000
+ 1.0
+ fit-marker
+
+ 32
+ false
+
+ add
+ auto
+ 50
+ false
+
+ 0
+
+ false
+
+ false
+ 0
+ 0.01,0.005,0.001
+
+ 0.1
+ false
+ false
+ false
+ false
+ false
+ 2
+ 5
+ false
+ 1
+ false
+ 0
+ 10
+ any
+ global
+ -1
+ 0
+ false
+
+ 0
+ 0
+ 1
+
+ false
+
+ false
+ 0
+ 0
+ 1
+ 1
+ 1000
+ false
+ any
+ flush
+ 0.0
+ 0.0
+ 0.1
+ true
+ false
+ left
+ 0
+ ABC
+ bottom
+ false
+ true
+ false
+ true
+ r0
+ auto
+ auto
+ auto
+ 0.001
+ auto
+ true
+ invisible
+ dots
+ tenths-dotted-lines
+ true
+ auto
+ 1
+ 5
+ true
+ false
+ 1
+ 1
+
+ auto
+ 0
+ true
+ true
+
+ CIRCUIT_
+ DEVICE_
+ NET_
+
+ false
+ false
+ 1000
+ auto
+ 255,0,0 0,255,0 0,0,255 255,255,0 255,0,255 0,255,255 160,80,255 255,160,0
+ false
+ -1
+ -1
+ 50
+ -1
+ false
+ -1
+ 10000
+ true
+ 1.0
+ fit-net
+
+ false
+ true
+ false
+ true
+
+
+
+
+
+
+ true
+ true
+
+
+ 2
+
+ false
+ true
+
+ 8
+
+
+ true
+
+ 16
+ 0
+ '/home/matt/work/asic-workshop/shuttle6/zero_to_asic_mpw6/gds/user_project_wrapper.gds.gz' '/home/matt/work/asic-workshop/shuttle7/zero_to_asic_mpw7/gds/user_project_wrapper.gds.gz' '/home/matt/work/asic-workshop/shuttle7/tinytapeout-02/gds/user_project_wrapper.gds' '/home/matt/work/asic-workshop/shuttle8/tinytapeout-02/gds/user_project_wrapper.gds' '/home/matt/work/asic-workshop/shuttle9/caravel_user_project/gds/user_project_wrapper.gds'
+ false
+ true
+ false
+ auto
+ 255,0,0 0,255,0 0,0,255 255,255,0 255,0,255 0,255,255 160,80,255 255,160,0
+ false
+ -1
+ -1
+ 50
+ -1
+ -1
+ 10000
+ 1.0
+ fit-net
+ 0.15
+ 2
+
+ database-top
+ auto
+ -1
+ -1
+ -1
+ -1
+ 1000
+ 1.0
+ fit-marker
+
+ false
+ auto
+ false
+ true
+ true
+ any
+ 8
+ mode=normal,title=Ruler,category=_ruler,fmt=$D,fmt_x=$X,fmt_y=$Y,position=auto,xalign=auto,yalign=auto,xlabel_xalign=auto,xlabel_yalign=auto,ylabel_xalign=auto,ylabel_yalign=auto,style=ruler,outline=diag,snap=true,angle_constraint=global;mode=single_click,title=Cross,category=_cross,fmt='$U,$V',fmt_x='',fmt_y='',position=auto,xalign=auto,yalign=auto,xlabel_xalign=auto,xlabel_yalign=auto,ylabel_xalign=auto,ylabel_yalign=auto,style=cross_both,outline=diag,snap=true,angle_constraint=global;mode=auto_metric,title=Measure,category=_measure,fmt=$D,fmt_x=$X,fmt_y=$Y,position=auto,xalign=auto,yalign=auto,xlabel_xalign=auto,xlabel_yalign=auto,ylabel_xalign=auto,ylabel_yalign=auto,style=ruler,outline=diag,snap=true,angle_constraint=global;mode=normal,title=Ellipse,category='',fmt='',fmt_x='W=$(abs(X))',fmt_y='H=$(abs(Y))',position=auto,xalign=auto,yalign=auto,xlabel_xalign=auto,xlabel_yalign=auto,ylabel_xalign=auto,ylabel_yalign=auto,style=line,outline=ellipse,snap=true,angle_constraint=global;mode=normal,title=Box,category='',fmt='',fmt_x='W=$(abs(X))',fmt_y='H=$(abs(Y))',position=auto,xalign=auto,yalign=auto,xlabel_xalign=auto,xlabel_yalign=auto,ylabel_xalign=auto,ylabel_yalign=auto,style=line,outline=box,snap=true,angle_constraint=global;mode=normal,title=XSection,category=XS,fmt=XS,fmt_x='',fmt_y='',position=auto,xalign=auto,yalign=auto,xlabel_xalign=auto,xlabel_yalign=auto,ylabel_xalign=auto,ylabel_yalign=auto,style=arrow_both,outline=diag,snap=true,angle_constraint=global
+ -1
+
+ 5
+ auto
+ 1
+ true
+ false
+ 1
+ true
+ 3
+
+ any-top
+ 1000
+ 1000
+ 1.0
+ fit-marker
+
+ false
+ true
+ true
+ true
+ true
+ false
+ false
+ true
+ false
+ false
+ 1000
+ 1.0
+ fit-marker
+
+ true
+
+
+ false
+
+
+ false
+ auto
+ 0
+ true
+ true
+ editor-mode=4,editor-mode=0
+
+
+ false
+ true
+ false
+ all
+
+ 1
+ rdb
+ all
+ false
+
+
+
diff --git a/upw_config.json b/caravel_template/upw_config.json
similarity index 100%
rename from upw_config.json
rename to caravel_template/upw_config.json
diff --git a/caravel_template/upw_post.v b/caravel_template/upw_post.v
new file mode 100644
index 0000000..cffc17f
--- /dev/null
+++ b/caravel_template/upw_post.v
@@ -0,0 +1,4 @@
+ // end of module instantiation
+
+endmodule // user_project_wrapper
+`default_nettype wire
diff --git a/caravel_template/upw_pre.v b/caravel_template/upw_pre.v
new file mode 100644
index 0000000..91a0446
--- /dev/null
+++ b/caravel_template/upw_pre.v
@@ -0,0 +1,84 @@
+// SPDX-FileCopyrightText: 2020 Efabless Corporation
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// SPDX-License-Identifier: Apache-2.0
+
+`default_nettype none
+/*
+ *-------------------------------------------------------------
+ *
+ * user_project_wrapper
+ *
+ * This wrapper enumerates all of the pins available to the
+ * user for the user project.
+ *
+ * An example user project is provided in this wrapper. The
+ * example should be removed and replaced with the actual
+ * user project.
+ *
+ * THIS FILE HAS BEEN GENERATED USING multi_tools_project CODEGEN
+ * IF YOU NEED TO MAKE EDITS TO IT, EDIT codegen/caravel_iface_header.txt
+ *
+ *-------------------------------------------------------------
+ */
+
+module user_project_wrapper #(
+ parameter BITS = 32
+)(
+`ifdef USE_POWER_PINS
+ inout vdda1, // User area 1 3.3V supply
+ inout vdda2, // User area 2 3.3V supply
+ inout vssa1, // User area 1 analog ground
+ inout vssa2, // User area 2 analog ground
+ inout vccd1, // User area 1 1.8V supply
+ inout vccd2, // User area 2 1.8v supply
+ inout vssd1, // User area 1 digital ground
+ inout vssd2, // User area 2 digital ground
+`endif
+
+ // Wishbone Slave ports (WB MI A)
+ input wb_clk_i,
+ input wb_rst_i,
+ input wbs_stb_i,
+ input wbs_cyc_i,
+ input wbs_we_i,
+ input [3:0] wbs_sel_i,
+ input [31:0] wbs_dat_i,
+ input [31:0] wbs_adr_i,
+ output wbs_ack_o,
+ output [31:0] wbs_dat_o,
+
+ // Logic Analyzer Signals
+ input [127:0] la_data_in,
+ output [127:0] la_data_out,
+ input [127:0] la_oenb,
+
+ // IOs
+ input [`MPRJ_IO_PADS-1:0] io_in,
+ output [`MPRJ_IO_PADS-1:0] io_out,
+ output [`MPRJ_IO_PADS-1:0] io_oeb,
+
+ // Analog (direct connection to GPIO pad---use with caution)
+ // Note that analog I/O is not available on the 7 lowest-numbered
+ // GPIO pads, and so the analog_io indexing is offset from the
+ // GPIO indexing by 7 (also upper 2 GPIOs do not have analog_io).
+ inout [`MPRJ_IO_PADS-10:0] analog_io,
+
+ // Independent clock (on independent integer divider)
+ input user_clock2,
+
+ // User maskable interrupt signals
+ output [2:0] user_irq
+);
+
+ // start of module instantiation
diff --git a/configure.py b/configure.py
index 5d37861..5bd396b 100755
--- a/configure.py
+++ b/configure.py
@@ -13,16 +13,6 @@
signal(SIGPIPE, SIG_DFL)
-"""
-# if the project is a filler, then use the config from the first fill project
-def gen_local_dir(self, fill_id):
- if self.fill:
- return os.path.join(os.path.join(self.project_dir, f'{fill_id :03}'))
- else:
- return os.path.join(os.path.join(self.project_dir, f'{self.index :03}'))
-"""
-
-
class Projects():
def __init__(self, config, args):
diff --git a/documentation.py b/documentation.py
index 2ead7e3..cc0c460 100644
--- a/documentation.py
+++ b/documentation.py
@@ -6,11 +6,12 @@ class Docs():
def __init__(self, projects, args):
self.projects = projects
self.args = args
+ self.script_dir = os.path.dirname(os.path.realpath(__file__))
# stuff related to docs
def build_index(self):
logging.info("building doc index")
- with open("README_init.md") as fh:
+ with open(os.path.join(self.script_dir, 'docs', 'README_init.md')) as fh:
readme = fh.read()
with open("README.md", 'w') as fh:
fh.write(readme)
@@ -21,7 +22,10 @@ def build_index(self):
fh.write(project.get_index_row())
def update_image(self):
- cmd = "klayout -l caravel.lyp gds/user_project_wrapper.gds -r dump_pic.rb -c klayoutrc"
+ ruby = os.path.join(self.script_dir, 'caravel_template', 'dump_pic.rb')
+ klayoutrc = os.path.join(self.script_dir, 'caravel_template', 'klayoutrc')
+ lyp = os.path.join(self.script_dir, 'caravel_template', 'caravel.lyp')
+ cmd = f'klayout -l {lyp} gds/user_project_wrapper.gds -r {ruby} -c {klayoutrc}'
logging.info(cmd)
os.system(cmd)
@@ -32,25 +36,24 @@ def dump_json(self):
design = project.get_yaml()
designs.append(design)
- with open(self.args.dump_json, "w") as fh:
+ with open(self.args.dump_json, 'w') as fh:
fh.write(json.dumps(designs, indent=4))
logging.info(f'wrote json to {self.args.dump_json}')
def dump_markdown(self):
-
- with open("doc_header.md") as fh:
+ with open(os.path.join(self.script_dir, 'docs', 'doc_header.md')) as fh:
doc_header = fh.read()
- with open("doc_template.md") as fh:
+ with open(os.path.join(self.script_dir, 'docs', 'doc_template.md')) as fh:
doc_template = fh.read()
- with open("INFO.md") as fh:
+ with open(os.path.join(self.script_dir, 'docs', 'INFO.md')) as fh:
doc_info = fh.read()
- with open("VERIFICATION.md") as fh:
+ with open(os.path.join(self.script_dir, 'docs', 'VERIFICATION.md')) as fh:
doc_verification = fh.read()
- with open("CREDITS.md") as fh:
+ with open(os.path.join(self.script_dir, 'docs', 'CREDITS.md')) as fh:
doc_credits = fh.read()
with open(self.args.dump_markdown, 'w') as fh:
@@ -104,10 +107,10 @@ def build_hugo_content(self):
os.makedirs(hugo_root)
os.makedirs(hugo_images)
- with open("hugo_template.md") as fh:
+ with open(os.path.join(self.script_dir, 'docs', 'hugo_template.md')) as fh:
doc_template = fh.read()
- with open("hugo_index_template.md") as fh:
+ with open(os.path.join(self.script_dir, 'docs', 'hugo_index_template.md')) as fh:
index_template = fh.read()
# copy image