From 069ed004f6dac21db720e0fb90ba7a443cc16023 Mon Sep 17 00:00:00 2001 From: root Date: Sat, 16 May 2026 10:06:50 +0800 Subject: [PATCH] New server architecutre build --- backend/dir_test.py | 110 ++++++++++++++++++ backend/directories.yaml | 17 --- backend/server.py | 110 ++++++++++++++---- ...400_Si220_PIN_mod_1310_L1300_QY_202603.yml | 0 ...L3000_GSSG_TRAIL_TypeA1_QY_v1_20260303.yml | 0 ...L3000_GSSG_TRAIL_TypeA2_QY_v1_20260303.yml | 0 ...L3000_GSSG_TRAIL_TypeA3_QY_v1_20260303.yml | 0 ...L3000_GSSG_TRAIL_TypeA4_QY_v1_20260303.yml | 0 ...L3000_GSSG_TRAIL_TypeA5_QY_v1_20260303.yml | 0 ...L3000_GSSG_TRAIL_TypeE1_QY_v1_20260303.yml | 0 ...L3000_GSSG_TRAIL_TypeE2_QY_v1_20260303.yml | 0 ...L3000_GSSG_TRAIL_TypeE3_QY_v1_20260303.yml | 0 ...L3000_GSSG_TRAIL_TypeE4_QY_v1_20260303.yml | 0 ...L3000_GSSG_TRAIL_TypeG1_QY_v1_20260303.yml | 0 ...L3000_GSSG_TRAIL_TypeG2_QY_v1_20260303.yml | 0 ...L3000_GSSG_TRAIL_TypeG3_QY_v1_20260303.yml | 0 ...L3000_GSSG_TRAIL_TypeG4_QY_v1_20260303.yml | 0 ...L3000_GSSG_TRAIL_TypeZ1_QY_v1_20260303.yml | 0 ...L3000_GSSG_TRAIL_TypeZ2_QY_v1_20260303.yml | 0 ...L3000_GSSG_TRAIL_TypeZ3_QY_v1_20260303.yml | 0 ...L3000_GSSG_TRAIL_TypeZ4_QY_v1_20260303.yml | 0 ...L3000_GSSG_TRAIL_TypeR1_QY_v1_20260303.yml | 0 ...L3000_GSSG_TRAIL_TypeR2_QY_v1_20260303.yml | 0 ...L3000_GSSG_TRAIL_TypeT1_QY_v1_20260303.yml | 0 ...L3000_GSSG_TRAIL_TypeT2_QY_v1_20260303.yml | 0 ...L3000_GSSG_TRAIL_TypeT3_QY_v1_20260303.yml | 0 ...L3000_GSSG_TRAIL_TypeT4_QY_v1_20260303.yml | 0 ...L3000_GSSG_TRAIL_TypeT5_QY_v1_20260303.yml | 0 ...L3000_GSSG_TRAIL_TypeV1_QY_v1_20260303.yml | 0 ...L3000_GSSG_TRAIL_TypeV2_QY_v1_20260303.yml | 0 ...L3000_GSSG_TRAIL_TypeW1_QY_v1_20260303.yml | 0 ...L3000_GSSG_TRAIL_TypeW2_QY_v1_20260303.yml | 0 ...L3000_GSSG_TRAIL_TypeW3_QY_v1_20260303.yml | 0 ...L3000_GSSG_TRAIL_TypeW4_QY_v1_20260303.yml | 0 ...L3000_GSSG_TRAIL_TypeX1_QY_v1_20260303.yml | 0 ...L3000_GSSG_TRAIL_TypeX2_QY_v1_20260303.yml | 0 ...L3000_GSSG_TRAIL_TypeX3_QY_v1_20260303.yml | 0 ...L3000_GSSG_TRAIL_TypeX4_QY_v1_20260303.yml | 0 ...L3000_GSSG_TRAIL_TypeX5_QY_v1_20260303.yml | 0 mxpic/PDKs/Silterra/directories.yaml | 3 +- 40 files changed, 201 insertions(+), 39 deletions(-) create mode 100644 backend/dir_test.py delete mode 100644 backend/directories.yaml rename mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/{composite => composites}/MZI_SiN400_Si220_PIN_mod_1310_L1300_QY_202603/MZI_SiN400_Si220_PIN_mod_1310_L1300_QY_202603.yml (100%) rename mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/{composite => composites}/MZM_1600G/MZM_1600G_L3000_GSSG_TRAIL_TypeA1_QY_v1_20260303/MZM_1600G_L3000_GSSG_TRAIL_TypeA1_QY_v1_20260303.yml (100%) rename mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/{composite => composites}/MZM_1600G/MZM_1600G_L3000_GSSG_TRAIL_TypeA2_QY_v1_20260303/MZM_1600G_L3000_GSSG_TRAIL_TypeA2_QY_v1_20260303.yml (100%) rename mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/{composite => composites}/MZM_1600G/MZM_1600G_L3000_GSSG_TRAIL_TypeA3_QY_v1_20260303/MZM_1600G_L3000_GSSG_TRAIL_TypeA3_QY_v1_20260303.yml (100%) rename mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/{composite => composites}/MZM_1600G/MZM_1600G_L3000_GSSG_TRAIL_TypeA4_QY_v1_20260303/MZM_1600G_L3000_GSSG_TRAIL_TypeA4_QY_v1_20260303.yml (100%) rename mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/{composite => composites}/MZM_1600G/MZM_1600G_L3000_GSSG_TRAIL_TypeA5_QY_v1_20260303/MZM_1600G_L3000_GSSG_TRAIL_TypeA5_QY_v1_20260303.yml (100%) rename mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/{composite => composites}/MZM_1600G/MZM_1600G_L3000_GSSG_TRAIL_TypeE1_QY_v1_20260303/MZM_1600G_L3000_GSSG_TRAIL_TypeE1_QY_v1_20260303.yml (100%) rename mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/{composite => composites}/MZM_1600G/MZM_1600G_L3000_GSSG_TRAIL_TypeE2_QY_v1_20260303/MZM_1600G_L3000_GSSG_TRAIL_TypeE2_QY_v1_20260303.yml (100%) rename mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/{composite => composites}/MZM_1600G/MZM_1600G_L3000_GSSG_TRAIL_TypeE3_QY_v1_20260303/MZM_1600G_L3000_GSSG_TRAIL_TypeE3_QY_v1_20260303.yml (100%) rename mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/{composite => composites}/MZM_1600G/MZM_1600G_L3000_GSSG_TRAIL_TypeE4_QY_v1_20260303/MZM_1600G_L3000_GSSG_TRAIL_TypeE4_QY_v1_20260303.yml (100%) rename mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/{composite => composites}/MZM_1600G/MZM_1600G_L3000_GSSG_TRAIL_TypeG1_QY_v1_20260303/MZM_1600G_L3000_GSSG_TRAIL_TypeG1_QY_v1_20260303.yml (100%) rename mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/{composite => composites}/MZM_1600G/MZM_1600G_L3000_GSSG_TRAIL_TypeG2_QY_v1_20260303/MZM_1600G_L3000_GSSG_TRAIL_TypeG2_QY_v1_20260303.yml (100%) rename mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/{composite => composites}/MZM_1600G/MZM_1600G_L3000_GSSG_TRAIL_TypeG3_QY_v1_20260303/MZM_1600G_L3000_GSSG_TRAIL_TypeG3_QY_v1_20260303.yml (100%) rename mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/{composite => composites}/MZM_1600G/MZM_1600G_L3000_GSSG_TRAIL_TypeG4_QY_v1_20260303/MZM_1600G_L3000_GSSG_TRAIL_TypeG4_QY_v1_20260303.yml (100%) rename mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/{composite => composites}/MZM_1600G/MZM_1600G_L3000_GSSG_TRAIL_TypeZ1_QY_v1_20260303/MZM_1600G_L3000_GSSG_TRAIL_TypeZ1_QY_v1_20260303.yml (100%) rename mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/{composite => composites}/MZM_1600G/MZM_1600G_L3000_GSSG_TRAIL_TypeZ2_QY_v1_20260303/MZM_1600G_L3000_GSSG_TRAIL_TypeZ2_QY_v1_20260303.yml (100%) rename mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/{composite => composites}/MZM_1600G/MZM_1600G_L3000_GSSG_TRAIL_TypeZ3_QY_v1_20260303/MZM_1600G_L3000_GSSG_TRAIL_TypeZ3_QY_v1_20260303.yml (100%) rename mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/{composite => composites}/MZM_1600G/MZM_1600G_L3000_GSSG_TRAIL_TypeZ4_QY_v1_20260303/MZM_1600G_L3000_GSSG_TRAIL_TypeZ4_QY_v1_20260303.yml (100%) rename mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/{composite => composites}/MZM_800G/MZM_800G_L3000_GSSG_TRAIL_TypeR1_QY_v1_20260303/MZM_800G_L3000_GSSG_TRAIL_TypeR1_QY_v1_20260303.yml (100%) rename mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/{composite => composites}/MZM_800G/MZM_800G_L3000_GSSG_TRAIL_TypeR2_QY_v1_20260303/MZM_800G_L3000_GSSG_TRAIL_TypeR2_QY_v1_20260303.yml (100%) rename mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/{composite => composites}/MZM_800G/MZM_800G_L3000_GSSG_TRAIL_TypeT1_QY_v1_20260303/MZM_800G_L3000_GSSG_TRAIL_TypeT1_QY_v1_20260303.yml (100%) rename mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/{composite => composites}/MZM_800G/MZM_800G_L3000_GSSG_TRAIL_TypeT2_QY_v1_20260303/MZM_800G_L3000_GSSG_TRAIL_TypeT2_QY_v1_20260303.yml (100%) rename mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/{composite => composites}/MZM_800G/MZM_800G_L3000_GSSG_TRAIL_TypeT3_QY_v1_20260303/MZM_800G_L3000_GSSG_TRAIL_TypeT3_QY_v1_20260303.yml (100%) rename mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/{composite => composites}/MZM_800G/MZM_800G_L3000_GSSG_TRAIL_TypeT4_QY_v1_20260303/MZM_800G_L3000_GSSG_TRAIL_TypeT4_QY_v1_20260303.yml (100%) rename mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/{composite => composites}/MZM_800G/MZM_800G_L3000_GSSG_TRAIL_TypeT5_QY_v1_20260303/MZM_800G_L3000_GSSG_TRAIL_TypeT5_QY_v1_20260303.yml (100%) rename mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/{composite => composites}/MZM_800G/MZM_800G_L3000_GSSG_TRAIL_TypeV1_QY_v1_20260303/MZM_800G_L3000_GSSG_TRAIL_TypeV1_QY_v1_20260303.yml (100%) rename mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/{composite => composites}/MZM_800G/MZM_800G_L3000_GSSG_TRAIL_TypeV2_QY_v1_20260303/MZM_800G_L3000_GSSG_TRAIL_TypeV2_QY_v1_20260303.yml (100%) rename mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/{composite => composites}/MZM_800G/MZM_800G_L3000_GSSG_TRAIL_TypeW1_QY_v1_20260303/MZM_800G_L3000_GSSG_TRAIL_TypeW1_QY_v1_20260303.yml (100%) rename mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/{composite => composites}/MZM_800G/MZM_800G_L3000_GSSG_TRAIL_TypeW2_QY_v1_20260303/MZM_800G_L3000_GSSG_TRAIL_TypeW2_QY_v1_20260303.yml (100%) rename mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/{composite => composites}/MZM_800G/MZM_800G_L3000_GSSG_TRAIL_TypeW3_QY_v1_20260303/MZM_800G_L3000_GSSG_TRAIL_TypeW3_QY_v1_20260303.yml (100%) rename mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/{composite => composites}/MZM_800G/MZM_800G_L3000_GSSG_TRAIL_TypeW4_QY_v1_20260303/MZM_800G_L3000_GSSG_TRAIL_TypeW4_QY_v1_20260303.yml (100%) rename mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/{composite => composites}/MZM_800G/MZM_800G_L3000_GSSG_TRAIL_TypeX1_QY_v1_20260303/MZM_800G_L3000_GSSG_TRAIL_TypeX1_QY_v1_20260303.yml (100%) rename mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/{composite => composites}/MZM_800G/MZM_800G_L3000_GSSG_TRAIL_TypeX2_QY_v1_20260303/MZM_800G_L3000_GSSG_TRAIL_TypeX2_QY_v1_20260303.yml (100%) rename mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/{composite => composites}/MZM_800G/MZM_800G_L3000_GSSG_TRAIL_TypeX3_QY_v1_20260303/MZM_800G_L3000_GSSG_TRAIL_TypeX3_QY_v1_20260303.yml (100%) rename mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/{composite => composites}/MZM_800G/MZM_800G_L3000_GSSG_TRAIL_TypeX4_QY_v1_20260303/MZM_800G_L3000_GSSG_TRAIL_TypeX4_QY_v1_20260303.yml (100%) rename mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/{composite => composites}/MZM_800G/MZM_800G_L3000_GSSG_TRAIL_TypeX5_QY_v1_20260303/MZM_800G_L3000_GSSG_TRAIL_TypeX5_QY_v1_20260303.yml (100%) diff --git a/backend/dir_test.py b/backend/dir_test.py new file mode 100644 index 0000000..bdfc7ff --- /dev/null +++ b/backend/dir_test.py @@ -0,0 +1,110 @@ +import os +import yaml +from collections import OrderedDict +from flask import Flask, jsonify, send_from_directory, request, redirect, url_for, session, render_template +from werkzeug.security import check_password_hash +import database # Imports the database.py you created earlier + +# --- Path Configurations --- +BASE_DIR = os.path.dirname(os.path.abspath(__file__)) +FRONTEND_DIR = os.path.join(BASE_DIR, '..', 'frontend') +YML_PATH = os.path.join(BASE_DIR, '..\\mxpic\\PDKs\\Silterra\\directories.yaml') +COMPS_ROOT = os.path.join(BASE_DIR, '..\\mxpic\\PDKs\\Silterra') + +# --- YAML & PDK Parsing Helper Functions (Unchanged) --- +def countSpaces(line): + """Count leading spaces (tab=4).""" + expanded = line.expandtabs(4) + return len(expanded) - len(expanded.lstrip(' ')) + +def buildTree(filepath): + """Build nested tree from indented yaml.""" + if not os.path.exists(filepath): + return OrderedDict() + + with open(filepath, 'r', encoding='utf-8') as f: + lines = f.readlines() + + rootIdx = None + for i, line in enumerate(lines): + if line.strip().startswith('root') and ':' in line.strip(): + rootIdx = i + break + if rootIdx is None: + return OrderedDict() + + entries = [] + for line in lines[rootIdx + 1:]: + stripped = line.strip() + if not stripped or stripped.startswith('#'): + continue + if stripped.startswith('- '): + spaceNum = countSpaces(line) + name = stripped[2:].strip() + if name.strip(): + entries.append((spaceNum, name)) + + if not entries: + return OrderedDict() + + minIndent = min(indent for indent, _ in entries) + nest = OrderedDict() + levelStack = [(minIndent - 1, nest)] + + for spaceNum, name in entries: + while levelStack and levelStack[-1][0] >= spaceNum: + levelStack.pop() + parent = levelStack[-1][1] + child = OrderedDict() + parent[name] = child + levelStack.append((spaceNum, child)) + + return nest + +def findComps(baseDir): + """Scan component folders, return map of paths -> component info.""" + compMap = {} + refDir = os.path.dirname(baseDir) + for root, dirs, files in os.walk(baseDir): + ymlFiles = [f for f in files if f.endswith('.yml')] + if ymlFiles: + parentDir = os.path.dirname(root) + relPath = os.path.relpath(parentDir, refDir) + parts = () if relPath == '.' else tuple(relPath.split(os.sep)) + compName = os.path.basename(root) + compMap[parts] = { + 'folder': compName, + 'yml': ymlFiles[0] + } + dirs.clear() + return compMap + +def addCompsToTree(tree, compMap): + """Insert component nodes into the tree.""" + for pathSeg, compItem in compMap.items(): + compName = compItem['folder'] + curNode = tree + try: + for seg in pathSeg: + curNode = curNode[seg] + except KeyError: + continue + curNode[compName] = OrderedDict({ + "__type__": "component", + "__name__": compName, + "__yml__": compItem['yml'] + }) + return tree + +def readCompYaml(compName): + """Load YAML from component folder.""" + for root, dirs, files in os.walk(COMPS_ROOT): + if os.path.basename(root) == compName: + dirs.clear() + ymlFiles = [f for f in files if f.endswith('.yml')] + if ymlFiles: + ymlPath = os.path.join(root, ymlFiles[0]) + with open(ymlPath, 'r', encoding='utf-8') as f: + return yaml.safe_load(f) + return None + diff --git a/backend/directories.yaml b/backend/directories.yaml deleted file mode 100644 index 7311315..0000000 --- a/backend/directories.yaml +++ /dev/null @@ -1,17 +0,0 @@ -level : 4 - -root : - - PDK_libs - - primitives - - directional_couplers - - edge_couplers - - crossings - - multimode_interferometers - - photodectors - - compotites - - MZIs - - electronics - - resistors - - capacitors - - others - - logos diff --git a/backend/server.py b/backend/server.py index 16bf7b3..3133cb7 100644 --- a/backend/server.py +++ b/backend/server.py @@ -8,8 +8,10 @@ import database # Imports the database.py you created earlier # --- Path Configurations --- BASE_DIR = os.path.dirname(os.path.abspath(__file__)) FRONTEND_DIR = os.path.join(BASE_DIR, '..', 'frontend') -YML_PATH = os.path.join(BASE_DIR, 'directories.yaml') -COMPS_ROOT = os.path.join(BASE_DIR, '..\\PDK_libs') + +# Use os.path.join exclusively for cross-platform safety +YML_PATH = os.path.join(BASE_DIR, '..', 'mxpic', 'PDKs', 'Silterra', 'directories.yaml') +COMPS_ROOT = os.path.join(BASE_DIR, '..', 'mxpic', 'PDKs', 'Silterra') # Initialize Flask, pointing to the frontend folder for HTML/CSS/JS app = Flask(__name__, template_folder=FRONTEND_DIR, static_folder=FRONTEND_DIR) @@ -25,6 +27,50 @@ def countSpaces(line): expanded = line.expandtabs(4) return len(expanded) - len(expanded.lstrip(' ')) +# def buildTree(filepath): +# """Build nested tree from indented yaml.""" +# if not os.path.exists(filepath): +# return OrderedDict() + +# with open(filepath, 'r', encoding='utf-8') as f: +# lines = f.readlines() + +# rootIdx = None +# for i, line in enumerate(lines): +# if line.strip().startswith('root') and ':' in line.strip(): +# rootIdx = i +# break +# if rootIdx is None: +# return OrderedDict() + +# entries = [] +# for line in lines[rootIdx + 1:]: +# stripped = line.strip() +# if not stripped or stripped.startswith('#'): +# continue +# if stripped.startswith('- '): +# spaceNum = countSpaces(line) +# name = stripped[2:].strip() +# if name.strip(): +# entries.append((spaceNum, name)) + +# if not entries: +# return OrderedDict() + +# minIndent = min(indent for indent, _ in entries) +# nest = OrderedDict() +# levelStack = [(minIndent - 1, nest)] + +# for spaceNum, name in entries: +# while levelStack and levelStack[-1][0] >= spaceNum: +# levelStack.pop() +# parent = levelStack[-1][1] +# child = OrderedDict() +# parent[name] = child +# levelStack.append((spaceNum, child)) + +# return nest + def buildTree(filepath): """Build nested tree from indented yaml.""" if not os.path.exists(filepath): @@ -48,8 +94,9 @@ def buildTree(filepath): continue if stripped.startswith('- '): spaceNum = countSpaces(line) - name = stripped[2:].strip() - if name.strip(): + # FIX 1: Strip trailing colons off the string so 'composites:' becomes 'composites' + name = stripped[2:].strip().rstrip(':') + if name: entries.append((spaceNum, name)) if not entries: @@ -69,10 +116,31 @@ def buildTree(filepath): return nest +def addCompsToTree(tree, compMap): + """Insert component nodes into the tree.""" + for pathSeg, compItem in compMap.items(): + compName = compItem['folder'] + curNode = tree + + # FIX 2: Automatically build missing folder paths + for seg in pathSeg: + if seg not in curNode: + # If a folder like MZM_1600G isn't in the YAML, gracefully auto-create it + curNode[seg] = OrderedDict() + curNode = curNode[seg] + + curNode[compName] = OrderedDict({ + "__type__": "component", + "__name__": compName, + "__yml__": compItem['yml'] + }) + return tree + def findComps(baseDir): """Scan component folders, return map of paths -> component info.""" compMap = {} - refDir = os.path.dirname(baseDir) + # refDir = os.path.dirname(baseDir) + refDir = baseDir for root, dirs, files in os.walk(baseDir): ymlFiles = [f for f in files if f.endswith('.yml')] if ymlFiles: @@ -87,22 +155,22 @@ def findComps(baseDir): dirs.clear() return compMap -def addCompsToTree(tree, compMap): - """Insert component nodes into the tree.""" - for pathSeg, compItem in compMap.items(): - compName = compItem['folder'] - curNode = tree - try: - for seg in pathSeg: - curNode = curNode[seg] - except KeyError: - continue - curNode[compName] = OrderedDict({ - "__type__": "component", - "__name__": compName, - "__yml__": compItem['yml'] - }) - return tree +# def addCompsToTree(tree, compMap): +# """Insert component nodes into the tree.""" +# for pathSeg, compItem in compMap.items(): +# compName = compItem['folder'] +# curNode = tree +# try: +# for seg in pathSeg: +# curNode = curNode[seg] +# except KeyError: +# continue +# curNode[compName] = OrderedDict({ +# "__type__": "component", +# "__name__": compName, +# "__yml__": compItem['yml'] +# }) +# return tree def readCompYaml(compName): """Load YAML from component folder.""" diff --git a/mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composite/MZI_SiN400_Si220_PIN_mod_1310_L1300_QY_202603/MZI_SiN400_Si220_PIN_mod_1310_L1300_QY_202603.yml b/mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composites/MZI_SiN400_Si220_PIN_mod_1310_L1300_QY_202603/MZI_SiN400_Si220_PIN_mod_1310_L1300_QY_202603.yml similarity index 100% rename from mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composite/MZI_SiN400_Si220_PIN_mod_1310_L1300_QY_202603/MZI_SiN400_Si220_PIN_mod_1310_L1300_QY_202603.yml rename to mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composites/MZI_SiN400_Si220_PIN_mod_1310_L1300_QY_202603/MZI_SiN400_Si220_PIN_mod_1310_L1300_QY_202603.yml diff --git a/mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composite/MZM_1600G/MZM_1600G_L3000_GSSG_TRAIL_TypeA1_QY_v1_20260303/MZM_1600G_L3000_GSSG_TRAIL_TypeA1_QY_v1_20260303.yml b/mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composites/MZM_1600G/MZM_1600G_L3000_GSSG_TRAIL_TypeA1_QY_v1_20260303/MZM_1600G_L3000_GSSG_TRAIL_TypeA1_QY_v1_20260303.yml similarity index 100% rename from mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composite/MZM_1600G/MZM_1600G_L3000_GSSG_TRAIL_TypeA1_QY_v1_20260303/MZM_1600G_L3000_GSSG_TRAIL_TypeA1_QY_v1_20260303.yml rename to mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composites/MZM_1600G/MZM_1600G_L3000_GSSG_TRAIL_TypeA1_QY_v1_20260303/MZM_1600G_L3000_GSSG_TRAIL_TypeA1_QY_v1_20260303.yml diff --git a/mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composite/MZM_1600G/MZM_1600G_L3000_GSSG_TRAIL_TypeA2_QY_v1_20260303/MZM_1600G_L3000_GSSG_TRAIL_TypeA2_QY_v1_20260303.yml b/mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composites/MZM_1600G/MZM_1600G_L3000_GSSG_TRAIL_TypeA2_QY_v1_20260303/MZM_1600G_L3000_GSSG_TRAIL_TypeA2_QY_v1_20260303.yml similarity index 100% rename from mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composite/MZM_1600G/MZM_1600G_L3000_GSSG_TRAIL_TypeA2_QY_v1_20260303/MZM_1600G_L3000_GSSG_TRAIL_TypeA2_QY_v1_20260303.yml rename to mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composites/MZM_1600G/MZM_1600G_L3000_GSSG_TRAIL_TypeA2_QY_v1_20260303/MZM_1600G_L3000_GSSG_TRAIL_TypeA2_QY_v1_20260303.yml diff --git a/mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composite/MZM_1600G/MZM_1600G_L3000_GSSG_TRAIL_TypeA3_QY_v1_20260303/MZM_1600G_L3000_GSSG_TRAIL_TypeA3_QY_v1_20260303.yml b/mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composites/MZM_1600G/MZM_1600G_L3000_GSSG_TRAIL_TypeA3_QY_v1_20260303/MZM_1600G_L3000_GSSG_TRAIL_TypeA3_QY_v1_20260303.yml similarity index 100% rename from mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composite/MZM_1600G/MZM_1600G_L3000_GSSG_TRAIL_TypeA3_QY_v1_20260303/MZM_1600G_L3000_GSSG_TRAIL_TypeA3_QY_v1_20260303.yml rename to mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composites/MZM_1600G/MZM_1600G_L3000_GSSG_TRAIL_TypeA3_QY_v1_20260303/MZM_1600G_L3000_GSSG_TRAIL_TypeA3_QY_v1_20260303.yml diff --git a/mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composite/MZM_1600G/MZM_1600G_L3000_GSSG_TRAIL_TypeA4_QY_v1_20260303/MZM_1600G_L3000_GSSG_TRAIL_TypeA4_QY_v1_20260303.yml b/mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composites/MZM_1600G/MZM_1600G_L3000_GSSG_TRAIL_TypeA4_QY_v1_20260303/MZM_1600G_L3000_GSSG_TRAIL_TypeA4_QY_v1_20260303.yml similarity index 100% rename from mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composite/MZM_1600G/MZM_1600G_L3000_GSSG_TRAIL_TypeA4_QY_v1_20260303/MZM_1600G_L3000_GSSG_TRAIL_TypeA4_QY_v1_20260303.yml rename to mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composites/MZM_1600G/MZM_1600G_L3000_GSSG_TRAIL_TypeA4_QY_v1_20260303/MZM_1600G_L3000_GSSG_TRAIL_TypeA4_QY_v1_20260303.yml diff --git a/mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composite/MZM_1600G/MZM_1600G_L3000_GSSG_TRAIL_TypeA5_QY_v1_20260303/MZM_1600G_L3000_GSSG_TRAIL_TypeA5_QY_v1_20260303.yml b/mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composites/MZM_1600G/MZM_1600G_L3000_GSSG_TRAIL_TypeA5_QY_v1_20260303/MZM_1600G_L3000_GSSG_TRAIL_TypeA5_QY_v1_20260303.yml similarity index 100% rename from mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composite/MZM_1600G/MZM_1600G_L3000_GSSG_TRAIL_TypeA5_QY_v1_20260303/MZM_1600G_L3000_GSSG_TRAIL_TypeA5_QY_v1_20260303.yml rename to mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composites/MZM_1600G/MZM_1600G_L3000_GSSG_TRAIL_TypeA5_QY_v1_20260303/MZM_1600G_L3000_GSSG_TRAIL_TypeA5_QY_v1_20260303.yml diff --git a/mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composite/MZM_1600G/MZM_1600G_L3000_GSSG_TRAIL_TypeE1_QY_v1_20260303/MZM_1600G_L3000_GSSG_TRAIL_TypeE1_QY_v1_20260303.yml b/mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composites/MZM_1600G/MZM_1600G_L3000_GSSG_TRAIL_TypeE1_QY_v1_20260303/MZM_1600G_L3000_GSSG_TRAIL_TypeE1_QY_v1_20260303.yml similarity index 100% rename from mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composite/MZM_1600G/MZM_1600G_L3000_GSSG_TRAIL_TypeE1_QY_v1_20260303/MZM_1600G_L3000_GSSG_TRAIL_TypeE1_QY_v1_20260303.yml rename to mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composites/MZM_1600G/MZM_1600G_L3000_GSSG_TRAIL_TypeE1_QY_v1_20260303/MZM_1600G_L3000_GSSG_TRAIL_TypeE1_QY_v1_20260303.yml diff --git a/mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composite/MZM_1600G/MZM_1600G_L3000_GSSG_TRAIL_TypeE2_QY_v1_20260303/MZM_1600G_L3000_GSSG_TRAIL_TypeE2_QY_v1_20260303.yml b/mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composites/MZM_1600G/MZM_1600G_L3000_GSSG_TRAIL_TypeE2_QY_v1_20260303/MZM_1600G_L3000_GSSG_TRAIL_TypeE2_QY_v1_20260303.yml similarity index 100% rename from mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composite/MZM_1600G/MZM_1600G_L3000_GSSG_TRAIL_TypeE2_QY_v1_20260303/MZM_1600G_L3000_GSSG_TRAIL_TypeE2_QY_v1_20260303.yml rename to mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composites/MZM_1600G/MZM_1600G_L3000_GSSG_TRAIL_TypeE2_QY_v1_20260303/MZM_1600G_L3000_GSSG_TRAIL_TypeE2_QY_v1_20260303.yml diff --git a/mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composite/MZM_1600G/MZM_1600G_L3000_GSSG_TRAIL_TypeE3_QY_v1_20260303/MZM_1600G_L3000_GSSG_TRAIL_TypeE3_QY_v1_20260303.yml b/mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composites/MZM_1600G/MZM_1600G_L3000_GSSG_TRAIL_TypeE3_QY_v1_20260303/MZM_1600G_L3000_GSSG_TRAIL_TypeE3_QY_v1_20260303.yml similarity index 100% rename from mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composite/MZM_1600G/MZM_1600G_L3000_GSSG_TRAIL_TypeE3_QY_v1_20260303/MZM_1600G_L3000_GSSG_TRAIL_TypeE3_QY_v1_20260303.yml rename to mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composites/MZM_1600G/MZM_1600G_L3000_GSSG_TRAIL_TypeE3_QY_v1_20260303/MZM_1600G_L3000_GSSG_TRAIL_TypeE3_QY_v1_20260303.yml diff --git a/mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composite/MZM_1600G/MZM_1600G_L3000_GSSG_TRAIL_TypeE4_QY_v1_20260303/MZM_1600G_L3000_GSSG_TRAIL_TypeE4_QY_v1_20260303.yml b/mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composites/MZM_1600G/MZM_1600G_L3000_GSSG_TRAIL_TypeE4_QY_v1_20260303/MZM_1600G_L3000_GSSG_TRAIL_TypeE4_QY_v1_20260303.yml similarity index 100% rename from mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composite/MZM_1600G/MZM_1600G_L3000_GSSG_TRAIL_TypeE4_QY_v1_20260303/MZM_1600G_L3000_GSSG_TRAIL_TypeE4_QY_v1_20260303.yml rename to mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composites/MZM_1600G/MZM_1600G_L3000_GSSG_TRAIL_TypeE4_QY_v1_20260303/MZM_1600G_L3000_GSSG_TRAIL_TypeE4_QY_v1_20260303.yml diff --git a/mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composite/MZM_1600G/MZM_1600G_L3000_GSSG_TRAIL_TypeG1_QY_v1_20260303/MZM_1600G_L3000_GSSG_TRAIL_TypeG1_QY_v1_20260303.yml b/mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composites/MZM_1600G/MZM_1600G_L3000_GSSG_TRAIL_TypeG1_QY_v1_20260303/MZM_1600G_L3000_GSSG_TRAIL_TypeG1_QY_v1_20260303.yml similarity index 100% rename from mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composite/MZM_1600G/MZM_1600G_L3000_GSSG_TRAIL_TypeG1_QY_v1_20260303/MZM_1600G_L3000_GSSG_TRAIL_TypeG1_QY_v1_20260303.yml rename to mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composites/MZM_1600G/MZM_1600G_L3000_GSSG_TRAIL_TypeG1_QY_v1_20260303/MZM_1600G_L3000_GSSG_TRAIL_TypeG1_QY_v1_20260303.yml diff --git a/mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composite/MZM_1600G/MZM_1600G_L3000_GSSG_TRAIL_TypeG2_QY_v1_20260303/MZM_1600G_L3000_GSSG_TRAIL_TypeG2_QY_v1_20260303.yml b/mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composites/MZM_1600G/MZM_1600G_L3000_GSSG_TRAIL_TypeG2_QY_v1_20260303/MZM_1600G_L3000_GSSG_TRAIL_TypeG2_QY_v1_20260303.yml similarity index 100% rename from mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composite/MZM_1600G/MZM_1600G_L3000_GSSG_TRAIL_TypeG2_QY_v1_20260303/MZM_1600G_L3000_GSSG_TRAIL_TypeG2_QY_v1_20260303.yml rename to mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composites/MZM_1600G/MZM_1600G_L3000_GSSG_TRAIL_TypeG2_QY_v1_20260303/MZM_1600G_L3000_GSSG_TRAIL_TypeG2_QY_v1_20260303.yml diff --git a/mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composite/MZM_1600G/MZM_1600G_L3000_GSSG_TRAIL_TypeG3_QY_v1_20260303/MZM_1600G_L3000_GSSG_TRAIL_TypeG3_QY_v1_20260303.yml b/mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composites/MZM_1600G/MZM_1600G_L3000_GSSG_TRAIL_TypeG3_QY_v1_20260303/MZM_1600G_L3000_GSSG_TRAIL_TypeG3_QY_v1_20260303.yml similarity index 100% rename from mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composite/MZM_1600G/MZM_1600G_L3000_GSSG_TRAIL_TypeG3_QY_v1_20260303/MZM_1600G_L3000_GSSG_TRAIL_TypeG3_QY_v1_20260303.yml rename to mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composites/MZM_1600G/MZM_1600G_L3000_GSSG_TRAIL_TypeG3_QY_v1_20260303/MZM_1600G_L3000_GSSG_TRAIL_TypeG3_QY_v1_20260303.yml diff --git a/mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composite/MZM_1600G/MZM_1600G_L3000_GSSG_TRAIL_TypeG4_QY_v1_20260303/MZM_1600G_L3000_GSSG_TRAIL_TypeG4_QY_v1_20260303.yml b/mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composites/MZM_1600G/MZM_1600G_L3000_GSSG_TRAIL_TypeG4_QY_v1_20260303/MZM_1600G_L3000_GSSG_TRAIL_TypeG4_QY_v1_20260303.yml similarity index 100% rename from mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composite/MZM_1600G/MZM_1600G_L3000_GSSG_TRAIL_TypeG4_QY_v1_20260303/MZM_1600G_L3000_GSSG_TRAIL_TypeG4_QY_v1_20260303.yml rename to mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composites/MZM_1600G/MZM_1600G_L3000_GSSG_TRAIL_TypeG4_QY_v1_20260303/MZM_1600G_L3000_GSSG_TRAIL_TypeG4_QY_v1_20260303.yml diff --git a/mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composite/MZM_1600G/MZM_1600G_L3000_GSSG_TRAIL_TypeZ1_QY_v1_20260303/MZM_1600G_L3000_GSSG_TRAIL_TypeZ1_QY_v1_20260303.yml b/mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composites/MZM_1600G/MZM_1600G_L3000_GSSG_TRAIL_TypeZ1_QY_v1_20260303/MZM_1600G_L3000_GSSG_TRAIL_TypeZ1_QY_v1_20260303.yml similarity index 100% rename from mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composite/MZM_1600G/MZM_1600G_L3000_GSSG_TRAIL_TypeZ1_QY_v1_20260303/MZM_1600G_L3000_GSSG_TRAIL_TypeZ1_QY_v1_20260303.yml rename to mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composites/MZM_1600G/MZM_1600G_L3000_GSSG_TRAIL_TypeZ1_QY_v1_20260303/MZM_1600G_L3000_GSSG_TRAIL_TypeZ1_QY_v1_20260303.yml diff --git a/mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composite/MZM_1600G/MZM_1600G_L3000_GSSG_TRAIL_TypeZ2_QY_v1_20260303/MZM_1600G_L3000_GSSG_TRAIL_TypeZ2_QY_v1_20260303.yml b/mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composites/MZM_1600G/MZM_1600G_L3000_GSSG_TRAIL_TypeZ2_QY_v1_20260303/MZM_1600G_L3000_GSSG_TRAIL_TypeZ2_QY_v1_20260303.yml similarity index 100% rename from mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composite/MZM_1600G/MZM_1600G_L3000_GSSG_TRAIL_TypeZ2_QY_v1_20260303/MZM_1600G_L3000_GSSG_TRAIL_TypeZ2_QY_v1_20260303.yml rename to mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composites/MZM_1600G/MZM_1600G_L3000_GSSG_TRAIL_TypeZ2_QY_v1_20260303/MZM_1600G_L3000_GSSG_TRAIL_TypeZ2_QY_v1_20260303.yml diff --git a/mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composite/MZM_1600G/MZM_1600G_L3000_GSSG_TRAIL_TypeZ3_QY_v1_20260303/MZM_1600G_L3000_GSSG_TRAIL_TypeZ3_QY_v1_20260303.yml b/mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composites/MZM_1600G/MZM_1600G_L3000_GSSG_TRAIL_TypeZ3_QY_v1_20260303/MZM_1600G_L3000_GSSG_TRAIL_TypeZ3_QY_v1_20260303.yml similarity index 100% rename from mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composite/MZM_1600G/MZM_1600G_L3000_GSSG_TRAIL_TypeZ3_QY_v1_20260303/MZM_1600G_L3000_GSSG_TRAIL_TypeZ3_QY_v1_20260303.yml rename to mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composites/MZM_1600G/MZM_1600G_L3000_GSSG_TRAIL_TypeZ3_QY_v1_20260303/MZM_1600G_L3000_GSSG_TRAIL_TypeZ3_QY_v1_20260303.yml diff --git a/mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composite/MZM_1600G/MZM_1600G_L3000_GSSG_TRAIL_TypeZ4_QY_v1_20260303/MZM_1600G_L3000_GSSG_TRAIL_TypeZ4_QY_v1_20260303.yml b/mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composites/MZM_1600G/MZM_1600G_L3000_GSSG_TRAIL_TypeZ4_QY_v1_20260303/MZM_1600G_L3000_GSSG_TRAIL_TypeZ4_QY_v1_20260303.yml similarity index 100% rename from mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composite/MZM_1600G/MZM_1600G_L3000_GSSG_TRAIL_TypeZ4_QY_v1_20260303/MZM_1600G_L3000_GSSG_TRAIL_TypeZ4_QY_v1_20260303.yml rename to mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composites/MZM_1600G/MZM_1600G_L3000_GSSG_TRAIL_TypeZ4_QY_v1_20260303/MZM_1600G_L3000_GSSG_TRAIL_TypeZ4_QY_v1_20260303.yml diff --git a/mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composite/MZM_800G/MZM_800G_L3000_GSSG_TRAIL_TypeR1_QY_v1_20260303/MZM_800G_L3000_GSSG_TRAIL_TypeR1_QY_v1_20260303.yml b/mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composites/MZM_800G/MZM_800G_L3000_GSSG_TRAIL_TypeR1_QY_v1_20260303/MZM_800G_L3000_GSSG_TRAIL_TypeR1_QY_v1_20260303.yml similarity index 100% rename from mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composite/MZM_800G/MZM_800G_L3000_GSSG_TRAIL_TypeR1_QY_v1_20260303/MZM_800G_L3000_GSSG_TRAIL_TypeR1_QY_v1_20260303.yml rename to mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composites/MZM_800G/MZM_800G_L3000_GSSG_TRAIL_TypeR1_QY_v1_20260303/MZM_800G_L3000_GSSG_TRAIL_TypeR1_QY_v1_20260303.yml diff --git a/mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composite/MZM_800G/MZM_800G_L3000_GSSG_TRAIL_TypeR2_QY_v1_20260303/MZM_800G_L3000_GSSG_TRAIL_TypeR2_QY_v1_20260303.yml b/mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composites/MZM_800G/MZM_800G_L3000_GSSG_TRAIL_TypeR2_QY_v1_20260303/MZM_800G_L3000_GSSG_TRAIL_TypeR2_QY_v1_20260303.yml similarity index 100% rename from mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composite/MZM_800G/MZM_800G_L3000_GSSG_TRAIL_TypeR2_QY_v1_20260303/MZM_800G_L3000_GSSG_TRAIL_TypeR2_QY_v1_20260303.yml rename to mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composites/MZM_800G/MZM_800G_L3000_GSSG_TRAIL_TypeR2_QY_v1_20260303/MZM_800G_L3000_GSSG_TRAIL_TypeR2_QY_v1_20260303.yml diff --git a/mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composite/MZM_800G/MZM_800G_L3000_GSSG_TRAIL_TypeT1_QY_v1_20260303/MZM_800G_L3000_GSSG_TRAIL_TypeT1_QY_v1_20260303.yml b/mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composites/MZM_800G/MZM_800G_L3000_GSSG_TRAIL_TypeT1_QY_v1_20260303/MZM_800G_L3000_GSSG_TRAIL_TypeT1_QY_v1_20260303.yml similarity index 100% rename from mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composite/MZM_800G/MZM_800G_L3000_GSSG_TRAIL_TypeT1_QY_v1_20260303/MZM_800G_L3000_GSSG_TRAIL_TypeT1_QY_v1_20260303.yml rename to mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composites/MZM_800G/MZM_800G_L3000_GSSG_TRAIL_TypeT1_QY_v1_20260303/MZM_800G_L3000_GSSG_TRAIL_TypeT1_QY_v1_20260303.yml diff --git a/mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composite/MZM_800G/MZM_800G_L3000_GSSG_TRAIL_TypeT2_QY_v1_20260303/MZM_800G_L3000_GSSG_TRAIL_TypeT2_QY_v1_20260303.yml b/mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composites/MZM_800G/MZM_800G_L3000_GSSG_TRAIL_TypeT2_QY_v1_20260303/MZM_800G_L3000_GSSG_TRAIL_TypeT2_QY_v1_20260303.yml similarity index 100% rename from mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composite/MZM_800G/MZM_800G_L3000_GSSG_TRAIL_TypeT2_QY_v1_20260303/MZM_800G_L3000_GSSG_TRAIL_TypeT2_QY_v1_20260303.yml rename to mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composites/MZM_800G/MZM_800G_L3000_GSSG_TRAIL_TypeT2_QY_v1_20260303/MZM_800G_L3000_GSSG_TRAIL_TypeT2_QY_v1_20260303.yml diff --git a/mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composite/MZM_800G/MZM_800G_L3000_GSSG_TRAIL_TypeT3_QY_v1_20260303/MZM_800G_L3000_GSSG_TRAIL_TypeT3_QY_v1_20260303.yml b/mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composites/MZM_800G/MZM_800G_L3000_GSSG_TRAIL_TypeT3_QY_v1_20260303/MZM_800G_L3000_GSSG_TRAIL_TypeT3_QY_v1_20260303.yml similarity index 100% rename from mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composite/MZM_800G/MZM_800G_L3000_GSSG_TRAIL_TypeT3_QY_v1_20260303/MZM_800G_L3000_GSSG_TRAIL_TypeT3_QY_v1_20260303.yml rename to mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composites/MZM_800G/MZM_800G_L3000_GSSG_TRAIL_TypeT3_QY_v1_20260303/MZM_800G_L3000_GSSG_TRAIL_TypeT3_QY_v1_20260303.yml diff --git a/mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composite/MZM_800G/MZM_800G_L3000_GSSG_TRAIL_TypeT4_QY_v1_20260303/MZM_800G_L3000_GSSG_TRAIL_TypeT4_QY_v1_20260303.yml b/mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composites/MZM_800G/MZM_800G_L3000_GSSG_TRAIL_TypeT4_QY_v1_20260303/MZM_800G_L3000_GSSG_TRAIL_TypeT4_QY_v1_20260303.yml similarity index 100% rename from mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composite/MZM_800G/MZM_800G_L3000_GSSG_TRAIL_TypeT4_QY_v1_20260303/MZM_800G_L3000_GSSG_TRAIL_TypeT4_QY_v1_20260303.yml rename to mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composites/MZM_800G/MZM_800G_L3000_GSSG_TRAIL_TypeT4_QY_v1_20260303/MZM_800G_L3000_GSSG_TRAIL_TypeT4_QY_v1_20260303.yml diff --git a/mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composite/MZM_800G/MZM_800G_L3000_GSSG_TRAIL_TypeT5_QY_v1_20260303/MZM_800G_L3000_GSSG_TRAIL_TypeT5_QY_v1_20260303.yml b/mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composites/MZM_800G/MZM_800G_L3000_GSSG_TRAIL_TypeT5_QY_v1_20260303/MZM_800G_L3000_GSSG_TRAIL_TypeT5_QY_v1_20260303.yml similarity index 100% rename from mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composite/MZM_800G/MZM_800G_L3000_GSSG_TRAIL_TypeT5_QY_v1_20260303/MZM_800G_L3000_GSSG_TRAIL_TypeT5_QY_v1_20260303.yml rename to mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composites/MZM_800G/MZM_800G_L3000_GSSG_TRAIL_TypeT5_QY_v1_20260303/MZM_800G_L3000_GSSG_TRAIL_TypeT5_QY_v1_20260303.yml diff --git a/mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composite/MZM_800G/MZM_800G_L3000_GSSG_TRAIL_TypeV1_QY_v1_20260303/MZM_800G_L3000_GSSG_TRAIL_TypeV1_QY_v1_20260303.yml b/mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composites/MZM_800G/MZM_800G_L3000_GSSG_TRAIL_TypeV1_QY_v1_20260303/MZM_800G_L3000_GSSG_TRAIL_TypeV1_QY_v1_20260303.yml similarity index 100% rename from mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composite/MZM_800G/MZM_800G_L3000_GSSG_TRAIL_TypeV1_QY_v1_20260303/MZM_800G_L3000_GSSG_TRAIL_TypeV1_QY_v1_20260303.yml rename to mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composites/MZM_800G/MZM_800G_L3000_GSSG_TRAIL_TypeV1_QY_v1_20260303/MZM_800G_L3000_GSSG_TRAIL_TypeV1_QY_v1_20260303.yml diff --git a/mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composite/MZM_800G/MZM_800G_L3000_GSSG_TRAIL_TypeV2_QY_v1_20260303/MZM_800G_L3000_GSSG_TRAIL_TypeV2_QY_v1_20260303.yml b/mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composites/MZM_800G/MZM_800G_L3000_GSSG_TRAIL_TypeV2_QY_v1_20260303/MZM_800G_L3000_GSSG_TRAIL_TypeV2_QY_v1_20260303.yml similarity index 100% rename from mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composite/MZM_800G/MZM_800G_L3000_GSSG_TRAIL_TypeV2_QY_v1_20260303/MZM_800G_L3000_GSSG_TRAIL_TypeV2_QY_v1_20260303.yml rename to mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composites/MZM_800G/MZM_800G_L3000_GSSG_TRAIL_TypeV2_QY_v1_20260303/MZM_800G_L3000_GSSG_TRAIL_TypeV2_QY_v1_20260303.yml diff --git a/mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composite/MZM_800G/MZM_800G_L3000_GSSG_TRAIL_TypeW1_QY_v1_20260303/MZM_800G_L3000_GSSG_TRAIL_TypeW1_QY_v1_20260303.yml b/mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composites/MZM_800G/MZM_800G_L3000_GSSG_TRAIL_TypeW1_QY_v1_20260303/MZM_800G_L3000_GSSG_TRAIL_TypeW1_QY_v1_20260303.yml similarity index 100% rename from mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composite/MZM_800G/MZM_800G_L3000_GSSG_TRAIL_TypeW1_QY_v1_20260303/MZM_800G_L3000_GSSG_TRAIL_TypeW1_QY_v1_20260303.yml rename to mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composites/MZM_800G/MZM_800G_L3000_GSSG_TRAIL_TypeW1_QY_v1_20260303/MZM_800G_L3000_GSSG_TRAIL_TypeW1_QY_v1_20260303.yml diff --git a/mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composite/MZM_800G/MZM_800G_L3000_GSSG_TRAIL_TypeW2_QY_v1_20260303/MZM_800G_L3000_GSSG_TRAIL_TypeW2_QY_v1_20260303.yml b/mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composites/MZM_800G/MZM_800G_L3000_GSSG_TRAIL_TypeW2_QY_v1_20260303/MZM_800G_L3000_GSSG_TRAIL_TypeW2_QY_v1_20260303.yml similarity index 100% rename from mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composite/MZM_800G/MZM_800G_L3000_GSSG_TRAIL_TypeW2_QY_v1_20260303/MZM_800G_L3000_GSSG_TRAIL_TypeW2_QY_v1_20260303.yml rename to mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composites/MZM_800G/MZM_800G_L3000_GSSG_TRAIL_TypeW2_QY_v1_20260303/MZM_800G_L3000_GSSG_TRAIL_TypeW2_QY_v1_20260303.yml diff --git a/mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composite/MZM_800G/MZM_800G_L3000_GSSG_TRAIL_TypeW3_QY_v1_20260303/MZM_800G_L3000_GSSG_TRAIL_TypeW3_QY_v1_20260303.yml b/mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composites/MZM_800G/MZM_800G_L3000_GSSG_TRAIL_TypeW3_QY_v1_20260303/MZM_800G_L3000_GSSG_TRAIL_TypeW3_QY_v1_20260303.yml similarity index 100% rename from mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composite/MZM_800G/MZM_800G_L3000_GSSG_TRAIL_TypeW3_QY_v1_20260303/MZM_800G_L3000_GSSG_TRAIL_TypeW3_QY_v1_20260303.yml rename to mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composites/MZM_800G/MZM_800G_L3000_GSSG_TRAIL_TypeW3_QY_v1_20260303/MZM_800G_L3000_GSSG_TRAIL_TypeW3_QY_v1_20260303.yml diff --git a/mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composite/MZM_800G/MZM_800G_L3000_GSSG_TRAIL_TypeW4_QY_v1_20260303/MZM_800G_L3000_GSSG_TRAIL_TypeW4_QY_v1_20260303.yml b/mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composites/MZM_800G/MZM_800G_L3000_GSSG_TRAIL_TypeW4_QY_v1_20260303/MZM_800G_L3000_GSSG_TRAIL_TypeW4_QY_v1_20260303.yml similarity index 100% rename from mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composite/MZM_800G/MZM_800G_L3000_GSSG_TRAIL_TypeW4_QY_v1_20260303/MZM_800G_L3000_GSSG_TRAIL_TypeW4_QY_v1_20260303.yml rename to mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composites/MZM_800G/MZM_800G_L3000_GSSG_TRAIL_TypeW4_QY_v1_20260303/MZM_800G_L3000_GSSG_TRAIL_TypeW4_QY_v1_20260303.yml diff --git a/mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composite/MZM_800G/MZM_800G_L3000_GSSG_TRAIL_TypeX1_QY_v1_20260303/MZM_800G_L3000_GSSG_TRAIL_TypeX1_QY_v1_20260303.yml b/mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composites/MZM_800G/MZM_800G_L3000_GSSG_TRAIL_TypeX1_QY_v1_20260303/MZM_800G_L3000_GSSG_TRAIL_TypeX1_QY_v1_20260303.yml similarity index 100% rename from mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composite/MZM_800G/MZM_800G_L3000_GSSG_TRAIL_TypeX1_QY_v1_20260303/MZM_800G_L3000_GSSG_TRAIL_TypeX1_QY_v1_20260303.yml rename to mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composites/MZM_800G/MZM_800G_L3000_GSSG_TRAIL_TypeX1_QY_v1_20260303/MZM_800G_L3000_GSSG_TRAIL_TypeX1_QY_v1_20260303.yml diff --git a/mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composite/MZM_800G/MZM_800G_L3000_GSSG_TRAIL_TypeX2_QY_v1_20260303/MZM_800G_L3000_GSSG_TRAIL_TypeX2_QY_v1_20260303.yml b/mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composites/MZM_800G/MZM_800G_L3000_GSSG_TRAIL_TypeX2_QY_v1_20260303/MZM_800G_L3000_GSSG_TRAIL_TypeX2_QY_v1_20260303.yml similarity index 100% rename from mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composite/MZM_800G/MZM_800G_L3000_GSSG_TRAIL_TypeX2_QY_v1_20260303/MZM_800G_L3000_GSSG_TRAIL_TypeX2_QY_v1_20260303.yml rename to mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composites/MZM_800G/MZM_800G_L3000_GSSG_TRAIL_TypeX2_QY_v1_20260303/MZM_800G_L3000_GSSG_TRAIL_TypeX2_QY_v1_20260303.yml diff --git a/mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composite/MZM_800G/MZM_800G_L3000_GSSG_TRAIL_TypeX3_QY_v1_20260303/MZM_800G_L3000_GSSG_TRAIL_TypeX3_QY_v1_20260303.yml b/mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composites/MZM_800G/MZM_800G_L3000_GSSG_TRAIL_TypeX3_QY_v1_20260303/MZM_800G_L3000_GSSG_TRAIL_TypeX3_QY_v1_20260303.yml similarity index 100% rename from mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composite/MZM_800G/MZM_800G_L3000_GSSG_TRAIL_TypeX3_QY_v1_20260303/MZM_800G_L3000_GSSG_TRAIL_TypeX3_QY_v1_20260303.yml rename to mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composites/MZM_800G/MZM_800G_L3000_GSSG_TRAIL_TypeX3_QY_v1_20260303/MZM_800G_L3000_GSSG_TRAIL_TypeX3_QY_v1_20260303.yml diff --git a/mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composite/MZM_800G/MZM_800G_L3000_GSSG_TRAIL_TypeX4_QY_v1_20260303/MZM_800G_L3000_GSSG_TRAIL_TypeX4_QY_v1_20260303.yml b/mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composites/MZM_800G/MZM_800G_L3000_GSSG_TRAIL_TypeX4_QY_v1_20260303/MZM_800G_L3000_GSSG_TRAIL_TypeX4_QY_v1_20260303.yml similarity index 100% rename from mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composite/MZM_800G/MZM_800G_L3000_GSSG_TRAIL_TypeX4_QY_v1_20260303/MZM_800G_L3000_GSSG_TRAIL_TypeX4_QY_v1_20260303.yml rename to mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composites/MZM_800G/MZM_800G_L3000_GSSG_TRAIL_TypeX4_QY_v1_20260303/MZM_800G_L3000_GSSG_TRAIL_TypeX4_QY_v1_20260303.yml diff --git a/mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composite/MZM_800G/MZM_800G_L3000_GSSG_TRAIL_TypeX5_QY_v1_20260303/MZM_800G_L3000_GSSG_TRAIL_TypeX5_QY_v1_20260303.yml b/mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composites/MZM_800G/MZM_800G_L3000_GSSG_TRAIL_TypeX5_QY_v1_20260303/MZM_800G_L3000_GSSG_TRAIL_TypeX5_QY_v1_20260303.yml similarity index 100% rename from mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composite/MZM_800G/MZM_800G_L3000_GSSG_TRAIL_TypeX5_QY_v1_20260303/MZM_800G_L3000_GSSG_TRAIL_TypeX5_QY_v1_20260303.yml rename to mxpic/PDKs/Silterra/EMO1_2ML_CU_Al_RDL/composites/MZM_800G/MZM_800G_L3000_GSSG_TRAIL_TypeX5_QY_v1_20260303/MZM_800G_L3000_GSSG_TRAIL_TypeX5_QY_v1_20260303.yml diff --git a/mxpic/PDKs/Silterra/directories.yaml b/mxpic/PDKs/Silterra/directories.yaml index 34dbbf3..2c5bcae 100644 --- a/mxpic/PDKs/Silterra/directories.yaml +++ b/mxpic/PDKs/Silterra/directories.yaml @@ -1,6 +1,6 @@ level: 4 root: - - PDKs: + - EMO1_2ML_CU_Al_RDL: - primitives: - directional_couplers - edge_couplers @@ -12,5 +12,6 @@ root: - electronics: - resistors - capacitors + - indectors - others: - logos