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