From e959f114491f8ccbf46f56ad4749bb538c8ae40f Mon Sep 17 00:00:00 2001 From: Mehdi Saligane <48068702+msaligane@users.noreply.github.com> Date: Fri, 23 Jan 2026 12:05:22 -0500 Subject: [PATCH] Revert "docs: Add comments explaining MIMCAP Option A/B redundancy" --- src/glayout/pdk/gf180_mapped/gf180_mapped.py | 5 ----- src/glayout/pdk/gf180_mapped/gf180mcu.drc | 12 ------------ src/glayout/pdk/gf180_mapped/gf180mcu_drc.lydrc | 11 ++++------- src/glayout/primitives/mimcap.py | 6 ------ 4 files changed, 4 insertions(+), 30 deletions(-) diff --git a/src/glayout/pdk/gf180_mapped/gf180_mapped.py b/src/glayout/pdk/gf180_mapped/gf180_mapped.py index f9ee6674..e9091cf1 100644 --- a/src/glayout/pdk/gf180_mapped/gf180_mapped.py +++ b/src/glayout/pdk/gf180_mapped/gf180_mapped.py @@ -84,11 +84,6 @@ "active_diff_label": "comp_label", } -# NOTE: MIMCAP configuration - there are two options (A and B) with redundant DRC rules -# Option A: Uses metal2-metal3 (original implementation) -# Option B: Uses metal4-metal5 (added in PR#54 continuation for gf180mcuD) -# Both options have duplicate DRC rules but different metal layers -# Default behavior varies by process variant - see gf180mcu_drc.lydrc for variant-specific settings # Add valid BJT sizes gf180_valid_bjt_sizes = { diff --git a/src/glayout/pdk/gf180_mapped/gf180mcu.drc b/src/glayout/pdk/gf180_mapped/gf180mcu.drc index 741997cd..38542b8e 100644 --- a/src/glayout/pdk/gf180_mapped/gf180mcu.drc +++ b/src/glayout/pdk/gf180_mapped/gf180mcu.drc @@ -3462,11 +3462,6 @@ hres_poly.forget #================================================ #------------MIM CAPACITOR OPTION A ------------- #================================================ -# NOTE: This section implements MIM capacitor Option A (metal2-metal3 based) -# This was the original implementation before Option B was added -# Both options share similar DRC rules but use different metal layers -# Option A: Uses metal2 (bottom) + via2 + fusetop (top) -# Related to PR that changed mimcap from A to B - see Option B section below if MIM_OPTION == "A" logger.info("MIM Capacitor Option A section") @@ -3576,13 +3571,6 @@ mim11_large_metal2_violation.forget #================================================ #-------------MIM CAPACITOR OPTION B------------- #================================================ -# NOTE: This section implements MIM capacitor Option B (metal4-metal5 based) -# This was added as continuation of @LuighiV's PR#54 for gf180mcuD process -# Both Option A and B have redundant/duplicate DRC rules - they follow same pattern -# but use different metal layers: -# Option B: Uses topmin1_metal (metal4) + top_via (via4) + fusetop (top) -# Rules MIMTM.1-MIMTM.11 mirror MIM.1-MIM.11 but with different metal layers -# This creates redundancy but allows different process variants to use appropriate metal stack elsif MIM_OPTION == "B" logger.info("MIM Capacitor Option B section") diff --git a/src/glayout/pdk/gf180_mapped/gf180mcu_drc.lydrc b/src/glayout/pdk/gf180_mapped/gf180mcu_drc.lydrc index a4387e0b..11bfa2c7 100755 --- a/src/glayout/pdk/gf180_mapped/gf180mcu_drc.lydrc +++ b/src/glayout/pdk/gf180_mapped/gf180mcu_drc.lydrc @@ -65,25 +65,22 @@ drc_res = `#{cmd}` ## pass options to main.drc $run_mode = options["run_mode"] -# NOTE: MIMCAP option configuration for different gf180mcu variants -# Both Option A and B have redundant DRC rules but use different metal layers -# This creates duplication but allows process-specific metal stack usage if options["variant"] == "A" $metal_top = "30K" $metal_level = "3LM" - $mim_option = "A" # Uses metal2-metal3 + $mim_option = "A" elsif options["variant"] == "B" $metal_top = "11K" $metal_level = "4LM" - $mim_option = "B" # Uses metal3-metal4 + $mim_option = "B" elsif options["variant"] == "C" $metal_top = "9K" $metal_level = "5LM" - $mim_option = "B" # Uses metal4-metal5 + $mim_option = "B" elsif options["variant"] == "D" $metal_top = "11K" $metal_level = "5LM" - $mim_option = "B" # Uses metal4-metal5 (gf180mcuD - PR#54 continuation) + $mim_option = "B" end $topcell = options["top_cell_name"] diff --git a/src/glayout/primitives/mimcap.py b/src/glayout/primitives/mimcap.py index 7087660e..fa8f622b 100644 --- a/src/glayout/primitives/mimcap.py +++ b/src/glayout/primitives/mimcap.py @@ -15,12 +15,6 @@ def __get_mimcap_layerconstruction_info(pdk: MappedPDK) -> tuple[str,str]: """returns the glayer metal below and glayer metal above capmet args: pdk - - NOTE: This function determines metal layers based on PDK configuration. - For gf180mcu, there are two MIMCAP options (A and B) with redundant implementations: - - Option A: metal2-metal3 (original) - - Option B: metal4-metal5 (added in PR#54 continuation) - The actual metal layers used depend on the PDK's grules configuration. """ capmettop = pdk.layer_to_glayer(pdk.get_grule("capmet")["capmettop"]) capmetbottom = pdk.layer_to_glayer(pdk.get_grule("capmet")["capmetbottom"])