From c0eb7b9ef57516a655b6a4b5eb46d84db18671f2 Mon Sep 17 00:00:00 2001 From: AlexMantilla1 Date: Thu, 17 Jul 2025 18:38:38 +0200 Subject: [PATCH] PR for the blocks/composite/folded_cascode opamp. This folder contains all files to sim and generate the layout. However the layout is done for bias and core circuits independtly, but not merged. We apologize, we know the code is messed up and be refactored in future versions. --- blocks/composite/folded_cascode/README.md | 2 + .../designs/gf180/deep_rename.sh | 178 + .../cace/error_amplifier_N_input.yaml | 291 ++ .../cace/scripts/run_project_lvs.tcl | 14 + .../cace/templates/ac.sch | 162 + .../cace/templates/cmrr.sch | 118 + .../cace/templates/op.sch | 95 + .../cace/templates/os.sch | 102 + .../cace/templates/xschemrc | 10 + .../gds/make_pcells_static.py | 21 + .../xschem/error_amplifier_N_input.sch | 38 + .../xschem/error_amplifier_N_input.sym | 37 + .../xschem/error_amplifier_bias_N_input.sch | 1 + .../xschem/error_amplifier_bias_N_input.sym | 1 + .../xschem/error_amplifier_core_N_input.sch | 1 + .../xschem/error_amplifier_core_N_input.sym | 1 + .../xschem/folded_cascode_ac.sch | 296 ++ .../xschem/folded_cascode_cmrr.sch | 292 ++ .../xschem/folded_cascode_icmr.sch | 175 + .../xschem/folded_cascode_op.sch | 258 ++ .../xschem/folded_cascode_os.sch | 282 ++ .../xschem/folded_cascode_psrr.sch | 168 + .../xschem/folded_cascode_sr.sch | 190 + .../error_amplifier_N_input/xschem/xschemrc | 7 + .../cace/error_amplifier_bias_N_input.yaml | 241 ++ .../cace/scripts/run_project_lvs.tcl | 14 + .../templates/folded_cascode_bias_OP_CACE.sch | 71 + .../cace/templates/xschemrc | 10 + .../gds/make_pcells_static.py | 21 + .../xschem/error_amplifier_bias_N_input.sch | 437 +++ .../xschem/error_amplifier_bias_N_input.sym | 37 + .../xschem/error_amplifier_bias_OP.sch | 72 + .../xschem/xschemrc | 7 + .../cace/error_amplifier_core_N_input.yaml | 287 ++ .../cace/folded_cascode_core.yaml | 207 + .../cace/scripts/run_project_lvs.tcl | 14 + .../cace/templates/ac.sch | 226 ++ .../cace/templates/dc.sch | 107 + .../cace/templates/xschemrc | 10 + .../gds/folded_cascode_core.gds | Bin 0 -> 1709062 bytes .../gds/folded_cascode_core_pcells.gds | Bin 0 -> 1709066 bytes .../gds/make_pcells_static.py | 21 + .../xschem/error_amplifier_core_N_input.sch | 421 +++ .../xschem/error_amplifier_core_N_input.sym | 44 + .../xschem/error_amplifier_core_Out_Swing.sch | 171 + .../error_amplifier_core_Out_Swing_v2.sch | 382 ++ .../xschem/error_amplifier_core_ac.sch | 310 ++ .../xschem/error_amplifier_core_ac_alex.sch | 382 ++ .../xschem/error_amplifier_core_cmrr.sch | 301 ++ .../xschem/error_amplifier_core_op.sch | 272 ++ .../xschem/error_amplifier_core_os.sch | 288 ++ .../xschem/xschemrc | 7 + .../folded_cascode/glayout/Biasing.py | 487 +++ .../glayout/OTA_Building_blocks.py | 358 ++ .../glayout/custom_functions.py | 3343 +++++++++++++++++ .../folded_cascode/glayout/primitives.py | 719 ++++ 56 files changed, 12007 insertions(+) create mode 100644 blocks/composite/folded_cascode/README.md create mode 100755 blocks/composite/folded_cascode/designs/gf180/deep_rename.sh create mode 100644 blocks/composite/folded_cascode/designs/gf180/error_amplifier_N_input/cace/error_amplifier_N_input.yaml create mode 100644 blocks/composite/folded_cascode/designs/gf180/error_amplifier_N_input/cace/scripts/run_project_lvs.tcl create mode 100644 blocks/composite/folded_cascode/designs/gf180/error_amplifier_N_input/cace/templates/ac.sch create mode 100644 blocks/composite/folded_cascode/designs/gf180/error_amplifier_N_input/cace/templates/cmrr.sch create mode 100644 blocks/composite/folded_cascode/designs/gf180/error_amplifier_N_input/cace/templates/op.sch create mode 100644 blocks/composite/folded_cascode/designs/gf180/error_amplifier_N_input/cace/templates/os.sch create mode 100644 blocks/composite/folded_cascode/designs/gf180/error_amplifier_N_input/cace/templates/xschemrc create mode 100644 blocks/composite/folded_cascode/designs/gf180/error_amplifier_N_input/gds/make_pcells_static.py create mode 100644 blocks/composite/folded_cascode/designs/gf180/error_amplifier_N_input/xschem/error_amplifier_N_input.sch create mode 100644 blocks/composite/folded_cascode/designs/gf180/error_amplifier_N_input/xschem/error_amplifier_N_input.sym create mode 120000 blocks/composite/folded_cascode/designs/gf180/error_amplifier_N_input/xschem/error_amplifier_bias_N_input.sch create mode 120000 blocks/composite/folded_cascode/designs/gf180/error_amplifier_N_input/xschem/error_amplifier_bias_N_input.sym create mode 120000 blocks/composite/folded_cascode/designs/gf180/error_amplifier_N_input/xschem/error_amplifier_core_N_input.sch create mode 120000 blocks/composite/folded_cascode/designs/gf180/error_amplifier_N_input/xschem/error_amplifier_core_N_input.sym create mode 100644 blocks/composite/folded_cascode/designs/gf180/error_amplifier_N_input/xschem/folded_cascode_ac.sch create mode 100644 blocks/composite/folded_cascode/designs/gf180/error_amplifier_N_input/xschem/folded_cascode_cmrr.sch create mode 100644 blocks/composite/folded_cascode/designs/gf180/error_amplifier_N_input/xschem/folded_cascode_icmr.sch create mode 100644 blocks/composite/folded_cascode/designs/gf180/error_amplifier_N_input/xschem/folded_cascode_op.sch create mode 100644 blocks/composite/folded_cascode/designs/gf180/error_amplifier_N_input/xschem/folded_cascode_os.sch create mode 100644 blocks/composite/folded_cascode/designs/gf180/error_amplifier_N_input/xschem/folded_cascode_psrr.sch create mode 100644 blocks/composite/folded_cascode/designs/gf180/error_amplifier_N_input/xschem/folded_cascode_sr.sch create mode 100644 blocks/composite/folded_cascode/designs/gf180/error_amplifier_N_input/xschem/xschemrc create mode 100644 blocks/composite/folded_cascode/designs/gf180/error_amplifier_bias_N_input/cace/error_amplifier_bias_N_input.yaml create mode 100644 blocks/composite/folded_cascode/designs/gf180/error_amplifier_bias_N_input/cace/scripts/run_project_lvs.tcl create mode 100644 blocks/composite/folded_cascode/designs/gf180/error_amplifier_bias_N_input/cace/templates/folded_cascode_bias_OP_CACE.sch create mode 100644 blocks/composite/folded_cascode/designs/gf180/error_amplifier_bias_N_input/cace/templates/xschemrc create mode 100644 blocks/composite/folded_cascode/designs/gf180/error_amplifier_bias_N_input/gds/make_pcells_static.py create mode 100644 blocks/composite/folded_cascode/designs/gf180/error_amplifier_bias_N_input/xschem/error_amplifier_bias_N_input.sch create mode 100644 blocks/composite/folded_cascode/designs/gf180/error_amplifier_bias_N_input/xschem/error_amplifier_bias_N_input.sym create mode 100644 blocks/composite/folded_cascode/designs/gf180/error_amplifier_bias_N_input/xschem/error_amplifier_bias_OP.sch create mode 100644 blocks/composite/folded_cascode/designs/gf180/error_amplifier_bias_N_input/xschem/xschemrc create mode 100644 blocks/composite/folded_cascode/designs/gf180/error_amplifier_core_N_input/cace/error_amplifier_core_N_input.yaml create mode 100644 blocks/composite/folded_cascode/designs/gf180/error_amplifier_core_N_input/cace/folded_cascode_core.yaml create mode 100644 blocks/composite/folded_cascode/designs/gf180/error_amplifier_core_N_input/cace/scripts/run_project_lvs.tcl create mode 100644 blocks/composite/folded_cascode/designs/gf180/error_amplifier_core_N_input/cace/templates/ac.sch create mode 100644 blocks/composite/folded_cascode/designs/gf180/error_amplifier_core_N_input/cace/templates/dc.sch create mode 100644 blocks/composite/folded_cascode/designs/gf180/error_amplifier_core_N_input/cace/templates/xschemrc create mode 100644 blocks/composite/folded_cascode/designs/gf180/error_amplifier_core_N_input/gds/folded_cascode_core.gds create mode 100644 blocks/composite/folded_cascode/designs/gf180/error_amplifier_core_N_input/gds/folded_cascode_core_pcells.gds create mode 100644 blocks/composite/folded_cascode/designs/gf180/error_amplifier_core_N_input/gds/make_pcells_static.py create mode 100644 blocks/composite/folded_cascode/designs/gf180/error_amplifier_core_N_input/xschem/error_amplifier_core_N_input.sch create mode 100644 blocks/composite/folded_cascode/designs/gf180/error_amplifier_core_N_input/xschem/error_amplifier_core_N_input.sym create mode 100644 blocks/composite/folded_cascode/designs/gf180/error_amplifier_core_N_input/xschem/error_amplifier_core_Out_Swing.sch create mode 100644 blocks/composite/folded_cascode/designs/gf180/error_amplifier_core_N_input/xschem/error_amplifier_core_Out_Swing_v2.sch create mode 100644 blocks/composite/folded_cascode/designs/gf180/error_amplifier_core_N_input/xschem/error_amplifier_core_ac.sch create mode 100644 blocks/composite/folded_cascode/designs/gf180/error_amplifier_core_N_input/xschem/error_amplifier_core_ac_alex.sch create mode 100644 blocks/composite/folded_cascode/designs/gf180/error_amplifier_core_N_input/xschem/error_amplifier_core_cmrr.sch create mode 100644 blocks/composite/folded_cascode/designs/gf180/error_amplifier_core_N_input/xschem/error_amplifier_core_op.sch create mode 100644 blocks/composite/folded_cascode/designs/gf180/error_amplifier_core_N_input/xschem/error_amplifier_core_os.sch create mode 100644 blocks/composite/folded_cascode/designs/gf180/error_amplifier_core_N_input/xschem/xschemrc create mode 100644 blocks/composite/folded_cascode/glayout/Biasing.py create mode 100644 blocks/composite/folded_cascode/glayout/OTA_Building_blocks.py create mode 100644 blocks/composite/folded_cascode/glayout/custom_functions.py create mode 100644 blocks/composite/folded_cascode/glayout/primitives.py diff --git a/blocks/composite/folded_cascode/README.md b/blocks/composite/folded_cascode/README.md new file mode 100644 index 00000000..5bb3f874 --- /dev/null +++ b/blocks/composite/folded_cascode/README.md @@ -0,0 +1,2 @@ +# chipathon_2025_onchipTeam +This repo is to share advance on the Chipathon_2025 onchip team development. diff --git a/blocks/composite/folded_cascode/designs/gf180/deep_rename.sh b/blocks/composite/folded_cascode/designs/gf180/deep_rename.sh new file mode 100755 index 00000000..050acce3 --- /dev/null +++ b/blocks/composite/folded_cascode/designs/gf180/deep_rename.sh @@ -0,0 +1,178 @@ +#!/bin/bash + +# ============================================================================== +# Deep Rename Script +# +# Description: +# This script renames a top-level directory, recursively renames any files +# inside it that share the original directory's name, and then finds and +# replaces all occurrences of the original name within the content of all +# text files in the new directory. +# +# Usage: +# ./deep_rename.sh [--dry-run] +# +# Arguments: +# : The name of the folder you want to rename. +# : The new name for the folder and its related files/content. +# --dry-run (optional): If provided, the script will only print the actions +# it would take without executing them. +# +# Example: +# ./deep_rename.sh circuit_to_live circuit_to_die +# +# Example Dry Run: +# ./deep_rename.sh circuit_to_live circuit_to_die --dry-run +# +# ============================================================================== + +# --- Configuration and Argument Handling --- + +ORIGINAL_NAME="$1" +NEW_NAME="$2" +DRY_RUN_FLAG="$3" +DRY_RUN=false + +# Check if this is a dry run +if [[ "$DRY_RUN_FLAG" == "--dry-run" ]]; then + DRY_RUN=true + echo "[INFO] DRY RUN MODE ENABLED. No files or folders will be changed." +fi + +# --- Sanity Checks --- + +# Check if the correct number of arguments was provided +if [ -z "$ORIGINAL_NAME" ] || [ -z "$NEW_NAME" ]; then + echo "ERROR: Missing arguments." + echo "Usage: $0 [--dry-run]" + exit 1 +fi + +# Check if the original directory exists +if [ ! -d "$ORIGINAL_NAME" ]; then + echo "ERROR: The source directory '$ORIGINAL_NAME' does not exist." + exit 1 +fi + +# Check if a file or directory with the new name already exists +if [ -e "$NEW_NAME" ]; then + echo "ERROR: A file or directory named '$NEW_NAME' already exists in this location. Aborting." + exit 1 +fi + +# --- Main Logic --- + +echo "------------------------------------------------------------------" +echo "Deep Rename Plan:" +echo " - Top-level folder: '$ORIGINAL_NAME' -> '$NEW_NAME'" +echo " - Files inside matching '$ORIGINAL_NAME.*' will be renamed to '$NEW_NAME.*'" +echo " - Text content inside all files will be changed from '$ORIGINAL_NAME' to '$NEW_NAME'" +echo "------------------------------------------------------------------" + +# Confirmation prompt before proceeding (unless it's a dry run) +if [ "$DRY_RUN" = false ]; then + read -p "Are you sure you want to proceed? (yes/no): " confirmation + if [[ "$confirmation" != "yes" ]]; then + echo "Aborted by user." + exit 0 + fi +fi + +# --- Step 1: Find all matching files and prepare for rename --- +# We do this *before* renaming the top-level folder to make finding the files easier. + +echo "[INFO] Searching for files to rename..." +# Use find to locate all files matching the pattern and store them in an array +# -print0 and read -d '' handle filenames with spaces or special characters +files_to_rename=() +while IFS= read -r -d '' file; do + files_to_rename+=("$file") +done < <(find "$ORIGINAL_NAME" -type f -name "$ORIGINAL_NAME.*" -print0) + +# --- Step 2: Rename the top-level folder --- + +echo "[ACTION] Renaming top-level folder..." +if [ "$DRY_RUN" = true ]; then + echo " [DRY RUN] Would rename folder '$ORIGINAL_NAME' to '$NEW_NAME'." +else + mv "$ORIGINAL_NAME" "$NEW_NAME" + if [ $? -ne 0 ]; then + echo "ERROR: Failed to rename the top-level folder. Aborting." + exit 1 + fi + echo " - Success: Renamed '$ORIGINAL_NAME' to '$NEW_NAME'." +fi + +# --- Step 3: Recursively rename the found files --- + +echo "[ACTION] Renaming internal files..." +if [ ${#files_to_rename[@]} -eq 0 ]; then + echo " - No files matching '$ORIGINAL_NAME.*' were found inside." +else + for old_path in "${files_to_rename[@]}"; do + # Construct the new path by replacing the top-level folder name in the path string + # This is more robust than just replacing the filename part + new_path=$(echo "$old_path" | sed "s#^$ORIGINAL_NAME/#$NEW_NAME/#" | sed "s/\/$ORIGINAL_NAME\./\/$NEW_NAME\./") + + if [ "$DRY_RUN" = true ]; then + # In dry run, the top-level folder wasn't actually renamed, so we simulate the new path + echo " [DRY RUN] Would rename file '$old_path' to '$new_path'." + else + # In a real run, the path has already partially changed due to the top-level folder rename. + # We need to reference the path inside the *newly renamed* folder. + path_in_new_folder=$(echo "$old_path" | sed "s#^$ORIGINAL_NAME/#$NEW_NAME/#") + + # The final destination path is the same 'new_path' calculated earlier + mv "$path_in_new_folder" "$new_path" + if [ $? -eq 0 ]; then + echo " - Success: Renamed '$path_in_new_folder' to '$new_path'." + else + echo " - ERROR: Failed to rename '$path_in_new_folder'." + fi + fi + done +fi + +# --- Step 4: Find and Replace content in files --- + +echo "[ACTION] Replacing content in all text files..." +# The directory to search in depends on whether this is a dry run or not +search_dir="$NEW_NAME" +if [ "$DRY_RUN" = true ]; then + search_dir="$ORIGINAL_NAME" +fi + +# Find all text files containing the original name string +# grep -rlI: recursive, list-filenames, ignore-binary-files +# -Z and -print0 handle all filenames safely +files_to_modify_content=() +while IFS= read -r -d '' file; do + files_to_modify_content+=("$file") +done < <(grep -rlIZ "$ORIGINAL_NAME" "$search_dir" 2>/dev/null) + +if [ ${#files_to_modify_content[@]} -eq 0 ]; then + echo " - No text files with content matching '$ORIGINAL_NAME' were found." +else + for file_path in "${files_to_modify_content[@]}"; do + if [ "$DRY_RUN" = true ]; then + # Count occurrences for the dry run report + count=$(grep -o "$ORIGINAL_NAME" "$file_path" | wc -l) + echo " [DRY RUN] Would replace $count occurrence(s) of '$ORIGINAL_NAME' in file '$file_path'." + else + # Use sed for in-place replacement. Using # as a delimiter is safer + # if names contain slashes. + sed -i "s#$ORIGINAL_NAME#$NEW_NAME#g" "$file_path" + if [ $? -eq 0 ]; then + echo " - Success: Replaced content in '$file_path'." + else + echo " - ERROR: Failed to replace content in '$file_path'." + fi + fi + done +fi + +echo "------------------------------------------------------------------" +echo "[INFO] Script finished." +echo "------------------------------------------------------------------" + +exit 0 diff --git a/blocks/composite/folded_cascode/designs/gf180/error_amplifier_N_input/cace/error_amplifier_N_input.yaml b/blocks/composite/folded_cascode/designs/gf180/error_amplifier_N_input/cace/error_amplifier_N_input.yaml new file mode 100644 index 00000000..17e31bcb --- /dev/null +++ b/blocks/composite/folded_cascode/designs/gf180/error_amplifier_N_input/cace/error_amplifier_N_input.yaml @@ -0,0 +1,291 @@ +--- +#-------------------------------------------------------------- +# CACE circuit characterization file +#-------------------------------------------------------------- + +name: error_amplifier_N_input +description: Folded cascode full +PDK: gf180mcuD + +cace_format: 5.2 + +authorship: + designer: Ramon Sarmiento + company: OnChip UIS + creation_date: July 11th, 2025 + license: Apache 2.0 + +paths: + root: .. + schematic: xschem + layout: gds + netlist: netlist + documentation: docs + +pins: + VDD: + description: Positive analog power supply + type: power + direction: inout + Vmin: 1.7 + Vmax: 1.9 + VSS: + description: Analog ground + type: ground + direction: inout + Vout: + description: Output voltage + type: signal + direction: inout + Vcomn: + description: Compensation pin + type: signal + direction: inout + V+: + description: Non inverting input + type: signal + direction: input + V-: + description: Inverting input + type: signal + direction: input + +default_conditions: + vdd: + description: Analog power supply voltage + display: Vdd + unit: V + typical: 1.8 + vref: + description: Voltage reference from BandGAP + display: VrefBG + unit: V + typical: 1.2 + Vy: + description: Fix voltage Mode Voltage + display: Vy + unit: V + typical: -0.3 + Vsweep: + description: Voltage to run the dc for Output swing + display: Vsweep + unit: V + typical: 0 + corner: + description: Process corner + display: Corner + typical: typical + temperature: + description: Ambient temperature + display: Temp + unit: °C + typical: 27 + +parameters: + dc_params: + display: DC Params + spec: + Ivdd: + display: Ivdd + description: Currente from power + unit: uA + minimum: + value: any + typical: + value: any + maximum: + value: any + Vout: + display: Vout + description: Output voltage + unit: V + minimum: + value: any + typical: + value: any + maximum: + value: any + tool: + ngspice: + template: op.sch + format: ascii + suffix: .data + variables: [Vout, Ivdd] + + ac_params: + display: STB Params + spec: + # print A0 UGB PM GM BW + A0: + display: Av + description: Opamp's DC Gain + unit: dB + minimum: + value: 70 + typical: + value: any + maximum: + value: any + UGB: + display: UGB + description: Unitary Gain Bandwidth + unit: MHz + minimum: + value: 10 + typical: + value: any + maximum: + value: any + PM: + display: PM + description: Opamp's Phase Margin + unit: ° + minimum: + value: 45 + typical: + value: any + maximum: + value: any + GM: + display: GM + description: Opamp's Gain Margin + unit: ° + minimum: + value: any + typical: + value: any + maximum: + value: any + BW: + display: BW + description: Opamp's Bandwidth + unit: kHz + minimum: + value: any + typical: + value: any + maximum: + value: any + tool: + ngspice: + template: ac.sch + format: ascii + suffix: .data + variables: [A0, UGB, PM, GM, BW] + + os_params: + display: Output Swing Params + spec: + Output_swing: + display: Output_swing + description: Output voltage swing. + unit: V + minimum: + value: 1 + typical: + value: any + maximum: + value: any + tool: + ngspice: + template: os.sch + format: ascii + suffix: .data + variables: [Output_swing] + + cmrr_params: + display: Common Mode Params (Common mode gain CMRR = Acm/Av) + spec: + Acm: + display: Acm + description: Common mode gain. + unit: dB + minimum: + value: any + typical: + value: any + maximum: + value: any + tool: + ngspice: + template: cmrr.sch + format: ascii + suffix: .data + variables: [Acm] + + magic_area: + spec: + area: + display: Area + description: Total circuit layout area + unit: µm² + maximum: + value: any + width: + display: Width + description: Total circuit layout width + unit: µm + maximum: + value: any + height: + display: Height + description: Total circuit layout height + unit: µm + maximum: + value: any + tool: magic_area + + magic_drc: + description: Magic DRC + display: Magic DRC + spec: + drc_errors: + maximum: + value: 0 + tool: + magic_drc: + gds_flatten: true + + netgen_lvs: + description: Netgen LVS + display: Netgen LVS + spec: + lvs_errors: + maximum: + value: 0 + tool: + netgen_lvs: + script: run_project_lvs.tcl + + klayout_drc_feol: + description: KLayout DRC feol + display: KLayout DRC feol + spec: + drc_errors: + maximum: + value: 0 + tool: + klayout_drc: + args: ["-rd", "feol=true"] + + klayout_drc_beol: + description: KLayout DRC beol + display: KLayout DRC beol + spec: + drc_errors: + maximum: + value: 0 + tool: + klayout_drc: + args: ["-rd", "beol=true"] + + klayout_drc_full: + description: KLayout DRC full + display: KLayout DRC full + spec: + drc_errors: + maximum: + value: 0 + tool: + klayout_drc: + args: ["-rd", "feol=true", "-rd", "beol=true", "-rd", "offgrid=true"] diff --git a/blocks/composite/folded_cascode/designs/gf180/error_amplifier_N_input/cace/scripts/run_project_lvs.tcl b/blocks/composite/folded_cascode/designs/gf180/error_amplifier_N_input/cace/scripts/run_project_lvs.tcl new file mode 100644 index 00000000..5c55246e --- /dev/null +++ b/blocks/composite/folded_cascode/designs/gf180/error_amplifier_N_input/cace/scripts/run_project_lvs.tcl @@ -0,0 +1,14 @@ +# NOTE: PDK_ROOT, PDK and CACE_ROOT are set in the local environment by CACE +# +# This is an example script to drive LVS; because this is a simple +# example, there is no specific benefit of using this instead of the +# default handling in CACE. + +set PDK_ROOT $::env(PDK_ROOT) +set PDK $::env(PDK) +set CACE_ROOT $::env(CACE_ROOT) + +set circuit1 [readnet spice $CACE_ROOT/netlist/layout/error_amplifier_N_input.spice] +set circuit2 [readnet spice $CACE_ROOT/netlist/schematic/error_amplifier_N_input.spice] + +lvs "$circuit1 error_amplifier_N_input" "$circuit2 error_amplifier_N_input" $PDK_ROOT/$PDK/libs.tech/netgen/${PDK}_setup.tcl error_amplifier_N_input.out -json diff --git a/blocks/composite/folded_cascode/designs/gf180/error_amplifier_N_input/cace/templates/ac.sch b/blocks/composite/folded_cascode/designs/gf180/error_amplifier_N_input/cace/templates/ac.sch new file mode 100644 index 00000000..a2c379fa --- /dev/null +++ b/blocks/composite/folded_cascode/designs/gf180/error_amplifier_N_input/cace/templates/ac.sch @@ -0,0 +1,162 @@ +v {xschem version=3.4.7 file_version=1.2} +G {} +K {} +V {} +S {} +E {} +N 720 -340 780 -340 {lab=Vout} +N 440 -50 520 -50 { +lab=Vx} +N 440 -100 440 -50 { +lab=Vx} +N 300 -50 340 -50 { +lab=#net1} +N 400 -50 440 -50 { +lab=Vx} +N 260 -50 300 -50 { +lab=#net1} +N 850 -340 850 -130 { +lab=Vout} +N 930 -210 930 -130 { +lab=GND} +N 930 -340 930 -280 { +lab=Vout} +N 780 -340 930 -340 { +lab=Vout} +N 440 -200 440 -160 { +lab=Vn} +N 930 -280 930 -270 { +lab=Vout} +N 300 -130 300 -50 {lab=#net1} +N 850 -130 850 -50 {lab=Vout} +N 300 -310 300 -130 {lab=#net1} +N 440 -370 520 -370 {lab=Vn} +N 440 -290 440 -200 {lab=Vn} +N 420 -290 440 -290 {lab=Vn} +N 420 -330 420 -290 {lab=Vn} +N 420 -330 440 -330 {lab=Vn} +N 440 -370 440 -330 {lab=Vn} +N 930 -130 930 -110 {lab=GND} +N 520 -50 540 -50 {lab=Vx} +N 800 -20 850 -20 {lab=Vout} +N 850 -50 850 -20 {lab=Vout} +N 760 30 760 60 {lab=GND} +N 800 20 840 20 {lab=GND} +N 840 20 840 50 {lab=GND} +N 760 50 840 50 {lab=GND} +N 760 -50 760 -30 {lab=Vz} +N 710 -50 760 -50 {lab=Vz} +N 600 -50 650 -50 {lab=Vy} +N 520 -370 550 -370 {lab=Vn} +N 300 -320 550 -320 {lab=#net1} +N 300 -320 300 -310 {lab=#net1} +N -80 -20 -80 20 { +lab=GND} +N 0 -20 0 20 { +lab=GND} +N 100 -20 100 20 { +lab=GND} +N 0 -90 0 -80 {lab=#net2} +N 0 -170 0 -150 {lab=VDD} +N -80 -110 -80 -80 {lab=VSS} +N 100 -110 100 -80 {lab=Vref} +N 660 -280 680 -280 {lab=#net3} +C {devices/launcher.sym} -20 -270 0 0 {name=h15 +descr="Annotate OP" +tclcommand="set show_hidden_texts 1; xschem annotate_op" +} +C {devices/launcher.sym} -20 -340 0 0 {name=h3 +descr="Netlist & sim" +tclcommand="xschem netlist; xschem simulate"} +C {vsource.sym} 440 -130 0 0 {name=V5 value="AC 1" savecurrent=false} +C {capa.sym} 370 -50 1 0 {name=C2 +m=1 +value=10G +footprint=1206 +device="ceramic capacitor"} +C {ind.sym} 570 -50 1 0 {name=L4 +m=1 +value=10G +footprint=1206 +device=inductor} +C {capa.sym} 930 -240 0 0 {name=C1 +m=1 +value=5p +footprint=1206 +device="ceramic capacitor"} +C {lab_pin.sym} 930 -340 0 1 {name=p2 sig_type=std_logic lab=Vout} +C {devices/gnd.sym} 930 -110 0 0 {name=l9 lab=GND} +C {devices/lab_wire.sym} 480 -50 0 0 {name=p1 sig_type=std_logic lab=Vx} +C {devices/lab_wire.sym} 460 -370 0 0 {name=p17 sig_type=std_logic lab=Vn} +C {devices/vsource.sym} 680 -50 1 0 {name=V9 value=CACE\{Vy\}} +C {vcvs.sym} 760 0 0 1 {name=E1 value=1} +C {devices/gnd.sym} 760 60 0 0 {name=l11 lab=GND} +C {devices/lab_wire.sym} 620 -50 0 0 {name=p18 sig_type=std_logic lab=Vy} +C {devices/lab_wire.sym} 760 -50 0 0 {name=p19 sig_type=std_logic lab=Vz} +C {devices/code_shown.sym} 80 -670 0 0 {name=SETUP +simulator=ngspice +only_toplevel=false +value=" +.lib CACE\{PDK_ROOT\}/CACE\{PDK\}/libs.tech/ngspice/sm141064.ngspice CACE\{corner\} + +.include CACE\{PDK_ROOT\}/CACE\{PDK\}/libs.tech/ngspice/design.ngspice +.include CACE\{DUT_path\} + +.temp CACE\{temperature\} + +.option SEED=CACE[CACE\{seed=12345\} + CACE\{iterations=0\}] + +* Flag unsafe operating conditions (exceeds models' specified limits) +.option warn=1 +"} +C {code.sym} 900 -610 0 0 {name=AC only_toplevel=true value=" + + + *remzerovec + *write error_amplifier_core_P_input_ac.raw + *set appendwrite + + +.control +save all + +*DC simulation +op +* run ac simulation +ac dec 20 1 100e7 + + +* measure parameters +let vout_mag = db(abs(v(Vout))) +*let vout_phase = cph(v(Vout)) * (180/pi) +let vout_phase = cph(v(Vout)) * (57.295779513) +let gm = (-1)*db(abs(v(Vout))) + +meas ac A0 find vout_mag at=1 +meas ac UGB when vout_mag=0 fall=1 +meas ac PM find vout_phase when vout_mag=0 +meas ac GM find gm when vout_phase=0 + +let A0_p1 = A0 - 3 +meas ac BW when vout_mag=A0_p1 + +print A0 UGB PM GM BW +echo $&A0 $&UGB $&PM $&GM $&BW > CACE\{simpath\}/CACE\{filename\}_CACE\{N\}.data +.endc +"} +C {error_amplifier_N_input.sym} 640 -340 0 0 {name=x1} +C {devices/vsource.sym} -80 -50 0 0 {name=V0 value=0 savecurrent=false} +C {devices/gnd.sym} -80 20 0 0 {name=l13 lab=GND} +C {devices/vsource.sym} 0 -50 0 0 {name=V10 value=CACE\{vdd\} savecurrent=false} +C {devices/gnd.sym} 0 20 0 0 {name=l14 lab=GND} +C {devices/vsource.sym} 100 -50 0 0 {name=V11 value=CACE\{vref\} savecurrent=false} +C {devices/gnd.sym} 100 20 0 0 {name=l15 lab=GND} +C {lab_pin.sym} 100 -110 2 1 {name=p22 sig_type=std_logic lab=Vref} +C {lab_pin.sym} 0 -170 2 1 {name=p23 sig_type=std_logic lab=VDD} +C {lab_pin.sym} -80 -110 2 1 {name=p24 sig_type=std_logic lab=VSS} +C {ammeter.sym} 0 -120 2 0 {name=vdd_i savecurrent=true spice_ignore=0} +C {lab_pin.sym} 620 -260 2 1 {name=p3 sig_type=std_logic lab=Vref} +C {lab_pin.sym} 620 -240 2 1 {name=p4 sig_type=std_logic lab=VDD} +C {lab_pin.sym} 620 -220 2 1 {name=p12 sig_type=std_logic lab=VSS} +C {noconn.sym} 680 -280 2 0 {name=l1} +C {lab_pin.sym} 260 -50 2 1 {name=p5 sig_type=std_logic lab=Vref} diff --git a/blocks/composite/folded_cascode/designs/gf180/error_amplifier_N_input/cace/templates/cmrr.sch b/blocks/composite/folded_cascode/designs/gf180/error_amplifier_N_input/cace/templates/cmrr.sch new file mode 100644 index 00000000..451b8b47 --- /dev/null +++ b/blocks/composite/folded_cascode/designs/gf180/error_amplifier_N_input/cace/templates/cmrr.sch @@ -0,0 +1,118 @@ +v {xschem version=3.4.7 file_version=1.2} +G {} +K {} +V {} +S {} +E {} +N 960 -240 960 -180 { +lab=GND} +N 870 -350 960 -350 { +lab=Vout} +N 960 -350 960 -300 { +lab=Vout} +N 570 -380 670 -380 { +lab=V-} +N 80 -110 80 -100 {lab=GND} +N 80 -200 80 -170 {lab=VDD} +N 190 -110 190 -100 {lab=GND} +N 190 -200 190 -170 {lab=VSS} +N 910 -350 910 -90 {lab=Vout} +N 800 -90 910 -90 {lab=Vout} +N 570 -320 570 -90 {lab=V-} +N 270 -340 270 -300 {lab=V+} +N 570 -90 740 -90 {lab=V-} +N 570 -380 570 -320 {lab=V-} +N 620 -320 670 -320 {lab=V+} +N 670 -380 690 -380 {lab=V-} +N 670 -330 670 -320 {lab=V+} +N 670 -330 690 -330 {lab=V+} +N 270 -110 270 -100 {lab=GND} +N 270 -200 270 -170 {lab=Vref} +N 270 -240 270 -200 {lab=Vref} +C {vsource.sym} 270 -270 0 0 {name=V5 value="AC 1" savecurrent=false} +C {capa.sym} 620 -350 0 0 {name=C3 +m=1 +value=10G +footprint=1206 +device="ceramic capacitor"} +C {ind.sym} 770 -90 1 0 {name=L2 +m=1 +value=10G +footprint=1206 +device=inductor} +C {devices/noconn.sym} 800 -290 0 1 {name=l3} +C {devices/lab_wire.sym} 760 -230 0 0 {name=p12 sig_type=std_logic lab=VSS} +C {devices/lab_wire.sym} 760 -250 0 0 {name=p13 sig_type=std_logic lab=VDD} +C {devices/capa.sym} 960 -270 0 0 {name=C4 +m=1 +value=5p +footprint=1206 +device="ceramic capacitor"} +C {devices/lab_wire.sym} 960 -350 0 0 {name=p15 sig_type=std_logic lab=Vout} +C {devices/gnd.sym} 960 -180 0 0 {name=l8 lab=GND} +C {devices/vsource.sym} 80 -140 0 0 {name=V8 value=CACE\{vdd\}} +C {devices/gnd.sym} 80 -100 0 0 {name=l12 lab=GND} +C {devices/lab_wire.sym} 80 -200 0 0 {name=p19 sig_type=std_logic lab=VDD} +C {devices/vsource.sym} 190 -140 0 0 {name=V9 value=0} +C {devices/gnd.sym} 190 -100 0 0 {name=l13 lab=GND} +C {devices/lab_wire.sym} 190 -200 0 0 {name=p20 sig_type=std_logic lab=VSS} +C {devices/lab_wire.sym} 570 -380 0 0 {name=p3 sig_type=std_logic lab=V-} +C {devices/lab_wire.sym} 270 -340 0 0 {name=p4 sig_type=std_logic lab=V+} +C {devices/launcher.sym} 120 -480 0 0 {name=h1 +descr="Save & Netlist & sim" +tclcommand="xschem save; xschem netlist; xschem simulate"} +C {launcher.sym} 120 -410 0 0 {name=h2 +descr="Annotate OP" +tclcommand="set show_hidden_texts 1; xschem annotate_op"} +C {devices/lab_wire.sym} 620 -320 2 0 {name=p21 sig_type=std_logic lab=V+} +C {error_amplifier_N_input.sym} 780 -350 0 0 {name=x1} +C {devices/lab_wire.sym} 760 -270 0 0 {name=p1 sig_type=std_logic lab=Vref} +C {devices/vsource.sym} 270 -140 0 0 {name=V1 value=CACE\{vref\}} +C {devices/gnd.sym} 270 -100 0 0 {name=l1 lab=GND +value=\{Vref\}} +C {devices/lab_wire.sym} 270 -200 0 0 {name=p2 sig_type=std_logic lab=Vref +value=\{Vref\}} +C {devices/code_shown.sym} 110 -780 0 0 {name=SETUP +simulator=ngspice +only_toplevel=false +value=" +.lib CACE\{PDK_ROOT\}/CACE\{PDK\}/libs.tech/ngspice/sm141064.ngspice CACE\{corner\} + +.include CACE\{PDK_ROOT\}/CACE\{PDK\}/libs.tech/ngspice/design.ngspice +.include CACE\{DUT_path\} + +.temp CACE\{temperature\} + +.option SEED=CACE[CACE\{seed=12345\} + CACE\{iterations=0\}] + +* Flag unsafe operating conditions (exceeds models' specified limits) +.option warn=1 +"} +C {code.sym} 820 -530 0 0 {name=CMRR only_toplevel=true value=" + + +.control +save all + +** OP simulation +op + +** run ac simulation +ac dec 20 1 100e6 + +setplot ac1 + +* measure parameters +let vout_mag = db(abs(v(Vout))) +let vout_phase = cph(v(Vout)) * 180/pi + +meas ac Acm find vout_mag at=1 + +*plot vout_mag vout_phase + +print Acm +echo $&Acm > CACE\{simpath\}/CACE\{filename\}_CACE\{N\}.data + + +.endc +"} diff --git a/blocks/composite/folded_cascode/designs/gf180/error_amplifier_N_input/cace/templates/op.sch b/blocks/composite/folded_cascode/designs/gf180/error_amplifier_N_input/cace/templates/op.sch new file mode 100644 index 00000000..6303c549 --- /dev/null +++ b/blocks/composite/folded_cascode/designs/gf180/error_amplifier_N_input/cace/templates/op.sch @@ -0,0 +1,95 @@ +v {xschem version=3.4.7 file_version=1.2} +G {} +K {} +V {} +S {} +E {} +N 390 -260 400 -260 {lab=Vout} +N 400 -130 400 -50 { +lab=VSS} +N 400 -260 400 -190 { +lab=Vout} +N 130 -240 160 -240 {lab=Vref} +N 130 -290 160 -290 {lab=Vn} +N 130 -340 130 -290 {lab=Vn} +N 400 -340 400 -260 {lab=Vout} +N -80 0 -80 40 { +lab=GND} +N 0 0 0 40 { +lab=GND} +N 100 0 100 40 { +lab=GND} +N 0 -70 0 -60 {lab=#net1} +N 0 -150 0 -130 {lab=VDD} +N -80 -90 -80 -60 {lab=VSS} +N 100 -90 100 -60 {lab=Vref} +N 340 -260 390 -260 {lab=Vout} +N 320 -470 370 -470 {lab=Vout} +N 280 -420 280 -390 {lab=GND} +N 320 -430 360 -430 {lab=GND} +N 360 -430 360 -400 {lab=GND} +N 280 -400 360 -400 {lab=GND} +N 280 -500 280 -480 {lab=Vz} +N 230 -500 280 -500 {lab=Vz} +N 400 -470 400 -340 {lab=Vout} +N 370 -470 400 -470 {lab=Vout} +N 130 -500 170 -500 {lab=Vn} +N 130 -500 130 -340 {lab=Vn} +C {devices/code_shown.sym} 490 -200 0 0 {name=SETUP +simulator=ngspice +only_toplevel=false +value=" +.lib CACE\{PDK_ROOT\}/CACE\{PDK\}/libs.tech/ngspice/sm141064.ngspice CACE\{corner\} + +.include CACE\{PDK_ROOT\}/CACE\{PDK\}/libs.tech/ngspice/design.ngspice +.include CACE\{DUT_path\} + +.temp CACE\{temperature\} + +.option SEED=CACE[CACE\{seed=12345\} + CACE\{iterations=0\}] + +* Flag unsafe operating conditions (exceeds models' specified limits) +.option warn=1 +"} +C {lab_pin.sym} 230 -180 2 1 {name=p7 sig_type=std_logic lab=Vref} +C {lab_pin.sym} 230 -160 2 1 {name=p8 sig_type=std_logic lab=VDD} +C {lab_pin.sym} 230 -140 2 1 {name=p9 sig_type=std_logic lab=VSS} +C {lab_pin.sym} 130 -240 2 1 {name=p10 sig_type=std_logic lab=Vref} +C {error_amplifier_N_input.sym} 250 -260 0 0 {name=x1} +C {capa.sym} 400 -160 0 0 {name=C1 +m=1 +value=5p +footprint=1206 +device="ceramic capacitor"} +C {lab_pin.sym} 400 -50 2 1 {name=p1 sig_type=std_logic lab=VSS} +C {noconn.sym} 270 -200 2 0 {name=l1} +C {lab_pin.sym} 400 -260 0 1 {name=p2 sig_type=std_logic lab=Vout} +C {devices/vsource.sym} -80 -30 0 0 {name=V0 value=0 savecurrent=false} +C {devices/gnd.sym} -80 40 0 0 {name=l4 lab=GND} +C {devices/vsource.sym} 0 -30 0 0 {name=V1 value=CACE\{vdd\} savecurrent=false} +C {devices/gnd.sym} 0 40 0 0 {name=l8 lab=GND} +C {devices/vsource.sym} 100 -30 0 0 {name=V3 value=CACE\{vref\} savecurrent=false} +C {devices/gnd.sym} 100 40 0 0 {name=l9 lab=GND} +C {lab_pin.sym} 100 -90 2 1 {name=p3 sig_type=std_logic lab=Vref} +C {lab_pin.sym} 0 -150 2 1 {name=p4 sig_type=std_logic lab=VDD} +C {lab_pin.sym} -80 -90 2 1 {name=p6 sig_type=std_logic lab=VSS} +C {ammeter.sym} 0 -100 2 0 {name=vdd_i savecurrent=true spice_ignore=0} +C {code.sym} -70 -340 0 0 {name=OP only_toplevel=true value=" +.control +save all + +*DC simulation +op + +let Vout = v(Vout) +let Ivdd = i(vdd_i) + +print Vout Ivdd +echo $&Vout $&Ivdd> CACE\{simpath\}/CACE\{filename\}_CACE\{N\}.data +.endc +"} +C {devices/vsource.sym} 200 -500 1 0 {name=V9 value=CACE\{Vy\}} +C {vcvs.sym} 280 -450 0 1 {name=E1 value=1} +C {devices/gnd.sym} 280 -390 0 0 {name=l11 lab=GND} +C {devices/lab_wire.sym} 280 -500 0 0 {name=p19 sig_type=std_logic lab=Vz} +C {lab_pin.sym} 130 -330 2 1 {name=p5 sig_type=std_logic lab=Vn} diff --git a/blocks/composite/folded_cascode/designs/gf180/error_amplifier_N_input/cace/templates/os.sch b/blocks/composite/folded_cascode/designs/gf180/error_amplifier_N_input/cace/templates/os.sch new file mode 100644 index 00000000..2981b178 --- /dev/null +++ b/blocks/composite/folded_cascode/designs/gf180/error_amplifier_N_input/cace/templates/os.sch @@ -0,0 +1,102 @@ +v {xschem version=3.4.7 file_version=1.2} +G {} +K {} +V {} +S {} +E {} +N 480 -70 480 -60 {lab=GND} +N 480 -160 480 -130 {lab=Vref} +N 160 -140 160 -130 {lab=GND} +N 160 -230 160 -200 {lab=VDD} +N 240 -140 240 -130 {lab=GND} +N 240 -230 240 -200 {lab=VSS} +N 870 -70 870 -10 { +lab=GND} +N 780 -180 870 -180 { +lab=Vout} +N 870 -180 870 -130 { +lab=Vout} +N 480 -210 580 -210 { +lab=Vn} +N 480 -280 480 -210 { +lab=Vn} +N 870 -280 870 -180 { +lab=Vout} +N 500 -160 600 -160 { +lab=Vref} +N 580 -210 600 -210 {lab=Vn} +N 480 -280 560 -280 {lab=Vn} +N 620 -280 710 -280 {lab=Vx} +N 770 -280 870 -280 {lab=Vout} +N 480 -160 500 -160 {lab=Vref} +C {devices/vsource.sym} 480 -100 0 0 {name=V1 value=CACE\{vref\}} +C {devices/gnd.sym} 480 -60 0 0 {name=l2 lab=GND} +C {devices/lab_wire.sym} 480 -160 0 0 {name=p1 sig_type=std_logic lab=Vref} +C {devices/noconn.sym} 710 -120 0 1 {name=l4} +C {devices/lab_wire.sym} 670 -60 0 0 {name=p7 sig_type=std_logic lab=VSS} +C {devices/lab_wire.sym} 670 -80 0 0 {name=p8 sig_type=std_logic lab=VDD} +C {devices/vsource.sym} 160 -170 0 0 {name=V8 value=CACE\{vdd\}} +C {devices/gnd.sym} 160 -130 0 0 {name=l5 lab=GND} +C {devices/lab_wire.sym} 160 -230 0 0 {name=p9 sig_type=std_logic lab=VDD} +C {devices/vsource.sym} 240 -170 0 0 {name=V5 value=0} +C {devices/gnd.sym} 240 -130 0 0 {name=l6 lab=GND} +C {devices/lab_wire.sym} 240 -230 0 0 {name=p10 sig_type=std_logic lab=VSS} +C {devices/capa.sym} 870 -100 0 0 {name=C1 +m=1 +value=5p +footprint=1206 +device="ceramic capacitor"} +C {devices/lab_wire.sym} 870 -180 0 0 {name=p12 sig_type=std_logic lab=Vout} +C {devices/gnd.sym} 870 -10 0 0 {name=l8 lab=GND} +C {devices/lab_wire.sym} 670 -100 0 0 {name=p4 sig_type=std_logic lab=Vref} +C {devices/vsource.sym} 740 -280 1 0 {name=Vsweep value=CACE\{Vsweep\}} +C {devices/vsource.sym} 590 -280 3 1 {name=V3 value=CACE\{vref\}} +C {error_amplifier_N_input.sym} 690 -180 0 0 {name=x1} +C {devices/code_shown.sym} -10 -600 0 0 {name=SETUP +simulator=ngspice +only_toplevel=false +value=" +.lib CACE\{PDK_ROOT\}/CACE\{PDK\}/libs.tech/ngspice/sm141064.ngspice CACE\{corner\} + +.include CACE\{PDK_ROOT\}/CACE\{PDK\}/libs.tech/ngspice/design.ngspice +.include CACE\{DUT_path\} + +.temp CACE\{temperature\} + +.option SEED=CACE[CACE\{seed=12345\} + CACE\{iterations=0\}] + +* Flag unsafe operating conditions (exceeds models' specified limits) +.option warn=1 +"} +C {code.sym} 770 -470 0 0 {name=OS only_toplevel=true value=" + + +.control +save all + +** OP simulation +op +** Output swing +dc Vsweep 0 1.8 0.01 + +setplot dc1 +let dvout = deriv(v(Vout)) + +meas dc limmin when dvout=0.98 rise=1 +meas dc limmax when dvout=0.98 fall=1 + +let Output_swing = limmax - limmin + +*print Output_swing +*plot dvout + +print Output_swing +echo $&Output_swing > CACE\{simpath\}/CACE\{filename\}_CACE\{N\}.data + + +.endc +"} +C {devices/lab_wire.sym} 480 -280 0 0 {name=p2 sig_type=std_logic lab=Vn +} +C {devices/lab_wire.sym} 670 -280 0 0 {name=p3 sig_type=std_logic lab=Vx +} diff --git a/blocks/composite/folded_cascode/designs/gf180/error_amplifier_N_input/cace/templates/xschemrc b/blocks/composite/folded_cascode/designs/gf180/error_amplifier_N_input/cace/templates/xschemrc new file mode 100644 index 00000000..83f6bd9f --- /dev/null +++ b/blocks/composite/folded_cascode/designs/gf180/error_amplifier_N_input/cace/templates/xschemrc @@ -0,0 +1,10 @@ +# Source the PDK xschemrc file +if {![info exists PDK]} { + source $env(PDK_ROOT)/$env(PDK)/libs.tech/xschem/xschemrc +} + +# Add current directory +append XSCHEM_LIBRARY_PATH :[file dirname [info script]] + +# Source project xschemrc +source [file dirname [info script]]/../../xschem/xschemrc diff --git a/blocks/composite/folded_cascode/designs/gf180/error_amplifier_N_input/gds/make_pcells_static.py b/blocks/composite/folded_cascode/designs/gf180/error_amplifier_N_input/gds/make_pcells_static.py new file mode 100644 index 00000000..f4b34f89 --- /dev/null +++ b/blocks/composite/folded_cascode/designs/gf180/error_amplifier_N_input/gds/make_pcells_static.py @@ -0,0 +1,21 @@ +import pya +import klayout.db as db + +ly = pya.Layout() +ly.read("folded_cascode_pcells.gds") + +""" +# collect the cells to convert: +insts_to_convert = [] +for inst in ly.top_cell().each_inst(): + if inst.is_pcell(): + insts_to_convert.append(inst) + +for inst in insts_to_convert: + inst.convert_to_static() +""" + +ctx = db.SaveLayoutOptions() +ctx.write_context_info = False + +ly.write("folded_cascode.gds", ctx) diff --git a/blocks/composite/folded_cascode/designs/gf180/error_amplifier_N_input/xschem/error_amplifier_N_input.sch b/blocks/composite/folded_cascode/designs/gf180/error_amplifier_N_input/xschem/error_amplifier_N_input.sch new file mode 100644 index 00000000..078b2508 --- /dev/null +++ b/blocks/composite/folded_cascode/designs/gf180/error_amplifier_N_input/xschem/error_amplifier_N_input.sch @@ -0,0 +1,38 @@ +v {xschem version=3.4.7 file_version=1.2} +G {} +K {} +V {} +S {} +E {} +N 0 80 50 80 { +lab=VbiasP2} +N 0 100 50 100 { +lab=VbiasN2} +N 0 120 50 120 { +lab=VbiasN1} +N 50 120 100 120 {lab=VbiasN1} +N 50 100 100 100 {lab=VbiasN2} +N 50 80 100 80 {lab=VbiasP2} +N 0 60 20 60 {lab=#net1} +C {devices/lab_wire.sym} -240 90 0 0 {name=p12 sig_type=std_logic lab=VDD} +C {devices/lab_wire.sym} -240 70 0 0 {name=p3 sig_type=std_logic lab=Vref} +C {devices/lab_wire.sym} -240 110 0 0 {name=p5 sig_type=std_logic lab=VSS} +C {devices/lab_wire.sym} 50 -100 0 0 {name=p6 sig_type=std_logic lab=V-} +C {devices/lab_wire.sym} 50 -40 0 0 {name=p7 sig_type=std_logic lab=V+} +C {devices/lab_wire.sym} 250 -70 0 1 {name=p8 sig_type=std_logic lab=Vout} +C {devices/lab_wire.sym} 100 20 0 0 {name=p4 sig_type=std_logic lab=VDD} +C {devices/lab_wire.sym} 100 40 0 0 {name=p1 sig_type=std_logic lab=VSS} +C {devices/lab_wire.sym} 100 60 0 0 {name=p2 sig_type=std_logic lab=Vcomn} +C {devices/ipin.sym} 400 -130 0 0 {name=p14 lab=V+} +C {devices/iopin.sym} 380 50 0 0 {name=p18 lab=Vout} +C {devices/ipin.sym} 400 -100 0 0 {name=p19 lab=V-} +C {devices/ipin.sym} 400 -70 0 0 {name=p9 lab=Vref} +C {devices/iopin.sym} 380 -40 0 0 {name=p15 lab=VDD} +C {devices/iopin.sym} 380 -10 0 0 {name=p10 lab=VSS} +C {devices/iopin.sym} 380 20 0 0 {name=p11 lab=Vcomn} +C {error_amplifier_core_N_input.sym} 150 -70 0 0 {name=x1} +C {error_amplifier_bias_N_input.sym} -120 90 0 0 {name=x2} +C {noconn.sym} 20 60 2 0 {name=l1} +C {devices/lab_wire.sym} 80 80 0 0 {name=p13 sig_type=std_logic lab=VbiasP2} +C {devices/lab_wire.sym} 80 100 0 0 {name=p16 sig_type=std_logic lab=VbiasN2} +C {devices/lab_wire.sym} 80 120 0 0 {name=p17 sig_type=std_logic lab=VbiasN1} diff --git a/blocks/composite/folded_cascode/designs/gf180/error_amplifier_N_input/xschem/error_amplifier_N_input.sym b/blocks/composite/folded_cascode/designs/gf180/error_amplifier_N_input/xschem/error_amplifier_N_input.sym new file mode 100644 index 00000000..15dfc62f --- /dev/null +++ b/blocks/composite/folded_cascode/designs/gf180/error_amplifier_N_input/xschem/error_amplifier_N_input.sym @@ -0,0 +1,37 @@ +v {xschem version=3.4.6RC file_version=1.2 +} +G {} +K {type=subcircuit +format="@name @pinlist @symname" +template="name=x1" +} +V {} +S {} +E {} +L 4 -90 -30 -70 -30 {} +L 4 -90 20 -70 20 {} +L 4 -20 80 0 80 {} +L 4 -70 40 70 0 {} +L 4 -70 -50 70 0 {} +L 4 0 20 0 120 {} +L 4 -70 -50 -70 40 {} +L 4 0 60 20 60 {} +L 7 70 0 90 0 {} +L 7 -20 100 0 100 {} +L 7 -20 120 0 120 {} +B 5 87.5 -2.5 92.5 2.5 {name=Vout dir=inout} +B 5 -92.5 17.5 -87.5 22.5 {name=V+ dir=in} +B 5 -92.5 -32.5 -87.5 -27.5 {name=V- dir=in} +B 5 -22.5 77.5 -17.5 82.5 {name=Vref dir=in} +B 5 -22.5 97.5 -17.5 102.5 {name=VDD dir=inout} +B 5 -22.5 117.5 -17.5 122.5 {name=VSS dir=inout} +B 5 17.5 57.5 22.5 62.5 {name=Vcomn dir=inout} +T {@symname} -71 -16 0 0 0.3 0.3 {} +T {@name} 15 -52 0 0 0.2 0.2 {} +T {Vout} 85 -14 0 1 0.2 0.2 {} +T {V+} -65 16 0 0 0.2 0.2 {} +T {V-} -65 -34 0 0 0.2 0.2 {} +T {Vref} 5 76 0 0 0.2 0.2 {} +T {VDD} 5 96 0 0 0.2 0.2 {} +T {VSS} 5 116 0 0 0.2 0.2 {} +T {Vcomn} -5 64 2 0 0.2 0.2 {} diff --git a/blocks/composite/folded_cascode/designs/gf180/error_amplifier_N_input/xschem/error_amplifier_bias_N_input.sch b/blocks/composite/folded_cascode/designs/gf180/error_amplifier_N_input/xschem/error_amplifier_bias_N_input.sch new file mode 120000 index 00000000..f46a4e59 --- /dev/null +++ b/blocks/composite/folded_cascode/designs/gf180/error_amplifier_N_input/xschem/error_amplifier_bias_N_input.sch @@ -0,0 +1 @@ +../../error_amplifier_bias_N_input/xschem/error_amplifier_bias_N_input.sch \ No newline at end of file diff --git a/blocks/composite/folded_cascode/designs/gf180/error_amplifier_N_input/xschem/error_amplifier_bias_N_input.sym b/blocks/composite/folded_cascode/designs/gf180/error_amplifier_N_input/xschem/error_amplifier_bias_N_input.sym new file mode 120000 index 00000000..f900e17b --- /dev/null +++ b/blocks/composite/folded_cascode/designs/gf180/error_amplifier_N_input/xschem/error_amplifier_bias_N_input.sym @@ -0,0 +1 @@ +../../error_amplifier_bias_N_input/xschem/error_amplifier_bias_N_input.sym \ No newline at end of file diff --git a/blocks/composite/folded_cascode/designs/gf180/error_amplifier_N_input/xschem/error_amplifier_core_N_input.sch b/blocks/composite/folded_cascode/designs/gf180/error_amplifier_N_input/xschem/error_amplifier_core_N_input.sch new file mode 120000 index 00000000..99400b50 --- /dev/null +++ b/blocks/composite/folded_cascode/designs/gf180/error_amplifier_N_input/xschem/error_amplifier_core_N_input.sch @@ -0,0 +1 @@ +../../error_amplifier_core_N_input/xschem/error_amplifier_core_N_input.sch \ No newline at end of file diff --git a/blocks/composite/folded_cascode/designs/gf180/error_amplifier_N_input/xschem/error_amplifier_core_N_input.sym b/blocks/composite/folded_cascode/designs/gf180/error_amplifier_N_input/xschem/error_amplifier_core_N_input.sym new file mode 120000 index 00000000..5f1e96af --- /dev/null +++ b/blocks/composite/folded_cascode/designs/gf180/error_amplifier_N_input/xschem/error_amplifier_core_N_input.sym @@ -0,0 +1 @@ +../../error_amplifier_core_N_input/xschem/error_amplifier_core_N_input.sym \ No newline at end of file diff --git a/blocks/composite/folded_cascode/designs/gf180/error_amplifier_N_input/xschem/folded_cascode_ac.sch b/blocks/composite/folded_cascode/designs/gf180/error_amplifier_N_input/xschem/folded_cascode_ac.sch new file mode 100644 index 00000000..497f7240 --- /dev/null +++ b/blocks/composite/folded_cascode/designs/gf180/error_amplifier_N_input/xschem/folded_cascode_ac.sch @@ -0,0 +1,296 @@ +v {xschem version=3.4.7 file_version=1.2} +G {} +K {} +V {} +S {} +E {} +N 1220 -240 1220 -180 { +lab=GND} +N 1130 -350 1220 -350 { +lab=Vout} +N 1220 -350 1220 -300 { +lab=Vout} +N 850 -380 950 -380 { +lab=V-} +N 290 -100 290 -90 {lab=GND} +N 290 -190 290 -160 {lab=Vin} +N 850 -330 950 -330 { +lab=Vin} +N 140 -100 140 -90 {lab=GND} +N 140 -190 140 -160 {lab=VDD} +N 220 -100 220 -90 {lab=GND} +N 220 -190 220 -160 {lab=VSS} +N 820 -100 1020 -100 {lab=#net1} +N 680 -330 850 -330 {lab=Vin} +N 680 -330 680 -100 {lab=Vin} +N 680 -100 760 -100 {lab=Vin} +N 850 -150 850 -100 {lab=#net1} +N 850 -250 850 -210 {lab=V-} +N 1080 -100 1170 -100 {lab=Vout} +N 1170 -350 1170 -100 {lab=Vout} +N 360 -100 360 -90 {lab=GND} +N 360 -190 360 -160 {lab=Vref} +C {vsource.sym} 850 -180 0 0 {name=V1 value="AC 1" savecurrent=false} +C {capa.sym} 790 -100 1 0 {name=C3 +m=1 +value=10G +footprint=1206 +device="ceramic capacitor"} +C {ind.sym} 1050 -100 1 0 {name=L2 +m=1 +value=10G +footprint=1206 +device=inductor} +C {devices/code_shown.sym} 80 -590 0 0 {name=MODELS only_toplevel=true +format="tcleval( @value )" +value=" +.include $::180MCU_MODELS/design.ngspice +.lib $::180MCU_MODELS/sm141064.ngspice typical +"} +C {devices/noconn.sym} 1060 -290 2 0 {name=l3} +C {devices/lab_wire.sym} 1020 -230 0 0 {name=p12 sig_type=std_logic lab=VSS} +C {devices/lab_wire.sym} 1020 -250 0 0 {name=p13 sig_type=std_logic lab=VDD} +C {devices/capa.sym} 1220 -270 0 0 {name=C4 +m=1 +value=5p +footprint=1206 +device="ceramic capacitor"} +C {devices/vsource.sym} 290 -130 0 0 {name=V6 value=\{Vin\}} +C {devices/gnd.sym} 290 -90 0 0 {name=l5 lab=GND} +C {devices/lab_wire.sym} 290 -190 0 0 {name=p14 sig_type=std_logic lab=Vin} +C {devices/lab_wire.sym} 1220 -350 0 0 {name=p15 sig_type=std_logic lab=Vout} +C {devices/gnd.sym} 1220 -180 0 0 {name=l8 lab=GND} +C {devices/code_shown.sym} 740 -610 0 0 {name=Voltage_sources only_toplevel=true +value=" +.param VDD = 1.8 +.param VSS = 0 +.param Vref = 1 +.param Vin = 1 +"} +C {devices/vsource.sym} 140 -130 0 0 {name=V8 value=\{VDD\}} +C {devices/gnd.sym} 140 -90 0 0 {name=l12 lab=GND} +C {devices/lab_wire.sym} 140 -190 0 0 {name=p19 sig_type=std_logic lab=VDD} +C {devices/vsource.sym} 220 -130 0 0 {name=V9 value=\{VSS\}} +C {devices/gnd.sym} 220 -90 0 0 {name=l13 lab=GND} +C {devices/lab_wire.sym} 220 -190 0 0 {name=p20 sig_type=std_logic lab=VSS} +C {devices/lab_wire.sym} 850 -380 0 0 {name=p21 sig_type=std_logic lab=V-} +C {devices/lab_wire.sym} 850 -250 0 0 {name=p22 sig_type=std_logic lab=V-} +C {devices/launcher.sym} 170 -420 0 0 {name=h1 +descr="Save & Netlist & sim" +tclcommand="xschem save; xschem netlist; xschem simulate"} +C {launcher.sym} 170 -350 0 0 {name=h2 +descr="Annotate OP" +tclcommand="set show_hidden_texts 1; xschem annotate_op"} +C {devices/lab_wire.sym} 850 -330 0 0 {name=p23 sig_type=std_logic lab=Vin} +C {devices/lab_wire.sym} 1020 -270 0 0 {name=p5 sig_type=std_logic lab=Vref} +C {gf180/error_amplifier_N_input/xschem/error_amplifier_N_input.sym} 1040 -350 0 0 {name=x1} +C {simulator_commands.sym} 1000 -580 0 0 {name=COMMANDS1 +simulator=ngspice +only_toplevel=false +value=" +.control +save all + +** OP simulation +op + +** run ac simulation +ac dec 20 1 100e6 + +** All OP parameters +setplot op1 + +let #####_M1_nmos_input_##### = 0 +let id_M1 = @m.x1.x1.xm1.m0[id] +let gm_M1 = @m.x1.x1.xm1.m0[gm] +let ro_M1 = 1/@m.x1.x1.xm1.m0[gds] +let Vgs_M1 = @m.x1.x1.xm1.m0[vgs] +let Vds_M1 = @m.x1.x1.xm1.m0[vds] +let Vsb_M1 = -@m.x1.x1.xm1.m0[vbs] +let Vdsat_M1 = @m.x1.x1.xm1.m0[vdsat] +let Vth_M1 = @m.x1.x1.xm1.m0[vth] +let ao_M1 = gm_M1*ro_M1 +let gmid_M1 = gm_M1/id_M1 +let fT_M1 = gm_M1/(6.283185*@m.x1.x1.xm1.m0[cgg]) +print #####_M1_nmos_input_##### id_M1 gm_M1 ro_M1 Vgs_M1 Vds_M1 Vsb_M1 Vdsat_M1 Vth_M1 ao_M1 gmid_M1 fT_M1 + +let #####_M2_nmos_input_##### = 0 +let id_M2 = @m.x1.x1.xm2.m0[id] +let gm_M2 = @m.x1.x1.xm2.m0[gm] +let ro_M2 = 1/@m.x1.x1.xm2.m0[gds] +let Vgs_M2 = @m.x1.x1.xm2.m0[vgs] +let Vds_M2 = @m.x1.x1.xm2.m0[vds] +let Vsb_M2 = -@m.x1.x1.xm2.m0[vbs] +let Vdsat_M2 = @m.x1.x1.xm2.m0[vdsat] +let Vth_M2 = @m.x1.x1.xm2.m0[vth] +let ao_M2 = gm_M2*ro_M2 +let gmid_M2 = gm_M2/id_M2 +let fT_M2 = gm_M2/(6.283185*@m.x1.x1.xm2.m0[cgg]) +print #####_M2_nmos_input_##### id_M2 gm_M2 ro_M2 Vgs_M2 Vds_M2 Vsb_M2 Vdsat_M2 Vth_M2 ao_M2 gmid_M2 fT_M2 + +let #####_M3_pmos_top_##### = 0 +let id_M3 = @m.x1.x1.xm3.m0[id] +let gm_M3 = @m.x1.x1.xm3.m0[gm] +let ro_M3 = 1/@m.x1.x1.xm3.m0[gds] +let Vsg_M3 = @m.x1.x1.xm3.m0[vgs] +let Vsd_M3 = @m.x1.x1.xm3.m0[vds] +let Vbs_M3 = -@m.x1.x1.xm3.m0[vbs] +let Vdsat_M3 = @m.x1.x1.xm3.m0[vdsat] +let Vth_M3 = @m.x1.x1.xm3.m0[vth] +let ao_M3 = gm_M3*ro_M3 +let gmid_M3 = gm_M3/id_M3 +let fT_M3 = gm_M3/(6.283185*@m.x1.x1.xm3.m0[cgg]) +print #####_M3_pmos_top_##### id_M3 gm_M3 ro_M3 Vsg_M3 Vsd_M3 Vbs_M3 Vdsat_M3 Vth_M3 ao_M3 gmid_M3 fT_M3 + +let #####_M4_pmos_top_##### = 0 +let id_M4 = @m.x1.x1.xm4.m0[id] +let gm_M4 = @m.x1.x1.xm4.m0[gm] +let ro_M4 = 1/@m.x1.x1.xm4.m0[gds] +let Vsg_M4 = @m.x1.x1.xm4.m0[vgs] +let Vsd_M4 = @m.x1.x1.xm4.m0[vds] +let Vbs_M4 = -@m.x1.x1.xm4.m0[vbs] +let Vdsat_M4 = @m.x1.x1.xm4.m0[vdsat] +let Vth_M4 = @m.x1.x1.xm4.m0[vth] +let ao_M4 = gm_M4*ro_M4 +let gmid_M4 = gm_M4/id_M4 +let fT_M4 = gm_M4/(6.283185*@m.x1.x1.xm4.m0[cgg]) +print #####_M4_pmos_top_##### id_M4 gm_M4 ro_M4 Vsg_M4 Vsd_M4 Vbs_M4 Vdsat_M4 Vth_M4 ao_M4 gmid_M4 fT_M4 + +let #####_M5_pmos_out_##### = 0 +let id_M5 = @m.x1.x1.xm5.m0[id] +let gm_M5 = @m.x1.x1.xm5.m0[gm] +let ro_M5 = 1/@m.x1.x1.xm5.m0[gds] +let Vsg_M5 = @m.x1.x1.xm5.m0[vgs] +let Vsd_M5 = @m.x1.x1.xm5.m0[vds] +let Vbs_M5 = -@m.x1.x1.xm5.m0[vbs] +let Vdsat_M5 = @m.x1.x1.xm5.m0[vdsat] +let Vth_M5 = @m.x1.x1.xm5.m0[vth] +let ao_M5 = gm_M5*ro_M5 +let gmid_M5 = gm_M5/id_M5 +let fT_M5 = gm_M5/(6.283185*@m.x1.x1.xm5.m0[cgg]) +print #####_M5_pmos_out_##### id_M5 gm_M5 ro_M5 Vsg_M5 Vsd_M5 Vbs_M5 Vdsat_M5 Vth_M5 ao_M5 gmid_M5 fT_M5 + +let #####_M6_pmos_out_##### = 0 +let id_M6 = @m.x1.x1.xm6.m0[id] +let gm_M6 = @m.x1.x1.xm6.m0[gm] +let ro_M6 = 1/@m.x1.x1.xm6.m0[gds] +let Vsg_M6 = @m.x1.x1.xm6.m0[vgs] +let Vsd_M6 = @m.x1.x1.xm6.m0[vds] +let Vbs_M6 = -@m.x1.x1.xm6.m0[vbs] +let Vdsat_M6 = @m.x1.x1.xm6.m0[vdsat] +let Vth_M6 = @m.x1.x1.xm6.m0[vth] +let ao_M6 = gm_M6*ro_M6 +let gmid_M6 = gm_M6/id_M6 +let fT_M6 = gm_M6/(6.283185*@m.x1.x1.xm6.m0[cgg]) +print #####_M6_pmos_out_##### id_M6 gm_M6 ro_M6 Vsg_M6 Vsd_M6 Vbs_M6 Vdsat_M6 Vth_M6 ao_M6 gmid_M6 fT_M6 + +let #####_M7_nmos_out_##### = 0 +let id_M7 = @m.x1.x1.xm7.m0[id] +let gm_M7 = @m.x1.x1.xm7.m0[gm] +let ro_M7 = 1/@m.x1.x1.xm7.m0[gds] +let Vgs_M7 = @m.x1.x1.xm7.m0[vgs] +let Vds_M7 = @m.x1.x1.xm7.m0[vds] +let Vsb_M7 = -@m.x1.x1.xm7.m0[vbs] +let Vdsat_M7 = @m.x1.x1.xm7.m0[vdsat] +let Vth_M7 = @m.x1.x1.xm7.m0[vth] +let ao_M7 = gm_M7*ro_M7 +let gmid_M7 = gm_M7/id_M7 +let fT_M7 = gm_M7/(6.283185*@m.x1.x1.xm7.m0[cgg]) +print #####_M7_nmos_out_##### id_M7 gm_M7 ro_M7 Vgs_M7 Vds_M7 Vsb_M7 Vdsat_M7 Vth_M7 ao_M7 gmid_M7 fT_M7 + +let #####_M8_nmos_out_##### = 0 +let id_M8 = @m.x1.x1.xm8.m0[id] +let gm_M8 = @m.x1.x1.xm8.m0[gm] +let ro_M8 = 1/@m.x1.x1.xm8.m0[gds] +let Vgs_M8 = @m.x1.x1.xm8.m0[vgs] +let Vds_M8 = @m.x1.x1.xm8.m0[vds] +let Vsb_M8 = -@m.x1.x1.xm8.m0[vbs] +let Vdsat_M8 = @m.x1.x1.xm8.m0[vdsat] +let Vth_M8 = @m.x1.x1.xm8.m0[vth] +let ao_M8 = gm_M8*ro_M8 +let gmid_M8 = gm_M8/id_M8 +let fT_M8 = gm_M8/(6.283185*@m.x1.x1.xm8.m0[cgg]) +print #####_M8_nmos_out_##### id_M8 gm_M8 ro_M8 Vgs_M8 Vds_M8 Vsb_M8 Vdsat_M8 Vth_M8 ao_M8 gmid_M8 fT_M8 + +let #####_M9_nmos_bottom_##### = 0 +let id_M9 = @m.x1.x1.xm9.m0[id] +let gm_M9 = @m.x1.x1.xm9.m0[gm] +let ro_M9 = 1/@m.x1.x1.xm9.m0[gds] +let Vgs_M9 = @m.x1.x1.xm9.m0[vgs] +let Vds_M9 = @m.x1.x1.xm9.m0[vds] +let Vsb_M9 = -@m.x1.x1.xm9.m0[vbs] +let Vdsat_M9 = @m.x1.x1.xm9.m0[vdsat] +let Vth_M9 = @m.x1.x1.xm9.m0[vth] +let ao_M9 = gm_M9*ro_M9 +let gmid_M9 = gm_M9/id_M9 +let fT_M9 = gm_M9/(6.283185*@m.x1.x1.xm9.m0[cgg]) +print #####_M9_nmos_bottom_##### id_M9 gm_M9 ro_M9 Vgs_M9 Vds_M9 Vsb_M9 Vdsat_M9 Vth_M9 ao_M9 gmid_M9 fT_M9 + +let #####_M10_nmos_bottom_##### = 0 +let id_M10 = @m.x1.x1.xm10.m0[id] +let gm_M10 = @m.x1.x1.xm10.m0[gm] +let ro_M10 = 1/@m.x1.x1.xm10.m0[gds] +let Vgs_M10 = @m.x1.x1.xm10.m0[vgs] +let Vds_M10 = @m.x1.x1.xm10.m0[vds] +let Vsb_M10 = @m.x1.x1.xm10.m0[vbs] +let Vdsat_M10 = @m.x1.x1.xm10.m0[vdsat] +let Vth_M10 = @m.x1.x1.xm10.m0[vth] +let ao_M10 = gm_M10*ro_M10 +let gmid_M10 = gm_M10/id_M10 +let fT_M10 = gm_M10/(6.283185*@m.x1.x1.xm10.m0[cgg]) +print #####_M10_nmos_bottom_##### id_M10 gm_M10 ro_M10 Vgs_M10 Vds_M10 Vsb_M10 Vdsat_M10 Vth_M10 ao_M10 gmid_M10 fT_M10 + +let #####_M11_nmos_mirror_##### = 0 +let id_M11 = @m.x1.x1.xm11.m0[id] +let gm_M11 = @m.x1.x1.xm11.m0[gm] +let ro_M11 = 1/@m.x1.x1.xm11.m0[gds] +let Vgs_M11 = @m.x1.x1.xm11.m0[vgs] +let Vds_M11 = @m.x1.x1.xm11.m0[vds] +let Vsb_M11 = -@m.x1.x1.xm11.m0[vbs] +let Vdsat_M11 = @m.x1.x1.xm11.m0[vdsat] +let Vth_M11 = @m.x1.x1.xm11.m0[vth] +let ao_M11 = gm_M11*ro_M11 +let gmid_M11 = gm_M11/id_M11 +let fT_M11 = gm_M11/(6.283185*@m.x1.x1.xm11.m0[cgg]) +print #####_M11_nmos_mirror_##### id_M11 gm_M11 ro_M11 Vgs_M11 Vds_M11 Vsb_M11 Vdsat_M11 Vth_M11 ao_M11 gmid_M11 fT_M11 + +** Custom output +let #####_Custom_output_##### = 0 + +* Power +let power = abs(i(V8))*VDD + +* DC_gain +let r1 = ao_M6*ro_M4 +let r2 = ao_M8*((ro_M1*ro_M10)/(ro_M1+ro_M10)) +let Rout = (r1*r2)/(r1+r2) +let Av = db(gm_M1*Rout) +* Bandwidth +let BW = 1/(Rout*1e-12*6.283185) + +print #####_Custom_output_##### Av BW Rout power gm_M1 ro_M1 gm_M6 ro_M6 ro_M4 gm_M8 ro_M8 ro_M10 + +write folded_cascode_ac.raw + +setplot ac1 + +* measure parameters +let vout_mag = db(abs(v(Vout))) +let vout_phase = cph(v(Vout)) * 180/pi +let gm = (-1)*db(abs(v(Vout))) + +meas ac A0 find vout_mag at=1e2 +meas ac UGB when vout_mag=0 fall=1 +meas ac PM find vout_phase when vout_mag=0 +meas ac GM find gm when vout_phase=0 + +let A0_p1 = A0 - 3 +meas ac BW when vout_mag=A0_p1 + +plot vout_mag vout_phase + +.endc +"} +C {devices/vsource.sym} 360 -130 0 0 {name=V2 value=\{Vref\}} +C {devices/gnd.sym} 360 -90 0 0 {name=l1 lab=GND} +C {devices/lab_wire.sym} 360 -190 0 0 {name=p1 sig_type=std_logic lab=Vref} diff --git a/blocks/composite/folded_cascode/designs/gf180/error_amplifier_N_input/xschem/folded_cascode_cmrr.sch b/blocks/composite/folded_cascode/designs/gf180/error_amplifier_N_input/xschem/folded_cascode_cmrr.sch new file mode 100644 index 00000000..56cfc908 --- /dev/null +++ b/blocks/composite/folded_cascode/designs/gf180/error_amplifier_N_input/xschem/folded_cascode_cmrr.sch @@ -0,0 +1,292 @@ +v {xschem version=3.4.7 file_version=1.2} +G {} +K {} +V {} +S {} +E {} +N 960 -240 960 -180 { +lab=GND} +N 870 -350 960 -350 { +lab=Vout} +N 960 -350 960 -300 { +lab=Vout} +N 270 -110 270 -100 {lab=GND} +N 270 -200 270 -170 {lab=Vin} +N 570 -380 670 -380 { +lab=V-} +N 110 -110 110 -100 {lab=GND} +N 110 -200 110 -170 {lab=VDD} +N 190 -110 190 -100 {lab=GND} +N 190 -200 190 -170 {lab=VSS} +N 910 -350 910 -90 {lab=Vout} +N 800 -90 910 -90 {lab=Vout} +N 570 -320 570 -90 {lab=V-} +N 270 -340 270 -300 {lab=V+} +N 570 -90 740 -90 {lab=V-} +N 270 -240 270 -200 {lab=Vin} +N 570 -380 570 -320 {lab=V-} +N 620 -320 670 -320 {lab=V+} +N 670 -380 690 -380 {lab=V-} +N 670 -330 670 -320 {lab=V+} +N 670 -330 690 -330 {lab=V+} +N 350 -110 350 -100 {lab=GND} +N 350 -200 350 -170 {lab=Vref} +C {vsource.sym} 270 -270 0 0 {name=V5 value="AC 1" savecurrent=false} +C {capa.sym} 620 -350 0 0 {name=C3 +m=1 +value=10G +footprint=1206 +device="ceramic capacitor"} +C {ind.sym} 770 -90 1 0 {name=L2 +m=1 +value=10G +footprint=1206 +device=inductor} +C {devices/code_shown.sym} 50 -600 0 0 {name=MODELS only_toplevel=true +format="tcleval( @value )" +value=" +.include $::180MCU_MODELS/design.ngspice +.lib $::180MCU_MODELS/sm141064.ngspice typical +"} +C {devices/noconn.sym} 800 -290 0 1 {name=l3} +C {devices/lab_wire.sym} 760 -230 0 0 {name=p12 sig_type=std_logic lab=VSS} +C {devices/lab_wire.sym} 760 -250 0 0 {name=p13 sig_type=std_logic lab=VDD} +C {devices/capa.sym} 960 -270 0 0 {name=C4 +m=1 +value=5p +footprint=1206 +device="ceramic capacitor"} +C {devices/vsource.sym} 270 -140 0 0 {name=V6 value=\{Vin\}} +C {devices/gnd.sym} 270 -100 0 0 {name=l5 lab=GND} +C {devices/lab_wire.sym} 270 -200 0 0 {name=p14 sig_type=std_logic lab=Vin} +C {devices/lab_wire.sym} 960 -350 0 0 {name=p15 sig_type=std_logic lab=Vout} +C {devices/gnd.sym} 960 -180 0 0 {name=l8 lab=GND} +C {simulator_commands.sym} 740 -580 0 0 {name=COMMANDS1 +simulator=ngspice +only_toplevel=false +value=" +.control +save all + +** OP simulation +op + +** run ac simulation +ac dec 20 1 100e6 + +** All OP parameters +setplot op1 + +let #####_M1_nmos_input_##### = 0 +let id_M1 = @m.x1.x1.xm1.m0[id] +let gm_M1 = @m.x1.x1.xm1.m0[gm] +let ro_M1 = 1/@m.x1.x1.xm1.m0[gds] +let Vgs_M1 = @m.x1.x1.xm1.m0[vgs] +let Vds_M1 = @m.x1.x1.xm1.m0[vds] +let Vsb_M1 = -@m.x1.x1.xm1.m0[vbs] +let Vdsat_M1 = @m.x1.x1.xm1.m0[vdsat] +let Vth_M1 = @m.x1.x1.xm1.m0[vth] +let ao_M1 = gm_M1*ro_M1 +let gmid_M1 = gm_M1/id_M1 +let fT_M1 = gm_M1/(6.283185*@m.x1.x1.xm1.m0[cgg]) +print #####_M1_nmos_input_##### id_M1 gm_M1 ro_M1 Vgs_M1 Vds_M1 Vsb_M1 Vdsat_M1 Vth_M1 ao_M1 gmid_M1 fT_M1 + +let #####_M2_nmos_input_##### = 0 +let id_M2 = @m.x1.x1.xm2.m0[id] +let gm_M2 = @m.x1.x1.xm2.m0[gm] +let ro_M2 = 1/@m.x1.x1.xm2.m0[gds] +let Vgs_M2 = @m.x1.x1.xm2.m0[vgs] +let Vds_M2 = @m.x1.x1.xm2.m0[vds] +let Vsb_M2 = -@m.x1.x1.xm2.m0[vbs] +let Vdsat_M2 = @m.x1.x1.xm2.m0[vdsat] +let Vth_M2 = @m.x1.x1.xm2.m0[vth] +let ao_M2 = gm_M2*ro_M2 +let gmid_M2 = gm_M2/id_M2 +let fT_M2 = gm_M2/(6.283185*@m.x1.x1.xm2.m0[cgg]) +print #####_M2_nmos_input_##### id_M2 gm_M2 ro_M2 Vgs_M2 Vds_M2 Vsb_M2 Vdsat_M2 Vth_M2 ao_M2 gmid_M2 fT_M2 + +let #####_M3_pmos_top_##### = 0 +let id_M3 = @m.x1.x1.xm3.m0[id] +let gm_M3 = @m.x1.x1.xm3.m0[gm] +let ro_M3 = 1/@m.x1.x1.xm3.m0[gds] +let Vsg_M3 = @m.x1.x1.xm3.m0[vgs] +let Vsd_M3 = @m.x1.x1.xm3.m0[vds] +let Vbs_M3 = -@m.x1.x1.xm3.m0[vbs] +let Vdsat_M3 = @m.x1.x1.xm3.m0[vdsat] +let Vth_M3 = @m.x1.x1.xm3.m0[vth] +let ao_M3 = gm_M3*ro_M3 +let gmid_M3 = gm_M3/id_M3 +let fT_M3 = gm_M3/(6.283185*@m.x1.x1.xm3.m0[cgg]) +print #####_M3_pmos_top_##### id_M3 gm_M3 ro_M3 Vsg_M3 Vsd_M3 Vbs_M3 Vdsat_M3 Vth_M3 ao_M3 gmid_M3 fT_M3 + +let #####_M4_pmos_top_##### = 0 +let id_M4 = @m.x1.x1.xm4.m0[id] +let gm_M4 = @m.x1.x1.xm4.m0[gm] +let ro_M4 = 1/@m.x1.x1.xm4.m0[gds] +let Vsg_M4 = @m.x1.x1.xm4.m0[vgs] +let Vsd_M4 = @m.x1.x1.xm4.m0[vds] +let Vbs_M4 = -@m.x1.x1.xm4.m0[vbs] +let Vdsat_M4 = @m.x1.x1.xm4.m0[vdsat] +let Vth_M4 = @m.x1.x1.xm4.m0[vth] +let ao_M4 = gm_M4*ro_M4 +let gmid_M4 = gm_M4/id_M4 +let fT_M4 = gm_M4/(6.283185*@m.x1.x1.xm4.m0[cgg]) +print #####_M4_pmos_top_##### id_M4 gm_M4 ro_M4 Vsg_M4 Vsd_M4 Vbs_M4 Vdsat_M4 Vth_M4 ao_M4 gmid_M4 fT_M4 + +let #####_M5_pmos_out_##### = 0 +let id_M5 = @m.x1.x1.xm5.m0[id] +let gm_M5 = @m.x1.x1.xm5.m0[gm] +let ro_M5 = 1/@m.x1.x1.xm5.m0[gds] +let Vsg_M5 = @m.x1.x1.xm5.m0[vgs] +let Vsd_M5 = @m.x1.x1.xm5.m0[vds] +let Vbs_M5 = -@m.x1.x1.xm5.m0[vbs] +let Vdsat_M5 = @m.x1.x1.xm5.m0[vdsat] +let Vth_M5 = @m.x1.x1.xm5.m0[vth] +let ao_M5 = gm_M5*ro_M5 +let gmid_M5 = gm_M5/id_M5 +let fT_M5 = gm_M5/(6.283185*@m.x1.x1.xm5.m0[cgg]) +print #####_M5_pmos_out_##### id_M5 gm_M5 ro_M5 Vsg_M5 Vsd_M5 Vbs_M5 Vdsat_M5 Vth_M5 ao_M5 gmid_M5 fT_M5 + +let #####_M6_pmos_out_##### = 0 +let id_M6 = @m.x1.x1.xm6.m0[id] +let gm_M6 = @m.x1.x1.xm6.m0[gm] +let ro_M6 = 1/@m.x1.x1.xm6.m0[gds] +let Vsg_M6 = @m.x1.x1.xm6.m0[vgs] +let Vsd_M6 = @m.x1.x1.xm6.m0[vds] +let Vbs_M6 = -@m.x1.x1.xm6.m0[vbs] +let Vdsat_M6 = @m.x1.x1.xm6.m0[vdsat] +let Vth_M6 = @m.x1.x1.xm6.m0[vth] +let ao_M6 = gm_M6*ro_M6 +let gmid_M6 = gm_M6/id_M6 +let fT_M6 = gm_M6/(6.283185*@m.x1.x1.xm6.m0[cgg]) +print #####_M6_pmos_out_##### id_M6 gm_M6 ro_M6 Vsg_M6 Vsd_M6 Vbs_M6 Vdsat_M6 Vth_M6 ao_M6 gmid_M6 fT_M6 + +let #####_M7_nmos_out_##### = 0 +let id_M7 = @m.x1.x1.xm7.m0[id] +let gm_M7 = @m.x1.x1.xm7.m0[gm] +let ro_M7 = 1/@m.x1.x1.xm7.m0[gds] +let Vgs_M7 = @m.x1.x1.xm7.m0[vgs] +let Vds_M7 = @m.x1.x1.xm7.m0[vds] +let Vsb_M7 = -@m.x1.x1.xm7.m0[vbs] +let Vdsat_M7 = @m.x1.x1.xm7.m0[vdsat] +let Vth_M7 = @m.x1.x1.xm7.m0[vth] +let ao_M7 = gm_M7*ro_M7 +let gmid_M7 = gm_M7/id_M7 +let fT_M7 = gm_M7/(6.283185*@m.x1.x1.xm7.m0[cgg]) +print #####_M7_nmos_out_##### id_M7 gm_M7 ro_M7 Vgs_M7 Vds_M7 Vsb_M7 Vdsat_M7 Vth_M7 ao_M7 gmid_M7 fT_M7 + +let #####_M8_nmos_out_##### = 0 +let id_M8 = @m.x1.x1.xm8.m0[id] +let gm_M8 = @m.x1.x1.xm8.m0[gm] +let ro_M8 = 1/@m.x1.x1.xm8.m0[gds] +let Vgs_M8 = @m.x1.x1.xm8.m0[vgs] +let Vds_M8 = @m.x1.x1.xm8.m0[vds] +let Vsb_M8 = -@m.x1.x1.xm8.m0[vbs] +let Vdsat_M8 = @m.x1.x1.xm8.m0[vdsat] +let Vth_M8 = @m.x1.x1.xm8.m0[vth] +let ao_M8 = gm_M8*ro_M8 +let gmid_M8 = gm_M8/id_M8 +let fT_M8 = gm_M8/(6.283185*@m.x1.x1.xm8.m0[cgg]) +print #####_M8_nmos_out_##### id_M8 gm_M8 ro_M8 Vgs_M8 Vds_M8 Vsb_M8 Vdsat_M8 Vth_M8 ao_M8 gmid_M8 fT_M8 + +let #####_M9_nmos_bottom_##### = 0 +let id_M9 = @m.x1.x1.xm9.m0[id] +let gm_M9 = @m.x1.x1.xm9.m0[gm] +let ro_M9 = 1/@m.x1.x1.xm9.m0[gds] +let Vgs_M9 = @m.x1.x1.xm9.m0[vgs] +let Vds_M9 = @m.x1.x1.xm9.m0[vds] +let Vsb_M9 = -@m.x1.x1.xm9.m0[vbs] +let Vdsat_M9 = @m.x1.x1.xm9.m0[vdsat] +let Vth_M9 = @m.x1.x1.xm9.m0[vth] +let ao_M9 = gm_M9*ro_M9 +let gmid_M9 = gm_M9/id_M9 +let fT_M9 = gm_M9/(6.283185*@m.x1.x1.xm9.m0[cgg]) +print #####_M9_nmos_bottom_##### id_M9 gm_M9 ro_M9 Vgs_M9 Vds_M9 Vsb_M9 Vdsat_M9 Vth_M9 ao_M9 gmid_M9 fT_M9 + +let #####_M10_nmos_bottom_##### = 0 +let id_M10 = @m.x1.x1.xm10.m0[id] +let gm_M10 = @m.x1.x1.xm10.m0[gm] +let ro_M10 = 1/@m.x1.x1.xm10.m0[gds] +let Vgs_M10 = @m.x1.x1.xm10.m0[vgs] +let Vds_M10 = @m.x1.x1.xm10.m0[vds] +let Vsb_M10 = @m.x1.x1.xm10.m0[vbs] +let Vdsat_M10 = @m.x1.x1.xm10.m0[vdsat] +let Vth_M10 = @m.x1.x1.xm10.m0[vth] +let ao_M10 = gm_M10*ro_M10 +let gmid_M10 = gm_M10/id_M10 +let fT_M10 = gm_M10/(6.283185*@m.x1.x1.xm10.m0[cgg]) +print #####_M10_nmos_bottom_##### id_M10 gm_M10 ro_M10 Vgs_M10 Vds_M10 Vsb_M10 Vdsat_M10 Vth_M10 ao_M10 gmid_M10 fT_M10 + +let #####_M11_nmos_mirror_##### = 0 +let id_M11 = @m.x1.x1.xm11.m0[id] +let gm_M11 = @m.x1.x1.xm11.m0[gm] +let ro_M11 = 1/@m.x1.x1.xm11.m0[gds] +let Vgs_M11 = @m.x1.x1.xm11.m0[vgs] +let Vds_M11 = @m.x1.x1.xm11.m0[vds] +let Vsb_M11 = -@m.x1.x1.xm11.m0[vbs] +let Vdsat_M11 = @m.x1.x1.xm11.m0[vdsat] +let Vth_M11 = @m.x1.x1.xm11.m0[vth] +let ao_M11 = gm_M11*ro_M11 +let gmid_M11 = gm_M11/id_M11 +let fT_M11 = gm_M11/(6.283185*@m.x1.x1.xm11.m0[cgg]) +print #####_M11_nmos_mirror_##### id_M11 gm_M11 ro_M11 Vgs_M11 Vds_M11 Vsb_M11 Vdsat_M11 Vth_M11 ao_M11 gmid_M11 fT_M11 + +** Custom output +let #####_Custom_output_##### = 0 + +* Power +let power = abs(i(V8))*VDD + +* DC_gain +let r1 = ao_M6*ro_M4 +let r2 = ao_M8*((ro_M1*ro_M10)/(ro_M1+ro_M10)) +let Rout = (r1*r2)/(r1+r2) +let Av = db(gm_M1*Rout) +* Bandwidth +let BW = 1/(Rout*1e-12*6.283185) + +print #####_Custom_output_##### Av BW Rout power gm_M1 ro_M1 gm_M6 ro_M6 ro_M4 gm_M8 ro_M8 ro_M10 + +write folded_cascode_cmrr.raw + +setplot ac1 + +* measure parameters +let vout_mag = db(abs(v(Vout))) +let vout_phase = cph(v(Vout)) * 180/pi + +meas ac Acm find vout_mag at=1e2 + +plot vout_mag vout_phase + +.endc +"} +C {devices/code_shown.sym} 510 -570 0 0 {name=Voltage_sources only_toplevel=true +value=" +.param VDD = 1.8 +.param VSS = 0 +.param Vref = 1 +.param Vin = 1 +"} +C {devices/vsource.sym} 110 -140 0 0 {name=V8 value=\{VDD\}} +C {devices/gnd.sym} 110 -100 0 0 {name=l12 lab=GND} +C {devices/lab_wire.sym} 110 -200 0 0 {name=p19 sig_type=std_logic lab=VDD} +C {devices/vsource.sym} 190 -140 0 0 {name=V9 value=\{VSS\}} +C {devices/gnd.sym} 190 -100 0 0 {name=l13 lab=GND} +C {devices/lab_wire.sym} 190 -200 0 0 {name=p20 sig_type=std_logic lab=VSS} +C {devices/lab_wire.sym} 570 -380 0 0 {name=p3 sig_type=std_logic lab=V-} +C {devices/lab_wire.sym} 270 -340 0 0 {name=p4 sig_type=std_logic lab=V+} +C {devices/launcher.sym} 120 -480 0 0 {name=h1 +descr="Save & Netlist & sim" +tclcommand="xschem save; xschem netlist; xschem simulate"} +C {launcher.sym} 120 -410 0 0 {name=h2 +descr="Annotate OP" +tclcommand="set show_hidden_texts 1; xschem annotate_op"} +C {devices/lab_wire.sym} 620 -320 2 0 {name=p21 sig_type=std_logic lab=V+} +C {gf180/error_amplifier_N_input/xschem/error_amplifier_N_input.sym} 780 -350 0 0 {name=x1} +C {devices/lab_wire.sym} 760 -270 0 0 {name=p1 sig_type=std_logic lab=Vref} +C {devices/vsource.sym} 350 -140 0 0 {name=V1 value=\{Vref\}} +C {devices/gnd.sym} 350 -100 0 0 {name=l1 lab=GND +value=\{Vref\}} +C {devices/lab_wire.sym} 350 -200 0 0 {name=p2 sig_type=std_logic lab=Vref +value=\{Vref\}} diff --git a/blocks/composite/folded_cascode/designs/gf180/error_amplifier_N_input/xschem/folded_cascode_icmr.sch b/blocks/composite/folded_cascode/designs/gf180/error_amplifier_N_input/xschem/folded_cascode_icmr.sch new file mode 100644 index 00000000..e3b485c8 --- /dev/null +++ b/blocks/composite/folded_cascode/designs/gf180/error_amplifier_N_input/xschem/folded_cascode_icmr.sch @@ -0,0 +1,175 @@ +v {xschem version=3.4.6 file_version=1.2} +G {} +K {} +V {} +S {} +E {} +N 220 -140 220 -120 { +lab=GND} +N 220 -240 220 -200 { +lab=VSS} +N 300 -140 300 -120 { +lab=GND} +N 220 -120 220 -100 { +lab=GND} +N 300 -240 300 -200 { +lab=VDD} +N 300 -120 300 -100 { +lab=GND} +N 380 -140 380 -120 { +lab=GND} +N 380 -240 380 -200 { +lab=Vref} +N 380 -120 380 -100 { +lab=GND} +N 880 -510 940 -510 {lab=Vout} +N 1090 -380 1090 -300 { +lab=VSS} +N 1090 -510 1090 -450 { +lab=Vout} +N 940 -510 1090 -510 { +lab=Vout} +N 520 -490 700 -490 { +lab=Vin} +N 1090 -450 1090 -440 { +lab=Vout} +N 590 -540 700 -540 { +lab=Vout} +N 590 -620 590 -540 { +lab=Vout} +N 590 -620 940 -620 { +lab=Vout} +N 940 -620 940 -510 { +lab=Vout} +N 460 -240 460 -200 { +lab=Vin} +N 460 -140 460 -100 { +lab=GND} +C {sky130_fd_pr/corner.sym} 170 -410 0 0 {name=CORNER only_toplevel=true corner=tt} +C {simulator_commands.sym} 320 -410 0 0 {name="COMMANDS" +simulator="ngspice" +only_toplevel="false" +value=" +.param VDD=1.8 +.param Vref=1.2 +.save + +* Operation point of the folded cascode core + +*nfet + ++ @m.x1.x2.xm1.msky130_fd_pr__nfet_01v8[gm] ++ v(@m.x1.x2.xm1.msky130_fd_pr__nfet_01v8[vth]) ++ @m.x1.x2.xm1.msky130_fd_pr__nfet_01v8[gds] ++ @m.x1.x2.xm1.msky130_fd_pr__nfet_01v8[id] + ++ @m.x1.x2.xm2.msky130_fd_pr__nfet_01v8[gm] ++ v(@m.x1.x2.xm2.msky130_fd_pr__nfet_01v8[vth]) ++ @m.x1.x2.xm2.msky130_fd_pr__nfet_01v8[gds] ++ @m.x1.x2.xm2.msky130_fd_pr__nfet_01v8[id] + ++ @m.x1.x2.xm7.msky130_fd_pr__nfet_01v8[gm] ++ v(@m.x1.x2.xm7.msky130_fd_pr__nfet_01v8[vth]) ++ @m.x1.x2.xm7.msky130_fd_pr__nfet_01v8[gds] ++ @m.x1.x2.xm7.msky130_fd_pr__nfet_01v8[id] + ++ @m.x1.x2.xm8.msky130_fd_pr__nfet_01v8[gm] ++ v(@m.x1.x2.xm8.msky130_fd_pr__nfet_01v8[vth]) ++ @m.x1.x2.xm8.msky130_fd_pr__nfet_01v8[gds] ++ @m.x1.x2.xm8.msky130_fd_pr__nfet_01v8[id] + ++ @m.x1.x2.xm9.msky130_fd_pr__nfet_01v8[gm] ++ v(@m.x1.x2.xm9.msky130_fd_pr__nfet_01v8[vth]) ++ @m.x1.x2.xm9.msky130_fd_pr__nfet_01v8[gds] ++ @m.x1.x2.xm9.msky130_fd_pr__nfet_01v8[id] + ++ @m.x1.x2.xm10.msky130_fd_pr__nfet_01v8[gm] ++ v(@m.x1.x2.xm10.msky130_fd_pr__nfet_01v8[vth]) ++ @m.x1.x2.xm10.msky130_fd_pr__nfet_01v8[gds] ++ @m.x1.x2.xm10.msky130_fd_pr__nfet_01v8[id] + ++ @m.x1.x2.xm11.msky130_fd_pr__nfet_01v8[gm] ++ v(@m.x1.x2.xm11.msky130_fd_pr__nfet_01v8[vth]) ++ @m.x1.x2.xm11.msky130_fd_pr__nfet_01v8[gds] ++ @m.x1.x2.xm11.msky130_fd_pr__nfet_01v8[id] + +*pfet + ++ @m.x1.x2.xm3.msky130_fd_pr__pfet_01v8_lvt[gm] ++ v(@m.x1.x2.xm3.msky130_fd_pr__pfet_01v8_lvt[vth]) ++ @m.x1.x2.xm3.msky130_fd_pr__pfet_01v8_lvt[gds] ++ @m.x1.x2.xm3.msky130_fd_pr__pfet_01v8_lvt[id] + ++ @m.x1.x2.xm4.msky130_fd_pr__pfet_01v8_lvt[gm] ++ v(@m.x1.x2.xm4.msky130_fd_pr__pfet_01v8_lvt[vth]) ++ @m.x1.x2.xm4.msky130_fd_pr__pfet_01v8_lvt[gds] ++ @m.x1.x2.xm4.msky130_fd_pr__pfet_01v8_lvt[id] + ++ @m.x1.x2.xm5.msky130_fd_pr__pfet_01v8_lvt[gm] ++ v(@m.x1.x2.xm5.msky130_fd_pr__pfet_01v8_lvt[vth]) ++ @m.x1.x2.xm5.msky130_fd_pr__pfet_01v8_lvt[gds] ++ @m.x1.x2.xm5.msky130_fd_pr__pfet_01v8_lvt[id] + ++ @m.x1.x2.xm6.msky130_fd_pr__pfet_01v8_lvt[gm] ++ v(@m.x1.x2.xm6.msky130_fd_pr__pfet_01v8_lvt[vth]) ++ @m.x1.x2.xm6.msky130_fd_pr__pfet_01v8_lvt[gds] ++ @m.x1.x2.xm6.msky130_fd_pr__pfet_01v8_lvt[id] + +* Operation point of the folded cascode bias + + ++ abstol=1e-14 savecurrents +.control + save all + op + remzerovec + write folded_cascode_icmr.raw + set appendwrite + + * run dc simulation + dc V1 0 1.8 0.001 + + * measure parameters + let dVout = deriv(v(Vout)) + + meas dc ICMmin when DVout=0.95 cross=1 + meas dc ICMmax when DVout=0.95 cross=last + let ICMR = ICMmax - ICMmin + print ICMR + plot Vout dVout + + write folded_cascode_icmr.raw +.endc +"} +C {devices/vsource.sym} 220 -170 0 0 {name=V0 value=0 savecurrent=false} +C {devices/gnd.sym} 220 -100 0 0 {name=l5 lab=GND} +C {devices/vsource.sym} 300 -170 0 0 {name=V2 value=\{VDD\} savecurrent=false} +C {devices/lab_wire.sym} 220 -240 0 0 {name=p25 sig_type=std_logic lab=VSS} +C {devices/lab_wire.sym} 300 -240 0 0 {name=p26 sig_type=std_logic lab=VDD} +C {devices/gnd.sym} 300 -100 0 0 {name=l6 lab=GND} +C {devices/vsource.sym} 380 -170 0 0 {name=V4 value=\{Vref\} savecurrent=false} +C {devices/lab_wire.sym} 380 -240 0 0 {name=p27 sig_type=std_logic lab=Vref} +C {devices/gnd.sym} 380 -100 0 0 {name=l7 lab=GND} +C {devices/launcher.sym} 270 -530 0 0 {name=h15 +descr="Annotate OP" +tclcommand="set show_hidden_texts 1; xschem annotate_op" +} +C {devices/launcher.sym} 270 -600 0 0 {name=h3 +descr="Netlist & sim" +tclcommand="xschem netlist; xschem simulate"} +C {lab_pin.sym} 770 -430 2 1 {name=p7 sig_type=std_logic lab=Vref} +C {lab_pin.sym} 770 -410 2 1 {name=p8 sig_type=std_logic lab=VDD} +C {lab_pin.sym} 770 -390 2 1 {name=p9 sig_type=std_logic lab=VSS} +C {lab_pin.sym} 520 -490 2 1 {name=p10 sig_type=std_logic lab=Vin} +C {capa.sym} 1090 -410 0 0 {name=C1 +m=1 +value=1p +footprint=1206 +device="ceramic capacitor"} +C {lab_pin.sym} 1090 -300 2 1 {name=p1 sig_type=std_logic lab=VSS} +C {noconn.sym} 810 -450 2 0 {name=l1} +C {lab_pin.sym} 1090 -510 0 1 {name=p2 sig_type=std_logic lab=Vout} +C {devices/lab_wire.sym} 460 -240 0 0 {name=p3 sig_type=std_logic lab=Vin} +C {devices/gnd.sym} 460 -100 0 0 {name=l2 lab=GND} +C {devices/vsource.sym} 460 -170 0 0 {name=V1 value=\{Vref\} savecurrent=false} +C {/foss/designs/chipathon_2025/designs/sky130/error_amplifier_N_input/xschem/error_amplifier_N_input.sym} 790 -510 0 0 {name=x1} diff --git a/blocks/composite/folded_cascode/designs/gf180/error_amplifier_N_input/xschem/folded_cascode_op.sch b/blocks/composite/folded_cascode/designs/gf180/error_amplifier_N_input/xschem/folded_cascode_op.sch new file mode 100644 index 00000000..88b15d00 --- /dev/null +++ b/blocks/composite/folded_cascode/designs/gf180/error_amplifier_N_input/xschem/folded_cascode_op.sch @@ -0,0 +1,258 @@ +v {xschem version=3.4.7 file_version=1.2} +G {} +K {} +V {} +S {} +E {} +N 1220 -240 1220 -180 { +lab=GND} +N 1130 -350 1220 -350 { +lab=Vout} +N 1220 -350 1220 -300 { +lab=Vout} +N 850 -380 950 -380 { +lab=Vout} +N 290 -100 290 -90 {lab=GND} +N 290 -190 290 -160 {lab=Vin} +N 850 -330 950 -330 { +lab=Vin} +N 140 -100 140 -90 {lab=GND} +N 140 -190 140 -160 {lab=VDD} +N 220 -100 220 -90 {lab=GND} +N 220 -190 220 -160 {lab=VSS} +N 1170 -350 1170 -100 {lab=Vout} +N 360 -100 360 -90 {lab=GND} +N 360 -190 360 -160 {lab=Vref} +N 770 -380 850 -380 {lab=Vout} +N 770 -380 770 -100 {lab=Vout} +N 770 -100 1170 -100 {lab=Vout} +C {devices/code_shown.sym} 80 -590 0 0 {name=MODELS only_toplevel=true +format="tcleval( @value )" +value=" +.include $::180MCU_MODELS/design.ngspice +.lib $::180MCU_MODELS/sm141064.ngspice typical +"} +C {devices/noconn.sym} 1060 -290 2 0 {name=l3} +C {devices/lab_wire.sym} 1020 -230 0 0 {name=p12 sig_type=std_logic lab=VSS} +C {devices/lab_wire.sym} 1020 -250 0 0 {name=p13 sig_type=std_logic lab=VDD} +C {devices/capa.sym} 1220 -270 0 0 {name=C4 +m=1 +value=5p +footprint=1206 +device="ceramic capacitor"} +C {devices/vsource.sym} 290 -130 0 0 {name=V6 value=\{Vin\}} +C {devices/gnd.sym} 290 -90 0 0 {name=l5 lab=GND} +C {devices/lab_wire.sym} 290 -190 0 0 {name=p14 sig_type=std_logic lab=Vin} +C {devices/lab_wire.sym} 1220 -350 0 0 {name=p15 sig_type=std_logic lab=Vout} +C {devices/gnd.sym} 1220 -180 0 0 {name=l8 lab=GND} +C {devices/code_shown.sym} 740 -610 0 0 {name=Voltage_sources only_toplevel=true +value=" +.param VDD = 1.8 +.param VSS = 0 +.param Vref = 1 +.param Vin = 1 +"} +C {devices/vsource.sym} 140 -130 0 0 {name=V8 value=\{VDD\}} +C {devices/gnd.sym} 140 -90 0 0 {name=l12 lab=GND} +C {devices/lab_wire.sym} 140 -190 0 0 {name=p19 sig_type=std_logic lab=VDD} +C {devices/vsource.sym} 220 -130 0 0 {name=V9 value=\{VSS\}} +C {devices/gnd.sym} 220 -90 0 0 {name=l13 lab=GND} +C {devices/lab_wire.sym} 220 -190 0 0 {name=p20 sig_type=std_logic lab=VSS} +C {devices/launcher.sym} 170 -420 0 0 {name=h1 +descr="Save & Netlist & sim" +tclcommand="xschem save; xschem netlist; xschem simulate"} +C {launcher.sym} 170 -350 0 0 {name=h2 +descr="Annotate OP" +tclcommand="set show_hidden_texts 1; xschem annotate_op"} +C {devices/lab_wire.sym} 850 -330 0 0 {name=p23 sig_type=std_logic lab=Vin} +C {devices/lab_wire.sym} 1020 -270 0 0 {name=p5 sig_type=std_logic lab=Vref} +C {/foss/designs/workarea/error_amplifier_N_input/xschem/error_amplifier_N_input.sym} 1040 -350 0 0 {name=x1} +C {simulator_commands.sym} 1000 -580 0 0 {name=COMMANDS1 +simulator=ngspice +only_toplevel=false +value=" +.control +save all + +** OP simulation +op + +** All OP parameters + +let #####_M1_nmos_input_##### = 0 +let id_M1 = @m.x1.x1.xm1.m0[id] +let gm_M1 = @m.x1.x1.xm1.m0[gm] +let ro_M1 = 1/@m.x1.x1.xm1.m0[gds] +let Vgs_M1 = @m.x1.x1.xm1.m0[vgs] +let Vds_M1 = @m.x1.x1.xm1.m0[vds] +let Vsb_M1 = -@m.x1.x1.xm1.m0[vbs] +let Vdsat_M1 = @m.x1.x1.xm1.m0[vdsat] +let Vth_M1 = @m.x1.x1.xm1.m0[vth] +let ao_M1 = gm_M1*ro_M1 +let gmid_M1 = gm_M1/id_M1 +let fT_M1 = gm_M1/(6.283185*@m.x1.x1.xm1.m0[cgg]) +print #####_M1_nmos_input_##### id_M1 gm_M1 ro_M1 Vgs_M1 Vds_M1 Vsb_M1 Vdsat_M1 Vth_M1 ao_M1 gmid_M1 fT_M1 + +let #####_M2_nmos_input_##### = 0 +let id_M2 = @m.x1.x1.xm2.m0[id] +let gm_M2 = @m.x1.x1.xm2.m0[gm] +let ro_M2 = 1/@m.x1.x1.xm2.m0[gds] +let Vgs_M2 = @m.x1.x1.xm2.m0[vgs] +let Vds_M2 = @m.x1.x1.xm2.m0[vds] +let Vsb_M2 = -@m.x1.x1.xm2.m0[vbs] +let Vdsat_M2 = @m.x1.x1.xm2.m0[vdsat] +let Vth_M2 = @m.x1.x1.xm2.m0[vth] +let ao_M2 = gm_M2*ro_M2 +let gmid_M2 = gm_M2/id_M2 +let fT_M2 = gm_M2/(6.283185*@m.x1.x1.xm2.m0[cgg]) +print #####_M2_nmos_input_##### id_M2 gm_M2 ro_M2 Vgs_M2 Vds_M2 Vsb_M2 Vdsat_M2 Vth_M2 ao_M2 gmid_M2 fT_M2 + +let #####_M3_pmos_top_##### = 0 +let id_M3 = @m.x1.x1.xm3.m0[id] +let gm_M3 = @m.x1.x1.xm3.m0[gm] +let ro_M3 = 1/@m.x1.x1.xm3.m0[gds] +let Vsg_M3 = @m.x1.x1.xm3.m0[vgs] +let Vsd_M3 = @m.x1.x1.xm3.m0[vds] +let Vbs_M3 = -@m.x1.x1.xm3.m0[vbs] +let Vdsat_M3 = @m.x1.x1.xm3.m0[vdsat] +let Vth_M3 = @m.x1.x1.xm3.m0[vth] +let ao_M3 = gm_M3*ro_M3 +let gmid_M3 = gm_M3/id_M3 +let fT_M3 = gm_M3/(6.283185*@m.x1.x1.xm3.m0[cgg]) +print #####_M3_pmos_top_##### id_M3 gm_M3 ro_M3 Vsg_M3 Vsd_M3 Vbs_M3 Vdsat_M3 Vth_M3 ao_M3 gmid_M3 fT_M3 + +let #####_M4_pmos_top_##### = 0 +let id_M4 = @m.x1.x1.xm4.m0[id] +let gm_M4 = @m.x1.x1.xm4.m0[gm] +let ro_M4 = 1/@m.x1.x1.xm4.m0[gds] +let Vsg_M4 = @m.x1.x1.xm4.m0[vgs] +let Vsd_M4 = @m.x1.x1.xm4.m0[vds] +let Vbs_M4 = -@m.x1.x1.xm4.m0[vbs] +let Vdsat_M4 = @m.x1.x1.xm4.m0[vdsat] +let Vth_M4 = @m.x1.x1.xm4.m0[vth] +let ao_M4 = gm_M4*ro_M4 +let gmid_M4 = gm_M4/id_M4 +let fT_M4 = gm_M4/(6.283185*@m.x1.x1.xm4.m0[cgg]) +print #####_M4_pmos_top_##### id_M4 gm_M4 ro_M4 Vsg_M4 Vsd_M4 Vbs_M4 Vdsat_M4 Vth_M4 ao_M4 gmid_M4 fT_M4 + +let #####_M5_pmos_out_##### = 0 +let id_M5 = @m.x1.x1.xm5.m0[id] +let gm_M5 = @m.x1.x1.xm5.m0[gm] +let ro_M5 = 1/@m.x1.x1.xm5.m0[gds] +let Vsg_M5 = @m.x1.x1.xm5.m0[vgs] +let Vsd_M5 = @m.x1.x1.xm5.m0[vds] +let Vbs_M5 = -@m.x1.x1.xm5.m0[vbs] +let Vdsat_M5 = @m.x1.x1.xm5.m0[vdsat] +let Vth_M5 = @m.x1.x1.xm5.m0[vth] +let ao_M5 = gm_M5*ro_M5 +let gmid_M5 = gm_M5/id_M5 +let fT_M5 = gm_M5/(6.283185*@m.x1.x1.xm5.m0[cgg]) +print #####_M5_pmos_out_##### id_M5 gm_M5 ro_M5 Vsg_M5 Vsd_M5 Vbs_M5 Vdsat_M5 Vth_M5 ao_M5 gmid_M5 fT_M5 + +let #####_M6_pmos_out_##### = 0 +let id_M6 = @m.x1.x1.xm6.m0[id] +let gm_M6 = @m.x1.x1.xm6.m0[gm] +let ro_M6 = 1/@m.x1.x1.xm6.m0[gds] +let Vsg_M6 = @m.x1.x1.xm6.m0[vgs] +let Vsd_M6 = @m.x1.x1.xm6.m0[vds] +let Vbs_M6 = -@m.x1.x1.xm6.m0[vbs] +let Vdsat_M6 = @m.x1.x1.xm6.m0[vdsat] +let Vth_M6 = @m.x1.x1.xm6.m0[vth] +let ao_M6 = gm_M6*ro_M6 +let gmid_M6 = gm_M6/id_M6 +let fT_M6 = gm_M6/(6.283185*@m.x1.x1.xm6.m0[cgg]) +print #####_M6_pmos_out_##### id_M6 gm_M6 ro_M6 Vsg_M6 Vsd_M6 Vbs_M6 Vdsat_M6 Vth_M6 ao_M6 gmid_M6 fT_M6 + +let #####_M7_nmos_out_##### = 0 +let id_M7 = @m.x1.x1.xm7.m0[id] +let gm_M7 = @m.x1.x1.xm7.m0[gm] +let ro_M7 = 1/@m.x1.x1.xm7.m0[gds] +let Vgs_M7 = @m.x1.x1.xm7.m0[vgs] +let Vds_M7 = @m.x1.x1.xm7.m0[vds] +let Vsb_M7 = -@m.x1.x1.xm7.m0[vbs] +let Vdsat_M7 = @m.x1.x1.xm7.m0[vdsat] +let Vth_M7 = @m.x1.x1.xm7.m0[vth] +let ao_M7 = gm_M7*ro_M7 +let gmid_M7 = gm_M7/id_M7 +let fT_M7 = gm_M7/(6.283185*@m.x1.x1.xm7.m0[cgg]) +print #####_M7_nmos_out_##### id_M7 gm_M7 ro_M7 Vgs_M7 Vds_M7 Vsb_M7 Vdsat_M7 Vth_M7 ao_M7 gmid_M7 fT_M7 + +let #####_M8_nmos_out_##### = 0 +let id_M8 = @m.x1.x1.xm8.m0[id] +let gm_M8 = @m.x1.x1.xm8.m0[gm] +let ro_M8 = 1/@m.x1.x1.xm8.m0[gds] +let Vgs_M8 = @m.x1.x1.xm8.m0[vgs] +let Vds_M8 = @m.x1.x1.xm8.m0[vds] +let Vsb_M8 = -@m.x1.x1.xm8.m0[vbs] +let Vdsat_M8 = @m.x1.x1.xm8.m0[vdsat] +let Vth_M8 = @m.x1.x1.xm8.m0[vth] +let ao_M8 = gm_M8*ro_M8 +let gmid_M8 = gm_M8/id_M8 +let fT_M8 = gm_M8/(6.283185*@m.x1.x1.xm8.m0[cgg]) +print #####_M8_nmos_out_##### id_M8 gm_M8 ro_M8 Vgs_M8 Vds_M8 Vsb_M8 Vdsat_M8 Vth_M8 ao_M8 gmid_M8 fT_M8 + +let #####_M9_nmos_bottom_##### = 0 +let id_M9 = @m.x1.x1.xm9.m0[id] +let gm_M9 = @m.x1.x1.xm9.m0[gm] +let ro_M9 = 1/@m.x1.x1.xm9.m0[gds] +let Vgs_M9 = @m.x1.x1.xm9.m0[vgs] +let Vds_M9 = @m.x1.x1.xm9.m0[vds] +let Vsb_M9 = -@m.x1.x1.xm9.m0[vbs] +let Vdsat_M9 = @m.x1.x1.xm9.m0[vdsat] +let Vth_M9 = @m.x1.x1.xm9.m0[vth] +let ao_M9 = gm_M9*ro_M9 +let gmid_M9 = gm_M9/id_M9 +let fT_M9 = gm_M9/(6.283185*@m.x1.x1.xm9.m0[cgg]) +print #####_M9_nmos_bottom_##### id_M9 gm_M9 ro_M9 Vgs_M9 Vds_M9 Vsb_M9 Vdsat_M9 Vth_M9 ao_M9 gmid_M9 fT_M9 + +let #####_M10_nmos_bottom_##### = 0 +let id_M10 = @m.x1.x1.xm10.m0[id] +let gm_M10 = @m.x1.x1.xm10.m0[gm] +let ro_M10 = 1/@m.x1.x1.xm10.m0[gds] +let Vgs_M10 = @m.x1.x1.xm10.m0[vgs] +let Vds_M10 = @m.x1.x1.xm10.m0[vds] +let Vsb_M10 = @m.x1.x1.xm10.m0[vbs] +let Vdsat_M10 = @m.x1.x1.xm10.m0[vdsat] +let Vth_M10 = @m.x1.x1.xm10.m0[vth] +let ao_M10 = gm_M10*ro_M10 +let gmid_M10 = gm_M10/id_M10 +let fT_M10 = gm_M10/(6.283185*@m.x1.x1.xm10.m0[cgg]) +print #####_M10_nmos_bottom_##### id_M10 gm_M10 ro_M10 Vgs_M10 Vds_M10 Vsb_M10 Vdsat_M10 Vth_M10 ao_M10 gmid_M10 fT_M10 + +let #####_M11_nmos_mirror_##### = 0 +let id_M11 = @m.x1.x1.xm11.m0[id] +let gm_M11 = @m.x1.x1.xm11.m0[gm] +let ro_M11 = 1/@m.x1.x1.xm11.m0[gds] +let Vgs_M11 = @m.x1.x1.xm11.m0[vgs] +let Vds_M11 = @m.x1.x1.xm11.m0[vds] +let Vsb_M11 = -@m.x1.x1.xm11.m0[vbs] +let Vdsat_M11 = @m.x1.x1.xm11.m0[vdsat] +let Vth_M11 = @m.x1.x1.xm11.m0[vth] +let ao_M11 = gm_M11*ro_M11 +let gmid_M11 = gm_M11/id_M11 +let fT_M11 = gm_M11/(6.283185*@m.x1.x1.xm11.m0[cgg]) +print #####_M11_nmos_mirror_##### id_M11 gm_M11 ro_M11 Vgs_M11 Vds_M11 Vsb_M11 Vdsat_M11 Vth_M11 ao_M11 gmid_M11 fT_M11 + +** Custom output +let #####_Custom_output_##### = 0 + +* Power +let power = abs(i(V8))*VDD + +* DC_gain +let r1 = ao_M6*ro_M4 +let r2 = ao_M8*((ro_M1*ro_M10)/(ro_M1+ro_M10)) +let Rout = (r1*r2)/(r1+r2) +let Av = db(gm_M1*Rout) +* Bandwidth +let BW = 1/(Rout*1e-12*6.283185) + +print #####_Custom_output_##### Av BW Rout power gm_M1 ro_M1 ao_M6 ro_M4 ao_M8 ro_M10 + +write folded_cascode_op.raw + +.endc +"} +C {devices/vsource.sym} 360 -130 0 0 {name=V2 value=\{Vref\}} +C {devices/gnd.sym} 360 -90 0 0 {name=l1 lab=GND} +C {devices/lab_wire.sym} 360 -190 0 0 {name=p1 sig_type=std_logic lab=Vref} diff --git a/blocks/composite/folded_cascode/designs/gf180/error_amplifier_N_input/xschem/folded_cascode_os.sch b/blocks/composite/folded_cascode/designs/gf180/error_amplifier_N_input/xschem/folded_cascode_os.sch new file mode 100644 index 00000000..7f77b84e --- /dev/null +++ b/blocks/composite/folded_cascode/designs/gf180/error_amplifier_N_input/xschem/folded_cascode_os.sch @@ -0,0 +1,282 @@ +v {xschem version=3.4.7 file_version=1.2} +G {} +K {} +V {} +S {} +E {} +N 240 -60 240 -50 {lab=GND} +N 240 -150 240 -120 {lab=Vref} +N 80 -60 80 -50 {lab=GND} +N 80 -150 80 -120 {lab=VDD} +N 160 -60 160 -50 {lab=GND} +N 160 -150 160 -120 {lab=VSS} +N 960 -110 960 -50 { +lab=GND} +N 870 -220 960 -220 { +lab=Vout} +N 960 -220 960 -170 { +lab=Vout} +N 570 -250 670 -250 { +lab=#net1} +N 570 -320 570 -250 { +lab=#net1} +N 960 -320 960 -220 { +lab=Vout} +N 570 -60 570 -50 {lab=GND} +N 570 -150 570 -120 {lab=Vin} +N 570 -190 570 -150 { +lab=Vin} +N 590 -200 690 -200 { +lab=Vin} +N 670 -250 690 -250 {lab=#net1} +N 570 -200 590 -200 {lab=Vin} +N 570 -200 570 -190 {lab=Vin} +N 570 -320 650 -320 {lab=#net1} +N 710 -320 800 -320 {lab=#net2} +N 860 -320 960 -320 {lab=Vout} +C {devices/vsource.sym} 240 -90 0 0 {name=V1 value=\{Vref\}} +C {devices/gnd.sym} 240 -50 0 0 {name=l2 lab=GND} +C {devices/launcher.sym} 120 -370 0 0 {name=h3 +descr="Save & Netlist & sim" +tclcommand="xschem save; xschem netlist; xschem simulate"} +C {devices/lab_wire.sym} 240 -150 0 0 {name=p1 sig_type=std_logic lab=Vref} +C {devices/noconn.sym} 800 -160 0 1 {name=l4} +C {devices/lab_wire.sym} 760 -100 0 0 {name=p7 sig_type=std_logic lab=VSS} +C {devices/lab_wire.sym} 760 -120 0 0 {name=p8 sig_type=std_logic lab=VDD} +C {devices/vsource.sym} 80 -90 0 0 {name=V8 value=\{VDD\}} +C {devices/gnd.sym} 80 -50 0 0 {name=l5 lab=GND} +C {devices/lab_wire.sym} 80 -150 0 0 {name=p9 sig_type=std_logic lab=VDD} +C {devices/vsource.sym} 160 -90 0 0 {name=V5 value=\{VSS\}} +C {devices/gnd.sym} 160 -50 0 0 {name=l6 lab=GND} +C {devices/lab_wire.sym} 160 -150 0 0 {name=p10 sig_type=std_logic lab=VSS} +C {devices/capa.sym} 960 -140 0 0 {name=C1 +m=1 +value=5p +footprint=1206 +device="ceramic capacitor"} +C {devices/vsource.sym} 570 -90 0 0 {name=Vin value=\{Vin\}} +C {devices/gnd.sym} 570 -50 0 0 {name=l7 lab=GND} +C {devices/lab_wire.sym} 570 -150 0 0 {name=p11 sig_type=std_logic lab=Vin} +C {devices/lab_wire.sym} 960 -220 0 0 {name=p12 sig_type=std_logic lab=Vout} +C {devices/gnd.sym} 960 -50 0 0 {name=l8 lab=GND} +C {devices/code_shown.sym} 40 -500 0 0 {name=MODELS only_toplevel=true +format="tcleval( @value )" +value=" +.include $::180MCU_MODELS/design.ngspice +.lib $::180MCU_MODELS/sm141064.ngspice typical +"} +C {launcher.sym} 120 -300 0 0 {name=h1 +descr="Annotate OP" +tclcommand="set show_hidden_texts 1; xschem annotate_op"} +C {simulator_commands.sym} 820 -480 0 0 {name=COMMANDS +simulator=ngspice +only_toplevel=false +value=" +.control +save all + +** OP simulation +op +** Output swing +dc Vsweep 0 1.8 0.01 + +** All OP parameters +setplot op1 + +let #####_M1_nmos_input_##### = 0 +let id_M1 = @m.x1.x1.xm1.m0[id] +let gm_M1 = @m.x1.x1.xm1.m0[gm] +let ro_M1 = 1/@m.x1.x1.xm1.m0[gds] +let Vgs_M1 = @m.x1.x1.xm1.m0[vgs] +let Vds_M1 = @m.x1.x1.xm1.m0[vds] +let Vsb_M1 = -@m.x1.x1.xm1.m0[vbs] +let Vdsat_M1 = @m.x1.x1.xm1.m0[vdsat] +let Vth_M1 = @m.x1.x1.xm1.m0[vth] +let ao_M1 = gm_M1*ro_M1 +let gmid_M1 = gm_M1/id_M1 +let fT_M1 = gm_M1/(6.283185*@m.x1.x1.xm1.m0[cgg]) +print #####_M1_nmos_input_##### id_M1 gm_M1 ro_M1 Vgs_M1 Vds_M1 Vsb_M1 Vdsat_M1 Vth_M1 ao_M1 gmid_M1 fT_M1 + +let #####_M2_nmos_input_##### = 0 +let id_M2 = @m.x1.x1.xm2.m0[id] +let gm_M2 = @m.x1.x1.xm2.m0[gm] +let ro_M2 = 1/@m.x1.x1.xm2.m0[gds] +let Vgs_M2 = @m.x1.x1.xm2.m0[vgs] +let Vds_M2 = @m.x1.x1.xm2.m0[vds] +let Vsb_M2 = -@m.x1.x1.xm2.m0[vbs] +let Vdsat_M2 = @m.x1.x1.xm2.m0[vdsat] +let Vth_M2 = @m.x1.x1.xm2.m0[vth] +let ao_M2 = gm_M2*ro_M2 +let gmid_M2 = gm_M2/id_M2 +let fT_M2 = gm_M2/(6.283185*@m.x1.x1.xm2.m0[cgg]) +print #####_M2_nmos_input_##### id_M2 gm_M2 ro_M2 Vgs_M2 Vds_M2 Vsb_M2 Vdsat_M2 Vth_M2 ao_M2 gmid_M2 fT_M2 + +let #####_M3_pmos_top_##### = 0 +let id_M3 = @m.x1.x1.xm3.m0[id] +let gm_M3 = @m.x1.x1.xm3.m0[gm] +let ro_M3 = 1/@m.x1.x1.xm3.m0[gds] +let Vsg_M3 = @m.x1.x1.xm3.m0[vgs] +let Vsd_M3 = @m.x1.x1.xm3.m0[vds] +let Vbs_M3 = -@m.x1.x1.xm3.m0[vbs] +let Vdsat_M3 = @m.x1.x1.xm3.m0[vdsat] +let Vth_M3 = @m.x1.x1.xm3.m0[vth] +let ao_M3 = gm_M3*ro_M3 +let gmid_M3 = gm_M3/id_M3 +let fT_M3 = gm_M3/(6.283185*@m.x1.x1.xm3.m0[cgg]) +print #####_M3_pmos_top_##### id_M3 gm_M3 ro_M3 Vsg_M3 Vsd_M3 Vbs_M3 Vdsat_M3 Vth_M3 ao_M3 gmid_M3 fT_M3 + +let #####_M4_pmos_top_##### = 0 +let id_M4 = @m.x1.x1.xm4.m0[id] +let gm_M4 = @m.x1.x1.xm4.m0[gm] +let ro_M4 = 1/@m.x1.x1.xm4.m0[gds] +let Vsg_M4 = @m.x1.x1.xm4.m0[vgs] +let Vsd_M4 = @m.x1.x1.xm4.m0[vds] +let Vbs_M4 = -@m.x1.x1.xm4.m0[vbs] +let Vdsat_M4 = @m.x1.x1.xm4.m0[vdsat] +let Vth_M4 = @m.x1.x1.xm4.m0[vth] +let ao_M4 = gm_M4*ro_M4 +let gmid_M4 = gm_M4/id_M4 +let fT_M4 = gm_M4/(6.283185*@m.x1.x1.xm4.m0[cgg]) +print #####_M4_pmos_top_##### id_M4 gm_M4 ro_M4 Vsg_M4 Vsd_M4 Vbs_M4 Vdsat_M4 Vth_M4 ao_M4 gmid_M4 fT_M4 + +let #####_M5_pmos_out_##### = 0 +let id_M5 = @m.x1.x1.xm5.m0[id] +let gm_M5 = @m.x1.x1.xm5.m0[gm] +let ro_M5 = 1/@m.x1.x1.xm5.m0[gds] +let Vsg_M5 = @m.x1.x1.xm5.m0[vgs] +let Vsd_M5 = @m.x1.x1.xm5.m0[vds] +let Vbs_M5 = -@m.x1.x1.xm5.m0[vbs] +let Vdsat_M5 = @m.x1.x1.xm5.m0[vdsat] +let Vth_M5 = @m.x1.x1.xm5.m0[vth] +let ao_M5 = gm_M5*ro_M5 +let gmid_M5 = gm_M5/id_M5 +let fT_M5 = gm_M5/(6.283185*@m.x1.x1.xm5.m0[cgg]) +print #####_M5_pmos_out_##### id_M5 gm_M5 ro_M5 Vsg_M5 Vsd_M5 Vbs_M5 Vdsat_M5 Vth_M5 ao_M5 gmid_M5 fT_M5 + +let #####_M6_pmos_out_##### = 0 +let id_M6 = @m.x1.x1.xm6.m0[id] +let gm_M6 = @m.x1.x1.xm6.m0[gm] +let ro_M6 = 1/@m.x1.x1.xm6.m0[gds] +let Vsg_M6 = @m.x1.x1.xm6.m0[vgs] +let Vsd_M6 = @m.x1.x1.xm6.m0[vds] +let Vbs_M6 = -@m.x1.x1.xm6.m0[vbs] +let Vdsat_M6 = @m.x1.x1.xm6.m0[vdsat] +let Vth_M6 = @m.x1.x1.xm6.m0[vth] +let ao_M6 = gm_M6*ro_M6 +let gmid_M6 = gm_M6/id_M6 +let fT_M6 = gm_M6/(6.283185*@m.x1.x1.xm6.m0[cgg]) +print #####_M6_pmos_out_##### id_M6 gm_M6 ro_M6 Vsg_M6 Vsd_M6 Vbs_M6 Vdsat_M6 Vth_M6 ao_M6 gmid_M6 fT_M6 + +let #####_M7_nmos_out_##### = 0 +let id_M7 = @m.x1.x1.xm7.m0[id] +let gm_M7 = @m.x1.x1.xm7.m0[gm] +let ro_M7 = 1/@m.x1.x1.xm7.m0[gds] +let Vgs_M7 = @m.x1.x1.xm7.m0[vgs] +let Vds_M7 = @m.x1.x1.xm7.m0[vds] +let Vsb_M7 = -@m.x1.x1.xm7.m0[vbs] +let Vdsat_M7 = @m.x1.x1.xm7.m0[vdsat] +let Vth_M7 = @m.x1.x1.xm7.m0[vth] +let ao_M7 = gm_M7*ro_M7 +let gmid_M7 = gm_M7/id_M7 +let fT_M7 = gm_M7/(6.283185*@m.x1.x1.xm7.m0[cgg]) +print #####_M7_nmos_out_##### id_M7 gm_M7 ro_M7 Vgs_M7 Vds_M7 Vsb_M7 Vdsat_M7 Vth_M7 ao_M7 gmid_M7 fT_M7 + +let #####_M8_nmos_out_##### = 0 +let id_M8 = @m.x1.x1.xm8.m0[id] +let gm_M8 = @m.x1.x1.xm8.m0[gm] +let ro_M8 = 1/@m.x1.x1.xm8.m0[gds] +let Vgs_M8 = @m.x1.x1.xm8.m0[vgs] +let Vds_M8 = @m.x1.x1.xm8.m0[vds] +let Vsb_M8 = -@m.x1.x1.xm8.m0[vbs] +let Vdsat_M8 = @m.x1.x1.xm8.m0[vdsat] +let Vth_M8 = @m.x1.x1.xm8.m0[vth] +let ao_M8 = gm_M8*ro_M8 +let gmid_M8 = gm_M8/id_M8 +let fT_M8 = gm_M8/(6.283185*@m.x1.x1.xm8.m0[cgg]) +print #####_M8_nmos_out_##### id_M8 gm_M8 ro_M8 Vgs_M8 Vds_M8 Vsb_M8 Vdsat_M8 Vth_M8 ao_M8 gmid_M8 fT_M8 + +let #####_M9_nmos_bottom_##### = 0 +let id_M9 = @m.x1.x1.xm9.m0[id] +let gm_M9 = @m.x1.x1.xm9.m0[gm] +let ro_M9 = 1/@m.x1.x1.xm9.m0[gds] +let Vgs_M9 = @m.x1.x1.xm9.m0[vgs] +let Vds_M9 = @m.x1.x1.xm9.m0[vds] +let Vsb_M9 = -@m.x1.x1.xm9.m0[vbs] +let Vdsat_M9 = @m.x1.x1.xm9.m0[vdsat] +let Vth_M9 = @m.x1.x1.xm9.m0[vth] +let ao_M9 = gm_M9*ro_M9 +let gmid_M9 = gm_M9/id_M9 +let fT_M9 = gm_M9/(6.283185*@m.x1.x1.xm9.m0[cgg]) +print #####_M9_nmos_bottom_##### id_M9 gm_M9 ro_M9 Vgs_M9 Vds_M9 Vsb_M9 Vdsat_M9 Vth_M9 ao_M9 gmid_M9 fT_M9 + +let #####_M10_nmos_bottom_##### = 0 +let id_M10 = @m.x1.x1.xm10.m0[id] +let gm_M10 = @m.x1.x1.xm10.m0[gm] +let ro_M10 = 1/@m.x1.x1.xm10.m0[gds] +let Vgs_M10 = @m.x1.x1.xm10.m0[vgs] +let Vds_M10 = @m.x1.x1.xm10.m0[vds] +let Vsb_M10 = @m.x1.x1.xm10.m0[vbs] +let Vdsat_M10 = @m.x1.x1.xm10.m0[vdsat] +let Vth_M10 = @m.x1.x1.xm10.m0[vth] +let ao_M10 = gm_M10*ro_M10 +let gmid_M10 = gm_M10/id_M10 +let fT_M10 = gm_M10/(6.283185*@m.x1.x1.xm10.m0[cgg]) +print #####_M10_nmos_bottom_##### id_M10 gm_M10 ro_M10 Vgs_M10 Vds_M10 Vsb_M10 Vdsat_M10 Vth_M10 ao_M10 gmid_M10 fT_M10 + +let #####_M11_nmos_mirror_##### = 0 +let id_M11 = @m.x1.x1.xm11.m0[id] +let gm_M11 = @m.x1.x1.xm11.m0[gm] +let ro_M11 = 1/@m.x1.x1.xm11.m0[gds] +let Vgs_M11 = @m.x1.x1.xm11.m0[vgs] +let Vds_M11 = @m.x1.x1.xm11.m0[vds] +let Vsb_M11 = -@m.x1.x1.xm11.m0[vbs] +let Vdsat_M11 = @m.x1.x1.xm11.m0[vdsat] +let Vth_M11 = @m.x1.x1.xm11.m0[vth] +let ao_M11 = gm_M11*ro_M11 +let gmid_M11 = gm_M11/id_M11 +let fT_M11 = gm_M11/(6.283185*@m.x1.x1.xm11.m0[cgg]) +print #####_M11_nmos_mirror_##### id_M11 gm_M11 ro_M11 Vgs_M11 Vds_M11 Vsb_M11 Vdsat_M11 Vth_M11 ao_M11 gmid_M11 fT_M11 + +** Custom output +let #####_Custom_output_##### = 0 +* Power +let power = abs(i(V8))*VDD +* DC_gain +let r1 = ao_M6*ro_M4 +let r2 = ao_M8*((ro_M1*ro_M10)/(ro_M1+ro_M10)) +let Rout = (r1*r2)/(r1+r2) +let Av = db(gm_M1*Rout) +* Bandwidth +let BW = 1/(Rout*1e-12*6.283185) + +print #####_Custom_output_##### Av BW Rout power gm_M1 ro_M1 gm_M6 ro_M6 ro_M4 gm_M8 ro_M8 ro_M10 + +write folded_cascode_os.raw + +setplot dc1 +let dvout = deriv(v(Vout)) + +meas dc limmin when dvout=0.98 rise=1 +meas dc limmax when dvout=0.98 fall=1 + +let Output_swing = limmax - limmin + +print Output_swing +plot dvout + + + +.endc +"} +C {devices/code_shown.sym} 540 -500 0 0 {name=Voltage_sources only_toplevel=true +value=" +.param VDD = 1.8 +.param VSS = 0 +.param Vref = 1 +.param Vin = 1 +.param Vsweep = 0 +"} +C {devices/lab_wire.sym} 760 -140 0 0 {name=p4 sig_type=std_logic lab=Vref} +C {devices/vsource.sym} 830 -320 1 0 {name=Vsweep value=\{Vsweep\}} +C {devices/vsource.sym} 680 -320 3 1 {name=V3 value=\{Vin\}} +C {gf180/error_amplifier_N_input/xschem/error_amplifier_N_input.sym} 780 -220 0 0 {name=x1} diff --git a/blocks/composite/folded_cascode/designs/gf180/error_amplifier_N_input/xschem/folded_cascode_psrr.sch b/blocks/composite/folded_cascode/designs/gf180/error_amplifier_N_input/xschem/folded_cascode_psrr.sch new file mode 100644 index 00000000..a320bec3 --- /dev/null +++ b/blocks/composite/folded_cascode/designs/gf180/error_amplifier_N_input/xschem/folded_cascode_psrr.sch @@ -0,0 +1,168 @@ +v {xschem version=3.4.6 file_version=1.2} +G {} +K {} +V {} +S {} +E {} +N 110 -120 110 -100 { +lab=GND} +N 110 -220 110 -180 { +lab=VSS} +N 190 -120 190 -100 { +lab=GND} +N 110 -100 110 -80 { +lab=GND} +N 190 -220 190 -180 { +lab=VDD} +N 190 -100 190 -80 { +lab=GND} +N 270 -120 270 -100 { +lab=GND} +N 270 -220 270 -180 { +lab=Vref} +N 270 -100 270 -80 { +lab=GND} +N 850 -540 910 -540 {lab=Vout} +N 1060 -410 1060 -330 { +lab=VSS} +N 1060 -540 1060 -480 { +lab=Vout} +N 910 -540 1060 -540 { +lab=Vout} +N 490 -520 670 -520 { +lab=Vref} +N 1060 -480 1060 -470 { +lab=Vout} +N 560 -570 670 -570 { +lab=Vout} +N 560 -650 560 -570 { +lab=Vout} +N 560 -650 910 -650 { +lab=Vout} +N 910 -650 910 -540 { +lab=Vout} +C {sky130_fd_pr/corner.sym} 60 -390 0 0 {name=CORNER only_toplevel=true corner=tt} +C {simulator_commands.sym} 210 -390 0 0 {name="COMMANDS" +simulator="ngspice" +only_toplevel="false" +value=" +.param VDD=1.8 +.param Vref=1.2 +.save + +* Operation point of the folded cascode core + +*nfet + ++ @m.x1.x2.xm1.msky130_fd_pr__nfet_01v8[gm] ++ v(@m.x1.x2.xm1.msky130_fd_pr__nfet_01v8[vth]) ++ @m.x1.x2.xm1.msky130_fd_pr__nfet_01v8[gds] ++ @m.x1.x2.xm1.msky130_fd_pr__nfet_01v8[id] + ++ @m.x1.x2.xm2.msky130_fd_pr__nfet_01v8[gm] ++ v(@m.x1.x2.xm2.msky130_fd_pr__nfet_01v8[vth]) ++ @m.x1.x2.xm2.msky130_fd_pr__nfet_01v8[gds] ++ @m.x1.x2.xm2.msky130_fd_pr__nfet_01v8[id] + ++ @m.x1.x2.xm7.msky130_fd_pr__nfet_01v8[gm] ++ v(@m.x1.x2.xm7.msky130_fd_pr__nfet_01v8[vth]) ++ @m.x1.x2.xm7.msky130_fd_pr__nfet_01v8[gds] ++ @m.x1.x2.xm7.msky130_fd_pr__nfet_01v8[id] + ++ @m.x1.x2.xm8.msky130_fd_pr__nfet_01v8[gm] ++ v(@m.x1.x2.xm8.msky130_fd_pr__nfet_01v8[vth]) ++ @m.x1.x2.xm8.msky130_fd_pr__nfet_01v8[gds] ++ @m.x1.x2.xm8.msky130_fd_pr__nfet_01v8[id] + ++ @m.x1.x2.xm9.msky130_fd_pr__nfet_01v8[gm] ++ v(@m.x1.x2.xm9.msky130_fd_pr__nfet_01v8[vth]) ++ @m.x1.x2.xm9.msky130_fd_pr__nfet_01v8[gds] ++ @m.x1.x2.xm9.msky130_fd_pr__nfet_01v8[id] + ++ @m.x1.x2.xm10.msky130_fd_pr__nfet_01v8[gm] ++ v(@m.x1.x2.xm10.msky130_fd_pr__nfet_01v8[vth]) ++ @m.x1.x2.xm10.msky130_fd_pr__nfet_01v8[gds] ++ @m.x1.x2.xm10.msky130_fd_pr__nfet_01v8[id] + ++ @m.x1.x2.xm11.msky130_fd_pr__nfet_01v8[gm] ++ v(@m.x1.x2.xm11.msky130_fd_pr__nfet_01v8[vth]) ++ @m.x1.x2.xm11.msky130_fd_pr__nfet_01v8[gds] ++ @m.x1.x2.xm11.msky130_fd_pr__nfet_01v8[id] + +*pfet + ++ @m.x1.x2.xm3.msky130_fd_pr__pfet_01v8_lvt[gm] ++ v(@m.x1.x2.xm3.msky130_fd_pr__pfet_01v8_lvt[vth]) ++ @m.x1.x2.xm3.msky130_fd_pr__pfet_01v8_lvt[gds] ++ @m.x1.x2.xm3.msky130_fd_pr__pfet_01v8_lvt[id] + ++ @m.x1.x2.xm4.msky130_fd_pr__pfet_01v8_lvt[gm] ++ v(@m.x1.x2.xm4.msky130_fd_pr__pfet_01v8_lvt[vth]) ++ @m.x1.x2.xm4.msky130_fd_pr__pfet_01v8_lvt[gds] ++ @m.x1.x2.xm4.msky130_fd_pr__pfet_01v8_lvt[id] + ++ @m.x1.x2.xm5.msky130_fd_pr__pfet_01v8_lvt[gm] ++ v(@m.x1.x2.xm5.msky130_fd_pr__pfet_01v8_lvt[vth]) ++ @m.x1.x2.xm5.msky130_fd_pr__pfet_01v8_lvt[gds] ++ @m.x1.x2.xm5.msky130_fd_pr__pfet_01v8_lvt[id] + ++ @m.x1.x2.xm6.msky130_fd_pr__pfet_01v8_lvt[gm] ++ v(@m.x1.x2.xm6.msky130_fd_pr__pfet_01v8_lvt[vth]) ++ @m.x1.x2.xm6.msky130_fd_pr__pfet_01v8_lvt[gds] ++ @m.x1.x2.xm6.msky130_fd_pr__pfet_01v8_lvt[id] + +* Operation point of the folded cascode bias + + ++ abstol=1e-14 savecurrents +.control + save all + op + remzerovec + write folded_cascode_psrr.raw + set appendwrite + + * run ac simulation + ac dec 20 1 100e7 + + * measure parameters + let vout_mag = db(abs(v(Vout))) + let vout_phase = cph(v(Vout)) * 180/pi + + meas ac PSR find vout_mag at=1e2 + + + plot vout_mag + + write folded_cascode_psrr.raw +.endc +"} +C {devices/vsource.sym} 110 -150 0 0 {name=V0 value=0 savecurrent=false} +C {devices/gnd.sym} 110 -80 0 0 {name=l5 lab=GND} +C {devices/vsource.sym} 190 -150 0 0 {name=V2 value="dc \{VDD\} ac 1" savecurrent=false} +C {devices/lab_wire.sym} 110 -220 0 0 {name=p25 sig_type=std_logic lab=VSS} +C {devices/lab_wire.sym} 190 -220 0 0 {name=p26 sig_type=std_logic lab=VDD} +C {devices/gnd.sym} 190 -80 0 0 {name=l6 lab=GND} +C {devices/vsource.sym} 270 -150 0 0 {name=V4 value=\{Vref\} savecurrent=false} +C {devices/lab_wire.sym} 270 -220 0 0 {name=p27 sig_type=std_logic lab=Vref} +C {devices/gnd.sym} 270 -80 0 0 {name=l7 lab=GND} +C {devices/launcher.sym} 160 -510 0 0 {name=h15 +descr="Annotate OP" +tclcommand="set show_hidden_texts 1; xschem annotate_op" +} +C {devices/launcher.sym} 160 -580 0 0 {name=h3 +descr="Netlist & sim" +tclcommand="xschem netlist; xschem simulate"} +C {lab_pin.sym} 740 -460 2 1 {name=p7 sig_type=std_logic lab=Vref} +C {lab_pin.sym} 740 -440 2 1 {name=p8 sig_type=std_logic lab=VDD} +C {lab_pin.sym} 740 -420 2 1 {name=p9 sig_type=std_logic lab=VSS} +C {lab_pin.sym} 490 -520 2 1 {name=p10 sig_type=std_logic lab=Vref} +C {capa.sym} 1060 -440 0 0 {name=C1 +m=1 +value=1p +footprint=1206 +device="ceramic capacitor"} +C {lab_pin.sym} 1060 -330 2 1 {name=p1 sig_type=std_logic lab=VSS} +C {noconn.sym} 780 -480 2 0 {name=l1} +C {lab_pin.sym} 1060 -540 0 1 {name=p2 sig_type=std_logic lab=Vout} +C {/foss/designs/chipathon_2025/designs/sky130/error_amplifier_N_input/xschem/error_amplifier_N_input.sym} 760 -540 0 0 {name=x1} diff --git a/blocks/composite/folded_cascode/designs/gf180/error_amplifier_N_input/xschem/folded_cascode_sr.sch b/blocks/composite/folded_cascode/designs/gf180/error_amplifier_N_input/xschem/folded_cascode_sr.sch new file mode 100644 index 00000000..71c2fb78 --- /dev/null +++ b/blocks/composite/folded_cascode/designs/gf180/error_amplifier_N_input/xschem/folded_cascode_sr.sch @@ -0,0 +1,190 @@ +v {xschem version=3.4.6 file_version=1.2} +G {} +K {} +V {} +S {} +E {} +N 110 -120 110 -100 { +lab=GND} +N 110 -220 110 -180 { +lab=VSS} +N 190 -120 190 -100 { +lab=GND} +N 110 -100 110 -80 { +lab=GND} +N 190 -220 190 -180 { +lab=VDD} +N 190 -100 190 -80 { +lab=GND} +N 270 -120 270 -100 { +lab=GND} +N 270 -220 270 -180 { +lab=Vref} +N 270 -100 270 -80 { +lab=GND} +N 850 -540 910 -540 {lab=Vout} +N 1060 -410 1060 -330 { +lab=VSS} +N 1060 -540 1060 -480 { +lab=Vout} +N 910 -540 1060 -540 { +lab=Vout} +N 490 -520 670 -520 { +lab=Vin} +N 1060 -480 1060 -470 { +lab=Vout} +N 560 -570 670 -570 { +lab=Vout} +N 560 -650 560 -570 { +lab=Vout} +N 560 -650 910 -650 { +lab=Vout} +N 910 -650 910 -540 { +lab=Vout} +N 350 -220 350 -180 { +lab=Vin} +N 350 -120 350 -100 { +lab=GND} +N 350 -100 350 -80 { +lab=GND} +C {sky130_fd_pr/corner.sym} 60 -390 0 0 {name=CORNER only_toplevel=true corner=tt} +C {simulator_commands.sym} 210 -390 0 0 {name="COMMANDS" +simulator="ngspice" +only_toplevel="false" +value=" +.param VDD=1.8 +.param Vref=1.2 +.param V1 = 0.01 +.param V2 = 1.8 +.param TR = 50n +.param TF = TR +.param PER = 2m +.param TD = 0.05*PER +.param PWM = PER/2 +.save + +* Operation point of the folded cascode core + +*nfet + ++ @m.x1.x2.xm1.msky130_fd_pr__nfet_01v8[gm] ++ v(@m.x1.x2.xm1.msky130_fd_pr__nfet_01v8[vth]) ++ @m.x1.x2.xm1.msky130_fd_pr__nfet_01v8[gds] ++ @m.x1.x2.xm1.msky130_fd_pr__nfet_01v8[id] + ++ @m.x1.x2.xm2.msky130_fd_pr__nfet_01v8[gm] ++ v(@m.x1.x2.xm2.msky130_fd_pr__nfet_01v8[vth]) ++ @m.x1.x2.xm2.msky130_fd_pr__nfet_01v8[gds] ++ @m.x1.x2.xm2.msky130_fd_pr__nfet_01v8[id] + ++ @m.x1.x2.xm7.msky130_fd_pr__nfet_01v8[gm] ++ v(@m.x1.x2.xm7.msky130_fd_pr__nfet_01v8[vth]) ++ @m.x1.x2.xm7.msky130_fd_pr__nfet_01v8[gds] ++ @m.x1.x2.xm7.msky130_fd_pr__nfet_01v8[id] + ++ @m.x1.x2.xm8.msky130_fd_pr__nfet_01v8[gm] ++ v(@m.x1.x2.xm8.msky130_fd_pr__nfet_01v8[vth]) ++ @m.x1.x2.xm8.msky130_fd_pr__nfet_01v8[gds] ++ @m.x1.x2.xm8.msky130_fd_pr__nfet_01v8[id] + ++ @m.x1.x2.xm9.msky130_fd_pr__nfet_01v8[gm] ++ v(@m.x1.x2.xm9.msky130_fd_pr__nfet_01v8[vth]) ++ @m.x1.x2.xm9.msky130_fd_pr__nfet_01v8[gds] ++ @m.x1.x2.xm9.msky130_fd_pr__nfet_01v8[id] + ++ @m.x1.x2.xm10.msky130_fd_pr__nfet_01v8[gm] ++ v(@m.x1.x2.xm10.msky130_fd_pr__nfet_01v8[vth]) ++ @m.x1.x2.xm10.msky130_fd_pr__nfet_01v8[gds] ++ @m.x1.x2.xm10.msky130_fd_pr__nfet_01v8[id] + ++ @m.x1.x2.xm11.msky130_fd_pr__nfet_01v8[gm] ++ v(@m.x1.x2.xm11.msky130_fd_pr__nfet_01v8[vth]) ++ @m.x1.x2.xm11.msky130_fd_pr__nfet_01v8[gds] ++ @m.x1.x2.xm11.msky130_fd_pr__nfet_01v8[id] + +*pfet + ++ @m.x1.x2.xm3.msky130_fd_pr__pfet_01v8_lvt[gm] ++ v(@m.x1.x2.xm3.msky130_fd_pr__pfet_01v8_lvt[vth]) ++ @m.x1.x2.xm3.msky130_fd_pr__pfet_01v8_lvt[gds] ++ @m.x1.x2.xm3.msky130_fd_pr__pfet_01v8_lvt[id] + ++ @m.x1.x2.xm4.msky130_fd_pr__pfet_01v8_lvt[gm] ++ v(@m.x1.x2.xm4.msky130_fd_pr__pfet_01v8_lvt[vth]) ++ @m.x1.x2.xm4.msky130_fd_pr__pfet_01v8_lvt[gds] ++ @m.x1.x2.xm4.msky130_fd_pr__pfet_01v8_lvt[id] + ++ @m.x1.x2.xm5.msky130_fd_pr__pfet_01v8_lvt[gm] ++ v(@m.x1.x2.xm5.msky130_fd_pr__pfet_01v8_lvt[vth]) ++ @m.x1.x2.xm5.msky130_fd_pr__pfet_01v8_lvt[gds] ++ @m.x1.x2.xm5.msky130_fd_pr__pfet_01v8_lvt[id] + ++ @m.x1.x2.xm6.msky130_fd_pr__pfet_01v8_lvt[gm] ++ v(@m.x1.x2.xm6.msky130_fd_pr__pfet_01v8_lvt[vth]) ++ @m.x1.x2.xm6.msky130_fd_pr__pfet_01v8_lvt[gds] ++ @m.x1.x2.xm6.msky130_fd_pr__pfet_01v8_lvt[id] + +* Operation point of the folded cascode bias + + ++ abstol=1e-14 savecurrents +.control + save all + op + remzerovec + write folded_cascode_sr.raw + set appendwrite + + * run ac simulation + tran 25n 2m + + * measure parameters + let dVout = deriv(Vout)/1e6 + meas tran SRplus MAX dVout + meas tran SRminus MIN dVout + + meas tran Voutmax MAX Vout + meas tran Voutmin MIN Vout + let Output_swing = Voutmax-Voutmin + print Output_swing + + plot Vout Vin + + write folded_cascode_sr.raw +.endc +" +} +C {devices/vsource.sym} 110 -150 0 0 {name=V0 value=0 savecurrent=false} +C {devices/gnd.sym} 110 -80 0 0 {name=l5 lab=GND} +C {devices/vsource.sym} 190 -150 0 0 {name=V2 value=\{VDD\} savecurrent=false} +C {devices/lab_wire.sym} 110 -220 0 0 {name=p25 sig_type=std_logic lab=VSS} +C {devices/lab_wire.sym} 190 -220 0 0 {name=p26 sig_type=std_logic lab=VDD} +C {devices/gnd.sym} 190 -80 0 0 {name=l6 lab=GND} +C {devices/vsource.sym} 270 -150 0 0 {name=V4 value=\{Vref\} savecurrent=false} +C {devices/lab_wire.sym} 270 -220 0 0 {name=p27 sig_type=std_logic lab=Vref} +C {devices/gnd.sym} 270 -80 0 0 {name=l7 lab=GND} +C {devices/launcher.sym} 160 -510 0 0 {name=h15 +descr="Annotate OP" +tclcommand="set show_hidden_texts 1; xschem annotate_op" +} +C {devices/launcher.sym} 160 -580 0 0 {name=h3 +descr="Netlist & sim" +tclcommand="xschem netlist; xschem simulate"} +C {lab_pin.sym} 740 -460 2 1 {name=p7 sig_type=std_logic lab=Vref} +C {lab_pin.sym} 740 -440 2 1 {name=p8 sig_type=std_logic lab=VDD} +C {lab_pin.sym} 740 -420 2 1 {name=p9 sig_type=std_logic lab=VSS} +C {lab_pin.sym} 490 -520 2 1 {name=p10 sig_type=std_logic lab=Vin} +C {capa.sym} 1060 -440 0 0 {name=C1 +m=1 +value=1p +footprint=1206 +device="ceramic capacitor"} +C {lab_pin.sym} 1060 -330 2 1 {name=p1 sig_type=std_logic lab=VSS} +C {noconn.sym} 780 -480 2 0 {name=l1} +C {lab_pin.sym} 1060 -540 0 1 {name=p2 sig_type=std_logic lab=Vout} +C {vsource.sym} 350 -150 0 0 {name=V3 value="pulse(\{V1\} \{V2\} \{TD\} \{TR\} \{TF\} \{PWM\} \{PER\})" savecurrent=false +*pulse(0.01 1.8 \{TD\} \{TR\} \{TF\} \{PWM\} \{PER\}) +*sin(0.9 0.8 1k)} +C {devices/lab_wire.sym} 350 -220 0 0 {name=p3 sig_type=std_logic lab=Vin} +C {devices/gnd.sym} 350 -80 0 0 {name=l2 lab=GND} +C {/foss/designs/chipathon_2025/designs/sky130/error_amplifier_N_input/xschem/error_amplifier_N_input.sym} 760 -540 0 0 {name=x1} diff --git a/blocks/composite/folded_cascode/designs/gf180/error_amplifier_N_input/xschem/xschemrc b/blocks/composite/folded_cascode/designs/gf180/error_amplifier_N_input/xschem/xschemrc new file mode 100644 index 00000000..9a6a4bd6 --- /dev/null +++ b/blocks/composite/folded_cascode/designs/gf180/error_amplifier_N_input/xschem/xschemrc @@ -0,0 +1,7 @@ +# Source the PDK xschemrc file +if {![info exists PDK]} { + source $env(PDK_ROOT)/$env(PDK)/libs.tech/xschem/xschemrc +} + +# Add current directory to xschem library path +append XSCHEM_LIBRARY_PATH :[file dirname [info script]] diff --git a/blocks/composite/folded_cascode/designs/gf180/error_amplifier_bias_N_input/cace/error_amplifier_bias_N_input.yaml b/blocks/composite/folded_cascode/designs/gf180/error_amplifier_bias_N_input/cace/error_amplifier_bias_N_input.yaml new file mode 100644 index 00000000..3a051e39 --- /dev/null +++ b/blocks/composite/folded_cascode/designs/gf180/error_amplifier_bias_N_input/cace/error_amplifier_bias_N_input.yaml @@ -0,0 +1,241 @@ +#-------------------------------------------------------------- +# CACE circuit characterization file +#-------------------------------------------------------------- + +name: error_amplifier_bias_N_input +description: Bias Circuit for the folded cascode +PDK: sky130A + +cace_format: 5.2 + +authorship: + designer: Jorge Walter + company: Onchip + creation_date: May 10, 2024 + license: Apache 2.0 + +paths: + root: .. + schematic: xschem + layout: gds + netlist: netlist + documentation: docs + +pins: + VDD: + description: Positive analog power supply + type: power + direction: inout + Vmin: 1.7 + Vmax: 1.9 + VSS: + description: Analog ground + type: ground + direction: inout + Vref: + description: Reference BandGap Voltage + type: power + direction: inout + VbiasP2: + description: Output Bias Voltage 1 + type: power + direction: inout + VbiasN2: + description: Output Bias Voltage 2 + type: power + direction: inout + VbiasN1: + description: Output Bias Voltage 3 + type: power + direction: inout + +default_conditions: + VDD: + description: Analog power supply voltage + display: VDD + unit: V + typical: 1.8 + Vref: + description: Input common mode voltage + display: Vref + unit: V + typical: 1.2 + corner: + description: Process corner + display: Corner + typical: tt + temperature: + description: Ambient temperature + display: Temp + unit: °C + typical: 27 + +parameters: + dc_params: + display: DC Params + spec: + VbiasP2: + display: VbiasP2 + description: Voltage of VbiasP2 + unit: V + minimum: + value: 0.55 + typical: + value: 0.65 + maximum: + value: 0.75 + VbiasN2: + display: VbiasN2 + description: Voltage of VbiasN2 + unit: V + minimum: + value: 1.1 + typical: + value: 1.2 + maximum: + value: 1.3 + VbiasN1: + display: VbiasN1 + description: Voltage of VbiasN1 + unit: V + minimum: + value: 0.8 + typical: + value: 0.9 + maximum: + value: 1 + + tool: + ngspice: + template: folded_cascode_bias_OP_CACE.sch + format: ascii + suffix: .data + variables: [VbiasP2, VbiasN2, VbiasN1] + + plot: + VbiasP2_vs_temp: + type: xyplot + xaxis: temperature + yaxis: VbiasP2 + VbiasP2_vs_corner: + type: xyplot + xaxis: corner + yaxis: VbiasP2 + VbiasP2_vs_vdd: + type: xyplot + xaxis: VDD + yaxis: VbiasP2 + VbiasN2_vs_temp: + type: xyplot + xaxis: temperature + yaxis: VbiasN2 + VbiasN2_vs_corner: + type: xyplot + xaxis: corner + yaxis: VbiasN2 + VbiasN2_vs_vdd: + type: xyplot + xaxis: VDD + yaxis: VbiasN2 + VbiasN1_vs_temp: + type: xyplot + xaxis: temperature + yaxis: VbiasN1 + VbiasN1_vs_corner: + type: xyplot + xaxis: corner + yaxis: VbiasN1 + VbiasN1_vs_vdd: + type: xyplot + xaxis: VDD + yaxis: VbiasN1 + + conditions: + corner: + enumerate: [ss, tt, ff, fs, sf] + VDD: + minimum: 1.7 + typical: 1.8 + maximum: 1.9 + temperature: + minimum: -40 + typical: 27 + maximum: 125 + + magic_area: + spec: + area: + display: Area + description: Total circuit layout area + unit: um2 + maximum: + value: any + width: + display: Width + description: Total circuit layout width + unit: um + maximum: + value: any + height: + display: Height + description: Total circuit layout height + unit: um + maximum: + value: any + tool: + magic_area + + magic_drc: + description: Magic DRC + display: Magic DRC + spec: + drc_errors: + maximum: + value: 0 + tool: + magic_drc: + gds_flatten: true + + netgen_lvs: + description: Netgen LVS + display: Netgen LVS + spec: + lvs_errors: + maximum: + value: 0 + tool: + netgen_lvs: + script: run_project_lvs.tcl + + klayout_drc_feol: + description: KLayout DRC feol + display: KLayout DRC feol + spec: + drc_errors: + maximum: + value: 0 + tool: + klayout_drc: + args: ['-rd', 'feol=true'] + + klayout_drc_beol: + description: KLayout DRC beol + display: KLayout DRC beol + spec: + drc_errors: + maximum: + value: 0 + tool: + klayout_drc: + args: ['-rd', 'beol=true'] + + klayout_drc_full: + description: KLayout DRC full + display: KLayout DRC full + spec: + drc_errors: + maximum: + value: 0 + tool: + klayout_drc: + args: ['-rd', 'feol=true', '-rd', 'beol=true', '-rd', 'offgrid=true'] diff --git a/blocks/composite/folded_cascode/designs/gf180/error_amplifier_bias_N_input/cace/scripts/run_project_lvs.tcl b/blocks/composite/folded_cascode/designs/gf180/error_amplifier_bias_N_input/cace/scripts/run_project_lvs.tcl new file mode 100644 index 00000000..cbac0cca --- /dev/null +++ b/blocks/composite/folded_cascode/designs/gf180/error_amplifier_bias_N_input/cace/scripts/run_project_lvs.tcl @@ -0,0 +1,14 @@ +# NOTE: PDK_ROOT, PDK and CACE_ROOT are set in the local environment by CACE +# +# This is an example script to drive LVS; because this is a simple +# example, there is no specific benefit of using this instead of the +# default handling in CACE. + +set PDK_ROOT $::env(PDK_ROOT) +set PDK $::env(PDK) +set CACE_ROOT $::env(CACE_ROOT) + +set circuit1 [readnet spice $CACE_ROOT/netlist/layout/error_amplifier_bias_N_input.spice] +set circuit2 [readnet spice $CACE_ROOT/netlist/schematic/error_amplifier_bias_N_input.spice] + +lvs "$circuit1 error_amplifier_bias_N_input" "$circuit2 error_amplifier_bias_N_input" $PDK_ROOT/$PDK/libs.tech/netgen/${PDK}_setup.tcl error_amplifier_bias_N_input.out -json diff --git a/blocks/composite/folded_cascode/designs/gf180/error_amplifier_bias_N_input/cace/templates/folded_cascode_bias_OP_CACE.sch b/blocks/composite/folded_cascode/designs/gf180/error_amplifier_bias_N_input/cace/templates/folded_cascode_bias_OP_CACE.sch new file mode 100644 index 00000000..4c6f33cd --- /dev/null +++ b/blocks/composite/folded_cascode/designs/gf180/error_amplifier_bias_N_input/cace/templates/folded_cascode_bias_OP_CACE.sch @@ -0,0 +1,71 @@ +v {xschem version=3.4.7 file_version=1.2} +G {} +K {} +V {} +S {} +E {} +P 4 1 400 -580 {} +N 430 -360 430 -320 { +lab=GND} +N 430 -460 430 -420 { +lab=VSS} +N 510 -360 510 -320 { +lab=GND} +N 510 -460 510 -420 { +lab=VDD} +N 590 -360 590 -320 { +lab=GND} +N 590 -460 590 -420 { +lab=Vref} +C {devices/vsource.sym} 430 -390 0 0 {name=V0 value=0 savecurrent=false} +C {devices/gnd.sym} 430 -320 0 0 {name=l3 lab=GND} +C {devices/vsource.sym} 510 -390 0 0 {name=V2 value=CACE\{VDD\} savecurrent=false} +C {devices/lab_wire.sym} 430 -460 0 0 {name=p12 sig_type=std_logic lab=VSS} +C {devices/lab_wire.sym} 510 -460 0 0 {name=p13 sig_type=std_logic lab=VDD} +C {devices/gnd.sym} 510 -320 0 0 {name=l4 lab=GND} +C {devices/vsource.sym} 590 -390 0 0 {name=V4 value=\{Vref\} savecurrent=false} +C {devices/lab_wire.sym} 590 -460 0 0 {name=p14 sig_type=std_logic lab=Vref} +C {devices/gnd.sym} 590 -320 0 0 {name=l5 lab=GND} +C {error_amplifier_bias_N_input.sym} 850 -430 0 0 {name=x1} +C {lab_pin.sym} 730 -450 0 0 {name=p8 sig_type=std_logic lab=Vref} +C {lab_pin.sym} 730 -430 0 0 {name=p1 sig_type=std_logic lab=VDD} +C {lab_pin.sym} 730 -410 0 0 {name=p2 sig_type=std_logic lab=VSS} +C {noconn.sym} 970 -450 2 0 {name=l1} +C {noconn.sym} 970 -430 2 0 {name=l2} +C {noconn.sym} 970 -410 2 0 {name=l6} +C {simulator_commands.sym} 300 -620 0 0 {name=OP only_toplevel="true" value=" +.param Vref=1.2 +.save + +.control +save all +op + +* Obtener voltajes en los nodos +let VbiasP2_voltage = v(net3) +let VbiasN2_voltage = v(net2) +let VbiasN1_voltage = v(net1) + +* Imprimir voltajes en la consola +print VbiasP2_voltage VbiasN2_voltage VbiasN1_voltage + +* Echo para guardar los voltajes en un archivo de datos +echo $&VbiasP2_voltage $&VbiasN2_voltage $&VbiasN1_voltage > CACE\{simpath\}/CACE\{filename\}_CACE\{N\}.data + +.endc +"} +C {devices/code_shown.sym} 450 -700 0 0 {name=SETUP +simulator=ngspice +only_toplevel=false +value=" +.lib CACE\{PDK_ROOT\}/CACE\{PDK\}/libs.tech/combined/sky130.lib.spice CACE\{corner\} + +.include CACE\{DUT_path\} + +.temp CACE\{temperature\} + +.option SEED=CACE[CACE\{seed=12345\} + CACE\{iterations=0\}] + +* Flag unsafe operating conditions (exceeds models' specified limits) +.option warn=1 +"} diff --git a/blocks/composite/folded_cascode/designs/gf180/error_amplifier_bias_N_input/cace/templates/xschemrc b/blocks/composite/folded_cascode/designs/gf180/error_amplifier_bias_N_input/cace/templates/xschemrc new file mode 100644 index 00000000..589dc429 --- /dev/null +++ b/blocks/composite/folded_cascode/designs/gf180/error_amplifier_bias_N_input/cace/templates/xschemrc @@ -0,0 +1,10 @@ +# Source the PDK xschemrc file +if {![info exists PDK]} { + source $env(PDK_ROOT)/$env(PDK)/libs.tech/xschem/xschemrc +} + +# Add current directory +append XSCHEM_LIBRARY_PATH :[file dirname [info script]] + +# Source project xschemrc +source [file dirname [info script]]/../../xschem/xschemrc diff --git a/blocks/composite/folded_cascode/designs/gf180/error_amplifier_bias_N_input/gds/make_pcells_static.py b/blocks/composite/folded_cascode/designs/gf180/error_amplifier_bias_N_input/gds/make_pcells_static.py new file mode 100644 index 00000000..7c9c9fd7 --- /dev/null +++ b/blocks/composite/folded_cascode/designs/gf180/error_amplifier_bias_N_input/gds/make_pcells_static.py @@ -0,0 +1,21 @@ +import pya +import klayout.db as db + +ly = pya.Layout() +ly.read("folded_cascode_bias_pcells.gds") + +""" +# collect the cells to convert: +insts_to_convert = [] +for inst in ly.top_cell().each_inst(): + if inst.is_pcell(): + insts_to_convert.append(inst) + +for inst in insts_to_convert: + inst.convert_to_static() +""" + +ctx = db.SaveLayoutOptions() +ctx.write_context_info = False + +ly.write("folded_cascode_bias.gds", ctx) diff --git a/blocks/composite/folded_cascode/designs/gf180/error_amplifier_bias_N_input/xschem/error_amplifier_bias_N_input.sch b/blocks/composite/folded_cascode/designs/gf180/error_amplifier_bias_N_input/xschem/error_amplifier_bias_N_input.sch new file mode 100644 index 00000000..148360a9 --- /dev/null +++ b/blocks/composite/folded_cascode/designs/gf180/error_amplifier_bias_N_input/xschem/error_amplifier_bias_N_input.sch @@ -0,0 +1,437 @@ +v {xschem version=3.4.7 file_version=1.2} +G {} +K {} +V {} +S {} +E {} +P 4 1 -210 -330 {} +T {BIAS CIRCUIT +} 640 -70 0 1 0.4 0.4 {} +T {650mV} 900 -570 0 1 0.35 0.35 {} +N 130 -290 130 -240 {lab=#net1} +N 70 -320 90 -320 {lab=Vref} +N 70 -210 90 -210 {lab=Vref} +N 70 -320 70 -210 {lab=Vref} +N 130 -180 130 -110 {lab=VSS} +N 130 -320 140 -320 {lab=VSS} +N 130 -210 140 -210 {lab=VSS} +N 140 -320 140 -210 {lab=VSS} +N 140 -210 140 -110 {lab=VSS} +N 130 -110 140 -110 {lab=VSS} +N 130 -550 130 -350 {lab=VbiasP1} +N 130 -670 130 -610 {lab=VDD} +N 130 -690 130 -670 {lab=VDD} +N 120 -580 130 -580 {lab=VDD} +N 120 -690 120 -580 {lab=VDD} +N 120 -690 130 -690 {lab=VDD} +N 170 -580 290 -580 {lab=VbiasP1} +N 130 -510 230 -510 {lab=VbiasP1} +N 230 -580 230 -510 {lab=VbiasP1} +N 130 -690 330 -690 {lab=VDD} +N 330 -690 330 -610 {lab=VDD} +N 330 -580 340 -580 {lab=VDD} +N 340 -690 340 -580 {lab=VDD} +N 330 -690 340 -690 {lab=VDD} +N 330 -550 330 -350 {lab=VbiasN2} +N 330 -290 330 -270 {lab=#net2} +N 330 -210 330 -110 {lab=VSS} +N 140 -110 330 -110 {lab=VSS} +N 320 -320 330 -320 {lab=VSS} +N 320 -240 330 -240 {lab=VSS} +N 320 -320 320 -240 {lab=VSS} +N 320 -240 320 -110 {lab=VSS} +N 330 -410 410 -410 {lab=VbiasN2} +N 410 -410 410 -240 {lab=VbiasN2} +N 370 -240 410 -240 {lab=VbiasN2} +N 370 -320 410 -320 {lab=VbiasN2} +N 340 -690 570 -690 {lab=VDD} +N 570 -690 570 -610 {lab=VDD} +N 570 -580 580 -580 {lab=VDD} +N 580 -690 580 -580 {lab=VDD} +N 570 -690 580 -690 {lab=VDD} +N 470 -580 530 -580 {lab=VbiasP1} +N 330 -110 570 -110 {lab=VSS} +N 570 -140 570 -110 {lab=VSS} +N 560 -170 570 -170 {lab=VSS} +N 560 -170 560 -110 {lab=VSS} +N 560 -250 560 -170 {lab=VSS} +N 560 -250 570 -250 {lab=VSS} +N 570 -340 570 -280 {lab=#net3} +N 570 -550 570 -400 {lab=VbiasN1} +N 610 -250 650 -250 {lab=VbiasN1} +N 650 -250 650 -170 {lab=VbiasN1} +N 610 -170 650 -170 {lab=VbiasN1} +N 830 -340 830 -280 {lab=#net4} +N 830 -220 830 -200 {lab=#net5} +N 830 -140 830 -110 {lab=VSS} +N 570 -110 830 -110 {lab=VSS} +N 790 -250 790 -170 {lab=VbiasN1} +N 790 -210 790 -170 {lab=VbiasN1} +N 650 -210 790 -210 {lab=VbiasN1} +N 570 -450 710 -450 {lab=VbiasN1} +N 710 -450 710 -210 {lab=VbiasN1} +N 610 -370 790 -370 {lab=VbiasN2} +N 830 -370 840 -370 {lab=VSS} +N 840 -370 840 -110 {lab=VSS} +N 830 -110 840 -110 {lab=VSS} +N 830 -170 840 -170 {lab=VSS} +N 830 -250 840 -250 {lab=VSS} +N 830 -490 830 -400 {lab=VbiasP2} +N 830 -590 830 -550 {lab=#net6} +N 830 -690 830 -650 {lab=VDD} +N 580 -690 830 -690 {lab=VDD} +N 820 -620 830 -620 {lab=VDD} +N 820 -690 820 -620 {lab=VDD} +N 820 -520 830 -520 {lab=VDD} +N 820 -620 820 -520 {lab=VDD} +N 870 -620 910 -620 {lab=VbiasP2} +N 910 -620 910 -450 {lab=VbiasP2} +N 830 -450 910 -450 {lab=VbiasP2} +N 870 -520 910 -520 {lab=VbiasP2} +N 830 -690 1040 -690 {lab=VDD} +N 1040 -690 1040 -650 {lab=VDD} +N 1040 -590 1040 -550 {lab=#net7} +N 1040 -490 1040 -450 {lab=#net8} +N 930 -370 1000 -370 {lab=VbiasN2} +N 1000 -250 1000 -170 {lab=VbiasN1} +N 970 -210 1000 -210 {lab=VbiasN1} +N 840 -110 1040 -110 {lab=VSS} +N 1040 -140 1040 -110 {lab=VSS} +N 1040 -450 1040 -410 {lab=#net8} +N 1040 -340 1040 -280 {lab=#net9} +N 1080 -620 1130 -620 {lab=#net8} +N 1130 -620 1130 -450 {lab=#net8} +N 1040 -450 1130 -450 {lab=#net8} +N 1080 -520 1210 -520 {lab=VbiasP2} +N 1040 -370 1050 -370 {lab=VSS} +N 1050 -370 1050 -110 {lab=VSS} +N 1040 -110 1050 -110 {lab=VSS} +N 1040 -170 1050 -170 {lab=VSS} +N 1040 -250 1050 -250 {lab=VSS} +N 1030 -620 1040 -620 {lab=VDD} +N 1030 -690 1030 -620 {lab=VDD} +N 1030 -690 1030 -620 {lab=VDD} +N 1030 -620 1030 -520 {lab=VDD} +N 1030 -520 1040 -520 {lab=VDD} +N 1040 -410 1040 -400 { +lab=#net8} +N 1040 -220 1040 -200 { +lab=#net10} +N 570 -220 570 -200 { +lab=#net11} +N 560 -370 570 -370 { +lab=VSS} +N 560 -370 560 -250 { +lab=VSS} +C {symbols/nfet_03v3.sym} 350 -320 0 1 {name=M1 +L=6u +W=0.5u +nf=1 +m=1 +ad="'int((nf+1)/2) * W/nf * 0.18u'" +pd="'2*int((nf+1)/2) * (W/nf + 0.18u)'" +as="'int((nf+2)/2) * W/nf * 0.18u'" +ps="'2*int((nf+2)/2) * (W/nf + 0.18u)'" +nrd="'0.18u / W'" nrs="'0.18u / W'" +sa=0 sb=0 sd=0 +model=nfet_03v3 +spiceprefix=X +} +C {symbols/pfet_03v3.sym} 150 -580 0 1 {name=M2 +L=2u +W=0.5u +nf=1 +m=1 +ad="'int((nf+1)/2) * W/nf * 0.18u'" +pd="'2*int((nf+1)/2) * (W/nf + 0.18u)'" +as="'int((nf+2)/2) * W/nf * 0.18u'" +ps="'2*int((nf+2)/2) * (W/nf + 0.18u)'" +nrd="'0.18u / W'" nrs="'0.18u / W'" +sa=0 sb=0 sd=0 +model=pfet_03v3 +spiceprefix=X +} +C {symbols/nfet_03v3.sym} 110 -320 0 0 {name=M3 +L=6u +W=0.5u +nf=1 +m=1 +ad="'int((nf+1)/2) * W/nf * 0.18u'" +pd="'2*int((nf+1)/2) * (W/nf + 0.18u)'" +as="'int((nf+2)/2) * W/nf * 0.18u'" +ps="'2*int((nf+2)/2) * (W/nf + 0.18u)'" +nrd="'0.18u / W'" nrs="'0.18u / W'" +sa=0 sb=0 sd=0 +model=nfet_03v3 +spiceprefix=X +} +C {symbols/pfet_03v3.sym} 310 -580 0 0 {name=M4 +L=2u +W=0.5u +nf=1 +m=1 +ad="'int((nf+1)/2) * W/nf * 0.18u'" +pd="'2*int((nf+1)/2) * (W/nf + 0.18u)'" +as="'int((nf+2)/2) * W/nf * 0.18u'" +ps="'2*int((nf+2)/2) * (W/nf + 0.18u)'" +nrd="'0.18u / W'" nrs="'0.18u / W'" +sa=0 sb=0 sd=0 +model=pfet_03v3 +spiceprefix=X +} +C {symbols/pfet_03v3.sym} 550 -580 0 0 {name=M5 +L=2u +W=0.5u +nf=1 +m=1 +ad="'int((nf+1)/2) * W/nf * 0.18u'" +pd="'2*int((nf+1)/2) * (W/nf + 0.18u)'" +as="'int((nf+2)/2) * W/nf * 0.18u'" +ps="'2*int((nf+2)/2) * (W/nf + 0.18u)'" +nrd="'0.18u / W'" nrs="'0.18u / W'" +sa=0 sb=0 sd=0 +model=pfet_03v3 +spiceprefix=X +} +C {symbols/pfet_03v3.sym} 850 -620 0 1 {name=M6 +L=2u +W=0.5u +nf=1 +m=1 +ad="'int((nf+1)/2) * W/nf * 0.18u'" +pd="'2*int((nf+1)/2) * (W/nf + 0.18u)'" +as="'int((nf+2)/2) * W/nf * 0.18u'" +ps="'2*int((nf+2)/2) * (W/nf + 0.18u)'" +nrd="'0.18u / W'" nrs="'0.18u / W'" +sa=0 sb=0 sd=0 +model=pfet_03v3 +spiceprefix=X +} +C {symbols/pfet_03v3.sym} 850 -520 0 1 {name=M7 +L=2u +W=0.5u +nf=1 +m=1 +ad="'int((nf+1)/2) * W/nf * 0.18u'" +pd="'2*int((nf+1)/2) * (W/nf + 0.18u)'" +as="'int((nf+2)/2) * W/nf * 0.18u'" +ps="'2*int((nf+2)/2) * (W/nf + 0.18u)'" +nrd="'0.18u / W'" nrs="'0.18u / W'" +sa=0 sb=0 sd=0 +model=pfet_03v3 +spiceprefix=X +} +C {symbols/pfet_03v3.sym} 1060 -620 0 1 {name=M8 +L=2u +W=0.5u +nf=1 +m=3 +ad="'int((nf+1)/2) * W/nf * 0.18u'" +pd="'2*int((nf+1)/2) * (W/nf + 0.18u)'" +as="'int((nf+2)/2) * W/nf * 0.18u'" +ps="'2*int((nf+2)/2) * (W/nf + 0.18u)'" +nrd="'0.18u / W'" nrs="'0.18u / W'" +sa=0 sb=0 sd=0 +model=pfet_03v3 +spiceprefix=X +} +C {symbols/pfet_03v3.sym} 1060 -520 0 1 {name=M9 +L=2u +W=0.5u +nf=1 +m=2 +ad="'int((nf+1)/2) * W/nf * 0.18u'" +pd="'2*int((nf+1)/2) * (W/nf + 0.18u)'" +as="'int((nf+2)/2) * W/nf * 0.18u'" +ps="'2*int((nf+2)/2) * (W/nf + 0.18u)'" +nrd="'0.18u / W'" nrs="'0.18u / W'" +sa=0 sb=0 sd=0 +model=pfet_03v3 +spiceprefix=X +} +C {symbols/nfet_03v3.sym} 1020 -170 0 0 {name=M10 +L=6u +W=0.5u +nf=1 +m=4 +ad="'int((nf+1)/2) * W/nf * 0.18u'" +pd="'2*int((nf+1)/2) * (W/nf + 0.18u)'" +as="'int((nf+2)/2) * W/nf * 0.18u'" +ps="'2*int((nf+2)/2) * (W/nf + 0.18u)'" +nrd="'0.18u / W'" nrs="'0.18u / W'" +sa=0 sb=0 sd=0 +model=nfet_03v3 +spiceprefix=X +} +C {symbols/nfet_03v3.sym} 590 -370 0 1 {name=M11 +L=6u +W=0.5u +nf=1 +m=5 +ad="'int((nf+1)/2) * W/nf * 0.18u'" +pd="'2*int((nf+1)/2) * (W/nf + 0.18u)'" +as="'int((nf+2)/2) * W/nf * 0.18u'" +ps="'2*int((nf+2)/2) * (W/nf + 0.18u)'" +nrd="'0.18u / W'" nrs="'0.18u / W'" +sa=0 sb=0 sd=0 +model=nfet_03v3 +spiceprefix=X +} +C {symbols/nfet_03v3.sym} 810 -370 0 0 {name=M12 +L=6u +W=0.5u +nf=1 +m=5 +ad="'int((nf+1)/2) * W/nf * 0.18u'" +pd="'2*int((nf+1)/2) * (W/nf + 0.18u)'" +as="'int((nf+2)/2) * W/nf * 0.18u'" +ps="'2*int((nf+2)/2) * (W/nf + 0.18u)'" +nrd="'0.18u / W'" nrs="'0.18u / W'" +sa=0 sb=0 sd=0 +model=nfet_03v3 +spiceprefix=X +} +C {symbols/nfet_03v3.sym} 1020 -370 0 0 {name=M13 +L=6u +W=0.5u +nf=1 +m=5 +ad="'int((nf+1)/2) * W/nf * 0.18u'" +pd="'2*int((nf+1)/2) * (W/nf + 0.18u)'" +as="'int((nf+2)/2) * W/nf * 0.18u'" +ps="'2*int((nf+2)/2) * (W/nf + 0.18u)'" +nrd="'0.18u / W'" nrs="'0.18u / W'" +sa=0 sb=0 sd=0 +model=nfet_03v3 +spiceprefix=X +} +C {symbols/nfet_03v3.sym} 350 -240 0 1 {name=M14 +L=6u +W=0.5u +nf=1 +m=1 +ad="'int((nf+1)/2) * W/nf * 0.18u'" +pd="'2*int((nf+1)/2) * (W/nf + 0.18u)'" +as="'int((nf+2)/2) * W/nf * 0.18u'" +ps="'2*int((nf+2)/2) * (W/nf + 0.18u)'" +nrd="'0.18u / W'" nrs="'0.18u / W'" +sa=0 sb=0 sd=0 +model=nfet_03v3 +spiceprefix=X +} +C {symbols/nfet_03v3.sym} 590 -250 0 1 {name=M15 +L=6u +W=0.5u +nf=1 +m=4 +ad="'int((nf+1)/2) * W/nf * 0.18u'" +pd="'2*int((nf+1)/2) * (W/nf + 0.18u)'" +as="'int((nf+2)/2) * W/nf * 0.18u'" +ps="'2*int((nf+2)/2) * (W/nf + 0.18u)'" +nrd="'0.18u / W'" nrs="'0.18u / W'" +sa=0 sb=0 sd=0 +model=nfet_03v3 +spiceprefix=X +} +C {symbols/nfet_03v3.sym} 810 -250 0 0 {name=M16 +L=6u +W=0.5u +nf=1 +m=4 +ad="'int((nf+1)/2) * W/nf * 0.18u'" +pd="'2*int((nf+1)/2) * (W/nf + 0.18u)'" +as="'int((nf+2)/2) * W/nf * 0.18u'" +ps="'2*int((nf+2)/2) * (W/nf + 0.18u)'" +nrd="'0.18u / W'" nrs="'0.18u / W'" +sa=0 sb=0 sd=0 +model=nfet_03v3 +spiceprefix=X +} +C {symbols/nfet_03v3.sym} 1020 -250 0 0 {name=M17 +L=6u +W=0.5u +nf=1 +m=4 +ad="'int((nf+1)/2) * W/nf * 0.18u'" +pd="'2*int((nf+1)/2) * (W/nf + 0.18u)'" +as="'int((nf+2)/2) * W/nf * 0.18u'" +ps="'2*int((nf+2)/2) * (W/nf + 0.18u)'" +nrd="'0.18u / W'" nrs="'0.18u / W'" +sa=0 sb=0 sd=0 +model=nfet_03v3 +spiceprefix=X +} +C {symbols/nfet_03v3.sym} 110 -210 0 0 {name=M18 +L=6u +W=0.5u +nf=1 +m=1 +ad="'int((nf+1)/2) * W/nf * 0.18u'" +pd="'2*int((nf+1)/2) * (W/nf + 0.18u)'" +as="'int((nf+2)/2) * W/nf * 0.18u'" +ps="'2*int((nf+2)/2) * (W/nf + 0.18u)'" +nrd="'0.18u / W'" nrs="'0.18u / W'" +sa=0 sb=0 sd=0 +model=nfet_03v3 +spiceprefix=X +} +C {symbols/nfet_03v3.sym} 810 -170 0 0 {name=M19 +L=6u +W=0.5u +nf=1 +m=4 +ad="'int((nf+1)/2) * W/nf * 0.18u'" +pd="'2*int((nf+1)/2) * (W/nf + 0.18u)'" +as="'int((nf+2)/2) * W/nf * 0.18u'" +ps="'2*int((nf+2)/2) * (W/nf + 0.18u)'" +nrd="'0.18u / W'" nrs="'0.18u / W'" +sa=0 sb=0 sd=0 +model=nfet_03v3 +spiceprefix=X +} +C {symbols/nfet_03v3.sym} 590 -170 0 1 {name=M20 +L=6u +W=0.5u +nf=1 +m=4 +ad="'int((nf+1)/2) * W/nf * 0.18u'" +pd="'2*int((nf+1)/2) * (W/nf + 0.18u)'" +as="'int((nf+2)/2) * W/nf * 0.18u'" +ps="'2*int((nf+2)/2) * (W/nf + 0.18u)'" +nrd="'0.18u / W'" nrs="'0.18u / W'" +sa=0 sb=0 sd=0 +model=nfet_03v3 +spiceprefix=X +} +C {devices/lab_wire.sym} 470 -580 0 0 {name=p1 sig_type=std_logic lab=VbiasP1 +} +C {devices/lab_wire.sym} 230 -510 0 0 {name=p2 sig_type=std_logic lab=VbiasP1 +} +C {devices/lab_wire.sym} 410 -410 0 0 {name=p3 sig_type=std_logic lab=VbiasN2 +} +C {devices/lab_wire.sym} 680 -370 0 0 {name=p4 sig_type=std_logic lab=VbiasN2 +} +C {devices/lab_wire.sym} 970 -370 0 0 {name=p5 sig_type=std_logic lab=VbiasN2 +} +C {devices/lab_wire.sym} 910 -570 0 0 {name=p6 sig_type=std_logic lab=VbiasP2 +} +C {devices/lab_wire.sym} 1210 -520 0 0 {name=p7 sig_type=std_logic lab=VbiasP2 +} +C {devices/lab_wire.sym} 690 -450 0 0 {name=p8 sig_type=std_logic lab=VbiasN1 +} +C {devices/lab_wire.sym} 990 -210 0 0 {name=p9 sig_type=std_logic lab=VbiasN1 +} +C {devices/lab_wire.sym} 70 -270 0 0 {name=p10 sig_type=std_logic lab=Vref +} +C {devices/lab_wire.sym} 460 -690 0 0 {name=p11 sig_type=std_logic lab=VDD +} +C {devices/lab_wire.sym} 460 -110 0 0 {name=p12 sig_type=std_logic lab=VSS +} +C {devices/ipin.sym} 1280 -220 0 0 {name=p14 lab=Vref} +C {devices/iopin.sym} 1260 -320 0 0 {name=p21 lab=VbiasN1 +} +C {devices/iopin.sym} 1260 -300 0 0 {name=p13 lab=VbiasN2} +C {devices/iopin.sym} 1260 -260 0 0 {name=p15 lab=VDD} +C {devices/iopin.sym} 1260 -280 0 0 {name=p16 lab=VbiasP2} +C {devices/iopin.sym} 1260 -240 0 0 {name=p17 lab=VSS} +C {devices/iopin.sym} 1260 -340 0 0 {name=p18 lab=VbiasP1} diff --git a/blocks/composite/folded_cascode/designs/gf180/error_amplifier_bias_N_input/xschem/error_amplifier_bias_N_input.sym b/blocks/composite/folded_cascode/designs/gf180/error_amplifier_bias_N_input/xschem/error_amplifier_bias_N_input.sym new file mode 100644 index 00000000..d0b84836 --- /dev/null +++ b/blocks/composite/folded_cascode/designs/gf180/error_amplifier_bias_N_input/xschem/error_amplifier_bias_N_input.sym @@ -0,0 +1,37 @@ +v {xschem version=3.4.7 file_version=1.2} +G {} +K {type=subcircuit +format="@name @pinlist @symname" +template="name=x1" +} +V {} +S {} +E {} +B 5 117.5 27.5 122.5 32.5 {name=VbiasN1 dir=inout} +B 5 117.5 7.5 122.5 12.5 {name=VbiasN2 dir=inout} +B 5 117.5 -12.5 122.5 -7.5 {name=VbiasP2 dir=inout} +B 5 -122.5 -2.5 -117.5 2.5 {name=VDD dir=inout} +B 5 -122.5 17.5 -117.5 22.5 {name=VSS dir=inout} +B 5 -122.5 -22.5 -117.5 -17.5 {name=Vref dir=in} +B 5 117.5 -32.5 122.5 -27.5 {name=VbiasP1 dir=inout} +A 4 0 0 25 126.869897645844 360 {} +P 4 2 6 -16 -6 -16 {} +P 4 2 0 -22 0 -10 {} +P 4 2 6 18 -6 18 {} +P 4 5 -80 -40 -80 40 80 40 80 -40 -80 -40 {} +P 4 2 -120 -20 -80 -20 {} +P 4 2 -120 -0 -80 -0 {} +P 4 2 -120 20 -80 20 {} +P 4 2 80 -10 120 -10 {} +P 4 2 80 10 120 10 {} +P 4 3 80 30 120 30 120 30 {} +P 4 2 80 -30 120 -30 {} +T {@symname} -43.5 44 0 0 0.3 0.3 {} +T {@name} -45 -52 0 0 0.2 0.2 {} +T {VbiasN1} 75 26 0 1 0.2 0.2 {} +T {VbiasN2} 75 6 0 1 0.2 0.2 {} +T {VbiasP2} 75 -14 0 1 0.2 0.2 {} +T {VDD} -52 -3 0 1 0.2 0.2 {} +T {VSS} -54 17 0 1 0.2 0.2 {} +T {Vref} -75 -24 0 0 0.2 0.2 {} +T {VbiasP1} 75 -34 0 1 0.2 0.2 {} diff --git a/blocks/composite/folded_cascode/designs/gf180/error_amplifier_bias_N_input/xschem/error_amplifier_bias_OP.sch b/blocks/composite/folded_cascode/designs/gf180/error_amplifier_bias_N_input/xschem/error_amplifier_bias_OP.sch new file mode 100644 index 00000000..a8ae9975 --- /dev/null +++ b/blocks/composite/folded_cascode/designs/gf180/error_amplifier_bias_N_input/xschem/error_amplifier_bias_OP.sch @@ -0,0 +1,72 @@ +v {xschem version=3.4.7 file_version=1.2} +G {} +K {} +V {} +S {} +E {} +P 4 1 360 -260 {} +P 4 1 360 -280 {} +P 4 1 360 -300 {} +N 130 -60 130 -20 { +lab=GND} +N 130 -160 130 -120 { +lab=VSS} +N 210 -60 210 -20 { +lab=GND} +N 210 -160 210 -120 { +lab=VDD} +N 290 -60 290 -20 { +lab=GND} +N 290 -160 290 -120 { +lab=Vref} +N 320 -280 350 -280 {lab=VbiasP2} +N 320 -260 350 -260 {lab=VbiasN2} +N 320 -240 350 -240 {lab=VbiasN1} +N 320 -300 350 -300 {lab=VbiasP1} +C {devices/vsource.sym} 130 -90 0 0 {name=V0 value=0 savecurrent=false} +C {devices/gnd.sym} 130 -20 0 0 {name=l3 lab=GND} +C {devices/vsource.sym} 210 -90 0 0 {name=V2 value=1.8 savecurrent=false} +C {devices/lab_wire.sym} 130 -160 0 0 {name=p12 sig_type=std_logic lab=VSS} +C {devices/lab_wire.sym} 210 -160 0 0 {name=p13 sig_type=std_logic lab=VDD} +C {devices/gnd.sym} 210 -20 0 0 {name=l4 lab=GND} +C {devices/vsource.sym} 290 -90 0 0 {name=V4 value=1.2 savecurrent=false} +C {devices/lab_wire.sym} 290 -160 0 0 {name=p14 sig_type=std_logic lab=Vref} +C {devices/gnd.sym} 290 -20 0 0 {name=l5 lab=GND} +C {devices/lab_pin.sym} 80 -290 0 0 {name=p1 sig_type=std_logic lab=Vref} +C {devices/lab_pin.sym} 80 -270 0 0 {name=p2 sig_type=std_logic lab=VDD} +C {devices/lab_pin.sym} 80 -250 0 0 {name=p3 sig_type=std_logic lab=VSS} +C {devices/code_shown.sym} 20 -510 0 0 {name=MODELS only_toplevel=true +format="tcleval( @value )" +value=" +.include /foss/pdks/gf180mcuC/libs.tech/ngspice/design.ngspice +.lib /foss/pdks/gf180mcuC/libs.tech/ngspice/sm141064.ngspice typical +"} +C {devices/launcher.sym} 140 -380 0 0 {name=h1 +descr="Save & Netlist & sim" +tclcommand="xschem save; xschem netlist; xschem simulate"} +C {devices/code_shown.sym} 440 -320 0 0 {name=s1 only_toplevel=false value=" +.control +save all +op + +save V(VbiasP2) +print V(VbiasP2) + +save V(VbiasN2) +print V(VbiasN2) + +save V(VbiasN1) +print V(VbiasN1) + +.endc +" +} +C {devices/noconn.sym} 350 -280 0 1 {name=l1} +C {devices/noconn.sym} 350 -260 0 1 {name=l2} +C {devices/noconn.sym} 350 -240 0 1 {name=l6} +C {devices/lab_pin.sym} 340 -280 0 0 {name=p4 sig_type=std_logic lab=VbiasP2} +C {devices/lab_pin.sym} 340 -260 0 0 {name=p5 sig_type=std_logic lab=VbiasN2} +C {devices/lab_pin.sym} 340 -240 0 0 {name=p6 sig_type=std_logic lab=VbiasN1} +C {gf180/error_amplifier_bias_N_input/xschem/error_amplifier_bias_N_input.sym} 200 -270 0 0 {name=x1} +C {devices/noconn.sym} 350 -300 0 1 {name=l7} +C {devices/lab_pin.sym} 340 -300 0 0 {name=p7 sig_type=std_logic lab=VbiasP1} diff --git a/blocks/composite/folded_cascode/designs/gf180/error_amplifier_bias_N_input/xschem/xschemrc b/blocks/composite/folded_cascode/designs/gf180/error_amplifier_bias_N_input/xschem/xschemrc new file mode 100644 index 00000000..3b753a38 --- /dev/null +++ b/blocks/composite/folded_cascode/designs/gf180/error_amplifier_bias_N_input/xschem/xschemrc @@ -0,0 +1,7 @@ +# Source the PDK xschemrc file +if {![info exists PDK]} { + source $env(PDK_ROOT)/$env(PDK)/libs.tech/xschem/xschemrc +} + +# Add current directory to xschem library path +append XSCHEM_LIBRARY_PATH :[file dirname [info script]] diff --git a/blocks/composite/folded_cascode/designs/gf180/error_amplifier_core_N_input/cace/error_amplifier_core_N_input.yaml b/blocks/composite/folded_cascode/designs/gf180/error_amplifier_core_N_input/cace/error_amplifier_core_N_input.yaml new file mode 100644 index 00000000..39a988a2 --- /dev/null +++ b/blocks/composite/folded_cascode/designs/gf180/error_amplifier_core_N_input/cace/error_amplifier_core_N_input.yaml @@ -0,0 +1,287 @@ +--- +#-------------------------------------------------------------- +# CACE circuit characterization file +#-------------------------------------------------------------- + +name: error_amplifier_core_N_input +description: Folded cascode's core +PDK: gf180mcuD + +cace_format: 5.2 + +authorship: + designer: Ramon Sarmiento + company: OnChip UIS + creation_date: Apr 21, 2025 + license: Apache 2.0 + +paths: + root: .. + schematic: xschem + layout: gds + netlist: netlist + documentation: docs + +pins: + VDD: + description: Positive analog power supply + type: power + direction: inout + Vmin: 1.7 + Vmax: 1.9 + VSS: + description: Analog ground + type: ground + direction: inout + Vout: + description: Output voltage + type: signal + direction: inout + Vcomn: + description: Compensation pin + type: signal + direction: inout + V+: + description: Non inverting input + type: signal + direction: input + V-: + description: Inverting input + type: signal + direction: input + VbiasP1: + description: Bias of PMOS tail transistor + type: signal + direction: input + VbiasP2: + description: Bias of cascode pmos + type: signal + direction: input + VbiasN2: + description: Bias of cascode nmos + type: signal + direction: input + VbiasN1: + description: Bias of current mirror nmos + type: signal + direction: input + +default_conditions: + VDD: + description: Analog power supply voltage + display: VDD + unit: V + typical: 1.8 + Vin_CM: + description: Input Common Mode Voltage + display: Vin_CM + unit: V + typical: 0.8 + Vout_CM: + description: Output Common Mode Voltage + display: Vout_CM + unit: V + typical: 0.9 + Vy: + description: Fix voltage Mode Voltage + display: Vy + unit: V + typical: 0.1 + VbiasP1: + description: Bias of PMOS tail transistor + display: VbiasP1 + unit: V + typical: 0.95 + VbiasP2: + description: Bias of cascode pmos + display: VbiasP2 + unit: V + typical: 0.4 + VbiasN2: + description: Bias of cascode nmos + display: VbiasN2 + unit: V + typical: 1.28 + VbiasN1: + description: Bias of current mirror nmos + display: VbiasN1 + unit: V + typical: 0.81 + corner: + description: Process corner + display: Corner + typical: typical + temperature: + description: Ambient temperature + display: Temp + unit: °C + typical: 27 + +parameters: + dc_params: + display: DC Params + spec: + Ivdd: + display: Ivdd + description: Currente from power + unit: uA + minimum: + value: any + typical: + value: any + maximum: + value: any + Vout: + display: Vout + description: Output voltage + unit: V + minimum: + value: any + typical: + value: any + maximum: + value: any + tool: + ngspice: + template: dc.sch + format: ascii + suffix: .data + variables: [Vout, Ivdd] + + ac_params: + display: STB Params + spec: + # print A0 UGB PM GM BW + A0: + display: Av + description: Opamp's DC Gain + unit: dB + minimum: + value: 70 + typical: + value: any + maximum: + value: any + UGB: + display: UGB + description: Unitary Gain Bandwidth + unit: MHz + minimum: + value: 10 + typical: + value: any + maximum: + value: any + PM: + display: PM + description: Opamp's Phase Margin + unit: ° + minimum: + value: 45 + typical: + value: any + maximum: + value: any + GM: + display: GM + description: Opamp's Gain Margin + unit: ° + minimum: + value: any + typical: + value: any + maximum: + value: any + BW: + display: BW + description: Opamp's Bandwidth + unit: kHz + minimum: + value: any + typical: + value: any + maximum: + value: any + tool: + ngspice: + template: ac.sch + format: ascii + suffix: .data + variables: [A0, UGB, PM, GM, BW] + + magic_area: + spec: + area: + display: Area + description: Total circuit layout area + unit: µm² + maximum: + value: any + width: + display: Width + description: Total circuit layout width + unit: µm + maximum: + value: any + height: + display: Height + description: Total circuit layout height + unit: µm + maximum: + value: any + tool: magic_area + + magic_drc: + description: Magic DRC + display: Magic DRC + spec: + drc_errors: + maximum: + value: 0 + tool: + magic_drc: + gds_flatten: true + + netgen_lvs: + description: Netgen LVS + display: Netgen LVS + spec: + lvs_errors: + maximum: + value: 0 + tool: + netgen_lvs: + script: run_project_lvs.tcl + + klayout_drc_feol: + description: KLayout DRC feol + display: KLayout DRC feol + spec: + drc_errors: + maximum: + value: 0 + tool: + klayout_drc: + args: ["-rd", "feol=true"] + + klayout_drc_beol: + description: KLayout DRC beol + display: KLayout DRC beol + spec: + drc_errors: + maximum: + value: 0 + tool: + klayout_drc: + args: ["-rd", "beol=true"] + + klayout_drc_full: + description: KLayout DRC full + display: KLayout DRC full + spec: + drc_errors: + maximum: + value: 0 + tool: + klayout_drc: + args: ["-rd", "feol=true", "-rd", "beol=true", "-rd", "offgrid=true"] diff --git a/blocks/composite/folded_cascode/designs/gf180/error_amplifier_core_N_input/cace/folded_cascode_core.yaml b/blocks/composite/folded_cascode/designs/gf180/error_amplifier_core_N_input/cace/folded_cascode_core.yaml new file mode 100644 index 00000000..943b097d --- /dev/null +++ b/blocks/composite/folded_cascode/designs/gf180/error_amplifier_core_N_input/cace/folded_cascode_core.yaml @@ -0,0 +1,207 @@ +#-------------------------------------------------------------- +# CACE circuit characterization file +#-------------------------------------------------------------- + +name: folded_cascode_core +description: Folded cascode's core +PDK: sky130A + +cace_format: 5.2 + +authorship: + designer: Ramon Sarmiento + company: OnChip UIS + creation_date: Apr 21, 2025 + license: Apache 2.0 + +paths: + root: .. + schematic: xschem + layout: gds + netlist: netlist + documentation: docs + +pins: + VDD: + description: Positive analog power supply + type: power + direction: inout + Vmin: 1.7 + Vmax: 1.9 + VSS: + description: Analog ground + type: ground + direction: inout + Vout: + description: Output voltage + type: signal + direction: inout + Vcomn: + description: Compensation pin + type: signal + direction: inout + V+: + description: Non inverting input + type: signal + direction: input + V-: + description: Inverting input + type: signal + direction: input + VbiasP2: + description: Bias of cascode pmos + type: signal + direction: input + VbiasN2: + description: Bias of cascode nmos + type: signal + direction: input + VbiasN1: + description: Bias of current mirror nmos + type: signal + direction: input + +default_conditions: + vdd: + description: Analog power supply voltage + display: Vdd + unit: V + typical: 1.8 + vref: + description: Voltage reference from BandGAP + display: VrefBG + unit: V + typical: 1.2 + VbiasP2: + description: Bias of cascode pmos + display: VbiasP2 + unit: V + typical: 0.65 + VbiasN2: + description: Bias of cascode nmos + display: VbiasN2 + unit: V + typical: 1.2 + VbiasN1: + description: Bias of current mirror nmos + display: VbiasN1 + unit: V + typical: 0.9 + corner: + description: Process corner + display: Corner + typical: tt + temperature: + description: Ambient temperature + display: Temp + unit: °C + typical: 27 + +parameters: + dc_params: + display: DC Params + spec: + Ivdd: + display: Ivdd + description: Currente from power + unit: uA + minimum: + value: any + typical: + value: any + maximum: + value: any + Vout: + display: Vout + description: Output voltage + unit: V + minimum: + value: any + typical: + value: any + maximum: + value: any + tool: + ngspice: + template: dc.sch + format: ascii + suffix: .data + variables: [Vout, Ivdd] + + magic_area: + spec: + area: + display: Area + description: Total circuit layout area + unit: µm² + maximum: + value: any + width: + display: Width + description: Total circuit layout width + unit: µm + maximum: + value: any + height: + display: Height + description: Total circuit layout height + unit: µm + maximum: + value: any + tool: + magic_area + + magic_drc: + description: Magic DRC + display: Magic DRC + spec: + drc_errors: + maximum: + value: 0 + tool: + magic_drc: + gds_flatten: true + + netgen_lvs: + description: Netgen LVS + display: Netgen LVS + spec: + lvs_errors: + maximum: + value: 0 + tool: + netgen_lvs: + script: run_project_lvs.tcl + + klayout_drc_feol: + description: KLayout DRC feol + display: KLayout DRC feol + spec: + drc_errors: + maximum: + value: 0 + tool: + klayout_drc: + args: ['-rd', 'feol=true'] + + klayout_drc_beol: + description: KLayout DRC beol + display: KLayout DRC beol + spec: + drc_errors: + maximum: + value: 0 + tool: + klayout_drc: + args: ['-rd', 'beol=true'] + + klayout_drc_full: + description: KLayout DRC full + display: KLayout DRC full + spec: + drc_errors: + maximum: + value: 0 + tool: + klayout_drc: + args: ['-rd', 'feol=true', '-rd', 'beol=true', '-rd', 'offgrid=true'] diff --git a/blocks/composite/folded_cascode/designs/gf180/error_amplifier_core_N_input/cace/scripts/run_project_lvs.tcl b/blocks/composite/folded_cascode/designs/gf180/error_amplifier_core_N_input/cace/scripts/run_project_lvs.tcl new file mode 100644 index 00000000..6463d2d9 --- /dev/null +++ b/blocks/composite/folded_cascode/designs/gf180/error_amplifier_core_N_input/cace/scripts/run_project_lvs.tcl @@ -0,0 +1,14 @@ +# NOTE: PDK_ROOT, PDK and CACE_ROOT are set in the local environment by CACE +# +# This is an example script to drive LVS; because this is a simple +# example, there is no specific benefit of using this instead of the +# default handling in CACE. + +set PDK_ROOT $::env(PDK_ROOT) +set PDK $::env(PDK) +set CACE_ROOT $::env(CACE_ROOT) + +set circuit1 [readnet spice $CACE_ROOT/netlist/layout/folded_cascode_core.spice] +set circuit2 [readnet spice $CACE_ROOT/netlist/schematic/folded_cascode_core.spice] + +lvs "$circuit1 folded_cascode_core" "$circuit2 folded_cascode_core" $PDK_ROOT/$PDK/libs.tech/netgen/${PDK}_setup.tcl folded_cascode_core_comp.out -json diff --git a/blocks/composite/folded_cascode/designs/gf180/error_amplifier_core_N_input/cace/templates/ac.sch b/blocks/composite/folded_cascode/designs/gf180/error_amplifier_core_N_input/cace/templates/ac.sch new file mode 100644 index 00000000..0b28cb17 --- /dev/null +++ b/blocks/composite/folded_cascode/designs/gf180/error_amplifier_core_N_input/cace/templates/ac.sch @@ -0,0 +1,226 @@ +v {xschem version=3.4.7 file_version=1.2} +G {} +K {} +V {} +S {} +E {} +L 4 1050 -630 1470 -630 {} +L 4 1050 -580 1470 -580 {} +L 4 1180 -630 1180 -270 {} +L 4 1270 -630 1270 -270 {} +L 4 1360 -630 1360 -270 {} +L 4 1470 -630 1470 -270 {} +L 4 1050 -630 1050 -270 {} +L 4 1050 -270 1470 -270 {} +T {Expected values for inputs:} 1130 -680 0 0 0.4 0.4 {} +T {Input} 1090 -620 0 0 0.4 0.4 {} +T {Min} 1210 -620 0 0 0.4 0.4 {} +T {Typ} 1300 -620 0 0 0.4 0.4 {} +T {Max} 1400 -620 0 0 0.4 0.4 {} +T {VDD} 1090 -570 0 0 0.4 0.4 {} +T {1.8} 1300 -570 0 0 0.4 0.4 {} +T {VIN_CM} 1070 -520 0 0 0.4 0.4 {} +T {0.8} 1400 -520 0 0 0.4 0.4 {} +T {VbiasP1} 1070 -470 0 0 0.4 0.4 {} +T {VbiasP2} 1070 -420 0 0 0.4 0.4 {} +T {VbiasN1} 1070 -370 0 0 0.4 0.4 {} +T {VbiasN2} 1070 -320 0 0 0.4 0.4 {} +T {0.95} 1295 -470 0 0 0.4 0.4 {} +T {0.81} 1300 -370 0 0 0.4 0.4 {} +T {1.28} 1295 -320 0 0 0.4 0.4 {} +T {0.4} 1295 -420 0 0 0.4 0.4 {} +N 690 -640 750 -640 {lab=Vout} +N 410 -350 490 -350 { +lab=Vx} +N 410 -400 410 -350 { +lab=Vx} +N 270 -350 310 -350 { +lab=Vin} +N 370 -350 410 -350 { +lab=Vx} +N 230 -350 270 -350 { +lab=Vin} +N 820 -640 820 -430 { +lab=Vout} +N 900 -510 900 -430 { +lab=GND} +N 900 -640 900 -580 { +lab=Vout} +N 750 -640 900 -640 { +lab=Vout} +N 410 -500 410 -460 { +lab=Vn} +N 900 -580 900 -570 { +lab=Vout} +N 270 -430 270 -350 {lab=Vin} +N 820 -430 820 -350 {lab=Vout} +N 270 -610 490 -610 {lab=Vin} +N 270 -610 270 -430 {lab=Vin} +N 410 -670 490 -670 {lab=Vn} +N 410 -590 410 -500 {lab=Vn} +N 390 -590 410 -590 {lab=Vn} +N 390 -630 390 -590 {lab=Vn} +N 390 -630 410 -630 {lab=Vn} +N 410 -670 410 -630 {lab=Vn} +N 460 -30 460 -20 {lab=GND} +N 460 -120 460 -90 {lab=VbiasP2} +N 580 -30 580 -20 {lab=GND} +N 580 -120 580 -90 {lab=VbiasN2} +N 710 -30 710 -20 {lab=GND} +N 710 -120 710 -90 {lab=VbiasN1} +N 240 -30 240 -20 {lab=GND} +N 240 -120 240 -90 {lab=VDD} +N 350 -30 350 -20 {lab=GND} +N 350 -120 350 -90 {lab=VSS} +N 840 -120 840 -90 {lab=VbiasP1} +N 840 -30 840 -20 {lab=GND} +N 230 -260 230 -250 {lab=GND} +N 230 -350 230 -320 {lab=Vin} +N 900 -430 900 -410 {lab=GND} +N 490 -510 540 -510 {lab=Vcom} +N 490 -350 510 -350 {lab=Vx} +N 770 -320 820 -320 {lab=Vout} +N 820 -350 820 -320 {lab=Vout} +N 730 -270 730 -240 {lab=GND} +N 770 -280 810 -280 {lab=GND} +N 810 -280 810 -250 {lab=GND} +N 730 -250 810 -250 {lab=GND} +N 730 -350 730 -330 {lab=Vz} +N 680 -350 730 -350 {lab=Vz} +N 570 -350 620 -350 {lab=Vy} +N 1220 -50 1220 -20 {lab=GND} +N 1260 -60 1300 -60 {lab=GND} +N 1300 -60 1300 -30 {lab=GND} +N 1220 -30 1300 -30 {lab=GND} +N 1260 -100 1400 -100 {lab=VbiasP1} +N 1220 -170 1220 -110 {lab=Vaa} +N 1220 -180 1220 -170 {lab=Vaa} +N 1090 -180 1220 -180 {lab=Vaa} +N 1070 -180 1070 -130 {lab=Vaa} +N 1070 -180 1090 -180 {lab=Vaa} +N 1070 -70 1070 -40 {lab=GND} +N 1070 -40 1220 -40 {lab=GND} +C {devices/launcher.sym} 70 -430 0 0 {name=h15 +descr="Annotate OP" +tclcommand="set show_hidden_texts 1; xschem annotate_op" +} +C {devices/launcher.sym} 70 -500 0 0 {name=h3 +descr="Netlist & sim" +tclcommand="xschem netlist; xschem simulate"} +C {vsource.sym} 410 -430 0 0 {name=V5 value="AC 1" savecurrent=false} +C {capa.sym} 340 -350 1 0 {name=C2 +m=1 +value=10G +footprint=1206 +device="ceramic capacitor"} +C {ind.sym} 540 -350 1 0 {name=L4 +m=1 +value=10G +footprint=1206 +device=inductor} +C {lab_pin.sym} 540 -550 2 1 {name=p8 sig_type=std_logic lab=VDD} +C {lab_pin.sym} 540 -530 2 1 {name=p9 sig_type=std_logic lab=VSS} +C {capa.sym} 900 -540 0 0 {name=C1 +m=1 +value=5p +footprint=1206 +device="ceramic capacitor"} +C {noconn.sym} 490 -510 2 1 {name=l1} +C {lab_pin.sym} 900 -640 0 1 {name=p2 sig_type=std_logic lab=Vout} +C {lab_pin.sym} 540 -490 2 1 {name=p5 sig_type=std_logic lab=VbiasP1} +C {lab_pin.sym} 540 -470 2 1 {name=p6 sig_type=std_logic lab=VbiasP2} +C {lab_pin.sym} 540 -450 2 1 {name=p7 sig_type=std_logic lab=VbiasN2} +C {lab_pin.sym} 540 -430 2 1 {name=p11 sig_type=std_logic lab=VbiasN1} +C {devices/vsource.sym} 460 -60 0 0 {name=V1 value=CACE\{VbiasP2\}} +C {devices/gnd.sym} 460 -20 0 0 {name=l2 lab=GND} +C {devices/lab_wire.sym} 460 -120 0 0 {name=p3 sig_type=std_logic lab=VbiasP2} +C {devices/vsource.sym} 580 -60 0 0 {name=V2 value=CACE\{VbiasN2\}} +C {devices/gnd.sym} 580 -20 0 0 {name=l3 lab=GND} +C {devices/lab_wire.sym} 580 -120 0 0 {name=p4 sig_type=std_logic lab=VbiasN2} +C {devices/vsource.sym} 710 -60 0 0 {name=V3 value=CACE\{VbiasN1\}} +C {devices/gnd.sym} 710 -20 0 0 {name=l5 lab=GND} +C {devices/lab_wire.sym} 710 -120 0 0 {name=p12 sig_type=std_logic lab=VbiasN1} +C {devices/vsource.sym} 240 -60 0 0 {name=V4 value=CACE\{VDD\}} +C {devices/gnd.sym} 240 -20 0 0 {name=l6 lab=GND} +C {devices/lab_wire.sym} 240 -120 0 0 {name=p13 sig_type=std_logic lab=VDD} +C {devices/vsource.sym} 350 -60 0 0 {name=V6 value=0} +C {devices/gnd.sym} 350 -20 0 0 {name=l7 lab=GND} +C {devices/lab_wire.sym} 350 -120 0 0 {name=p14 sig_type=std_logic lab=VSS} +C {devices/vsource.sym} 840 -60 0 0 {name=V8 value=CACE\{VbiasP1\} savecurrent=false} +C {devices/gnd.sym} 840 -20 0 0 {name=l10 lab=GND} +C {devices/lab_wire.sym} 840 -120 0 0 {name=p15 sig_type=std_logic lab=VbiasP1 +} +C {devices/vsource.sym} 230 -290 0 0 {name=V7 value=CACE\{Vin_CM\}} +C {devices/gnd.sym} 230 -250 0 0 {name=l8 lab=GND} +C {devices/lab_wire.sym} 230 -350 0 0 {name=p10 sig_type=std_logic lab=Vin} +C {devices/gnd.sym} 900 -410 0 0 {name=l9 lab=GND} +C {devices/lab_wire.sym} 450 -350 0 0 {name=p1 sig_type=std_logic lab=Vx} +C {devices/lab_wire.sym} 520 -510 0 0 {name=p16 sig_type=std_logic lab=Vcom} +C {devices/lab_wire.sym} 430 -670 0 0 {name=p17 sig_type=std_logic lab=Vn} +C {devices/vsource.sym} 650 -350 1 0 {name=V9 value=CACE\{Vy\}} +C {vcvs.sym} 730 -300 0 1 {name=E1 value=1} +C {devices/gnd.sym} 730 -240 0 0 {name=l11 lab=GND} +C {devices/lab_wire.sym} 590 -350 0 0 {name=p18 sig_type=std_logic lab=Vy} +C {devices/lab_wire.sym} 730 -350 0 0 {name=p19 sig_type=std_logic lab=Vz} +C {vcvs.sym} 1220 -80 0 1 {name=E2 value=1} +C {devices/gnd.sym} 1220 -20 0 0 {name=l12 lab=GND} +C {devices/lab_wire.sym} 1400 -100 0 0 {name=p20 sig_type=std_logic lab=VbiasP1 +} +C {res.sym} 1070 -100 0 0 {name=R1 +value=1k +footprint=1206 +device=resistor +m=1} +C {devices/lab_wire.sym} 1140 -180 0 0 {name=p21 sig_type=std_logic lab=Vaa} +C {devices/code_shown.sym} 50 -970 0 0 {name=SETUP +simulator=ngspice +only_toplevel=false +value=" +.lib CACE\{PDK_ROOT\}/CACE\{PDK\}/libs.tech/ngspice/sm141064.ngspice CACE\{corner\} + +.include CACE\{PDK_ROOT\}/CACE\{PDK\}/libs.tech/ngspice/design.ngspice +.include CACE\{DUT_path\} + +.temp CACE\{temperature\} + +.option SEED=CACE[CACE\{seed=12345\} + CACE\{iterations=0\}] + +* Flag unsafe operating conditions (exceeds models' specified limits) +.option warn=1 +"} +C {code.sym} 970 -880 0 0 {name=OP only_toplevel=true value=" + + + *remzerovec + *write error_amplifier_core_N_input_ac.raw + *set appendwrite + + +.control +save all + +*DC simulation +op +* run ac simulation +ac dec 20 1 100e7 + + +* measure parameters +let vout_mag = db(abs(v(Vout))) +*let vout_phase = cph(v(Vout)) * (180/pi) +let vout_phase = cph(v(Vout)) * (57.295779513) +let gm = (-1)*db(abs(v(Vout))) + +meas ac A0 find vout_mag at=1 +meas ac UGB when vout_mag=0 fall=1 +meas ac PM find vout_phase when vout_mag=0 +meas ac GM find gm when vout_phase=0 + +let A0_p1 = A0 - 3 +meas ac BW when vout_mag=A0_p1 + +print A0 UGB PM GM BW +echo $&A0 $&UGB $&PM $&GM $&BW > CACE\{simpath\}/CACE\{filename\}_CACE\{N\}.data +.endc +"} +C {error_amplifier_core_N_input.sym} 590 -640 0 0 {name=x1} diff --git a/blocks/composite/folded_cascode/designs/gf180/error_amplifier_core_N_input/cace/templates/dc.sch b/blocks/composite/folded_cascode/designs/gf180/error_amplifier_core_N_input/cace/templates/dc.sch new file mode 100644 index 00000000..cd55daa4 --- /dev/null +++ b/blocks/composite/folded_cascode/designs/gf180/error_amplifier_core_N_input/cace/templates/dc.sch @@ -0,0 +1,107 @@ +v {xschem version=3.4.6 file_version=1.2} +G {} +K {} +V {} +S {} +E {} +N 100 -160 100 -140 { +lab=GND} +N 180 -160 180 -140 { +lab=GND} +N 100 -140 100 -120 { +lab=GND} +N 180 -140 180 -120 { +lab=GND} +N 280 -160 280 -140 { +lab=GND} +N 280 -140 280 -120 { +lab=GND} +N 640 -370 660 -370 {lab=#net1} +N 380 -160 380 -140 { +lab=GND} +N 380 -140 380 -120 { +lab=GND} +N 510 -160 510 -140 { +lab=GND} +N 510 -140 510 -120 { +lab=GND} +N 590 -530 610 -530 {lab=Vout} +N 590 -580 590 -530 {lab=Vout} +N 590 -580 840 -580 {lab=Vout} +N 840 -580 840 -500 {lab=Vout} +N 810 -500 840 -500 {lab=Vout} +N 840 -500 870 -500 {lab=Vout} +N 580 -470 610 -470 {lab=Vref} +N 630 -160 630 -140 { +lab=GND} +N 630 -140 630 -120 { +lab=GND} +N 180 -230 180 -220 {lab=#net2} +N 180 -310 180 -290 {lab=VDD} +N 100 -250 100 -220 {lab=VSS} +N 280 -250 280 -220 {lab=Vref} +N 380 -250 380 -220 {lab=VbiasP2} +N 510 -250 510 -220 {lab=VbiasN2} +N 630 -250 630 -220 {lab=VbiasN1} +N 640 -350 660 -350 {lab=VbiasP2} +N 640 -330 660 -330 {lab=VbiasN2} +N 640 -310 660 -310 {lab=VbiasN1} +N 640 -390 660 -390 {lab=VSS} +N 640 -410 660 -410 {lab=VDD} +C {devices/code_shown.sym} 0 -860 0 0 {name=SETUP +simulator=ngspice +only_toplevel=false +value=" +.lib CACE\{PDK_ROOT\}/CACE\{PDK\}/libs.tech/combined/sky130.lib.spice CACE\{corner\} + +.include CACE\{DUT_path\} + +.temp CACE\{temperature\} + +.option SEED=CACE[CACE\{seed=12345\} + CACE\{iterations=0\}] + +* Flag unsafe operating conditions (exceeds models' specified limits) +.option warn=1 +"} +C {/foss/designs/chipathon_2025/designs/folded_cascode_core/xschem/folded_cascode_core.sym} 710 -500 0 0 {name=x1} +C {devices/vsource.sym} 100 -190 0 0 {name=V0 value=0 savecurrent=false} +C {devices/gnd.sym} 100 -120 0 0 {name=l4 lab=GND} +C {devices/vsource.sym} 180 -190 0 0 {name=V1 value=CACE\{vdd\} savecurrent=false} +C {devices/gnd.sym} 180 -120 0 0 {name=l8 lab=GND} +C {devices/vsource.sym} 280 -190 0 0 {name=V3 value=CACE\{vref\} savecurrent=false} +C {devices/gnd.sym} 280 -120 0 0 {name=l9 lab=GND} +C {noconn.sym} 640 -370 0 0 {name=l1} +C {devices/vsource.sym} 380 -190 0 0 {name=V2 value=CACE\{VbiasP2\} savecurrent=false} +C {devices/gnd.sym} 380 -120 0 0 {name=l2 lab=GND} +C {devices/vsource.sym} 510 -190 0 0 {name=V4 value=CACE\{VbiasN2\} savecurrent=false} +C {devices/gnd.sym} 510 -120 0 0 {name=l3 lab=GND} +C {lab_pin.sym} 580 -470 2 1 {name=p1 sig_type=std_logic lab=Vref} +C {lab_pin.sym} 280 -250 2 1 {name=p2 sig_type=std_logic lab=Vref} +C {lab_pin.sym} 180 -310 2 1 {name=p3 sig_type=std_logic lab=VDD} +C {lab_pin.sym} 380 -250 2 1 {name=p4 sig_type=std_logic lab=VbiasP2} +C {lab_pin.sym} 510 -250 2 1 {name=p5 sig_type=std_logic lab=VbiasN2} +C {lab_pin.sym} 100 -250 2 1 {name=p6 sig_type=std_logic lab=VSS} +C {lab_pin.sym} 640 -410 2 1 {name=p7 sig_type=std_logic lab=VDD} +C {lab_pin.sym} 640 -390 2 1 {name=p8 sig_type=std_logic lab=VSS} +C {devices/vsource.sym} 630 -190 0 0 {name=V5 value=CACE\{VbiasN1\} savecurrent=false} +C {devices/gnd.sym} 630 -120 0 0 {name=l5 lab=GND} +C {lab_pin.sym} 630 -250 2 1 {name=p9 sig_type=std_logic lab=VbiasN1} +C {lab_pin.sym} 870 -500 0 1 {name=p10 sig_type=std_logic lab=Vout} +C {ammeter.sym} 180 -260 2 0 {name=vdd_i savecurrent=true spice_ignore=0} +C {lab_pin.sym} 640 -350 2 1 {name=p11 sig_type=std_logic lab=VbiasP2} +C {lab_pin.sym} 640 -330 2 1 {name=p12 sig_type=std_logic lab=VbiasN2} +C {lab_pin.sym} 640 -310 2 1 {name=p13 sig_type=std_logic lab=VbiasN1} +C {code.sym} 230 -550 0 0 {name=OP only_toplevel=true value=" +.control +save all + +*DC simulation +op + +let Vout = v(Vout) +let Ivdd = i(vdd_i) + +print Vout Ivdd +echo $&Vout $&Ivdd> CACE\{simpath\}/CACE\{filename\}_CACE\{N\}.data +.endc +"} diff --git a/blocks/composite/folded_cascode/designs/gf180/error_amplifier_core_N_input/cace/templates/xschemrc b/blocks/composite/folded_cascode/designs/gf180/error_amplifier_core_N_input/cace/templates/xschemrc new file mode 100644 index 00000000..589dc429 --- /dev/null +++ b/blocks/composite/folded_cascode/designs/gf180/error_amplifier_core_N_input/cace/templates/xschemrc @@ -0,0 +1,10 @@ +# Source the PDK xschemrc file +if {![info exists PDK]} { + source $env(PDK_ROOT)/$env(PDK)/libs.tech/xschem/xschemrc +} + +# Add current directory +append XSCHEM_LIBRARY_PATH :[file dirname [info script]] + +# Source project xschemrc +source [file dirname [info script]]/../../xschem/xschemrc diff --git a/blocks/composite/folded_cascode/designs/gf180/error_amplifier_core_N_input/gds/folded_cascode_core.gds b/blocks/composite/folded_cascode/designs/gf180/error_amplifier_core_N_input/gds/folded_cascode_core.gds new file mode 100644 index 0000000000000000000000000000000000000000..dc3d060f88d0c76c6d8859a8990fd0f152411c6d GIT binary patch literal 1709062 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

|t$&45Cx2JhR=8d0Z{%yR@uX)FZ?1i}h!JXdmKf z|2Pmo#{2WvzLEZ6|484ke;k5?d`FmV- zwy(O|Z>0Whyz8@nV*aM)&Hjt|n;9?WZ%^}t%o{K1{^$D__fPwpr+v-aexv&zzvv(K zO{~9po2dO0>u+Yf=pXh+_MtrXPXqB|yjwr^P4thc{yFsR`u}9ci~eDMLH$kDo&5*( zH#1(;-=69ZsXJbh`nU1!{5`Jv+gIJ~H&XvL-u2mEFn?3?X8*zb&5RfGx2JhR=8czR z{%yR@uX)*XnrniK)I} z|3m+n8SnOw-n;%0-Mb#x_)PIX>g#02yZguR4t%WnuWf!~#`~|o^j`5{J#+avA#wR1 zi2r29jB6j^N^SIOJ=;xf8CN^KkECy8^u2uG2`9Wk2+qxY9Gqq{-zP}JzmuB z3LSsFj)Py2|I86HetqAke^*o|GwYVjcu~J&|DOAgeqI;qv&Un9I%3AV_n+qdNs!OJ z@RO@8-hX~I|7p#?sQHbnE#7~A>F1R%jQN|I|IzP{`J0-5jQ8v3am^DlZ@eV)kMRY* z=4oH^w%^G7?RW2=8oxpLeyi~|@fLlZ%y{?yr+QrwzA5k6cZF}tkMUyuKcwT|t-SCK z9sh78B%w=B=wK+1-|NRUv;^*{b& zF@IC@KmHpre^c|1@qT`fYo3sK<0YAYj4$vtPy3p;{YK_*zncH1@@buq!`pPemyMY5 zqJK_2DSQ+E7n%>{$9OUS-_&vHljBhRbK);Y%y`j1oBuHCZ>s*APmTJUs(+04^Lt!% zhSVJ|N&RDdfv-B-SKaM5Qh)nJ{nvjd=5NyfCu07l<{#tz{2tdlA@jydGXEG~;A@`t zHE;Wk%-?=7|BZ($pVryDO?;ugPG-F5pN;FA5AptLM0}4I^WW0(>XUV-{@MHoBWAql zAD(+Wzf9Gi=ReOeGvmec%bw~CsXJbh`p0;G{vKDI?W^wg8>xSc_x&yH`VWd8Px{$bxl|CqOl+CR|;X2y&DVSi*F%47dD z5Z~j){IzeQf7n0KKik?r4a|7aKkR$hXG8Yi>|c@@ulC>ew9huR@3x=Jc(MO>e(kgE zzqa{}?7w5YfBx(*m?vc3>_3tjujX%0^E5SY`^k(K^LKvD)4t|yzmfUJcrkzNe-50f zZAP+zA2x555Af4!e`%e;56lh`q{Z-Zx}J-r}gL0{(?F~>dyWn znenRr_Ecw6b+@0)cu{}n|5)=?cl(XhKgRp>XMe#wA@gSck<55Ce|wszsd?K^X1tic z^J|{=HE;Wk%sRqCK$(0uGe}3Kk%%l9&pZsRV ztNfcw`utzt2fjk7r0+Jhe@kY(>OXtxGgEzMKbi5O|D0caW?y}0zmfin@qYiY zzha({d9(jYX1toeJd7p⁣5s+nepoV6MK4} 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� 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%0DmX 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 Component: + """ + This function creates transistors needed for the biasing generator + """ + # Width configuration + if width_route == None or width_route == 0: + separation_interdigitado = 0 + width_horizontal = evaluate_bbox(via_stack(pdk,'met2','met3'))[1] + else: + separation_interdigitado = width_route + width_horizontal = width_route + # Create the component + min_separation_met3 = pdk.get_grule('met3')['min_separation'] + biasing = Component() + pmirrors = interdigitado_placement_Onchip(pdk, output='via', common_route=(False, True), output_separation=(separation_interdigitado, 2*separation_interdigitado + min_separation_met3), deviceA_and_B='pfet', width=devices_info[2]['width'], length=devices_info[2]['length'], fingers=devices_info[2]['fingers'], with_dummy=True, array=arrays_info[2], with_tie=True, with_lvt_layer=devices_info[2]['lvt']) + transistor_vref = interdigitado_placement_Onchip(pdk, output='via', output_separation=(separation_interdigitado, separation_interdigitado), deviceA_and_B=devices_info[0]['type'], width=devices_info[0]['width'], length=devices_info[0]['length'], fingers=devices_info[0]['fingers'], + with_dummy=devices_info[0]['with_dummy'], array=arrays_info[0], with_tie=devices_info[0]['with_tie'], with_substrate_tap=devices_info[0]['with_substrate_tap'], with_lvt_layer=devices_info[0]['lvt']) + + transistor_p_18_12 = interdigitado_placement_Onchip(pdk, output='via', output_separation=(separation_interdigitado, separation_interdigitado), deviceA_and_B=devices_info[1]['type'], width=devices_info[1]['width'], length=devices_info[1]['length'], fingers=devices_info[1]['fingers'], + with_dummy=devices_info[1]['with_dummy'], array=arrays_info[1], with_tie=devices_info[1]['with_tie'], with_substrate_tap=devices_info[1]['with_substrate_tap'], with_lvt_layer=devices_info[1]['lvt']) + transistors_p_13_14 = interdigitado_placement_Onchip(pdk, output='via', output_separation=(separation_interdigitado, separation_interdigitado), gate_common=False, deviceA_and_B=devices_info[1]['type'], width=devices_info[1]['width'], length=devices_info[1]['length'], fingers=devices_info[1]['fingers'], + with_dummy=devices_info[1]['with_dummy'], array=arrays_info[3], with_tie=devices_info[1]['with_tie'], with_substrate_tap=devices_info[1]['with_substrate_tap'], with_lvt_layer=devices_info[1]['lvt']) + + #Add the components to the biasing component + pmirrors_ref = biasing << pmirrors + m1_m15 = biasing << transistor_vref + m2_m16 = biasing << transistor_vref + m12_m18 = biasing << transistor_p_18_12 + m13_m14 = biasing << transistors_p_13_14 + #x reflection + pmirrors_ref.mirror(p1=(0,0), p2=(1,0)) + m1_m15.mirror(p1=(0,0), p2=(1,0)) + m2_m16.mirror(p1=(0,0), p2=(1,0)) + m12_m18.mirror(p1=(0,0), p2=(1,0)) + m13_m14.mirror(p1=(0,0), p2=(1,0)) + + #Components size + pmirrors_size = evaluate_bbox(pmirrors_ref) + m1_m15_size = evaluate_bbox(m1_m15) + m2_m16_size = evaluate_bbox(m2_m16) + m12_m18_size = evaluate_bbox(m12_m18) + m13_m14_size = evaluate_bbox(m13_m14) + #min separation between components + min_separation = pdk.get_grule('nwell')['min_separation'] + size_via = evaluate_bbox(via_stack(pdk, 'met2', 'met3')) + #amount of movement + pmirrors_movement = [0] + m1_m15_movement = [(pmirrors_size[0] + m1_m15_size[0])/2 + min_separation] + m2_m16_movement = [(pmirrors_size[0] + m2_m16_size[0])/2 + min_separation] + m12_m18_movement = [(m1_m15_size[0] + m12_m18_size[0])/2 + m1_m15_movement[0] + min_separation] + m13_m14_movement = [(m12_m18_size[0] + m13_m14_size[0])/2 + m12_m18_movement[0] + min_separation] + #move the componentes + pmirrors_ref.movex(pdk.snap_to_2xgrid(pmirrors_movement[0])) + m1_m15.movex(pdk.snap_to_2xgrid(m1_m15_movement[0])) + m2_m16.movex(pdk.snap_to_2xgrid(-m2_m16_movement[0])) + m12_m18.movex(pdk.snap_to_2xgrid(m12_m18_movement[0])) + m13_m14.movex(pdk.snap_to_2xgrid(m13_m14_movement[0])).movey(pdk.snap_to_2xgrid(size_via[1])) + #Total size + size_biasing = evaluate_bbox(biasing) + #Extension + size_via = evaluate_bbox(via_stack(pdk, 'met2', 'met3'))[1] + pdk.get_grule("met3")["min_separation"]*2 + #Vias + via_3_4 = via_stack(pdk, 'met3', 'met4') + #Routing the components + #Pmirrors + #Source routes + + VDD1 = biasing << straight_route(pdk, pmirrors_ref.ports['source_1_2_0_W'], pmirrors_ref.ports['source_3_3_0_E'], glayer1='met2', glayer2='met2', via1_alignment_layer='met3', width = width_horizontal) + via_pmirror1 = biasing << via_3_4 + via_pmirror2 = biasing << via_3_4 + via_pmirror3 = biasing << via_3_4 + + via_pmirror1.movex(pdk.snap_to_2xgrid(pmirrors_ref.ports['source_1_2_0_N'].center[0])).movey(pdk.snap_to_2xgrid(pmirrors_ref.ports['source_1_2_0_E'].center[1])) + via_pmirror2.movex(pdk.snap_to_2xgrid(pmirrors_ref.ports['source_2_1_0_N'].center[0])).movey(pdk.snap_to_2xgrid(pmirrors_ref.ports['source_2_1_0_E'].center[1])) + via_pmirror3.movex(pdk.snap_to_2xgrid(pmirrors_ref.ports['source_3_3_0_N'].center[0])).movey(pdk.snap_to_2xgrid(pmirrors_ref.ports['source_3_3_0_E'].center[1])) + biasing << straight_route(pdk, via_pmirror1.ports['top_met_W'], via_pmirror3.ports['top_met_E'], width = width_horizontal) + + biasing << c_route(pdk, pmirrors_ref.ports['source_3_3_0_S'], m12_m18.ports['source_2_2_0_S'], cglayer='met2', cwidth = width_horizontal) + + #Bulk route + biasing << straight_route(pdk, pmirrors_ref.ports['source_2_1_0_S'], pmirrors_ref.ports['bulk_down_N']) + #Drain route + biasing << L_route(pdk, pmirrors_ref.ports['drain_2_1_0_E'], pmirrors_ref.ports['gate1_S'], hglayer='met2', vglayer='met3', vwidth = width_horizontal) + biasing << L_route(pdk, pmirrors_ref.ports['drain_2_1_0_E'], pmirrors_ref.ports['gate2_S'], hglayer='met2', vglayer='met3', vwidth = width_horizontal) + biasing << straight_route(pdk, pmirrors_ref.ports['drain_1_2_0_E'], m2_m16.ports['drain_2_2_0_W'], glayer1='met2', glayer2='met2', via1_alignment_layer='met3', width = width_horizontal) + biasing << straight_route(pdk, pmirrors_ref.ports['drain_2_1_0_W'], m1_m15.ports['drain_1_1_0_E'], glayer1='met2', glayer2='met2', via1_alignment_layer='met3', width = width_horizontal) + + ############################################ + #Falta la conexión con transistores 3 5 y 7 + ############################################ + + #M1-M15 + #Bulk route + biasing << straight_route(pdk, m1_m15.ports['source_2_2_0_S'], m1_m15.ports['bulk_down_N']) + #Drain route + biasing << L_route(pdk, m1_m15.ports['source_1_1_0_E'], m1_m15.ports['drain_2_2_0_N'], hglayer='met2') + #Source route + VSS1 = biasing << c_route(pdk, m1_m15.ports['source_2_2_0_S'], m2_m16.ports['source_1_1_0_S'], cglayer='met4', extension=size_via+width_horizontal, cwidth = width_horizontal) + + #M2-16 + #Gate route + biasing << L_route(pdk, m2_m16.ports['gate2_S'], m2_m16.ports['drain_2_2_0_E'], vglayer='met3', hglayer='met2', vwidth = width_horizontal) + biasing << L_route(pdk, m2_m16.ports['gate1_S'], m2_m16.ports['drain_2_2_0_E'], vglayer='met3', hglayer='met2', vwidth = width_horizontal) + + #Bulk route + biasing << straight_route(pdk, m2_m16.ports['source_1_1_0_S'], m2_m16.ports['bulk_down_N']) + #drain route + biasing << L_route(pdk, m2_m16.ports['source_2_2_0_S'], m2_m16.ports['drain_1_1_0_W'], hglayer='met2', vwidth = width_horizontal) + + ############################################ + #Falta la conexión con transistores 3 5 y 7 + ############################################ + + #M12-M18 + #Source route + if width_route == None or width_route == 0: + biasing << straight_route(pdk, m13_m14.ports['source_5_1_0_W'], m12_m18.ports['source_2_2_0_W'], glayer1='met2', glayer2='met2', via1_alignment_layer='met3', width = width_horizontal) + else: + biasing << L_route(pdk, m13_m14.ports['source_5_1_0_E'], m12_m18.ports['source_2_2_0_S'], vglayer='met3', hglayer='met2', vwidth = 0.75*width_horizontal) + + #Bulk route + biasing << straight_route(pdk, m12_m18.ports['source_2_2_0_S'], m12_m18.ports['bulk_down_N']) + #Gate route + biasing << L_route(pdk, m12_m18.ports['gate1_S'], m12_m18.ports['drain_1_1_0_W'], vglayer='met3', hglayer='met2', vwidth = width_horizontal) + biasing << L_route(pdk, m12_m18.ports['gate2_S'], m12_m18.ports['drain_1_1_0_W'], vglayer='met3', hglayer='met2', vwidth = width_horizontal) + #drain route + biasing << L_route(pdk, m12_m18.ports['drain_2_2_0_E'], m12_m18.ports['source_1_1_0_S'], hglayer='met2') + ############################################ + #Falta la conexión con transistores 3 5 y 7 + ############################################ + + #M13-M14 + #Bulk route + biasing << straight_route(pdk, m13_m14.ports['source_1_1_0_S'], m12_m18.ports['bulk_down_S'], via2_alignment_layer='met2') + biasing << straight_route(pdk, m13_m14.ports['source_3_1_0_S'], m12_m18.ports['bulk_down_S'], via2_alignment_layer='met2') + biasing << straight_route(pdk, m13_m14.ports['source_5_1_0_S'], m12_m18.ports['bulk_down_S'], via2_alignment_layer='met2') + #Common route + biasing << straight_route(pdk, m13_m14.ports['source_2_2_0_W'], m13_m14.ports['source_4_2_0_E'], glayer1='met2', glayer2='met2', via1_alignment_layer='met3', width = width_horizontal) + VDD2 = biasing << straight_route(pdk, m13_m14.ports['source_1_1_0_W'], m13_m14.ports['source_5_1_0_E'], glayer1='met2', glayer2='met2', via1_alignment_layer='met3', width = width_horizontal) + via_m13_1 = biasing << via_3_4 + via_m13_2 = biasing << via_3_4 + via_m13_3 = biasing << via_3_4 + via_m13_1.movex(pdk.snap_to_2xgrid(m13_m14.ports['source_1_1_0_N'].center[0])).movey(pdk.snap_to_2xgrid(m13_m14.ports['source_1_1_0_E'].center[1])) + via_m13_2.movex(pdk.snap_to_2xgrid(m13_m14.ports['source_3_1_0_N'].center[0])).movey(pdk.snap_to_2xgrid(m13_m14.ports['source_3_1_0_E'].center[1])) + via_m13_3.movex(pdk.snap_to_2xgrid(m13_m14.ports['source_5_1_0_N'].center[0])).movey(pdk.snap_to_2xgrid(m13_m14.ports['source_5_1_0_E'].center[1])) + biasing << straight_route(pdk, via_m13_1.ports['top_met_W'], via_m13_3.ports['top_met_E'], width = width_horizontal) + + biasing << straight_route(pdk, m13_m14.ports['drain_1_1_0_W'], m13_m14.ports['drain_5_1_0_E'], glayer1='met2', glayer2='met2', via1_alignment_layer='met3', width = width_horizontal) + biasing << straight_route(pdk, m13_m14.ports['drain_2_2_0_W'], m13_m14.ports['drain_4_2_0_E'], glayer1='met2', glayer2='met2', via1_alignment_layer='met3', width = width_horizontal) + #drain route + biasing << L_route(pdk, m13_m14.ports['source_2_2_0_S'], m13_m14.ports['drain_1_1_0_E'], hglayer='met2', vwidth = width_horizontal) + biasing << L_route(pdk, m13_m14.ports['source_4_2_0_S'], m13_m14.ports['drain_1_1_0_E'], hglayer='met2', vwidth = width_horizontal) + #gate route + biasing << straight_route(pdk, m13_m14.ports['1_1_gate_W'], m13_m14.ports['5_1_gate_E']) + biasing << L_route(pdk, m13_m14.ports['drain_2_2_0_S'], m13_m14.ports['1_1_gate_W']) + biasing << L_route(pdk, m13_m14.ports['drain_4_2_0_S'], m13_m14.ports['1_1_gate_W']) + biasing << L_route(pdk, m13_m14.ports['4_2_gate_W'], m12_m18.ports['gate2_N']) + + ############################################ + #Falta la conexión con transistores 3 5 y 7 y puentear los gates comunes + ############################################ + min_separation = pdk.get_grule('met3')['min_separation'] + + #input port + via_ref = via_stack(pdk, 'met2', 'met3') + + V_ref = biasing << via_ref + align_comp_to_port(V_ref, m1_m15.ports['source_2_2_0_S']) + V_ref.movey(pdk.snap_to_2xgrid(size_via+2*min_separation+2*width_horizontal)).movex(pdk.snap_to_2xgrid(-evaluate_bbox(m1_m15)[0]/4)) + biasing << L_route(pdk, m1_m15.ports['gate1_N'], V_ref.ports['bottom_met_E'], vwidth = width_horizontal) + biasing << L_route(pdk, m1_m15.ports['gate2_N'], V_ref.ports['bottom_met_W'], vwidth = width_horizontal) + + V_dd = biasing << via_ref + align_comp_to_port(V_dd, m13_m14.ports['source_5_1_0_W']) + V_dd.movex(pdk.snap_to_2xgrid(evaluate_bbox(m13_m14)[0]/5)) + biasing << straight_route(pdk, m13_m14.ports['source_5_1_0_W'], V_dd.ports['bottom_met_E'], glayer1='met2', glayer2='met2', via1_alignment_layer='met3', width = width_horizontal) + + #Output port + V_biasp = biasing << via_ref + V_biasp.movex(pdk.snap_to_2xgrid(pmirrors_ref.ports['drain_2_1_0_S'].center[0])).movey(pdk.snap_to_2xgrid(-size_biasing[1]/2 - evaluate_bbox(via_ref)[1] - min_separation)) + biasing << straight_route(pdk, pmirrors_ref.ports['drain_2_1_0_S'], V_biasp['top_met_S']) + + V_biasp2 = biasing << via_ref + align_comp_to_port(V_biasp2, m13_m14.ports['4_2_gate_E']) + V_biasp2.movex(pdk.snap_to_2xgrid(2*evaluate_bbox(m1_m15)[0]/7)) + biasing << straight_route(pdk, m13_m14.ports['4_2_gate_E'], V_biasp2['bottom_met_E']) + + #Add the ports to the component + biasing.add_ports(pmirrors_ref.ports, prefix='pmirror_') + biasing.add_ports(m1_m15.ports, prefix='m1_') + biasing.add_ports(m2_m16.ports, prefix='m2_') + biasing.add_ports(m12_m18.ports, prefix='m12_') + biasing.add_ports(m13_m14.ports, prefix='m13_') + biasing.add_ports(V_ref.ports, prefix = 'Vref_') + biasing.add_ports(V_dd.ports, prefix = 'Vdd_') + biasing.add_ports(V_biasp.ports, prefix = 'VbiasP1_') + biasing.add_ports(V_biasp2.ports, prefix = 'VbiasP2_') + + biasing.add_ports(VDD1.ports, prefix = 'VDD1_') + biasing.add_ports(VDD2.ports, prefix = 'VDD2_') + biasing.add_ports(VSS1.ports, prefix = 'VSS1_') + + #Center the component + component_centered = center_component_with_ports(biasing) + + #component_centered = component_centered.flatten() + return component_centered + +def Biasing_generator(pdk, + devices_info, + arrays_info, + width_route: float = None) -> Component: + """ + This function creates a biasing circuit using the MappedPDK and the custom functions + """ + # Width configuration + if width_route == None or width_route == 0: + separation_interdigitado = 0 + width_horizontal = evaluate_bbox(via_stack(pdk,'met2','met3'))[1] + else: + separation_interdigitado = width_route + width_horizontal = width_route + # Division devices info + devices_info_top = [devices_info[0], devices_info[1], devices_info[2]] + devices_info_ntop = [devices_info[3]] + devices_info_nbot = [devices_info[4]] + arrays_info_top = [arrays_info[0], arrays_info[1], arrays_info[2], arrays_info[3]] + array_nmirrors_top = arrays_info[4] + array_nmirrors_bot = arrays_info[5] + min_separation_met3 = pdk.get_grule('met3')['min_separation'] + # Create the component + biasing = Component() + + nmirrors_top = interdigitado_placement_Onchip(pdk, output='via', output_separation=(separation_interdigitado, separation_interdigitado+min_separation_met3), deviceA_and_B=devices_info_ntop[0]['type'], width=devices_info_ntop[0]['width'], length=devices_info_ntop[0]['length'], + fingers=devices_info_ntop[0]['fingers'], with_dummy=devices_info_ntop[0]['with_dummy'], array=array_nmirrors_top, with_tie=devices_info_ntop[0]['with_tie'], with_lvt_layer=devices_info_ntop[0]['lvt']) + + nmirrors_bot = interdigitado_cascode_placement_Onchip(pdk, output='via', common_route=(False, True), output_separation=separation_interdigitado, deviceA_and_B=devices_info_nbot[0]['type'], width=devices_info_nbot[0]['width'], length=devices_info_nbot[0]['length'], + fingers=devices_info_nbot[0]['fingers'], with_dummy=devices_info_nbot[0]['with_dummy'], array=array_nmirrors_bot, with_tie=devices_info_nbot[0]['with_tie'], with_lvt_layer=devices_info_nbot[0]['lvt']) + + top_components = Component_Biasing(pdk, devices_info_top, arrays_info_top, width_route) + # Add the components to the biasing component + nmirrors_top_ref = biasing << nmirrors_top + nmirrors_bot_ref_1 = biasing << nmirrors_bot + top_components_ref = biasing << top_components + #Components size + nmirrors_top_size = evaluate_bbox(nmirrors_top_ref) + nmirrors_bot_size = evaluate_bbox(nmirrors_bot_ref_1) + top_components_size = evaluate_bbox(top_components_ref) + #min separation between components + min_separation = pdk.get_grule('nwell')['min_separation'] + #amount of movement + nmirror_top_movement = [0,0] + nmirror_bot_1_movement = [0, (nmirrors_top_size[1] + nmirrors_bot_size[1])/2 + min_separation + separation_interdigitado] + top_components_movement = [0, (nmirrors_top_size[1] + top_components_size[1])/2 + min_separation + separation_interdigitado] + # move the componentes + nmirrors_top_ref.movey(pdk.snap_to_2xgrid(nmirror_top_movement[1])) + nmirrors_bot_ref_1.movey(pdk.snap_to_2xgrid(-nmirror_bot_1_movement[1])) + top_components_ref.movey(pdk.snap_to_2xgrid(top_components_movement[1])) + #Add ports + biasing.add_ports(nmirrors_top_ref.get_ports_list(), prefix='nmirror_top_') + biasing.add_ports(nmirrors_bot_ref_1.get_ports_list(), prefix='nmirror_bot_') + biasing.add_ports(top_components_ref.get_ports_list(), prefix='top_ref_') + #Vias aux + via_3_4 = via_stack(pdk, 'met3', 'met4') + #Routing + #Common nodes + biasing << straight_route(pdk, nmirrors_top_ref.ports['source_6_1_0_W'], nmirrors_top_ref.ports['source_10_1_0_E'], glayer1='met2', glayer2='met2', via1_alignment_layer='met3', width=width_horizontal) + biasing << straight_route(pdk, nmirrors_top_ref.ports['drain_6_1_0_W'], nmirrors_top_ref.ports['drain_10_1_0_E'], glayer1='met2', glayer2='met2', via1_alignment_layer='met3', width=width_horizontal) + + biasing << straight_route(pdk, nmirrors_top_ref.ports['source_1_2_0_W'], nmirrors_top_ref.ports['source_15_2_0_E'], glayer1='met2', glayer2='met2', via1_alignment_layer='met3', width=width_horizontal) + biasing << straight_route(pdk, nmirrors_top_ref.ports['drain_1_2_0_W'], nmirrors_top_ref.ports['drain_15_2_0_E'], glayer1='met2', glayer2='met2', via1_alignment_layer='met3', width=width_horizontal) + + biasing << straight_route(pdk, nmirrors_top_ref.ports['source_3_3_0_W'], nmirrors_top_ref.ports['source_12_3_0_E'], glayer1='met2', glayer2='met2', via1_alignment_layer='met3', width=width_horizontal) + biasing << straight_route(pdk, nmirrors_top_ref.ports['drain_3_3_0_W'], nmirrors_top_ref.ports['drain_12_3_0_W'], glayer1='met2', glayer2='met2', via1_alignment_layer='met3', width=width_horizontal) + #Cascode nmos + #biasing << straight_route(pdk, nmirrors_bot_ref_1.ports['source_15_1_0_W'], nmirrors_bot_ref_1.ports['source_18_1_0_E'], glayer1='met2', glayer2='met2', via1_alignment_layer='met3', via2_alignment_layer='met3', width=width_horizontal) + biasing << straight_route(pdk, nmirrors_bot_ref_1.ports['drain_25_1_0_W'], nmirrors_bot_ref_1.ports['drain_28_1_0_E'], glayer1='met2', glayer2='met2', via1_alignment_layer='met3', via2_alignment_layer='met3', width=width_horizontal) + + VSS1 = biasing << straight_route(pdk, nmirrors_bot_ref_1.ports['source_11_2_0_W'], nmirrors_bot_ref_1.ports['source_112_2_0_E'], glayer1='met2', glayer2='met2', via1_alignment_layer='met3', width=width_horizontal) + vias_nmirror = list() + for i in range(12): + vias_nmirror.append(biasing << via_3_4) + vias_nmirror[-1].movex(pdk.snap_to_2xgrid(nmirrors_bot_ref_1.ports['source_1'+str(i+1)+'_'+str(array_nmirrors_bot[0][i])+'_0_N'].center[0])).movey(pdk.snap_to_2xgrid(nmirrors_bot_ref_1.ports['source_1'+str(i+1)+'_'+str(array_nmirrors_bot[0][i])+'_0_E'].center[1])) + biasing << straight_route(pdk, vias_nmirror[0].ports['top_met_W'], vias_nmirror[-1].ports['top_met_E'], width = width_horizontal) + + biasing.add_ports(VSS1.ports, prefix = 'VSS1_') + biasing << straight_route(pdk, nmirrors_bot_ref_1.ports['drain_21_2_0_W'], nmirrors_bot_ref_1.ports['drain_212_2_0_E'], glayer1='met2', glayer2='met2', via1_alignment_layer='met3', width=width_horizontal) + + #biasing << straight_route(pdk, nmirrors_bot_ref_1.ports['source_12_3_0_W'], nmirrors_bot_ref_1.ports['source_111_3_0_E'], glayer1='met2', glayer2='met2', via1_alignment_layer='met3', width=width_horizontal) + biasing << straight_route(pdk, nmirrors_bot_ref_1.ports['drain_22_3_0_W'], nmirrors_bot_ref_1.ports['drain_211_3_0_E'], glayer1='met2', glayer2='met2', via1_alignment_layer='met3', width=width_horizontal) + + #nmirror top + #source route + for i in range(len(array_nmirrors_top[0])): + if array_nmirrors_top[0][i] == 1: + biasing << L_route(pdk, nmirrors_top_ref.ports['source_'+str(i+1)+'_1_0_S'], nmirrors_bot_ref_1.ports['drain_25_1_0_E'], hglayer='met2', vglayer = 'met3', vwidth = width_horizontal) + elif array_nmirrors_top[0][i] == 2: + biasing << L_route(pdk, nmirrors_top_ref.ports['source_'+str(i+1)+'_2_0_S'], nmirrors_bot_ref_1.ports['drain_21_2_0_E'], hglayer='met2', vglayer = 'met3', vwidth = width_horizontal) + elif array_nmirrors_top[0][i] == 3: + biasing << L_route(pdk, nmirrors_top_ref.ports['source_'+str(i+1)+'_3_0_S'], nmirrors_bot_ref_1.ports['drain_22_3_0_E'], hglayer='met2', vglayer = 'met3', vwidth = width_horizontal) + + # Bulk route + biasing << c_route(pdk, nmirrors_bot_ref_1.ports['bulk_up_E'], nmirrors_top_ref.ports['bulk_down_E']) + biasing << c_route(pdk, nmirrors_bot_ref_1.ports['bulk_up_W'], nmirrors_top_ref.ports['bulk_down_W']) + + for i in range(len(array_nmirrors_bot[0])): + if array_nmirrors_bot[0][i] == 1: + biasing << straight_route(pdk, nmirrors_bot_ref_1.ports['source_1'+str(i+1)+'_1_0_N'], nmirrors_bot_ref_1.ports['bulk_down_S'], via2_alignment_layer='met2') + elif array_nmirrors_bot[0][i] == 2: + biasing << straight_route(pdk, nmirrors_bot_ref_1.ports['source_1'+str(i+1)+'_2_0_N'], nmirrors_bot_ref_1.ports['bulk_down_S'], via2_alignment_layer='met2') + elif array_nmirrors_bot[0][i] == 3: + biasing << straight_route(pdk, nmirrors_bot_ref_1.ports['source_1'+str(i+1)+'_3_0_N'], nmirrors_bot_ref_1.ports['bulk_down_S'], via2_alignment_layer='met2') + + # gate route + biasing << straight_route(pdk, nmirrors_bot_ref_1.ports['gate_1_l_S'], nmirrors_bot_ref_1.ports['gate_2_l_N'], glayer1='met3', glayer2='met3', via2_alignment_layer='met2') + biasing << straight_route(pdk, nmirrors_bot_ref_1.ports['gate_1_r_S'], nmirrors_bot_ref_1.ports['gate_2_r_N'], glayer1='met3', glayer2='met3', via2_alignment_layer='met2') + + for i in range(len(array_nmirrors_top[0])): + if array_nmirrors_top[0][i] == 1: + biasing << L_route(pdk, nmirrors_top_ref.ports['drain_'+str(i+1)+'_1_0_S'], nmirrors_bot_ref_1.ports['gate_2_l_E'], hglayer='met2') + + #M1 connection + #biasing << L_route(pdk, top_components_ref.ports['m1_source_2_2_0_S'], nmirrors_bot_ref_1.ports['source_18_1_0_E'], hglayer='met2', vwidth = width_horizontal) + + #M2 connection + #biasing << c_route(pdk, top_components_ref.ports['m2_source_1_1_0_W'], nmirrors_bot_ref_1.ports['source_15_1_0_W'], e1glayer = 'met2', cglayer = 'met3', e2glayer = 'met2', width1=width_horizontal, width2=width_horizontal) + + biasing << L_route(pdk, top_components_ref.ports['m2_gate1_S'], nmirrors_top_ref.ports['gate1_E'], hglayer = 'met2') + + #Pmirror connection + biasing << L_route(pdk, top_components_ref.ports['pmirror_drain_3_3_0_S'], nmirrors_top_ref.ports['drain_10_1_0_E'], hglayer = 'met2', vwidth = width_horizontal) + + #M12 connection + biasing << L_route(pdk, top_components_ref.ports['m12_drain_1_1_0_S'], nmirrors_top_ref.ports['drain_1_2_0_E'], hglayer = 'met2', vwidth = width_horizontal) + biasing << L_route(pdk, top_components_ref.ports['m12_gate1_S'], nmirrors_top_ref.ports['drain_1_2_0_E'], hglayer = 'met2', vwidth = width_horizontal) + biasing << c_route(pdk, top_components_ref.ports['m12_gate2_E'], nmirrors_top_ref.ports['drain_1_2_0_E'], e1glayer = 'met2', cglayer = 'met3', e2glayer = 'met2', width2=width_horizontal) + + #M13 connection + biasing << L_route(pdk, top_components_ref.ports['m13_drain_2_2_0_S'], nmirrors_top_ref.ports['drain_12_3_0_W'], hglayer='met2', vwidth = width_horizontal) + biasing << L_route(pdk, top_components_ref.ports['m13_drain_4_2_0_S'], nmirrors_top_ref.ports['drain_12_3_0_W'], hglayer='met2', vwidth = width_horizontal) + + min_separation = pdk.get_grule('met3')['min_separation'] + + biasing_centered = center_component_with_ports(biasing) + + boundary = Boundary_layer(pdk, biasing_centered) + boundary_dim = evaluate_bbox(boundary) + + #Input Port + rectangle_ref = rectangle((0.5,0.5), layer=pdk.get_glayer('met2'), centered=True) + + Vref = biasing_centered << rectangle_ref + Vref.movey(pdk.snap_to_2xgrid(biasing_centered.ports['top_ref_Vref_bottom_met_W'].center[1])) + Vref.movex(pdk.snap_to_2xgrid(-boundary_dim[0]/2+evaluate_bbox(rectangle_ref)[0]/2)) + biasing_centered << straight_route(pdk, Vref.ports['e1'], biasing_centered.ports['top_ref_Vref_bottom_met_W'], width=width_horizontal) + biasing_centered.add_ports(Vref.get_ports_list(), prefix='V_REF_') + + #Output port + V_bias_N1 = biasing_centered << rectangle_ref + V_bias_N1.movey(pdk.snap_to_2xgrid(biasing_centered.ports['nmirror_bot_gate_2_r_E'].center[1])) + V_bias_N1.movex(pdk.snap_to_2xgrid(boundary_dim[0]/2-evaluate_bbox(rectangle_ref)[0]/2)).movey(pdk.snap_to_2xgrid((biasing_centered.ports['nmirror_bot_gate_1_r_E'].center[1]-biasing_centered.ports['nmirror_bot_gate_2_r_E'].center[1])/2)) + biasing_centered << L_route(pdk, biasing_centered.ports['nmirror_bot_gate_2_r_N'], V_bias_N1.ports['e1']) + biasing_centered.add_ports(V_bias_N1.get_ports_list(), prefix='V_BIASN1_') + + V_bias_N2 = biasing_centered << rectangle_ref + V_bias_N2.movey(pdk.snap_to_2xgrid(biasing_centered.ports['nmirror_top_gate2_E'].center[1])) + V_bias_N2.movex(pdk.snap_to_2xgrid(boundary_dim[0]/2-evaluate_bbox(rectangle_ref)[0]/2)) + biasing_centered << straight_route(pdk, V_bias_N2.ports['e1'], biasing_centered.ports['nmirror_top_gate2_W'], glayer1='met2', glayer2='met2') + biasing_centered.add_ports(V_bias_N2.get_ports_list(), prefix='V_BIASN2_') + + V_bias_P1 = biasing_centered << rectangle_ref + V_bias_P1.movey(pdk.snap_to_2xgrid(biasing_centered.ports['top_ref_VbiasP1_top_met_E'].center[1])) + V_bias_P1.movex(pdk.snap_to_2xgrid(boundary_dim[0]/2-evaluate_bbox(rectangle_ref)[0]/2)) + biasing_centered << straight_route(pdk, V_bias_P1.ports['e3'], biasing_centered.ports['top_ref_VbiasP1_bottom_met_W'], glayer1='met2', glayer2='met2') + biasing_centered.add_ports(V_bias_P1.get_ports_list(), prefix='V_BIASP1_') + + biasing_centered = center_component_with_ports(biasing_centered) + rename_ports_by_orientation(biasing_centered) + #name = [name for name in biasing_centered.ports if 'bulk' in name] + #print(name) + route_list = [['VSS1_route_', 'VSS'], ['top_ref_VSS1_con_', 'VSS'], ['nmirror_bot_bulk_down_', 'VSS'], ['nmirror_bot_bulk_up_', 'VSS'], ['nmirror_top_bulk_down_', 'VSS'], + ['nmirror_top_bulk_up_', 'VSS'], ['top_ref_m1_bulk_up_', 'VSS'], ['top_ref_m1_bulk_down_', 'VSS'], ['top_ref_m2_bulk_up_', 'VSS'], ['top_ref_m2_bulk_down_', 'VSS'], + ['top_ref_VDD1_route_', 'VDD'], ['top_ref_VDD2_route_', 'VDD'], ['top_ref_pmirror_bulk_up_', 'VDD'], ['top_ref_pmirror_bulk_down_', 'VDD'], + ['top_ref_m12_bulk_up_', 'VDD'], ['top_ref_m12_bulk_down_', 'VDD'], ['top_ref_m13_bulk_up_', 'VDD'], ['top_ref_m13_bulk_down_', 'VDD']] + + rails(pdk, biasing_centered, 1, route_list) + + component = Component() + component << biasing_centered + + + filtrar_puertos(biasing_centered, component, 'V_REF_', 'VREF_') + #filtrar_puertos(biasing_centered, component, 'top_ref_Vdd_bottom_met_', 'Vdd_') + #filtrar_puertos(biasing_centered, component, 'VSS_bottom_met_', 'Vss_') + filtrar_puertos(biasing_centered, component, 'V_BIASN1_', 'VBIASN1_') + filtrar_puertos(biasing_centered, component, 'V_BIASN2_', 'VBIASN2_') + filtrar_puertos(biasing_centered, component, 'V_BIASP1_', 'VBIASP1_') + filtrar_puertos(biasing_centered, component, 'top_ref_VbiasP2_bottom_met_', 'VBIASP2_') + + # add the pin and label + #pin_label_creation('Vss', 'VSS', 'met3', component) + pin_label_creation(pdk, 'VBIASN1', 'VbiasN1', 'met2', component) + pin_label_creation(pdk, 'VBIASN2', 'VbiasN2', 'met2', component) + pin_label_creation(pdk, 'VREF', 'Vref', 'met2', component) + #pin_label_creation(pdk, 'Vdd', 'VDD', 'met3', component) + pin_label_creation(pdk, 'VBIASP1', 'VbiasP1', 'met2', component) + pin_label_creation(pdk, 'VBIASP2', 'VbiasP2', 'met2', component) + + rename_ports_by_orientation(component) + + return component + +# Information of the transistors +array_m1_m15 = [[1,2]] +array_m13_m14 = [[1,2,1,2,1]] +array_m12_m18 = [[1,2]] +array_pmirrors = [[2,1,3]] +array_nmirrors_top = [[2,2,3,3,3,1,1,1,1,1,3,3,2,2,2]] +array_nmirrors_bot = [[2,3,2,3,1,1,1,1,3,2,3,2]] + + +devices_info_m1_m15 = {'type':'nfet', 'name':'M1', 'width':0.5, 'length':6, 'width_route_mult':1, 'fingers':1, 'with_substrate_tap':False, 'with_tie':True, 'with_dummy':True, 'lvt':False} +devices_info_m12_m18 = {'type':'pfet', 'name':'M12', 'width':0.5, 'length':2, 'width_route_mult':1, 'fingers':1, 'with_substrate_tap':False, 'with_tie':True, 'with_dummy':True, 'lvt':False} +devices_info_pmirrors = {'type':'pfet', 'name':'Pmirrors', 'width':0.5, 'length':2, 'width_route_mult':1, 'fingers':1, 'with_substrate_tap':False, 'with_tie':True, 'with_dummy':True, 'lvt':False} +devices_info_ntop = {'type':'nfet', 'name':'nmirror_top', 'width':0.5, 'length':6, 'width_route_mult':1, 'fingers':1, 'with_substrate_tap':False, 'with_tie':True, 'with_dummy':True, 'lvt':False} +devices_info_nbot = {'type':'nfet', 'name':'nmirror_bot', 'width':0.5, 'length':6, 'width_route_mult':1, 'fingers':1, 'with_substrate_tap':False, 'with_tie':True, 'with_dummy':True, 'lvt':False} +devices_info = [devices_info_m1_m15, devices_info_m12_m18, devices_info_pmirrors, devices_info_ntop, devices_info_nbot] +arrays_info = [array_m1_m15, array_m12_m18, array_pmirrors, array_m13_m14, array_nmirrors_top, array_nmirrors_bot] + +Test = Biasing_generator(gf180, devices_info, arrays_info, width_route=1) +Test.name = "folded_cascode_bias" +Test.write_gds("folded_cascode_bias_pcells.gds") +#ports = [name for name in Test.ports if 'V' in name] +#print(ports) +Test.show() \ No newline at end of file diff --git a/blocks/composite/folded_cascode/glayout/OTA_Building_blocks.py b/blocks/composite/folded_cascode/glayout/OTA_Building_blocks.py new file mode 100644 index 00000000..a70c50e3 --- /dev/null +++ b/blocks/composite/folded_cascode/glayout/OTA_Building_blocks.py @@ -0,0 +1,358 @@ +from glayout import MappedPDK, sky130, gf180 +from glayout import nmos, pmos, multiplier, tapring, via_stack, via_array + +from glayout.spice.netlist import Netlist +from glayout.routing import c_route, L_route, straight_route + +from gdsfactory.cell import cell +from gdsfactory.component import Component, copy +from gdsfactory.components.rectangle import rectangle +from gdsfactory.routing.route_quad import route_quad +from gdsfactory.routing.route_sharp import route_sharp + +from glayout.util.comp_utils import ( + align_comp_to_port, + evaluate_bbox, + movex, + movey, + prec_ref_center, + prec_array, +) +from glayout.util.port_utils import ( + add_ports_perimeter, + get_orientation, + print_ports, + rename_ports_by_list, + rename_ports_by_orientation, + set_port_orientation, +) +from glayout.util.snap_to_grid import component_snap_to_grid +from glayout.placement.common_centroid_ab_ba import common_centroid_ab_ba + +from gdsfactory.functions import transformed +from gdsfactory.components import text_freetype +from gdsfactory.components.rectangular_ring import rectangular_ring +from typing import Optional, Union, Literal +import time +import copy + +# Import custom functions (Matrix generator) +from primitives import (mirror, Cascode, current_source, transistor, diode, differential_pair, Bi_current_source, Pair_bias) +from custom_functions import filtrar_puertos, pin_label_creation, interdigitado_placement_Onchip, macro_two_transistor_placement_Onchip +from custom_functions import center_component_with_ports +from custom_functions import Boundary_layer + + +def place_cascode(pdk: MappedPDK) -> Component: + place_cascode = Component() + + # Use of second order primitive + # We define the parameters of our primitive + + m1 = {'type':'pfet', 'name':'M3_M4', 'width':1, 'length':1.5, 'fingers':1, 'with_substrate_tap':False, 'with_tie':True, 'with_dummy':True, 'width_route_mult':1, 'lvt':True} + m2 = {'type':'pfet', 'name':'M5_M6', 'width':1, 'length':3, 'fingers':1, 'with_substrate_tap':False, 'with_tie':True, 'with_dummy':True, 'width_route_mult':1, 'lvt':True} + + array = [[[2,1,2,1,1,2,1,2,1,2],[1,2,1,2,2,1,2,1,2,1]],[[1,2,2,1,1,2],[2,1,1,2,2,1]]] + + devices_info = [m1,m2] + + # We call the cascode primitive + Cascode_call = Cascode(pdk,devices_info,array) + + + Cascode_component = place_cascode << Cascode_call + + place_cascode.add_ports(Cascode_component.get_ports_list(),prefix='CASC_') + + #component = Component() + #component << place_cascode + + place_cascode_centered = center_component_with_ports(place_cascode) + component = Component() + component << place_cascode_centered + + filtrar_puertos(place_cascode_centered, component, 'CASC_VREF_', 'VREF_') + filtrar_puertos(place_cascode_centered, component, 'CASC_VIP_', 'VIP_') + filtrar_puertos(place_cascode_centered, component, 'CASC_VIN_', 'VIN_') + filtrar_puertos(place_cascode_centered, component, 'CASC_VB1_', 'VB1_') + filtrar_puertos(place_cascode_centered, component, 'CASC_VB2_', 'VB2_') + filtrar_puertos(place_cascode_centered, component, 'CASC_VD1_', 'VD1_') + filtrar_puertos(place_cascode_centered, component, 'CASC_VOUT_', 'VOUT_') + + return component + +def place_bi_current(pdk: MappedPDK) -> Component: + place_bi_current = Component() + + # Use of second order primitive + m1 = {'type':'nfet', 'name':'M9_M10', 'width':0.5, 'length':6.5, 'fingers':1, 'with_substrate_tap':False, 'with_tie':True, 'with_dummy':True, 'width_route_mult':1, 'lvt':False} + m2 = {'type':'nfet', 'name':'M7_M8', 'width':1, 'length':3, 'fingers':1, 'with_substrate_tap':False, 'with_tie':True, 'with_dummy':True, 'width_route_mult':1, 'lvt':False} + + array = [[[1,2,1,2,1],[2,1,2,1,2]],[[1,2,1,2,1],[2,1,2,1,2]]] + + devices_info = [m1,m2] + + # We call the Bi_current primitive + Bi_current_call = Bi_current_source(pdk,devices_info,array) + + Bi_current_component = place_bi_current << Bi_current_call + + place_bi_current.add_ports(Bi_current_component.get_ports_list(),prefix='BIC_') + + #component = Component() + #component << place_bi_current + + place_bi_current_centered = center_component_with_ports(place_bi_current) + component = Component() + component << place_bi_current_centered + + filtrar_puertos(place_bi_current_centered, component, 'BIC_VOUT_', 'VOUT_') + filtrar_puertos(place_bi_current_centered, component, 'BIC_VD1_', 'VD1_') + filtrar_puertos(place_bi_current_centered, component, 'BIC_VB2_', 'VB2_') + filtrar_puertos(place_bi_current_centered, component, 'BIC_VB2R_', 'VB2R_') + filtrar_puertos(place_bi_current_centered, component, 'BIC_VB3_', 'VB3_') + filtrar_puertos(place_bi_current_centered, component, 'BIC_VREF_', 'VREF_') + filtrar_puertos(place_bi_current_centered, component, 'BIC_VCOMM_', 'VCOMM_') + + return component + +def place_par_bias(pdk: MappedPDK) -> Component: + place_par_bias = Component() + + # Use of second order primitive + m1 = {'type':'nfet', 'name':'M1_M2', 'width':1, 'length':1, 'fingers':1, 'with_substrate_tap':False, 'with_tie':True, 'with_dummy':True, 'width_route_mult':1, 'lvt':False} + m2 = {'type':'nfet', 'name':'M11', 'width':0.5, 'length':6.5, 'fingers':1, 'with_substrate_tap':False, 'with_tie':True, 'with_dummy':True, 'width_route_mult':1, 'lvt':False} + + array = [[[1, 2, 1, 2, 1, 1, 2, 1, 2, 1], # Row 1: ABABA ABABA + [2, 1, 2, 1, 2, 2, 1, 2, 1, 2], # Row 2: BABAB BABAB + [2, 1, 2, 1, 2, 2, 1, 2, 1, 2], # Row 3: BABAB BABAB + [1, 2, 1, 2, 1, 1, 2, 1, 2, 1], # Row 4: ABABA ABABA + ] + ,[[1,1],[1,1],[1,1],[1,1],[1,1]]] # + + devices_info = [m1,m2] + + # We call the Bi_current primitive + Par_bias_call = Pair_bias(pdk,devices_info,array) + + Par_bias_component = place_par_bias << Par_bias_call + + place_par_bias.add_ports(Par_bias_component.get_ports_list(),prefix='PBI_') + + #routing bulks + pos_der = (place_par_bias.ports['PBI_P_VBC_D_N'].center[0]-place_par_bias.ports['PBI_P_VBC_D_W'].center[0])/2 + pos_iz = (place_par_bias.ports['PBI_P_VBC_D_N'].center[0]-place_par_bias.ports['PBI_P_VBC_D_E'].center[0])/2 + via_ref = via_array(pdk, 'met2', 'met3', (pos_der/2, 0.5)) + + bulk_par_1 = place_par_bias << via_ref + bulk_par_1.movex(pos_der).movey(place_par_bias.ports['PBI_P_VBC_D_E'].center[1]) + + bulk_par_2 = place_par_bias << via_ref + bulk_par_2.movex(pos_iz).movey(place_par_bias.ports['PBI_P_VBC_D_E'].center[1]) + + bulk_tail_1 = place_par_bias << via_ref + bulk_tail_1.movex(pos_der).movey(place_par_bias.ports['PBI_T_VBC_U_E'].center[1]) + + bulk_tail_2 = place_par_bias << via_ref + bulk_tail_2.movex(pos_iz).movey(place_par_bias.ports['PBI_T_VBC_U_E'].center[1]) + + place_par_bias << straight_route(pdk, bulk_par_1.ports['top_met_N'], bulk_tail_1.ports['top_met_S']) + place_par_bias << straight_route(pdk, bulk_par_2.ports['top_met_N'], bulk_tail_2.ports['top_met_S']) + + #component = Component() + #component << place_par_bias + + place_par_bias_centered = center_component_with_ports(place_par_bias) + component = Component() + component << place_par_bias_centered + + filtrar_puertos(place_par_bias_centered, component, 'PBI_VGP_', 'VGP_') + filtrar_puertos(place_par_bias_centered, component, 'PBI_VGN_', 'VGN_') + filtrar_puertos(place_par_bias_centered, component, 'PBI_VDP_', 'VDP_') + filtrar_puertos(place_par_bias_centered, component, 'PBI_VDN_', 'VDN_') + filtrar_puertos(place_par_bias_centered, component, 'PBI_VBIAS_', 'VBIAS_') + filtrar_puertos(place_par_bias_centered, component, 'PBI_VREF_', 'VREF_') + + return component, devices_info +''' +def nmos_bot(pdk: MappedPDK, + width_route: float = None)-> Component: + nmos_bot = Component() + m = {'type':'nfet', 'name':'M9_10_11', 'width':0.5, 'length':6.5, 'fingers':1, 'with_substrate_tap':False, 'with_tie':True, 'with_dummy':True, 'width_route_mult':1, 'lvt':False} + array = [[1,1,1,2,2,3,3,3,1,1,1,1,3,3,2,2,2,1,1,1]] + # Width configuration + if width_route == None or width_route == 0: + separation_interdigitado = 0 + width_horizontal = evaluate_bbox(via_stack(pdk,'met2','met3'))[1] + else: + separation_interdigitado = width_route + width_horizontal = width_route + nmos_ref = interdigitado_placement_Onchip(pdk, output='via', output_separation=separation_interdigitado, deviceA_and_B=m['type'], width=m['width'], length=m['length'], + fingers=m['fingers'], with_dummy=m['with_dummy'], array=array, with_tie=m['with_tie'], with_lvt_layer=m['lvt'], common_route=(False, True)) + nmos = nmos_bot << nmos_ref + #Common routes + nmos_bot << straight_route(pdk, nmos.ports['source_1_1_0_W'], nmos.ports['source_20_1_0_E'], glayer1='met2', glayer2='met2', via1_alignment_layer='met3', width=width_horizontal) + nmos_bot << straight_route(pdk, nmos.ports['drain_1_1_0_W'], nmos.ports['drain_20_1_0_E'], glayer1='met2', glayer2='met2', via1_alignment_layer='met3', width=width_horizontal) + + nmos_bot << straight_route(pdk, nmos.ports['drain_4_2_0_W'], nmos.ports['drain_17_2_0_E'], glayer1='met2', glayer2='met2', via1_alignment_layer='met3', width=width_horizontal) + + nmos_bot << straight_route(pdk, nmos.ports['drain_6_3_0_W'], nmos.ports['drain_14_3_0_E'], glayer1='met2', glayer2='met2', via1_alignment_layer='met3', width=width_horizontal) + + #Bulk routes + for i in range(len(array[0])): + if array[0][i] == 1: + nmos_bot << straight_route(pdk, nmos.ports['source_'+str(i+1)+'_1_0_N'], nmos.ports['bulk_down_S'], via2_alignment_layer='met2') + elif array[0][i] == 2: + nmos_bot << straight_route(pdk, nmos.ports['source_'+str(i+1)+'_2_0_N'], nmos.ports['bulk_down_S'], via2_alignment_layer='met2') + elif array[0][i] == 3: + nmos_bot << straight_route(pdk, nmos.ports['source_'+str(i+1)+'_3_0_N'], nmos.ports['bulk_down_S'], via2_alignment_layer='met2') + + return nmos_bot + +def currents_mirrors(pdk: MappedPDK, + width_route: float = None) -> Component: + + currents_mirrors = Component() + m7_8_data = {'type':'nfet', 'name':'M7_8', 'width':1, 'length':3, 'fingers':1, 'with_substrate_tap':False, 'with_tie':True, 'with_dummy':True, 'width_route_mult':1, 'lvt':False} + m5_m6_data = {'type':'pfet', 'name':'M5_6', 'width':1, 'length':1.5, 'fingers':1, 'with_substrate_tap':False, 'with_tie':True, 'with_dummy':True, 'width_route_mult':1, 'lvt':True} + m3_m4_data = {'type':'pfet', 'name':'M3_4', 'width':1, 'length':3, 'fingers':1, 'with_substrate_tap':False, 'with_tie':True, 'with_dummy':True, 'width_route_mult':1, 'lvt':True} + array_m7_8 = [[1,2,1,2,1],[2,1,2,1,2]] + array_m5_6 = [[1,2,1,2,1,2,1,2,1,2],[2,1,2,1,2,1,2,1,2,1]] + array_m3_4 = [[1,1,2,2,1,1],[2,2,1,1,2,2]] + + m7_8_ref = macro_two_transistor_placement_Onchip(pdk=pdk, deviceA_and_B=m7_8_data['type'], with_substrate_tap=m7_8_data['with_substrate_tap'], + with_tie=m7_8_data['with_tie'], width1=m7_8_data['width'], length1=m7_8_data['length'], + fingers1=m7_8_data['fingers'], matriz=array_m7_8, with_dummy=m7_8_data['with_dummy'], + width_route_mult=m7_8_data['width_route_mult'], with_lvt_layer=m7_8_data['lvt']) + m5_6_ref = macro_two_transistor_placement_Onchip(pdk=pdk, deviceA_and_B=m5_m6_data['type'], with_substrate_tap=m5_m6_data['with_substrate_tap'], + with_tie=m5_m6_data['with_tie'], width1=m5_m6_data['width'], length1=m5_m6_data['length'], + fingers1=m5_m6_data['fingers'], matriz=array_m5_6, with_dummy=m5_m6_data['with_dummy'], + width_route_mult=m5_m6_data['width_route_mult'], with_lvt_layer=m5_m6_data['lvt']) + m3_4_ref = macro_two_transistor_placement_Onchip(pdk=pdk, deviceA_and_B=m3_m4_data['type'], with_substrate_tap=m3_m4_data['with_substrate_tap'], + with_tie=m3_m4_data['with_tie'], width1=m3_m4_data['width'], length1=m3_m4_data['length'], + fingers1=m3_m4_data['fingers'], matriz=array_m3_4, with_dummy=m3_m4_data['with_dummy'], + width_route_mult=m3_m4_data['width_route_mult'], with_lvt_layer=m3_m4_data['lvt']) +''' +def OTA_Core(pdk: MappedPDK) -> Component: + OTA_core = Component() + + #nmos = nmos_bot(pdk) + BI1 = place_bi_current(pdk) + CAS1= place_cascode(pdk) + PB1, type_par = place_par_bias(pdk) + + #M9_10_11 = OTA << nmos + TOP_BI1 = OTA_core << BI1 + TOP_CAS1 = OTA_core << CAS1 + TOP_PB1 = OTA_core << PB1 + + size_BI1 = evaluate_bbox(TOP_BI1) + size_CAS1 = evaluate_bbox(TOP_CAS1) + size_PB1 = evaluate_bbox(TOP_PB1) + + max_size_y = pdk.snap_to_2xgrid((size_BI1[1] + size_CAS1[1])/2) + max_size_x = pdk.snap_to_2xgrid((size_BI1[0] + size_PB1[0])/2) + mov_par_tail = pdk.snap_to_2xgrid((size_PB1[1] - size_BI1[1])/2) + + if type_par[0]['type']=='nfet': + + TOP_CAS1.movey(max_size_y +pdk.get_grule('met4')['min_separation']) + TOP_PB1.movey(mov_par_tail) + TOP_PB1.movex(-(max_size_x+5*pdk.get_grule('met4')['min_separation'])) + + OTA_core.add_ports(TOP_BI1.get_ports_list(),prefix='BI_') + OTA_core.add_ports(TOP_CAS1.get_ports_list(),prefix='CAS_') + OTA_core.add_ports(TOP_PB1.get_ports_list(),prefix='PB_') + + #Routing + Route_VDS1 = OTA_core << L_route(pdk, TOP_BI1.ports['VD1_E'], TOP_CAS1.ports['VD1_S']) + Route_VDS2 = OTA_core << L_route(pdk, TOP_BI1.ports['VOUT_E'], TOP_CAS1.ports['VOUT_S']) + + Route_CN = OTA_core << L_route(pdk, TOP_PB1.ports['VDN_S'], TOP_CAS1.ports['VIN_W'], hwidth=1) + Route_CP = OTA_core << L_route(pdk, TOP_PB1.ports['VDP_S'], TOP_CAS1.ports['VIP_W'], hwidth=1) + Route_Bias = OTA_core << c_route(pdk, TOP_PB1.ports['VBIAS_S'],TOP_BI1.ports['VB2_S'], extension=2*pdk.get_grule('met4')['min_separation']) + Route_VSS = OTA_core << c_route(pdk, TOP_PB1.ports['VREF_S'], TOP_BI1.ports['VREF_S'], extension=3*pdk.get_grule('met4')['min_separation']) + + else: + TOP_PB1.mirror((1,0)) + TOP_CAS1.movey(max_size_y +pdk.get_grule('met4')['min_separation']) + TOP_PB1.movey((max_size_y +pdk.get_grule('met4')['min_separation'])-(pdk.snap_to_2xgrid((size_PB1[1] - size_CAS1[1])/2))) + TOP_PB1.movex(-(max_size_x+5*pdk.get_grule('met4')['min_separation'])) + + OTA_core.add_ports(TOP_BI1.get_ports_list(),prefix='BI_') + OTA_core.add_ports(TOP_CAS1.get_ports_list(),prefix='CAS_') + OTA_core.add_ports(TOP_PB1.get_ports_list(),prefix='PB_') + + #Routing + Route_VDS1 = OTA_core << L_route(pdk, TOP_BI1.ports['VD1_E'], TOP_CAS1.ports['VD1_S']) + Route_VDS2 = OTA_core << L_route(pdk, TOP_BI1.ports['VOUT_E'], TOP_CAS1.ports['VOUT_S']) + + Route_D1Par_D1M9 = OTA_core << L_route(pdk, TOP_PB1.ports['VDN_S'], TOP_BI1.ports['VD1_E'], hwidth=1) + Route_D2Par_D2M10 = OTA_core << L_route(pdk, TOP_PB1.ports['VDP_S'], TOP_BI1.ports['VOUT_E'], hwidth=1) + #Route_Bias = OTA_core << c_route(pdk, TOP_PB1.ports['VBIAS_S'],TOP_BI1.ports['VB2_S'], extension=2*pdk.get_grule('met4')['min_separation']) + Route_VDD = OTA_core << c_route(pdk, TOP_PB1.ports['VREF_S'], TOP_CAS1.ports['VREF_S'], extension=3*pdk.get_grule('met4')['min_separation']) + + + + #Add via for output + via_ref = via_stack(pdk,'met3', 'met4') + + VSS_out = OTA_core << via_ref + align_comp_to_port(VSS_out, OTA_core.ports['BI_VREF_W']) + VSS_out.movex(pdk.get_grule('met4')['min_separation'] + evaluate_bbox(TOP_BI1)[0]/2) + OTA_core << straight_route(pdk, VSS_out.ports['top_met_E'], TOP_BI1.ports['VREF_W'], glayer1='met4', glayer2='met4', via1_alignment_layer='met3') + OTA_core.add_ports(VSS_out.get_ports_list(), prefix='VSS_') + + VDD_out = OTA_core << via_ref + align_comp_to_port(VDD_out, OTA_core.ports['CAS_VREF_W']) + VDD_out.movex(pdk.get_grule('met4')['min_separation'] + evaluate_bbox(TOP_CAS1)[0]/2) + OTA_core << straight_route(pdk, VDD_out.ports['top_met_E'], TOP_CAS1.ports['VREF_W'], glayer1='met4', glayer2='met4', via1_alignment_layer='met3') + OTA_core.add_ports(VDD_out.get_ports_list(), prefix='VDD_') + + + #component = Component() + #component << OTA_core + + #Guardar ports + component = Component() + component << OTA_core + + OTA_core_centered = center_component_with_ports(OTA_core) + component = Component() + component << OTA_core_centered + + boundary = Boundary_layer(pdk, component) + boundary_dim = evaluate_bbox(boundary) + + filtrar_puertos(OTA_core_centered, component, 'PB_VGP_', 'P_V+_', True) + filtrar_puertos(OTA_core_centered, component, 'PB_VGN_', 'P_V-_', True) + filtrar_puertos(OTA_core_centered, component, 'BI_VB2R_', 'P_VbiasN1_', True) # + filtrar_puertos(OTA_core_centered, component, 'VDD_top_met_', 'P_VDD_', True) + filtrar_puertos(OTA_core_centered, component, 'CAS_VOUT_', 'P_Vout_', True) + filtrar_puertos(OTA_core_centered, component, 'CAS_VB2_', 'P_VbiasP1_', True) # + filtrar_puertos(OTA_core_centered, component, 'CAS_VB1_', 'P_VbiasP2_', True) # + filtrar_puertos(OTA_core_centered, component, 'BI_VB3_', 'P_VbiasN2_', True) # + filtrar_puertos(OTA_core_centered, component, 'VSS_top_met_', 'P_VSS_', True) + filtrar_puertos(OTA_core_centered, component, 'BI_VCOMM_', 'P_Vcomn_', True) + + pin_label_creation(pdk, 'P_V+','V+','met3',component, True) + pin_label_creation(pdk, 'P_V-','V-','met3',component, True) + pin_label_creation(pdk, 'P_VbiasN1','VbiasN1','met3',component, True) + pin_label_creation(pdk, 'P_VDD','VDD','met3',component, True) + pin_label_creation(pdk, 'P_Vout','Vout','met3',component, True) + pin_label_creation(pdk, 'P_VbiasP1','VbiasP1','met3',component, True) + pin_label_creation(pdk, 'P_VbiasP2','VbiasP2','met3',component, True) + pin_label_creation(pdk, 'P_VbiasN2','VbiasN2','met3',component, True) + pin_label_creation(pdk, 'P_VSS','VSS','met3',component, True) + pin_label_creation(pdk, 'P_Vcomn', 'Vcomn', 'met3',component, True) + + rename_ports_by_orientation(component) + + return component + +Test = OTA_Core(gf180) +#Test.name = "folded_cascode_core" +#Test.write_gds("folded_cascode_core_pcells.gds") +Test.show() +ports_name = [name for name in Test.ports if '_' in name] +print(ports_name) diff --git a/blocks/composite/folded_cascode/glayout/custom_functions.py b/blocks/composite/folded_cascode/glayout/custom_functions.py new file mode 100644 index 00000000..5bf3c41a --- /dev/null +++ b/blocks/composite/folded_cascode/glayout/custom_functions.py @@ -0,0 +1,3343 @@ +from glayout import MappedPDK, sky130, gf180 +from glayout import nmos, pmos, multiplier, tapring, via_stack, via_array + +from glayout.spice.netlist import Netlist +from glayout.routing import c_route, L_route, straight_route + +from gdsfactory.cell import cell +from gdsfactory.component import Component, copy +from gdsfactory.components.rectangle import rectangle +from gdsfactory.routing.route_quad import route_quad +from gdsfactory.routing.route_sharp import route_sharp + +from glayout.util.comp_utils import ( + align_comp_to_port, + evaluate_bbox, + movex, + movey, + prec_ref_center, + prec_array, +) +from glayout.util.port_utils import ( + add_ports_perimeter, + get_orientation, + print_ports, + rename_ports_by_list, + rename_ports_by_orientation, + set_port_orientation, +) +from glayout.util.snap_to_grid import component_snap_to_grid +from glayout.placement.common_centroid_ab_ba import common_centroid_ab_ba + +from gdsfactory.functions import transformed +from gdsfactory.components import text_freetype +from gdsfactory.components.rectangular_ring import rectangular_ring +from typing import Optional, Union, Literal +import time +import copy + + +def macro_two_transistor_placement_Onchip( + pdk: MappedPDK, + deviceA_and_B: Literal["nfet", "pfet"], + width_route_mult: float = 1, + with_substrate_tap: bool = False, + with_tie: bool = True, + width1: float = 1, + length1: float = 2, + fingers1: int = 1, + matriz: list = [[1, 2, 1], [2, 1, 2]], + with_dummy: bool = False, + with_lvt_layer: bool = True, + full_output_size: bool = False, + **kwargs, +) -> Component: + # This code was made by Sebastian Suarez y Jose Algarin, UIS Electronic engineering students + """Two transistors Placement generator + args: + pdk = pdk to use + deviceA_and_B = the device to place for both transistors (either nfet or pfet) + width_route_mult = thickness of metal routes escaled (int only) + with_substrate_tap = add substrate tap + with_tie = Add Bulk connections + width1 = expands the transistor A in the y direction + width2 = expands the transistor B in the y direction + length1 = transitor A length + length2 = transitor B length + fingers1 = introduces additional fingers to transistor A (sharing s/d) of width=width1 + fingers2 = introduces additional fingers to transistor B (sharing s/d) of width=width2 + matriz = Devices array for placement + with_dummy = Add dummys around placement + with_lvt_layer = add lvt layer + + ports (one port for each edge), + ****NOTE: source is below drain: + A_source_... all edges (met3 vertical met4 horizontal) + B_source_... all edges (met3 vertical met4 horizontal) + A_gate_... all edges (met3 vertical met4 horizontal) + B_gate_... all edges (met3 vertical met4 horizontal) + A_drain_... all edges (met3 vertical met4 horizontal) + B_drain_... all edges (met3 vertical met4 horizontal) + bulk_... all edges (met3 vertical met4 horizontal) + """ + pdk_gf180 = False + pdk_sky130 = True + if pdk is gf180: + pdk_gf180 = True + pdk_sky130 = False + elif pdk is sky130: + pdk_gf180 = False + pdk_sky130 = True + + if width_route_mult > 5 or width_route_mult < 0: + raise ValueError("width_route is out of range") + + matplace = Component() + matriz = copy.deepcopy(matriz) + enable_B = False + for fila in matriz: + for transistor in fila: + if transistor == 2: + enable_B = True + break + # Add dummys to array (matriz) + if with_dummy: + len_matriz_with_dumys = len(matriz[0]) + 2 + for row in matriz: + row.insert(0, 0) + row.append(0) + matriz.insert(0, [0] * len_matriz_with_dumys) + matriz.insert(len(matriz), [0] * len_matriz_with_dumys) + # Check if rows are are odd or even + if (len(matriz)) % 2 == 0: + middle_transistor = len(matriz) // 2 + even = True + else: + even = False + matrizT = [list(fila) for fila in zip(*matriz)] + # Overwrite kwargs for needed options + kwargs["sdlayer"] = "n+s/d" if deviceA_and_B == "nfet" else "p+s/d" + kwargs["pdk"] = pdk + kwargs["dummy"] = (False, False) + # Insert modifications for dummies + kwargs["routing"] = False + kwargs["gate_route_extension"] = pdk.snap_to_2xgrid(0) + if with_dummy: + dummy_single_down = multiplier( + width=width1, length=length1, fingers=1, gate_down=True, **kwargs + ) + dummy_single_up = multiplier( + width=width1, length=length1, fingers=1, gate_up=True, **kwargs + ) + devDT = multiplier( + width=width1, length=length1, fingers=fingers1, gate_up=True, **kwargs + ) + devDB = multiplier( + width=width1, length=length1, fingers=fingers1, gate_down=True, **kwargs + ) + # Insert modifications for device A + kwargs["routing"] = True + devA_gate_extension = ( + abs(pdk.get_grule("met2")["min_separation"] + devDT.ports["gate_W"].width) + if with_dummy + else abs(pdk.get_grule("met2")["min_separation"]) + ) + devA_sd_extension = abs(pdk.get_grule("met2")["min_separation"]) + kwargs["gate_route_extension"] = pdk.snap_to_2xgrid(devA_gate_extension) + kwargs["sd_route_extension"] = pdk.snap_to_2xgrid(devA_sd_extension) + devA = multiplier( + width=width1, length=length1, fingers=fingers1, rmult=width_route_mult, **kwargs + ) + # Insert kwarg modfications for device B + devB_sd_extension = abs( + devA.ports["drain_N"].center[1] - devA.ports["diff_N"].center[1] + ) + devB_gate_extension = ( + abs(2 * (pdk.get_grule("met2")["min_separation"] + devA.ports["gate_W"].width)) + if with_dummy + else abs( + 2 * pdk.get_grule("met2")["min_separation"] + devA.ports["gate_W"].width + ) + ) + kwargs["sd_route_extension"] = pdk.snap_to_2xgrid(devB_sd_extension) + kwargs["gate_route_extension"] = pdk.snap_to_2xgrid(devB_gate_extension) + devB = multiplier( + width=width1, length=length1, fingers=fingers1, rmult=width_route_mult, **kwargs + ) + # Create the array of transistors + transistors = list() + for i in range(len(matriz)): + transistors_in_row = list() + for j in range(len(matriz[i])): + if i == 0 or i == len(matriz) - 1: # first and last row + if j == 0 or j == len(matriz[i]) - 1: # first and last column + # corner transistors + if matriz[i][j] == 0 and i == 0: + # small dummy + transistors_in_row.append(matplace << dummy_single_down) + elif matriz[i][j] == 0 and i == len(matriz) - 1: + # small dummy + transistors_in_row.append(matplace << dummy_single_up) + else: + if matriz[i][j] == 1: + transistors_in_row.append(matplace << devA) + elif matriz[i][j] == 2: + transistors_in_row.append(matplace << devB) + elif i == 0: # first row + # first row transistors + if matriz[i][j] == 0: + # dummy + transistors_in_row.append(matplace << devDB) + else: + if matriz[i][j] == 1: + transistors_in_row.append(matplace << devA) + elif matriz[i][j] == 2: + transistors_in_row.append(matplace << devB) + else: # last row + # last row transistors + if matriz[i][j] == 0: + # dummy + transistors_in_row.append(matplace << devDT) + else: + if matriz[i][j] == 1: + transistors_in_row.append(matplace << devA) + elif matriz[i][j] == 2: + transistors_in_row.append(matplace << devB) + else: # middle rows + if matriz[i][j] == 0: + # small dummy + transistors_in_row.append(matplace << dummy_single_down) + else: + if matriz[i][j] == 1: + transistors_in_row.append(matplace << devA) + elif matriz[i][j] == 2: + transistors_in_row.append(matplace << devB) + + # Add the transistors in the row + transistors.append(transistors_in_row) + # min separation + min_separation_x = pdk.snap_to_2xgrid(pdk.get_grule("p+s/d")["min_separation"]) + if pdk == sky130: + min_separation = pdk.get_grule("poly")["min_separation"] + elif pdk == gf180: + min_separation = pdk.get_grule("met2")["min_separation"] + for i in range(len(transistors)): + # Move the transistors in y direction + if i == 0: + # first row dont move + ymove = 0 + else: # find max y size in the row + distance_center2bottom_ref = transistors[i][0].bbox[0][1] # Temporal + distance_center2top_pre_ref = ( + transistors[i - 1][0].bbox[1][1] - ymove + ) # Temporal // Minus the ymove because this one was already moved + for k in range(len(transistors[i])): + distance_center2bottom_temp = transistors[i][k].bbox[0][ + 1 + ] # distance center to bottom of the transistor that will be moved + distance_center2top_pre_temp = ( + transistors[i - 1][k].bbox[1][1] - ymove + ) # distance center to top of the transistor above the one that will be moved + if ( + distance_center2bottom_temp < distance_center2bottom_ref + ): # minus because the distance is negative + distance_center2bottom_ref = distance_center2bottom_temp + if distance_center2top_pre_temp > distance_center2top_pre_ref: + distance_center2top_pre_ref = distance_center2top_pre_temp + + ymove_temp = ( + abs(distance_center2bottom_ref) + + abs(distance_center2top_pre_ref) + + min_separation + ) + ymove += ymove_temp + if even and i == middle_transistor: + # If even need more space in the middle row for the output + extra_space = pdk.snap_to_2xgrid( + evaluate_bbox(via_stack(pdk, "met2", "met3"))[1] + + 2 * pdk.get_grule("met2")["min_separation"] + ) + ymove += extra_space + for j in range(len(transistors[i])): + size_transistor = evaluate_bbox(transistors[i][j]) + # Move the transistors in x direction + if j == 0: + # first transistor dont move + xmove = 0 + else: + pre_last_size = evaluate_bbox(transistors[i][j - 1]) + # rest of transistors + xmove += (size_transistor[0] + pre_last_size[0]) / 2 + min_separation_x + transistors[i][j].movex(pdk.snap_to_2xgrid(xmove)) + transistors[i][j].movey(pdk.snap_to_2xgrid(ymove)) + if matriz[i][j] == 0: + devletter = "D" + elif matriz[i][j] == 1: + devletter = "A" + elif matriz[i][j] == 2: + devletter = "B" + + prefix = devletter + "i" + str(int(i)) + "_j" + str(int(j)) + "" + matplace.add_ports(transistors[i][j].get_ports_list(), prefix=prefix) + + matplace = rename_ports_by_orientation(matplace) + + # Define dictionaries to organize ports by type and orientation + ports_A = { + "source_W": [], + "source_E": [], + "drain_W": [], + "drain_E": [], + "gate_W": [], + "gate_E": [], + } + ports_B = { + "source_W": [], + "source_E": [], + "drain_W": [], + "drain_E": [], + "gate_W": [], + "gate_E": [], + } + ports_D = { + "source_W": [], + "source_E": [], + "drain_W": [], + "drain_E": [], + "gate_W": [], + "gate_E": [], + } + + # List of device types and ports to be searched + busqueda = [ + ("A", "source"), + ("A", "drain"), + ("A", "gate"), + ("B", "source"), + ("B", "drain"), + ("B", "gate"), + ("D", "source"), + ("D", "drain"), + ("D", "gate"), + ] + # Cycle through every combination of device and port + for dispositivo, puerto in busqueda: + for i in range(len(matriz)): # Iterate over the matrix rows + # Get all ports in row i with W and E orientation + encontrados_W = [ + name + for name in matplace.ports + if f"{dispositivo}i{i}" in name + and f"{puerto}_W" in name + and "row" not in name + ] + encontrados_E = [ + name + for name in matplace.ports + if f"{dispositivo}i{i}" in name + and f"{puerto}_E" in name + and "row" not in name + ] + # Assign the corresponding row only if there are found elements + if dispositivo == "A": + if encontrados_W: + ports_A[f"{puerto}_W"].append(encontrados_W) + if encontrados_E: + ports_A[f"{puerto}_E"].append(encontrados_E) + elif dispositivo == "B": + if encontrados_W: + ports_B[f"{puerto}_W"].append(encontrados_W) + if encontrados_E: + ports_B[f"{puerto}_E"].append(encontrados_E) + elif dispositivo == "D": + if encontrados_W: + ports_D[f"{puerto}_W"].append(encontrados_W) + if encontrados_E: + ports_D[f"{puerto}_E"].append(encontrados_E) + + # Component centering + matplace_centered = Component() + matplace_ref = matplace_centered << transformed(prec_ref_center(matplace)) + matplace_centered.add_ports(matplace_ref.get_ports_list()) + dims = evaluate_bbox(matplace_centered) + xmove = pdk.snap_to_2xgrid(dims[0] / 2) + if pdk == sky130: + min_separation = pdk.snap_to_2xgrid( + ( + pdk.get_grule("met3")["min_separation"] + + pdk.get_grule("met3")["min_width"] + + pdk.get_grule("via3")["min_separation"] + + pdk.get_grule("via3")["min_width"] + ) + ) + elif pdk == gf180: + min_separation = pdk.snap_to_2xgrid( + ( + pdk.get_grule("met3")["min_separation"] + + pdk.get_grule("met3")["min_width"] + + pdk.get_grule("via3")["min_separation"] + + evaluate_bbox(via_stack(pdk, "met2", "met3"))[1] + ) + ) + + # Rings + # Define configurations according to transistor type + device_config = { + "nfet": { + "sdlayer": "p+s/d", + "well_layer": "pwell", + "tap_enclosure_rule": "p+s/d", + }, + "pfet": { + "sdlayer": "n+s/d", + "well_layer": "nwell", + "tap_enclosure_rule": "n+s/d", + "substrate_tap_layer": "p+s/d", + }, + } + + # Obtaining the correct configuration + config = device_config.get(deviceA_and_B) + # Add tie if necessary + if with_tie: + tie_layers = ["met2", "met1"] + + tap_separation = max( + pdk.get_grule("met2")["min_separation"], + pdk.get_grule("met1")["min_separation"], + pdk.get_grule("active_diff", "active_tap")["min_separation"], + ) + tap_separation += pdk.get_grule(config["tap_enclosure_rule"], "active_tap")[ + "min_enclosure" + ] + + tap_encloses = ( + 2 * (tap_separation + matplace_centered.xmax), + 2 * (tap_separation + matplace_centered.ymax), + ) + tapring_ref = matplace_centered << create_tapring_onchip( + pdk, + enclosed_rectangle=tap_encloses, + sdlayer=config["sdlayer"], + horizontal_glayer=tie_layers[0], + vertical_glayer=tie_layers[1], + with_lvt_layer=with_lvt_layer, + ) + matplace_centered.add_ports(tapring_ref.get_ports_list(), prefix="tie_") + if with_dummy: + first_mos_ds = matplace_centered.ports[ + "Di0_j0leftsd_met_array_row0_col0_top_met_W" + ] + first_mos_gate = matplace_centered.ports["Di0_j0gate_W"] + first_mos_ds_R = matplace_centered.ports[ + "Di0_j" + + str(len(matrizT) - 1) + + "row0_col" + + str(fingers1 - 1) + + "_rightsd_met_array_row0_col0_top_met_E" + ] + first_mos_gate_R = matplace_centered.ports[ + "Di0_j" + str(len(matrizT) - 1) + "gate_E" + ] + last_mos_ds = matplace_centered.ports[ + "Di" + str(len(matriz) - 1) + "_j0leftsd_met_array_row0_col0_top_met_W" + ] + last_mos_gate = matplace_centered.ports[ + "Di" + str(len(matriz) - 1) + "_j0gate_W" + ] + last_mos_ds_R = matplace_centered.ports[ + "Di" + + str(len(matriz) - 1) + + "_j" + + str(len(matrizT) - 1) + + "row0_col" + + str(fingers1 - 1) + + "_rightsd_met_array_row0_col0_top_met_E" + ] + last_mos_gate_R = matplace_centered.ports[ + "Di" + str(len(matriz) - 1) + "_j" + str(len(matrizT) - 1) + "gate_E" + ] + tie_left_W = matplace_centered.ports["tie_W_array_row0_col0_top_met_W"] + tie_right = matplace_centered.ports["tie_E_array_row0_col0_top_met_E"] + width_route_dummy = 1 if width1 >= 1 else width1 + for i in range(len(matriz)): + if i == 0: + # First Dummys + matplace_centered << straight_route( + pdk, first_mos_ds_R, tie_left_W, width=width_route_dummy + ) + matplace_centered << straight_route( + pdk, first_mos_ds, tie_right, width=width_route_dummy + ) + matplace_centered << straight_route( + pdk, first_mos_gate_R, tie_left_W + ) + matplace_centered << straight_route(pdk, first_mos_gate, tie_right) + elif i == len(matriz) - 1: + # Last Dummys + matplace_centered << straight_route( + pdk, last_mos_ds_R, tie_left_W, width=width_route_dummy + ) + matplace_centered << straight_route( + pdk, last_mos_ds, tie_right, width=width_route_dummy + ) + matplace_centered << straight_route( + pdk, last_mos_gate_R, tie_left_W + ) + matplace_centered << straight_route(pdk, last_mos_gate, tie_right) + else: + matplace_centered << straight_route( + pdk, + matplace_centered.ports[ + "Di" + + str(i) + + "_j0row0_col" + + str(fingers1 - 1) + + "_rightsd_met_array_row0_col0_top_met_E" + ], + tie_left_W, + width=width_route_dummy, + ) + matplace_centered << straight_route( + pdk, + matplace_centered.ports[ + "Di" + + str(i) + + "_j" + + str(len(matriz[0]) - 1) + + "leftsd_met_array_row0_col0_top_met_W" + ], + tie_right, + width=width_route_dummy, + ) + matplace_centered << straight_route( + pdk, + matplace_centered.ports["Di" + str(i) + "_j0gate_E"], + tie_left_W, + ) + matplace_centered << straight_route( + pdk, + matplace_centered.ports[ + "Di" + str(i) + "_j" + str(len(matriz[0]) - 1) + "gate_W" + ], + tie_right, + ) + + # Add well + matplace_centered.add_padding( + layers=(pdk.get_glayer(config["well_layer"]),), + default=pdk.get_grule(config["well_layer"], "active_tap")["min_enclosure"], + ) + + # Adding taps on the perimeter + matplace_centered = add_ports_perimeter( + matplace_centered, layer=pdk.get_glayer(config["well_layer"]), prefix="well_" + ) + dims_post_tie = evaluate_bbox(matplace_centered) + + # Add substrate tap if necessary + if deviceA_and_B == "pfet": + if with_substrate_tap: + substrate_tap_separation = pdk.get_grule("dnwell", "active_tap")[ + "min_separation" + ] + substrate_tap_encloses = ( + 2 * (substrate_tap_separation + matplace_centered.xmax), + 2 * (substrate_tap_separation + matplace_centered.ymax), + ) + ringtoadd = create_tapring_onchip( + pdk, + enclosed_rectangle=substrate_tap_encloses, + sdlayer=config["substrate_tap_layer"], + horizontal_glayer="met2", + vertical_glayer="met1", + with_lvt_layer=False, + ) + tapring_ref = matplace_centered << ringtoadd + matplace_centered.add_ports( + tapring_ref.get_ports_list(), prefix="substratetap_" + ) + + # Creation of ports and lanes for column routing + via = via_stack(pdk, "met1", "met2") + dims = evaluate_bbox(matplace_centered) + xmove = pdk.snap_to_2xgrid(dims[0] / 2) + min_separation = pdk.snap_to_2xgrid( + matplace_centered.ports[ports_A["drain_W"][0][0]].width + + pdk.get_grule("met3")["min_separation"] + ) + if enable_B: + name_vias = [ + ["A_drain_L", -1 * min_separation - xmove], + ["A_drain_R", 1 * min_separation + xmove], + ["A_source_L", -2 * min_separation - xmove], + ["A_source_R", 2 * min_separation + xmove], + ["A_gate_L", -6 * min_separation - xmove], + ["A_gate_R", 3 * min_separation + xmove], + ["B_drain_L", -4 * min_separation - xmove], + ["B_drain_R", 4 * min_separation + xmove], + ["B_source_L", -5 * min_separation - xmove], + ["B_source_R", 5 * min_separation + xmove], + ["B_gate_L", -3 * min_separation - xmove], + ["B_gate_R", 6 * min_separation + xmove], + ] + else: + name_vias = [ + ["A_drain_L", -1 * min_separation - xmove], + ["A_drain_R", 1 * min_separation + xmove], + ["A_source_L", -2 * min_separation - xmove], + ["A_source_R", 2 * min_separation + xmove], + ["A_gate_L", -3 * min_separation - xmove], + ["A_gate_R", 3 * min_separation + xmove], + ] + + via_met12 = list() + via_met23 = list() + # check if center up and center down transistor are different size + center_transistor = (len(matriz) // 2, len(matriz) // 2 - 1) + up_transistors = matriz[center_transistor[0]] + down_transistors = matriz[center_transistor[1]] + no_dummys_up = [x for x in up_transistors if x != 0] + no_dummys_down = [x for x in down_transistors if x != 0] + + if all(x == 1 for x in no_dummys_down) and all(x == 2 for x in no_dummys_up): + not_middle = True + elif all(x == 2 for x in no_dummys_down) and all(x == 1 for x in no_dummys_up): + not_middle = True + else: + not_middle = False + + if even and not_middle: + ypos = ( + devA.ports["source_W"].width * 2 + pdk.get_grule("met2")["min_separation"] + ) + elif even and not_middle == False: + ypos = 0 + else: + center_transistor = len(matriz) // 2 + if with_dummy: + ypos = ( + matplace_centered.ports[ + "Di" + str(center_transistor) + "_j0gate_S" + ].center[1] + + evaluate_bbox(dummy_single_down)[1] / 2 + + 1 * pdk.get_grule("met2")["min_separation"] + ) + else: + if matriz[center_transistor][0] == 1: + devletter_center = "A" + ypos = ( + evaluate_bbox(devA)[1] / 2 + + 1 * pdk.get_grule("met2")["min_separation"] + ) + elif matriz[center_transistor][0] == 2: + devletter_center = "B" + ypos = ( + evaluate_bbox(devB)[1] / 2 + + 3 * pdk.get_grule("met2")["min_separation"] + ) + ypos += matplace_centered.ports[ + str(devletter_center) + "i" + str(center_transistor) + "_j0gate_S" + ].center[1] + + for via, pos in name_vias: + via_met12.append( + matplace_centered << via_stack(pdk, "met1", "met2", centered=True) + ) + via_met12[-1].movex(pos) + via_met12[-1].movey(ypos) + matplace_centered.add_ports(via_met12[-1].get_ports_list(), prefix=via + "_12_") + via_met23.append( + matplace_centered << via_stack(pdk, "met2", "met3", centered=True) + ) + via_met23[-1].movex(pos) + via_met23[-1].movey(ypos) + matplace_centered.add_ports(via_met23[-1].get_ports_list(), prefix=via + "_23_") + widht_route_vertical = matplace_centered.ports[ports_A["drain_W"][0][0]].width + + for i in range(len(ports_A["drain_E"])): + matplace_centered << L_route( + pdk, + matplace_centered.ports[ports_A["drain_W"][i][0]], + matplace_centered.ports["A_drain_L_12_bottom_met_N"], + hwidth=widht_route_vertical, + ) + matplace_centered << L_route( + pdk, + matplace_centered.ports[ports_A["drain_E"][i][0]], + matplace_centered.ports["A_drain_R_12_bottom_met_N"], + hwidth=widht_route_vertical, + ) + matplace_centered << L_route( + pdk, + matplace_centered.ports[ports_A["source_W"][i][0]], + matplace_centered.ports["A_source_L_12_bottom_met_N"], + hwidth=widht_route_vertical, + ) + matplace_centered << L_route( + pdk, + matplace_centered.ports[ports_A["source_E"][i][0]], + matplace_centered.ports["A_source_R_12_bottom_met_N"], + hwidth=widht_route_vertical, + ) + matplace_centered << L_route( + pdk, + matplace_centered.ports[ports_A["gate_W"][i][0]], + matplace_centered.ports["A_gate_L_12_bottom_met_N"], + hwidth=widht_route_vertical, + ) + matplace_centered << L_route( + pdk, + matplace_centered.ports[ports_A["gate_E"][i][0]], + matplace_centered.ports["A_gate_R_12_bottom_met_N"], + hwidth=widht_route_vertical, + ) + for i in range(len(ports_B["drain_E"])): + matplace_centered << L_route( + pdk, + matplace_centered.ports[ports_B["drain_W"][i][0]], + matplace_centered.ports["B_drain_L_12_bottom_met_N"], + hwidth=widht_route_vertical, + ) + matplace_centered << L_route( + pdk, + matplace_centered.ports[ports_B["drain_E"][i][0]], + matplace_centered.ports["B_drain_R_12_bottom_met_N"], + hwidth=widht_route_vertical, + ) + matplace_centered << L_route( + pdk, + matplace_centered.ports[ports_B["source_W"][i][0]], + matplace_centered.ports["B_source_L_12_bottom_met_N"], + hwidth=widht_route_vertical, + ) + matplace_centered << L_route( + pdk, + matplace_centered.ports[ports_B["source_E"][i][0]], + matplace_centered.ports["B_source_R_12_bottom_met_N"], + hwidth=widht_route_vertical, + ) + matplace_centered << L_route( + pdk, + matplace_centered.ports[ports_B["gate_W"][i][0]], + matplace_centered.ports["B_gate_L_12_bottom_met_N"], + hwidth=widht_route_vertical, + ) + matplace_centered << L_route( + pdk, + matplace_centered.ports[ports_B["gate_E"][i][0]], + matplace_centered.ports["B_gate_R_12_bottom_met_N"], + hwidth=widht_route_vertical, + ) + + dims = evaluate_bbox(matplace_centered) + size_out_ports = evaluate_bbox(via_stack(pdk, "met3", "met4")) + min_separation = pdk.snap_to_2xgrid(pdk.get_grule("met4")["min_separation"]) + + # Gate port + gateA = matplace_centered << via_stack(pdk, "met3", "met4") + gateA_bot = matplace_centered << via_stack(pdk, "met2", "met3") + gateA.movex(pdk.snap_to_2xgrid(-dims[0] / 2 - min_separation)) + gateA_bot.movex(pdk.snap_to_2xgrid(-dims[0] / 2 - min_separation)) + gateA.movey(ypos) + gateA_bot.movey(ypos) + matplace_centered.add_ports(gateA_bot.get_ports_list(), prefix="A_gate_bot_") + matplace_centered.add_ports(gateA.get_ports_list(), prefix="A_gate_") + if enable_B: + gateB = matplace_centered << via_stack(pdk, "met3", "met4") + gateB_bot = matplace_centered << via_stack(pdk, "met2", "met3") + gateB.movex(pdk.snap_to_2xgrid(dims[0] / 2 + min_separation)) + gateB_bot.movex(pdk.snap_to_2xgrid(dims[0] / 2 + min_separation)) + gateB.movey(ypos) + gateB_bot.movey(ypos) + matplace_centered.add_ports(gateB_bot.get_ports_list(), prefix="B_gate_bot_") + matplace_centered.add_ports(gateB.get_ports_list(), prefix="B_gate_") + + # Source port + sourceA = matplace_centered << via_stack(pdk, "met3", "met4") + sourceA.movey(pdk.snap_to_2xgrid(-dims[1] / 2 - size_out_ports[0] / 2)).movex( + pdk.snap_to_2xgrid(-min_separation - size_out_ports[0] / 2) + ) + matplace_centered.add_ports(sourceA.get_ports_list(), prefix="A_source_") + if enable_B: + sourceB = matplace_centered << via_stack(pdk, "met3", "met4") + sourceB.movey( + pdk.snap_to_2xgrid(-dims[1] / 2 - 1.5 * size_out_ports[0] - min_separation) + ).movex(pdk.snap_to_2xgrid(min_separation + size_out_ports[0] / 2)) + matplace_centered.add_ports(sourceB.get_ports_list(), prefix="B_source_") + + # Drain port + drainA = matplace_centered << via_stack(pdk, "met3", "met4") + if with_substrate_tap and deviceA_and_B == "pfet": + drainA.movey(pdk.snap_to_2xgrid(dims[1] / 2 + size_out_ports[0] / 2)).movex( + pdk.snap_to_2xgrid(-min_separation - size_out_ports[0] / 2) + ) + elif with_substrate_tap == False or deviceA_and_B == "nfet": + drainA.movey( + pdk.snap_to_2xgrid( + dims[1] / 2 + + size_out_ports[0] / 2 + + pdk.get_grule("met5")["min_separation"] + + pdk.get_grule("active_tap", "mcon")["min_enclosure"] + ) + ).movex(pdk.snap_to_2xgrid(-min_separation - size_out_ports[0] / 2)) + matplace_centered.add_ports(drainA.get_ports_list(), prefix="A_drain_") + if enable_B: + drainB = matplace_centered << via_stack(pdk, "met3", "met4") + if with_substrate_tap and deviceA_and_B == "pfet": + drainB.movey( + pdk.snap_to_2xgrid( + dims[1] / 2 + 1.5 * size_out_ports[0] + min_separation + ) + ).movex(pdk.snap_to_2xgrid(min_separation + size_out_ports[0] / 2)) + elif with_substrate_tap == False or deviceA_and_B == "nfet": + drainB.movey( + pdk.snap_to_2xgrid( + dims[1] / 2 + + 1.5 * size_out_ports[0] + + min_separation + + pdk.get_grule("met5")["min_separation"] + + pdk.get_grule("active_tap", "mcon")["min_enclosure"] + ) + ).movex(pdk.snap_to_2xgrid(min_separation + size_out_ports[0] / 2)) + matplace_centered.add_ports(drainB.get_ports_list(), prefix="B_drain_") + + matplace_centered = rename_ports_by_orientation(matplace_centered) + # Gates routes + matplace_centered << straight_route( + pdk, + matplace_centered.ports["A_gate_L_23_bottom_met_W"], + matplace_centered.ports["A_gate_bot_bottom_met_E"], + ) + if enable_B: + matplace_centered << straight_route( + pdk, + matplace_centered.ports["B_gate_R_23_bottom_met_E"], + matplace_centered.ports["B_gate_bot_bottom_met_W"], + ) + # Source routes + L1 = matplace_centered << L_route( + pdk, + matplace_centered.ports["A_source_L_23_top_met_S"], + matplace_centered.ports["A_source_top_met_W"], + hwidth=widht_route_vertical, + ) + L2 = matplace_centered << L_route( + pdk, + matplace_centered.ports["A_source_R_23_top_met_S"], + matplace_centered.ports["A_source_top_met_E"], + hwidth=widht_route_vertical, + ) + if enable_B: + L3 = matplace_centered << L_route( + pdk, + matplace_centered.ports["B_source_L_23_top_met_S"], + matplace_centered.ports["B_source_top_met_W"], + hwidth=widht_route_vertical, + ) + L4 = matplace_centered << L_route( + pdk, + matplace_centered.ports["B_source_R_23_top_met_S"], + matplace_centered.ports["B_source_top_met_E"], + hwidth=widht_route_vertical, + ) + # Drain routes + L5 = matplace_centered << L_route( + pdk, + matplace_centered.ports["A_drain_L_23_top_met_N"], + matplace_centered.ports["A_drain_top_met_W"], + hwidth=widht_route_vertical, + ) + L6 = matplace_centered << L_route( + pdk, + matplace_centered.ports["A_drain_R_23_top_met_N"], + matplace_centered.ports["A_drain_top_met_E"], + hwidth=widht_route_vertical, + ) + if enable_B: + L7 = matplace_centered << L_route( + pdk, + matplace_centered.ports["B_drain_L_23_top_met_N"], + matplace_centered.ports["B_drain_top_met_W"], + hwidth=widht_route_vertical, + ) + L8 = matplace_centered << L_route( + pdk, + matplace_centered.ports["B_drain_R_23_top_met_N"], + matplace_centered.ports["B_drain_top_met_E"], + hwidth=widht_route_vertical, + ) + + component = Component() + component << matplace_centered + + # Get all ports of the original component + all_ports = matplace_centered.ports + if enable_B: + filtros = [ + "A_source_", + "B_source_", + "A_drain_", + "B_drain_", + "A_gate_", + "B_gate_", + ] + else: + filtros = ["A_source_", "A_gate_", "A_drain_"] + # Filter only the ones you need (by name, coordinates, etc.) + selected_ports = dict() + for filtro in filtros: + buscar_w = filtro + "top_met_W" + buscar_e = filtro + "top_met_E" + buscar_n = filtro + "bottom_met_N" + buscar_s = filtro + "bottom_met_S" + selected_ports = { + name: port + for name, port in all_ports.items() + if buscar_w in name + or buscar_e in name + or buscar_n in name + or buscar_s in name + } # Ejemplo: solo los que tienen 'in' en su nombre + for name, port in selected_ports.items(): + new_name = filtro + name[-1] # Add prefix + component.add_port( + new_name, + port.center, + port.width, + port.orientation, + layer=port.layer, + port_type="electrical", + ) + if with_tie: + buscar = [ + "tie_N_top_met_W", + "tie_N_top_met_N", + "tie_N_top_met_E", + "tie_N_top_met_S", + "tie_S_top_met_W", + "tie_S_top_met_N", + "tie_S_top_met_E", + "tie_S_top_met_S", + "tie_E_top_met_W", + "tie_E_top_met_N", + "tie_E_top_met_E", + "tie_E_top_met_S", + "tie_W_top_met_W", + "tie_W_top_met_N", + "tie_W_top_met_E", + "tie_W_top_met_S", + ] + selected_ports = dict() + for busqueda in buscar: + new_port = { + name: port + for name, port in all_ports.items() + if busqueda in name and "row" not in name + } + selected_ports.update(new_port) + for name, port in selected_ports.items(): + posicion = {"N": "up", "S": "down", "E": "right", "W": "left"} + new_name = "bulk_" + posicion[name[4]] + "_" + name[-1] + component.add_port( + new_name, + port.center, + port.width, + port.orientation, + layer=port.layer, + port_type="electrical", + ) + if full_output_size: + if pdk_sky130: + ports_list = [ + L1.ports["bottom_layer_W"], + L1.ports["bottom_layer_N"], + L2.ports["bottom_layer_E"], + L2.ports["bottom_layer_S"], + L5.ports["bottom_layer_W"], + L5.ports["bottom_layer_N"], + L6.ports["bottom_layer_E"], + L6.ports["bottom_layer_S"], + ] + names = ["A_source_T_", "A_drain_T_"] + if enable_B: + ports_list += [ + L3.ports["bottom_layer_W"], + L3.ports["bottom_layer_N"], + L4.ports["bottom_layer_E"], + L4.ports["bottom_layer_S"], + L7.ports["bottom_layer_W"], + L7.ports["bottom_layer_N"], + L8.ports["bottom_layer_E"], + L8.ports["bottom_layer_S"], + ] + names += ["B_source_T_", "B_drain_T_"] + elif pdk_gf180: + ports_list = [ + L1.ports["bottom_lay_W"], + L1.ports["bottom_lay_N"], + L2.ports["bottom_lay_E"], + L2.ports["bottom_lay_S"], + L5.ports["bottom_lay_W"], + L5.ports["bottom_lay_N"], + L6.ports["bottom_lay_E"], + L6.ports["bottom_lay_S"], + ] + names = ["A_source_T_", "A_drain_T_"] + if enable_B: + ports_list += [ + L3.ports["bottom_lay_W"], + L3.ports["bottom_lay_N"], + L4.ports["bottom_lay_E"], + L4.ports["bottom_lay_S"], + L7.ports["bottom_lay_W"], + L7.ports["bottom_lay_N"], + L8.ports["bottom_lay_E"], + L8.ports["bottom_lay_S"], + ] + names += ["B_source_T_", "B_drain_T_"] + + for i in range(len(names)): + component.add_port( + names[i] + "W", + ports_list[4 * i].center, + ports_list[4 * i].width, + ports_list[4 * i].orientation, + layer=ports_list[4 * i].layer, + port_type="electrical", + ) + component.add_port( + names[i] + "N", + ports_list[4 * i + 1].center, + ports_list[4 * i + 1].width, + ports_list[4 * i + 1].orientation, + layer=ports_list[4 * i + 1].layer, + port_type="electrical", + ) + component.add_port( + names[i] + "E", + ports_list[4 * i + 2].center, + ports_list[4 * i + 2].width, + ports_list[4 * i + 2].orientation, + layer=ports_list[4 * i + 2].layer, + port_type="electrical", + ) + component.add_port( + names[i] + "S", + ports_list[4 * i + 3].center, + ports_list[4 * i + 3].width, + ports_list[4 * i + 3].orientation, + layer=ports_list[4 * i + 3].layer, + port_type="electrical", + ) + + return component.flatten() + + +def interdigitado_placement_Onchip( + pdk: MappedPDK, + deviceA_and_B: Literal["nfet", "pfet"], + output: Literal["metal", "via"] = "metal", + output_separation: tuple[Optional[float], Optional[float]] = (0, 0), + width: float = 1, + length: float = 2, + fingers: int = 1, + with_dummy: bool = False, + with_lvt_layer: bool = True, + with_tie: bool = True, + with_substrate_tap: bool = False, + gate_common: bool = True, + routed: bool = False, + common_route: Optional[Union[bool, tuple[Optional[bool], Optional[bool]]]] = ( + False, + False, + ), + array: list = [[1, 2, 3]], + **kwargs, +) -> Component: + interdigitado = Component() + array = copy.deepcopy(array) + max_output = max(array[0]) + # Add dummys to array + if with_dummy: + column = len(array[0]) + + horizontal = [0] * (column + 2) + array_column = [[0] + row + [0] for row in array] + + array = [horizontal] + array_column + [horizontal] + arrayT = [list(fila) for fila in zip(*array)] + # Multiplier's arguments + kwargs["sdlayer"] = "n+s/d" if deviceA_and_B == "nfet" else "p+s/d" + kwargs["pdk"] = pdk + kwargs["dummy"] = (False, False) + kwargs["routing"] = False + reference = multiplier( + width=width, length=length, fingers=fingers, gate_down=True, **kwargs + ) + gate_extension_ref = abs( + pdk.get_grule("met2")["min_separation"] + reference.ports["gate_W"].width + ) + if gate_common == False: + reference = list() + for i in range(max_output): + gate_extension = gate_extension_ref * i + kwargs["gate_route_extension"] = pdk.snap_to_2xgrid(gate_extension) + reference.append( + multiplier( + width=width, + length=length, + fingers=fingers, + gate_down=True, + **kwargs, + ) + ) + + # dummy reference + if with_dummy: + kwargs["gate_route_extension"] = 0 + dummy_single_up = multiplier( + width=width, length=length, fingers=1, gate_up=True, **kwargs + ) + dummy_single_down = multiplier( + width=width, length=length, fingers=1, gate_down=True, **kwargs + ) + dummy_up = multiplier( + width=width, length=length, fingers=fingers, gate_up=True, **kwargs + ) + dummy_down = multiplier( + width=width, length=length, fingers=fingers, gate_down=True, **kwargs + ) + # min separation + if pdk == sky130: + min_separation = pdk.get_grule("poly")["min_separation"] + elif pdk == gf180: + min_separation = pdk.get_grule("met2")["min_separation"] + # Create the array of transistors + transistors = list() + for i in range(len(array)): + transistors_in_row = list() + for j in range(len(array[i])): + if i == 0 or i == len(array) - 1: # first and last row + if j == 0 or j == len(array[i]) - 1: # first and last column + # corner transistors + if array[i][j] == 0 and i == 0: + # small dummy + transistors_in_row.append(interdigitado << dummy_single_down) + elif array[i][j] == 0 and i == len(array) - 1: + # small dummy + transistors_in_row.append(interdigitado << dummy_single_up) + else: + if gate_common: + transistors_in_row.append(interdigitado << reference) + else: + transistors_in_row.append( + interdigitado << reference[array[i][j] - 1] + ) + elif i == 0: # first row + # first row transistors + if array[i][j] == 0: + # dummy + transistors_in_row.append(interdigitado << dummy_down) + else: + if gate_common: + transistors_in_row.append(interdigitado << reference) + else: + transistors_in_row.append( + interdigitado << reference[array[i][j] - 1] + ) + else: # last row + # last row transistors + if array[i][j] == 0: + # dummy + transistors_in_row.append(interdigitado << dummy_up) + else: + if gate_common: + transistors_in_row.append(interdigitado << reference) + else: + transistors_in_row.append( + interdigitado << reference[array[i][j] - 1] + ) + else: # middle rows + if array[i][j] == 0: + # small dummy + transistors_in_row.append(interdigitado << dummy_single_up) + else: + if gate_common: + transistors_in_row.append(interdigitado << reference) + else: + transistors_in_row.append( + interdigitado << reference[array[i][j] - 1] + ) + # Add the transistors in the row + transistors.append(transistors_in_row) + min_separation_x = pdk.get_grule("p+s/d")["min_separation"] + 0.01 + # [0][1] = distance center to bottom + # [1][1] = distance center to top + # Move the transistors + for i in range(len(transistors)): + # Move the transistors in y direction + if i == 0: + # first row dont move + ymove = 0 + else: # find max y size in the row + distance_center2bottom_ref = transistors[i][0].bbox[0][1] # Temporal + distance_center2top_pre_ref = ( + transistors[i - 1][0].bbox[1][1] - ymove + ) # Temporal // Minus the ymove because this one was already moved + ymove_temp = ( + abs(distance_center2bottom_ref) + + abs(distance_center2top_pre_ref) + + min_separation + ) + for k in range(len(transistors[i])): + distance_center2bottom_temp = transistors[i][k].bbox[0][ + 1 + ] # distance center to bottom of the transistor that will be moved + distance_center2top_pre_temp = ( + transistors[i - 1][k].bbox[1][1] - ymove + ) # distance center to top of the transistor above the one that will be moved + ymove_temp_2 = ( + abs(distance_center2bottom_temp) + + abs(distance_center2top_pre_temp) + + min_separation + ) + if ymove_temp_2 > ymove_temp: + ymove_temp = ymove_temp_2 + ymove += ( + ymove_temp + if i == 1 or i == len(transistors) - 1 + else ymove_temp + 3 * evaluate_bbox(via_stack(pdk, "met1", "met2"))[1] + ) + for j in range(len(transistors[i])): + size_transistor = evaluate_bbox(transistors[i][j]) + # Move the transistors in x direction + if j == 0: + # first transistor dont move + xmove = 0 + else: + pre_last_size = evaluate_bbox(transistors[i][j - 1]) + # rest of transistors + xmove += (size_transistor[0] + pre_last_size[0]) / 2 + min_separation_x + transistors[i][j].movex(pdk.snap_to_2xgrid(xmove)) + transistors[i][j].movey(pdk.snap_to_2xgrid(ymove)) + interdigitado.add_ports( + transistors[i][j].get_ports_list(), + prefix=str(i) + str(j) + "_" + str(array[i][j]) + "_", + ) + + # Center the component + interdigitado = center_component_with_ports(interdigitado) + ##RINGS + # Define configurations according to transistor type + device_config = { + "nfet": { + "sdlayer": "p+s/d", + "well_layer": "pwell", + "tap_enclosure_rule": "p+s/d", + }, + "pfet": { + "sdlayer": "n+s/d", + "well_layer": "nwell", + "tap_enclosure_rule": "n+s/d", + "substrate_tap_layer": "p+s/d", + }, + } + + # Obtaining the correct configuration + config = device_config.get(deviceA_and_B) + # Add tie if necessary + if with_tie: + tie_layers = ["met2", "met1"] + + tap_separation = max( + pdk.get_grule("met2")["min_separation"], + pdk.get_grule("met1")["min_separation"], + pdk.get_grule("active_diff", "active_tap")["min_separation"], + ) + tap_separation += pdk.get_grule(config["tap_enclosure_rule"], "active_tap")[ + "min_enclosure" + ] + + tap_encloses = ( + 2 * (tap_separation + interdigitado.xmax), + 2 * (tap_separation + interdigitado.ymax), + ) + tapring_ref = interdigitado << create_tapring_onchip( + pdk, + enclosed_rectangle=tap_encloses, + sdlayer=config["sdlayer"], + horizontal_glayer=tie_layers[0], + vertical_glayer=tie_layers[1], + with_lvt_layer=with_lvt_layer, + ) + interdigitado.add_ports(tapring_ref.get_ports_list(), prefix="tie_") + if with_dummy: + first_mos_ds = interdigitado.ports[ + "00_0_leftsd_met_array_row0_col0_top_met_W" + ] + first_mos_gate = interdigitado.ports["00_0_gate_W"] + first_mos_ds_R = interdigitado.ports[ + "0" + + str(len(arrayT) - 1) + + "_0_" + + "row0_col0_rightsd_met_array_row0_col0_top_met_E" + ] + first_mos_gate_R = interdigitado.ports[ + "0" + str(len(arrayT) - 1) + "_0_gate_E" + ] + last_mos_ds = interdigitado.ports[ + str(len(array) - 1) + "0_0_leftsd_met_array_row0_col0_top_met_W" + ] + last_mos_gate = interdigitado.ports[str(len(array) - 1) + "0_0_gate_W"] + last_mos_ds_R = interdigitado.ports[ + str(len(array) - 1) + + str(len(arrayT) - 1) + + "_0_row0_col0_rightsd_met_array_row0_col0_top_met_E" + ] + last_mos_gate_R = interdigitado.ports[ + str(len(array) - 1) + str(len(arrayT) - 1) + "_0_gate_E" + ] + tie_left_W = interdigitado.ports["tie_W_array_row0_col0_top_met_W"] + tie_right = interdigitado.ports["tie_E_array_row0_col0_top_met_E"] + width_route_dummy = 1 if width >= 1 else width + for i in range(len(array)): + if i == 0: + # First Dummys + interdigitado << straight_route( + pdk, first_mos_ds_R, tie_left_W, width=width_route_dummy + ) + interdigitado << straight_route( + pdk, first_mos_ds, tie_right, width=width_route_dummy + ) + interdigitado << straight_route(pdk, first_mos_gate_R, tie_left_W) + interdigitado << straight_route(pdk, first_mos_gate, tie_right) + elif i == len(array) - 1: + # Last Dummys + interdigitado << straight_route( + pdk, last_mos_ds_R, tie_left_W, width=width_route_dummy + ) + interdigitado << straight_route( + pdk, last_mos_ds, tie_right, width=width_route_dummy + ) + interdigitado << straight_route(pdk, last_mos_gate_R, tie_left_W) + interdigitado << straight_route(pdk, last_mos_gate, tie_right) + else: + interdigitado << straight_route( + pdk, + interdigitado.ports[ + str(i) + + "0_0_row0_col0_rightsd_met_array_row0_col0_top_met_E" + ], + tie_left_W, + width=width_route_dummy, + ) + interdigitado << straight_route( + pdk, + interdigitado.ports[ + str(i) + + str(len(array[0]) - 1) + + "_0_leftsd_met_array_row0_col0_top_met_W" + ], + tie_right, + width=width_route_dummy, + ) + interdigitado << straight_route( + pdk, interdigitado.ports[str(i) + "0_0_gate_E"], tie_left_W + ) + interdigitado << straight_route( + pdk, + interdigitado.ports[ + str(i) + str(len(array[0]) - 1) + "_0_gate_W" + ], + tie_right, + ) + + # Add well + interdigitado.add_padding( + layers=(pdk.get_glayer(config["well_layer"]),), + default=pdk.get_grule(config["well_layer"], "active_tap")["min_enclosure"], + ) + + # Adding taps on the perimeter + interdigitado = add_ports_perimeter( + interdigitado, layer=pdk.get_glayer(config["well_layer"]), prefix="well_" + ) + dims_post_tie = evaluate_bbox(interdigitado) + + # Add substrate tap if necessary + if deviceA_and_B == "pfet": + if with_substrate_tap: + substrate_tap_separation = pdk.get_grule("dnwell", "active_tap")[ + "min_separation" + ] + substrate_tap_encloses = ( + 2 * (substrate_tap_separation + interdigitado.xmax), + 2 * (substrate_tap_separation + interdigitado.ymax), + ) + ringtoadd = create_tapring_onchip( + pdk, + enclosed_rectangle=substrate_tap_encloses, + sdlayer=config["substrate_tap_layer"], + horizontal_glayer="met2", + vertical_glayer="met1", + with_lvt_layer=False, + ) + tapring_ref = interdigitado << ringtoadd + interdigitado.add_ports( + tapring_ref.get_ports_list(), prefix="substratetap_" + ) + # Output port + T_not_dummy = 0 + size_interdigitado = evaluate_bbox(interdigitado) + min_separation_met3 = pdk.get_grule("met3")["min_separation"] + size_transistor = ( + evaluate_bbox(reference) if gate_common else evaluate_bbox(reference[0]) + ) + + for i in range(len(array)): + for j in range(len(array[i])): + if array[i][j] == 0: + continue + else: + T_not_dummy += 1 + port_reference_top = interdigitado.ports[ + str(i) + str(j) + "_" + str(array[i][j]) + "_leftsd_top_met_N" + ] + port_reference_bottom = interdigitado.ports[ + str(i) + str(j) + "_" + str(array[i][j]) + "_leftsd_top_met_S" + ] + port_referenceg_left = ( + interdigitado.ports["11_" + str(array[1][1]) + "_gate_W"] + if with_dummy + else interdigitado.ports["00_" + str(array[0][0]) + "_gate_W"] + ) + port_referenceg_right = interdigitado.ports[ + str(i) + str(j) + "_" + str(array[i][j]) + "_gate_E" + ] + # port_reference_top.width = port_reference_bottom.width + rect = rectangle( + (port_reference_top.width, port_reference_bottom.width), + layer=pdk.get_glayer("met3"), + ) + via = via_stack(pdk, "met2", "met3") + output_port = rect if output == "metal" else via + rectg = rectangle( + (port_referenceg_left.width, port_referenceg_right.width), + layer=pdk.get_glayer("met2"), + ) + size_rect = evaluate_bbox(rect) + size_rectg = evaluate_bbox(rectg) + size_via = evaluate_bbox(via) + size_output = size_rect if output == "metal" else size_via + salidas_row = list() + drain = 0 + source = 0 + for k in range(fingers + 1): + salidas_row.append(interdigitado << output_port) + reference = ( + port_reference_top if k % 2 == 0 else port_reference_bottom + ) + separation = ( + min_separation_met3 + size_output[1] + output_separation[0] + if k % 2 == 0 + else min_separation_met3 + size_output[1] + output_separation[1] + ) + if gate_common: + distance_out_ring = ( + size_interdigitado[1] / 2 - size_transistor[1] / 2 + if k % 2 == 0 + else size_interdigitado[1] / 2 + - size_transistor[1] / 2 + + gate_extension_ref + ) + else: + distance_out_ring = ( + size_interdigitado[1] / 2 - size_transistor[1] / 2 + if k % 2 == 0 + else size_interdigitado[1] / 2 + - size_transistor[1] / 2 + + gate_extension_ref * max_output + ) + ymove = ( + distance_out_ring + separation * (array[i][j]) + if k % 2 == 0 + else -1 * (distance_out_ring + separation * (array[i][j])) + ) + align_comp_to_port(salidas_row[-1], reference) + if common_route[0] and k % 2 == 0: + ymove -= separation * (array[i][j] - 1) + elif common_route[1] and k % 2 == 1: + ymove += separation * (array[i][j] - 1) + salidas_row[-1].movey(pdk.snap_to_2xgrid(ymove)) + output_port_name = "e2" if output == "metal" else "top_met_S" + # print(salidas_row[-1].get_ports_list()) + interdigitado << straight_route( + pdk, + salidas_row[-1].ports[output_port_name], + reference, + glayer1="met3", + glayer2="met2", + ) + prefix = ( + "drain_" + + str(j) + + "_" + + str(array[i][j]) + + "_" + + str(drain) + + "_" + if k % 2 == 0 + else "source_" + + str(j) + + "_" + + str(array[i][j]) + + "_" + + str(source) + + "_" + ) + interdigitado.add_ports( + salidas_row[-1].get_ports_list(), prefix=prefix + ) + if k == fingers: + break + drain += 1 if k % 2 == 0 else 0 + source += 1 if k % 2 == 1 else 0 + port_reference_top = interdigitado.ports[ + str(i) + + str(j) + + "_" + + str(array[i][j]) + + "_row0_col" + + str(k) + + "_rightsd_top_met_N" + ] + port_reference_bottom = interdigitado.ports[ + str(i) + + str(j) + + "_" + + str(array[i][j]) + + "_row0_col" + + str(k) + + "_rightsd_top_met_S" + ] + if gate_common: + salidas_gate = list() + for i in range(2): + salidas_gate.append(interdigitado << output_port) + referenceg = port_referenceg_left if i == 0 else port_referenceg_right + align_comp_to_port(salidas_gate[-1], referenceg) + separationg = min_separation_met3 + size_rectg[0] + if with_dummy: + distance_out_ring = ( + size_interdigitado[0] / 2 + - ((len(array[0])) / 2 - 1) * size_transistor[0] + ) + else: + distance_out_ring = 2 * separationg + xmove = ( + -distance_out_ring - separationg + if i == 0 + else distance_out_ring + separationg + ) + salidas_gate[-1].movex(pdk.snap_to_2xgrid(xmove)) + prefix = "gate1_" if i == 0 else "gate2_" + interdigitado.add_ports(salidas_gate[-1].get_ports_list(), prefix=prefix) + interdigitado = rename_ports_by_orientation(interdigitado) + ports_gate = ( + ["gate2_E", "gate1_W"] + if output == "metal" + else ["gate2_bottom_met_E", "gate1_bottom_met_W"] + ) + interdigitado << straight_route( + pdk, + interdigitado.ports[ports_gate[0]], + interdigitado.ports[ports_gate[1]], + glayer1="met2", + glayer2="met2", + ) + + # Save ports + component = Component() + component << interdigitado + all_ports = interdigitado.ports + + ports = list() + + if with_tie: + buscar = [ + "tie_N_top_met_W", + "tie_N_top_met_N", + "tie_N_top_met_E", + "tie_N_top_met_S", + "tie_S_top_met_W", + "tie_S_top_met_N", + "tie_S_top_met_E", + "tie_S_top_met_S", + "tie_E_top_met_W", + "tie_E_top_met_N", + "tie_E_top_met_E", + "tie_E_top_met_S", + "tie_W_top_met_W", + "tie_W_top_met_N", + "tie_W_top_met_E", + "tie_W_top_met_S", + ] + selected_ports = dict() + for busqueda in buscar: + new_port = { + name: port + for name, port in all_ports.items() + if busqueda in name and "row" not in name + } + selected_ports.update(new_port) + for name, port in selected_ports.items(): + posicion = {"N": "up", "S": "down", "E": "right", "W": "left"} + new_name = "bulk_" + posicion[name[4]] + "_" + name[-1] + component.add_port( + new_name, + port.center, + port.width, + port.orientation, + layer=port.layer, + port_type="electrical", + ) + + ports = list() + name = list() + for i in range(len(array)): + for j in range(len(array[i])): + if array[i][j] == 0: + continue + else: + drain = 0 + source = 0 + for k in range(fingers + 1): + if k % 2 == 0: + if output == "metal": + ports.append( + "drain_" + + str(j) + + "_" + + str(array[i][j]) + + "_" + + str(drain) + + "_" + ) + name.append( + "drain_" + + str(j) + + "_" + + str(array[i][j]) + + "_" + + str(drain) + + "_" + ) + elif output == "via": + ports.append( + "drain_" + + str(j) + + "_" + + str(array[i][j]) + + "_" + + str(drain) + + "_top_met_" + ) + name.append( + "drain_" + + str(j) + + "_" + + str(array[i][j]) + + "_" + + str(drain) + + "_" + ) + drain += 1 + else: + if output == "metal": + ports.append( + "source_" + + str(j) + + "_" + + str(array[i][j]) + + "_" + + str(source) + + "_" + ) + name.append( + "source_" + + str(j) + + "_" + + str(array[i][j]) + + "_" + + str(source) + + "_" + ) + elif output == "via": + ports.append( + "source_" + + str(j) + + "_" + + str(array[i][j]) + + "_" + + str(source) + + "_top_met_" + ) + name.append( + "source_" + + str(j) + + "_" + + str(array[i][j]) + + "_" + + str(source) + + "_" + ) + source += 1 + if gate_common: + gate_names = ( + ["gate1_", "gate2_"] + if output == "metal" + else ["gate1_top_met_", "gate2_top_met_"] + ) + ports.append(gate_names[0]) + ports.append(gate_names[1]) + name.append("gate1_") + name.append("gate2_") + else: + all_ports = interdigitado.ports + selected_ports = { + name: port + for name, port in all_ports.items() + if "gate" in name and "row" not in name and "_0_" not in name + } + for name_original, port in selected_ports.items(): + new_name = name_original[1:] + component.add_port( + new_name, + port.center, + port.width, + port.orientation, + layer=port.layer, + port_type="electrical", + ) + + # ports.append + # Add ports to component + for i in range(len(ports)): + filtrar_puertos(interdigitado, component, ports[i], name[i]) + # port name format metal output + # source/drain + position + type transistor + output number(if there are more than one finger) + # port name format via output + # source/drain + position + type transistor + output number(if there are more than one finger) + top_met_ + # port name format common gate + # gate1_ left gate_2 right + # port name format not common gate + # postion + type transistor + gate + direction + # center component + # component = center_component_with_ports(component) + return component # return interdigitado + + +def interdigitado_cascode_placement_Onchip( + pdk: MappedPDK, + deviceA_and_B: Literal["nfet", "pfet"], + output: Literal["metal", "via"] = "metal", + output_separation: float = 0, + width: float = 1, + length: float = 2, + fingers: int = 1, + with_dummy: bool = False, + with_lvt_layer: bool = True, + with_tie: bool = True, + with_substrate_tap: bool = False, + common_route: Optional[Union[bool, tuple[Optional[bool], Optional[bool]]]] = ( + False, + False, + ), + array: list = [[1, 2, 3]], + **kwargs, +) -> Component: + interdigitado = Component() + max_array = max(array[0]) + array = copy.deepcopy(array) + if output != "metal" and output != "via": + raise ValueError("Output must be metal or via") + # Duplicate the array + array = array * 2 + # Add dummys to array + if with_dummy: + column = len(array[0]) + + horizontal = [0] * (column + 2) + array_column = [[0] + row + [0] for row in array] + + array = [horizontal] + array_column + [horizontal] + arrayT = [list(fila) for fila in zip(*array)] + # Multiplier's arguments + kwargs["sdlayer"] = "n+s/d" if deviceA_and_B == "nfet" else "p+s/d" + kwargs["pdk"] = pdk + kwargs["dummy"] = (False, False) + kwargs["routing"] = False + reference = multiplier( + width=width, length=length, fingers=fingers, gate_down=True, **kwargs + ) + # dummy reference + if with_dummy: + dummy_single_up = multiplier( + width=width, length=length, fingers=1, gate_up=True, **kwargs + ) + dummy_single_down = multiplier( + width=width, length=length, fingers=1, gate_down=True, **kwargs + ) + dummy_up = multiplier( + width=width, length=length, fingers=fingers, gate_up=True, **kwargs + ) + dummy_down = multiplier( + width=width, length=length, fingers=fingers, gate_down=True, **kwargs + ) + # min separation + if pdk == sky130: + min_separation = pdk.get_grule("poly")["min_separation"] + elif pdk == gf180: + min_separation = pdk.get_grule("met2")["min_separation"] + # Create the array of transistors + transistors = list() + for i in range(len(array)): + transistors_in_row = list() + for j in range(len(array[i])): + if i == 0 or i == len(array) - 1: # first and last row + if j == 0 or j == len(array[i]) - 1: # first and last column + # corner transistors + if array[i][j] == 0 and i == 0: + # small dummy + transistors_in_row.append(interdigitado << dummy_single_down) + elif array[i][j] == 0 and i == len(array) - 1: + # small dummy + transistors_in_row.append(interdigitado << dummy_single_up) + else: + transistors_in_row.append(interdigitado << reference) + elif i == 0: # first row + # first row transistors + if array[i][j] == 0: + # dummy + transistors_in_row.append(interdigitado << dummy_down) + else: + transistors_in_row.append(interdigitado << reference) + else: # last row + # last row transistors + if array[i][j] == 0: + # dummy + transistors_in_row.append(interdigitado << dummy_up) + else: + transistors_in_row.append(interdigitado << reference) + else: # middle rows + if array[i][j] == 0: + # small dummy + transistors_in_row.append(interdigitado << dummy_single_up) + else: + transistors_in_row.append(interdigitado << reference) + # Add the transistors in the row + transistors.append(transistors_in_row) + min_separation_x = pdk.get_grule("p+s/d")["min_separation"] + 0.01 + # [0][1] = distance center to bottom + # [1][1] = distance center to top + # Move the transistors + for i in range(len(transistors)): + # Move the transistors in y direction + if i == 0: + # first row dont move + ymove = 0 + else: # find max y size in the row + distance_center2bottom_ref = transistors[i][0].bbox[0][1] # Temporal + distance_center2top_pre_ref = ( + transistors[i - 1][0].bbox[1][1] - ymove + ) # Temporal // Minus the ymove because this one was already moved + ymove_temp = ( + abs(distance_center2bottom_ref) + + abs(distance_center2top_pre_ref) + + min_separation + ) + for k in range(len(transistors[i])): + distance_center2bottom_temp = transistors[i][k].bbox[0][ + 1 + ] # distance center to bottom of the transistor that will be moved + distance_center2top_pre_temp = ( + transistors[i - 1][k].bbox[1][1] - ymove + ) # distance center to top of the transistor above the one that will be moved + ymove_temp_2 = ( + abs(distance_center2bottom_temp) + + abs(distance_center2top_pre_temp) + + min_separation + ) + if ymove_temp_2 > ymove_temp: + ymove_temp = ymove_temp_2 + ymove += ( + ymove_temp + if i == 1 or i == len(transistors) - 1 + else ymove_temp + + 3 * evaluate_bbox(via_stack(pdk, "met1", "met2"))[1] + + (evaluate_bbox(via_stack(pdk, "met1", "met2"))[1] * (max_array - 1)) + ) + for j in range(len(transistors[i])): + size_transistor = evaluate_bbox(transistors[i][j]) + # Move the transistors in x direction + if j == 0: + # first transistor dont move + xmove = 0 + else: + pre_last_size = evaluate_bbox(transistors[i][j - 1]) + # rest of transistors + xmove += (size_transistor[0] + pre_last_size[0]) / 2 + min_separation_x + transistors[i][j].movex(pdk.snap_to_2xgrid(xmove)) + transistors[i][j].movey(pdk.snap_to_2xgrid(ymove)) + + interdigitado.add_ports( + transistors[i][j].get_ports_list(), + prefix=str(i) + str(j) + "_" + str(array[i][j]) + "_", + ) + # Center the component + interdigitado = center_component_with_ports(interdigitado) + ##RINGS + # Define configurations according to transistor type + device_config = { + "nfet": { + "sdlayer": "p+s/d", + "well_layer": "pwell", + "tap_enclosure_rule": "p+s/d", + }, + "pfet": { + "sdlayer": "n+s/d", + "well_layer": "nwell", + "tap_enclosure_rule": "n+s/d", + "substrate_tap_layer": "p+s/d", + }, + } + + # Obtaining the correct configuration + config = device_config.get(deviceA_and_B) + # Add tie if necessary + if with_tie: + tie_layers = ["met2", "met1"] + + tap_separation = max( + pdk.get_grule("met2")["min_separation"], + pdk.get_grule("met1")["min_separation"], + pdk.get_grule("active_diff", "active_tap")["min_separation"], + ) + tap_separation += pdk.get_grule(config["tap_enclosure_rule"], "active_tap")[ + "min_enclosure" + ] + + tap_encloses = ( + 2 * (tap_separation + interdigitado.xmax), + 2 * (tap_separation + interdigitado.ymax), + ) + tapring_ref = interdigitado << create_tapring_onchip( + pdk, + enclosed_rectangle=tap_encloses, + sdlayer=config["sdlayer"], + horizontal_glayer=tie_layers[0], + vertical_glayer=tie_layers[1], + with_lvt_layer=with_lvt_layer, + ) + interdigitado.add_ports(tapring_ref.get_ports_list(), prefix="tie_") + if with_dummy: + first_mos_ds = interdigitado.ports[ + "00_0_leftsd_met_array_row0_col0_top_met_W" + ] + first_mos_gate = interdigitado.ports["00_0_gate_W"] + first_mos_ds_R = interdigitado.ports[ + "0" + + str(len(arrayT) - 1) + + "_0_" + + "row0_col0_rightsd_met_array_row0_col0_top_met_E" + ] + first_mos_gate_R = interdigitado.ports[ + "0" + str(len(arrayT) - 1) + "_0_gate_E" + ] + last_mos_ds = interdigitado.ports[ + str(len(array) - 1) + "0_0_leftsd_met_array_row0_col0_top_met_W" + ] + last_mos_gate = interdigitado.ports[str(len(array) - 1) + "0_0_gate_W"] + last_mos_ds_R = interdigitado.ports[ + str(len(array) - 1) + + str(len(arrayT) - 1) + + "_0_row0_col0_rightsd_met_array_row0_col0_top_met_E" + ] + last_mos_gate_R = interdigitado.ports[ + str(len(array) - 1) + str(len(arrayT) - 1) + "_0_gate_E" + ] + tie_left_W = interdigitado.ports["tie_W_array_row0_col0_top_met_W"] + tie_right = interdigitado.ports["tie_E_array_row0_col0_top_met_E"] + width_route_dummy = 1 if width >= 1 else width + for i in range(len(array)): + if i == 0: + # First Dummys + interdigitado << straight_route( + pdk, first_mos_ds_R, tie_left_W, width=width_route_dummy + ) + interdigitado << straight_route( + pdk, first_mos_ds, tie_right, width=width_route_dummy + ) + interdigitado << straight_route(pdk, first_mos_gate_R, tie_left_W) + interdigitado << straight_route(pdk, first_mos_gate, tie_right) + elif i == len(array) - 1: + # Last Dummys + interdigitado << straight_route( + pdk, last_mos_ds_R, tie_left_W, width=width_route_dummy + ) + interdigitado << straight_route( + pdk, last_mos_ds, tie_right, width=width_route_dummy + ) + interdigitado << straight_route(pdk, last_mos_gate_R, tie_left_W) + interdigitado << straight_route(pdk, last_mos_gate, tie_right) + else: + interdigitado << straight_route( + pdk, + interdigitado.ports[ + str(i) + + "0_0_row0_col0_rightsd_met_array_row0_col0_top_met_E" + ], + tie_left_W, + width=width_route_dummy, + ) + interdigitado << straight_route( + pdk, + interdigitado.ports[ + str(i) + + str(len(array[0]) - 1) + + "_0_leftsd_met_array_row0_col0_top_met_W" + ], + tie_right, + width=width_route_dummy, + ) + interdigitado << straight_route( + pdk, interdigitado.ports[str(i) + "0_0_gate_E"], tie_left_W + ) + interdigitado << straight_route( + pdk, + interdigitado.ports[ + str(i) + str(len(array[0]) - 1) + "_0_gate_W" + ], + tie_right, + ) + + # Add well + interdigitado.add_padding( + layers=(pdk.get_glayer(config["well_layer"]),), + default=pdk.get_grule(config["well_layer"], "active_tap")["min_enclosure"], + ) + + # Adding taps on the perimeter + interdigitado = add_ports_perimeter( + interdigitado, layer=pdk.get_glayer(config["well_layer"]), prefix="well_" + ) + dims_post_tie = evaluate_bbox(interdigitado) + + # Add substrate tap if necessary + if deviceA_and_B == "pfet": + if with_substrate_tap: + substrate_tap_separation = pdk.get_grule("dnwell", "active_tap")[ + "min_separation" + ] + substrate_tap_encloses = ( + 2 * (substrate_tap_separation + interdigitado.xmax), + 2 * (substrate_tap_separation + interdigitado.ymax), + ) + ringtoadd = create_tapring_onchip( + pdk, + enclosed_rectangle=substrate_tap_encloses, + sdlayer=config["substrate_tap_layer"], + horizontal_glayer="met2", + vertical_glayer="met1", + with_lvt_layer=False, + ) + tapring_ref = interdigitado << ringtoadd + interdigitado.add_ports( + tapring_ref.get_ports_list(), prefix="substratetap_" + ) + + # Outputs and routing + size_interdigitado = evaluate_bbox(interdigitado) + min_separation_met3 = pdk.get_grule("met3")["min_separation"] + min_separation_met2 = pdk.get_grule("met2")["min_separation"] + T_not_dummy = 0 + up = False + down = False + salidas_gate = list() + + for i in range(len(array)): + for j in range(len(array[i])): + if (i == 1 and with_dummy) or (i == 0 and with_dummy == False): + # print('down') + down = True + up = False + elif (i == len(array) - 2 and with_dummy) or ( + i == len(array) - 1 and with_dummy == False + ): + up = True + down = False + # print('up') + else: + up = False + down = False + + if array[i][j] == 0: + continue + else: + T_not_dummy += 1 + size_transistor = evaluate_bbox(transistors[i][j]) + port_reference_top = interdigitado.ports[ + str(i) + str(j) + "_" + str(array[i][j]) + "_leftsd_top_met_N" + ] + port_reference_bottom = interdigitado.ports[ + str(i) + str(j) + "_" + str(array[i][j]) + "_leftsd_top_met_S" + ] + port_referenceg_left = ( + interdigitado.ports["11_" + str(array[1][1]) + "_gate_W"] + if with_dummy + else interdigitado.ports["00_" + str(array[0][0]) + "_gate_W"] + ) + port_referenceg_right = interdigitado.ports[ + str(i) + str(j) + "_" + str(array[i][j]) + "_gate_E" + ] + # port_reference_top.width = port_reference_bottom.width + rect = rectangle( + (port_reference_top.width, port_reference_bottom.width), + layer=pdk.get_glayer("met3"), + ) + rect_hor = rectangle( + (port_reference_top.width, port_reference_bottom.width), + layer=pdk.get_glayer("met2"), + ) + via = via_stack(pdk, "met2", "met3") + via_hor = via_stack(pdk, "met1", "met2") + output_port = rect if output == "metal" else via + rectg = rectangle( + (port_referenceg_left.width, port_referenceg_right.width), + layer=pdk.get_glayer("met2"), + ) + size_rect = evaluate_bbox(rect) + size_rectg = evaluate_bbox(rectg) + size_via = evaluate_bbox(via) + size_output = size_rect if output == "metal" else size_via + size_via_hor = evaluate_bbox(via_hor) + salidas_row = list() + middle_port = list() + drain = 0 + source = 0 + for k in range(fingers + 1): + if up and k % 2 == 0: + # print('placement up') + salidas_row.append(interdigitado << output_port) + reference = port_reference_top + separation = ( + min_separation_met3 + size_output[1] + output_separation + ) + distance_out_ring = ( + size_interdigitado[1] / 2 - size_transistor[1] + ) + ymove = distance_out_ring + separation * (array[i][j]) + align_comp_to_port(salidas_row[-1], reference) + if common_route[0] and k % 2 == 0: + ymove -= separation * (array[i][j] - 1) + salidas_row[-1].movey(pdk.snap_to_2xgrid(ymove)) + output_port_name = "e2" if output == "metal" else "top_met_S" + # print(salidas_row[-1].get_ports_list()) + interdigitado << straight_route( + pdk, + salidas_row[-1].ports[output_port_name], + reference, + glayer1="met3", + glayer2="met2", + ) + prefix = ( + "drain_" + + str(i) + + str(j) + + "_" + + str(array[i][j]) + + "_" + + str(drain) + + "_" + ) + interdigitado.add_ports( + salidas_row[-1].get_ports_list(), prefix=prefix + ) + drain += 1 + elif up and k % 2 == 1: + # print(k,'ruteo') + # print('no break') + middle_port.append(interdigitado << via_hor) + move_middle_port = [ + port_ruteo_top.center[0], + port_gate_top.center[1] + - (size_output[1] + size_via_hor[1]) / 2 + - min_separation_met2, + ] + middle_port[-1].movex( + pdk.snap_to_2xgrid(move_middle_port[0]) + ).movey(pdk.snap_to_2xgrid(move_middle_port[1])) + extra_movey = (min_separation_met2 + size_via_hor[1]) * ( + array[i][j] - 1 + ) + middle_port[-1].movey(pdk.snap_to_2xgrid(-extra_movey)) + interdigitado << straight_route( + pdk, port_ruteo_top, port_ruteo_bot + ) + interdigitado.add_ports( + middle_port[-1].get_ports_list(), + prefix="middle_" + + str(i) + + str(j) + + "_" + + str(array[i][j]) + + "_" + + str(k) + + "_", + ) + + elif down and k % 2 == 0: + # print('placement down') + salidas_row.append(interdigitado << output_port) + reference = port_reference_bottom + separation = ( + min_separation_met3 + size_output[1] + output_separation + ) + distance_out_ring = ( + size_interdigitado[1] / 2 - size_transistor[1] / 2 + ) + ymove = -1 * (distance_out_ring + separation * (array[i][j])) + align_comp_to_port(salidas_row[-1], reference) + if common_route[1] and k % 2 == 0: + ymove += separation * (array[i][j]) + salidas_row[-1].movey( + pdk.snap_to_2xgrid(ymove - output_separation) + ) + output_port_name = "e2" if output == "metal" else "top_met_S" + # print(salidas_row[-1].get_ports_list()) + interdigitado << straight_route( + pdk, + salidas_row[-1].ports[output_port_name], + reference, + glayer1="met3", + glayer2="met2", + ) + prefix = ( + "source_" + + str(i) + + str(j) + + "_" + + str(array[i][j]) + + "_" + + str(source) + + "_" + ) + interdigitado.add_ports( + salidas_row[-1].get_ports_list(), prefix=prefix + ) + source += 1 + if k == fingers: + break + port_reference_top = interdigitado.ports[ + str(i) + + str(j) + + "_" + + str(array[i][j]) + + "_row0_col" + + str(k) + + "_rightsd_top_met_N" + ] + port_reference_bottom = interdigitado.ports[ + str(i) + + str(j) + + "_" + + str(array[i][j]) + + "_row0_col" + + str(k) + + "_rightsd_top_met_S" + ] + if up: + port_ruteo_top = interdigitado.ports[ + str(i) + + str(j) + + "_" + + str(array[i][j]) + + "_row0_col" + + str(k) + + "_rightsd_top_met_S" + ] + port_gate_top = interdigitado.ports[ + str(i) + str(j) + "_" + str(array[i][j]) + "_gate_E" + ] + port_ruteo_bot = interdigitado.ports[ + str(i - 1) + + str(j) + + "_" + + str(array[i][j]) + + "_row0_col" + + str(k) + + "_rightsd_top_met_S" + ] + rows = len(array) + cols = len(array[0]) + output_port = rect_hor if output == "metal" else via + # Ruteo intermedio + ports_name = [name for name in interdigitado.ports if "middle" in name] + # print(ports_name) + for i in range(max_array + 1): + port_inicial = [ + name + for name in interdigitado.ports + if "middle_" in name + and "_" + str(i) + "_1_" in name + and "top_met_E" in name + ] + if len(port_inicial) > 1: + interdigitado << straight_route( + pdk, + interdigitado.ports[port_inicial[0]], + interdigitado.ports[port_inicial[-1]], + ) + # print(port_inicial) + + # Ruteo gate + for i in range(rows): + if ((i > 0 and i < rows - 1) and with_dummy) or with_dummy == False: + port_referenceg_left = ( + interdigitado.ports[str(i) + "1_" + str(array[1][1]) + "_gate_W"] + if with_dummy + else interdigitado.ports[str(i) + "0_" + str(array[0][0]) + "_gate_W"] + ) + port_referenceg_right = ( + interdigitado.ports[ + str(i) + str(cols - 2) + "_" + str(array[i][cols - 2]) + "_gate_E" + ] + if with_dummy + else interdigitado.ports[ + str(i) + str(cols - 1) + "_" + str(array[i][cols - 1]) + "_gate_E" + ] + ) + salidas_gate.append(interdigitado << output_port) + salidas_gate.append(interdigitado << output_port) + # referenceg = port_referenceg_left if l == 0 else port_referenceg_right + align_comp_to_port(salidas_gate[-1], port_referenceg_left) + align_comp_to_port(salidas_gate[-2], port_referenceg_right) + separationg = min_separation_met3 + size_rectg[0] + if with_dummy: + distance_out_ring = ( + size_interdigitado[0] / 2 + - ((len(array[0])) / 2 - 1) * size_transistor[0] + ) + else: + distance_out_ring = 2 * separationg + # xmove = -distance_out_ring -separationg if l==0 else distance_out_ring+separationg + xmove_left = -distance_out_ring - separation + xmove_right = distance_out_ring + separation + salidas_gate[-1].movex(pdk.snap_to_2xgrid(xmove_left)) + salidas_gate[-2].movex(pdk.snap_to_2xgrid(xmove_right)) + # prefix = 'gate1_' if i==0 else 'gate2_' + prefix_left = "gate_" + str(i) + "_l_" + prefix_right = "gate_" + str(i) + "_r_" + interdigitado.add_ports( + salidas_gate[-1].get_ports_list(), prefix=prefix_left + ) + interdigitado.add_ports( + salidas_gate[-2].get_ports_list(), prefix=prefix_right + ) + interdigitado = rename_ports_by_orientation(interdigitado) + ports_gate = ( + ["gate_" + str(i) + "_l_E", "gate_" + str(i) + "_r_W"] + if output == "metal" + else [ + "gate_" + str(i) + "_l_bottom_met_E", + "gate_" + str(i) + "_r_bottom_met_W", + ] + ) + interdigitado << straight_route( + pdk, + interdigitado.ports[ports_gate[0]], + interdigitado.ports[ports_gate[1]], + glayer1="met2", + glayer2="met2", + ) + + # Save ports + component = Component() + component << interdigitado + all_ports = interdigitado.ports + + ports = list() + + if with_tie: + buscar = [ + "tie_N_top_met_W", + "tie_N_top_met_N", + "tie_N_top_met_E", + "tie_N_top_met_S", + "tie_S_top_met_W", + "tie_S_top_met_N", + "tie_S_top_met_E", + "tie_S_top_met_S", + "tie_E_top_met_W", + "tie_E_top_met_N", + "tie_E_top_met_E", + "tie_E_top_met_S", + "tie_W_top_met_W", + "tie_W_top_met_N", + "tie_W_top_met_E", + "tie_W_top_met_S", + ] + selected_ports = dict() + for busqueda in buscar: + new_port = { + name: port + for name, port in all_ports.items() + if busqueda in name and "row" not in name + } + selected_ports.update(new_port) + for name, port in selected_ports.items(): + posicion = {"N": "up", "S": "down", "E": "right", "W": "left"} + new_name = "bulk_" + posicion[name[4]] + "_" + name[-1] + component.add_port( + new_name, + port.center, + port.width, + port.orientation, + layer=port.layer, + port_type="electrical", + ) + + ports = list() + name = list() + for i in range(len(array)): + for j in range(len(array[i])): + if array[i][j] == 0: + continue + else: + out_source = 0 + out_drain = 0 + if (i == 1 and with_dummy) or ( + i == 0 and with_dummy == False + ): # or i==rows-1) + for k in range(fingers + 1): + if k % 2 == 0: + if output == "metal": + ports.append( + "source_" + + str(i) + + str(j) + + "_" + + str(array[i][j]) + + "_" + + str(out_source) + + "_" + ) + name.append( + "source_" + + str(i) + + str(j) + + "_" + + str(array[i][j]) + + "_" + + str(out_source) + + "_" + ) + elif output == "via": + ports.append( + "source_" + + str(i) + + str(j) + + "_" + + str(array[i][j]) + + "_" + + str(out_source) + + "_top_met_" + ) + name.append( + "source_" + + str(i) + + str(j) + + "_" + + str(array[i][j]) + + "_" + + str(out_source) + + "_" + ) + out_source += 1 + if (i == rows - 2 and with_dummy) or ( + i == rows - 1 and with_dummy == False + ): + for k in range(fingers + 1): + if k % 2 == 0: + if output == "metal": + ports.append( + "drain_" + + str(i) + + str(j) + + "_" + + str(array[i][j]) + + "_" + + str(out_drain) + + "_" + ) + name.append( + "drain_" + + str(i) + + str(j) + + "_" + + str(array[i][j]) + + "_" + + str(out_drain) + + "_" + ) + elif output == "via": + ports.append( + "drain_" + + str(i) + + str(j) + + "_" + + str(array[i][j]) + + "_" + + str(out_drain) + + "_top_met_" + ) + name.append( + "drain_" + + str(i) + + str(j) + + "_" + + str(array[i][j]) + + "_" + + str(out_drain) + + "_" + ) + out_drain += 1 + + for i in range(rows): + if ((i > 0 and i < rows - 1) and with_dummy) or with_dummy == False: + name_gate = ( + ["gate_" + str(i) + "_l_", "gate_" + str(i) + "_r_"] + if output == "metal" + else [ + "gate_" + str(i) + "_l_top_met_", + "gate_" + str(i) + "_r_top_met_", + ] + ) + ports.append(name_gate[0]) + ports.append(name_gate[1]) + name.append("gate_" + str(i) + "_l_") + name.append("gate_" + str(i) + "_r_") + + for i in range(len(ports)): + filtrar_puertos(interdigitado, component, ports[i], name[i]) + # port name format metal output + # source/drain + position + type transistor + output number(if there are more than one finger) + # port name format via output + # source/drain + position + type transistor + output number(if there are more than one finger) + top_met_ + # center component + component = center_component_with_ports(component) + return component # return interdigitado + + +def create_tapring_onchip( + pdk: MappedPDK, + enclosed_rectangle=(2.0, 4.0), + sdlayer: str = "p+s/d", + horizontal_glayer: str = "met2", + vertical_glayer: str = "met1", + sides: tuple[bool, bool, bool, bool] = (True, True, True, True), + with_lvt_layer=False, # New input variable +) -> Component: + """ptapring produce a p substrate / pwell tap rectanglular ring + This ring will legally enclose a rectangular shape + args: + pdk: MappedPDK is the pdk to use + enclosed_rectangle: tuple is the (width, hieght) of the area to enclose + ****NOTE: the enclosed_rectangle will be the enclosed dimensions of active_tap + horizontal_glayer: string=met2, layer used over the ring horizontally + vertical_glayer: string=met1, layer used over the ring vertically + sides: instead of creating the ring on all sides, only create it on the specified sides (W,N,E,S) + ports: + Narr_... all ports in top via array + Sarr_... all ports in bottom via array + Earr_... all ports in right via array + Warr_... all ports in left via array + bl_corner_...all ports in bottom left L route + """ + enclosed_rectangle = pdk.snap_to_2xgrid(enclosed_rectangle, return_type="float") + # check layers, activate pdk, create top cell + pdk.has_required_glayers( + [sdlayer, "active_tap", "mcon", horizontal_glayer, vertical_glayer] + ) + pdk.activate() + ptapring = Component() + if not "met" in horizontal_glayer or not "met" in vertical_glayer: + raise ValueError("both horizontal and vertical glayers should be metals") + # check that ring is not too small + min_gap_tap = pdk.get_grule("active_tap")["min_separation"] + if enclosed_rectangle[0] < min_gap_tap: + raise ValueError("ptapring must be larger than " + str(min_gap_tap)) + # create active tap + tap_width = max( + pdk.get_grule("active_tap")["min_width"], + 2 * pdk.get_grule("active_tap", "mcon")["min_enclosure"] + + pdk.get_grule("mcon")["width"], + ) + ptapring << rectangular_ring( + enclosed_size=enclosed_rectangle, + width=tap_width, + centered=True, + layer=pdk.get_glayer("active_tap"), + ) + # create p plus area + pp_enclosure = pdk.get_grule("active_tap", sdlayer)["min_enclosure"] + pp_width = 2 * pp_enclosure + tap_width + pp_enclosed_rectangle = [dim - 2 * pp_enclosure for dim in enclosed_rectangle] + ptapring << rectangular_ring( + enclosed_size=pp_enclosed_rectangle, + width=pp_width, + centered=True, + layer=pdk.get_glayer(sdlayer), + ) + + ########################################################################################################################################################### + # Create a LVT layer for LVT transistors from schematic design + if pdk is sky130: + # create 65/44 area + con = (65, 44) + ptapring << rectangular_ring( + enclosed_size=enclosed_rectangle, + width=tap_width, + centered=True, + layer=con, + ) + + if with_lvt_layer: + # create lvt area for nmos + lvt_layer = (125, 44) + ptapring << rectangle( + size=enclosed_rectangle, + centered=True, + layer=lvt_layer, + ) + ########################################################################################################################################################### + + # create via arrs + via_width_horizontal = evaluate_bbox( + via_stack(pdk, "active_tap", horizontal_glayer) + )[0] + arr_size_horizontal = enclosed_rectangle[0] + horizontal_arr = via_array( + pdk, + "active_tap", + horizontal_glayer, + (arr_size_horizontal, via_width_horizontal), + minus1=True, + lay_every_layer=True, + ) + # Create via vertical + via_width_vertical = evaluate_bbox(via_stack(pdk, "active_tap", vertical_glayer))[1] + arr_size_vertical = enclosed_rectangle[1] + vertical_arr = via_array( + pdk, + "active_tap", + vertical_glayer, + (via_width_vertical, arr_size_vertical), + minus1=True, + lay_every_layer=True, + ) + + # add via arrs + refs_prefixes = list() + if sides[1]: + metal_ref_n = ptapring << horizontal_arr + metal_ref_n.movey(round(0.5 * (enclosed_rectangle[1] + tap_width), 4)) + refs_prefixes.append((metal_ref_n, "N_")) + if sides[2]: + metal_ref_e = ptapring << vertical_arr + metal_ref_e.movex(round(0.5 * (enclosed_rectangle[0] + tap_width), 4)) + refs_prefixes.append((metal_ref_e, "E_")) + if sides[3]: + metal_ref_s = ptapring << horizontal_arr + metal_ref_s.movey(round(-0.5 * (enclosed_rectangle[1] + tap_width), 4)) + refs_prefixes.append((metal_ref_s, "S_")) + if sides[0]: + metal_ref_w = ptapring << vertical_arr + metal_ref_w.movex(round(-0.5 * (enclosed_rectangle[0] + tap_width), 4)) + refs_prefixes.append((metal_ref_w, "W_")) + # connect vertices + if sides[1] and sides[0]: + tlvia = ptapring << L_route( + pdk, metal_ref_n.ports["top_met_W"], metal_ref_w.ports["top_met_N"] + ) + refs_prefixes += [(tlvia, "tl_")] + if sides[1] and sides[2]: + trvia = ptapring << L_route( + pdk, metal_ref_n.ports["top_met_E"], metal_ref_e.ports["top_met_N"] + ) + refs_prefixes += [(trvia, "tr_")] + if sides[3] and sides[0]: + blvia = ptapring << L_route( + pdk, metal_ref_s.ports["top_met_W"], metal_ref_w.ports["top_met_S"] + ) + refs_prefixes += [(blvia, "bl_")] + if sides[3] and sides[2]: + brvia = ptapring << L_route( + pdk, metal_ref_s.ports["top_met_E"], metal_ref_e.ports["top_met_S"] + ) + refs_prefixes += [(brvia, "br_")] + # add ports, flatten and return + for ref_, prefix in refs_prefixes: + ptapring.add_ports(ref_.get_ports_list(), prefix=prefix) + return component_snap_to_grid(ptapring) + + +def __gen_fingers_macro( + pdk: MappedPDK, + rmult: int, + fingers: int, + length: float, + width: float, + poly_height: float, + sdlayer: str, + inter_finger_topmet: str, +) -> Component: + """internal use: returns an array of fingers""" + length = pdk.snap_to_2xgrid(length) + width = pdk.snap_to_2xgrid(width) + poly_height = pdk.snap_to_2xgrid(poly_height) + # sizing_ref_viastack = via_stack(pdk, "active_diff", "met1") This variable is not used + # figure out poly (gate) spacing: s/d metal doesnt overlap transistor, s/d min seperation criteria is met + sd_viaxdim = rmult * evaluate_bbox(via_stack(pdk, "active_diff", "met1"))[0] + poly_spacing = ( + 2 * pdk.get_grule("poly", "mcon")["min_separation"] + + pdk.get_grule("mcon")["width"] + ) + poly_spacing = max(sd_viaxdim, poly_spacing) + met1_minsep = pdk.get_grule("met1")["min_separation"] + poly_spacing += met1_minsep if length < met1_minsep else 0 + # create a single finger + finger = Component("finger") + gate = finger << rectangle( + size=(length, poly_height), layer=pdk.get_glayer("poly"), centered=True + ) + sd_viaarr = via_array( + pdk, + "active_diff", + "met1", + size=(sd_viaxdim, width), + minus1=True, + lay_bottom=False, + ).copy() + interfinger_correction = via_array( + pdk, + "met1", + inter_finger_topmet, + size=(None, width), + lay_every_layer=True, + num_vias=(1, None), + ) + + ########################################################################################################################################################### + sd_viaarr_ref = finger << sd_viaarr + sd_viaarr_ref_met_top = ( + finger << interfinger_correction + ) # Separate vias are added to save the ports of the inter_finger_topmetal metals. + sd_viaarr_ref_met_top.movex((poly_spacing + length) / 2) + sd_viaarr_ref.movex((poly_spacing + length) / 2) + finger.add_ports(gate.get_ports_list(), prefix="gate_") + finger.add_ports(sd_viaarr_ref.get_ports_list(), prefix="rightsd_") + finger.add_ports( + sd_viaarr_ref_met_top.get_ports_list(), prefix="rightsd_met_" + ) # Right inter_finger_topmet metal ports are saved + ########################################################################################################################################################### + + # create finger array + fingerarray = prec_array( + finger, + columns=fingers, + rows=1, + spacing=(poly_spacing + length, 1), + absolute_spacing=True, + ) + sd_via_ref_left = fingerarray << sd_viaarr + sd_via_ref_left_met_top = ( + fingerarray << interfinger_correction + ) # A separate via array is added to store the ports of the inter_finger_topmet metals. + sd_via_ref_left.movex(0 - (poly_spacing + length) / 2) + sd_via_ref_left_met_top.movex(0 - (poly_spacing + length) / 2) + fingerarray.add_ports(sd_via_ref_left.get_ports_list(), prefix="leftsd_") + fingerarray.add_ports( + sd_via_ref_left_met_top.get_ports_list(), prefix="leftsd_met_" + ) # Left inter_finger_topmet metal ports are saved + # center finger array and add ports + centered_farray = Component() + fingerarray_ref_center = prec_ref_center(fingerarray) + centered_farray.add(fingerarray_ref_center) + centered_farray.add_ports(fingerarray_ref_center.get_ports_list()) + # create diffusion and +doped region + multiplier = rename_ports_by_orientation(centered_farray) + diff_extra_enc = 2 * pdk.get_grule("mcon", "active_diff")["min_enclosure"] + diff_dims = (diff_extra_enc + evaluate_bbox(multiplier)[0], width) + diff = multiplier << rectangle( + size=diff_dims, layer=pdk.get_glayer("active_diff"), centered=True + ) + sd_diff_ovhg = pdk.get_grule(sdlayer, "active_diff")["min_enclosure"] + sdlayer_dims = [dim + 2 * sd_diff_ovhg for dim in diff_dims] + sdlayer_ref = multiplier << rectangle( + size=sdlayer_dims, layer=pdk.get_glayer(sdlayer), centered=True + ) + multiplier.add_ports(sdlayer_ref.get_ports_list(), prefix="plusdoped_") + multiplier.add_ports(diff.get_ports_list(), prefix="diff_") + + return component_snap_to_grid(rename_ports_by_orientation(multiplier)) + + +# drain is above source +def multiplier( + pdk: MappedPDK, + sdlayer: str, + width: Optional[float] = 3, + length: Optional[float] = None, + fingers: int = 1, + routing: bool = True, + inter_finger_topmet: str = "met2", + dummy: Union[bool, tuple[bool, bool]] = True, + sd_route_topmet: str = "met2", + gate_route_topmet: str = "met2", + rmult: Optional[int] = None, + sd_rmult: int = 1, + gate_rmult: int = 1, + interfinger_rmult: int = 1, + sd_route_extension: float = 0, + gate_route_extension: float = 0, + dummy_routes: bool = True, + gate_up: Optional[bool] = False, + gate_down: Optional[bool] = False, +) -> Component: + """Generic poly/sd vias generator + args: + pdk = pdk to use + sdlayer = either p+s/d for pmos or n+s/d for nmos + width = expands the transistor in the y direction + length = transitor length (if left None defaults to min length) + fingers = introduces additional fingers (sharing s/d) of width=width + routing = true or false, specfies if sd should be connected + inter_finger_topmet = top metal of the via array laid on the source/drain regions + ****NOTE: routing metal is layed over the source drain regions regardless of routing option + dummy = true or false add dummy active/plus doped regions + sd_rmult = multiplies thickness of sd metal (int only) + gate_rmult = multiplies gate by adding rows to the gate via array (int only) + interfinger_rmult = multiplies thickness of source/drain routes between the gates (int only) + sd_route_extension = float, how far extra to extend the source/drain connections (default=0) + gate_route_extension = float, how far extra to extend the gate connection (default=0) + dummy_routes: bool default=True, if true add add vias and short dummy poly,source,drain + + ports (one port for each edge), + ****NOTE: source is below drain: + gate_... all edges (top met route of gate connection) + source_...all edges (top met route of source connections) + drain_...all edges (top met route of drain connections) + plusdoped_...all edges (area of p+s/d or n+s/d layer) + diff_...all edges (diffusion region) + rowx_coly_...all ports associated with finger array include gate_... and array_ (array includes all ports of the viastacks in the array) + leftsd_...all ports associated with the left most via array + dummy_L,R_N,E,S,W ports if dummy_routes=True + """ + # error checking + if "+s/d" not in sdlayer: + raise ValueError("specify + doped region for multiplier") + if not "met" in sd_route_topmet or not "met" in gate_route_topmet: + raise ValueError("topmet specified must be metal layer") + if rmult: + if rmult < 1: + raise ValueError("rmult must be positive int") + sd_rmult = rmult + gate_rmult = 1 + interfinger_rmult = (rmult - 1) or 1 + if sd_rmult < 1 or interfinger_rmult < 1 or gate_rmult < 1: + raise ValueError("routing multipliers must be positive int") + if fingers < 1: + raise ValueError("number of fingers must be positive int") + + ########################################################################################################################################################### + # Conditions to avoid double overlapping or duplication of gates in dummies + if gate_up and gate_down: + raise ValueError("Gate up and Down can't be at the same time") + if routing and (gate_down or gate_up): + raise ValueError("Gate up and Down can't be used with routing") + ########################################################################################################################################################### + + # argument parsing and rule setup + min_length = pdk.get_grule("poly")["min_width"] + length = min_length if (length or min_length) <= min_length else length + length = pdk.snap_to_2xgrid(length) + min_width = max(min_length, pdk.get_grule("active_diff")["min_width"]) + width = min_width if (width or min_width) <= min_width else width + width = pdk.snap_to_2xgrid(width) + poly_height = width + 2 * pdk.get_grule("poly", "active_diff")["overhang"] + # call finger array + multiplier = __gen_fingers_macro( + pdk, + interfinger_rmult, + fingers, + length, + width, + poly_height, + sdlayer, + inter_finger_topmet, + ) + # route all drains/ gates/ sources + if routing: + # place vias, then straight route from top port to via-botmet_N + sd_N_port = multiplier.ports["leftsd_top_met_N"] + sdvia = via_stack(pdk, "met1", sd_route_topmet) + sdmet_hieght = sd_rmult * evaluate_bbox(sdvia)[1] + sdroute_minsep = pdk.get_grule(sd_route_topmet)["min_separation"] + sdvia_ports = list() + for finger in range(fingers + 1): + diff_top_port = movey(sd_N_port, destination=width / 2) + # place sdvia such that metal does not overlap diffusion + big_extension = sdroute_minsep + sdmet_hieght / 2 + sdmet_hieght + sdvia_extension = big_extension if finger % 2 else sdmet_hieght / 2 + sdvia_ref = align_comp_to_port(sdvia, diff_top_port, alignment=("c", "t")) + multiplier.add( + sdvia_ref.movey( + sdvia_extension + pdk.snap_to_2xgrid(sd_route_extension) + ) + ) + multiplier << straight_route( + pdk, diff_top_port, sdvia_ref.ports["bottom_met_N"] + ) + sdvia_ports += [sdvia_ref.ports["top_met_W"], sdvia_ref.ports["top_met_E"]] + # get the next port (break before this if last iteration because port D.N.E. and num gates=fingers) + if finger == fingers: + break + sd_N_port = multiplier.ports[f"row0_col{finger}_rightsd_top_met_N"] + # route gates + gate_S_port = multiplier.ports[f"row0_col{finger}_gate_S"] + metal_seperation = pdk.util_max_metal_seperation() + psuedo_Ngateroute = movey( + gate_S_port.copy(), 0 - metal_seperation - gate_route_extension + ) + psuedo_Ngateroute.y = pdk.snap_to_2xgrid(psuedo_Ngateroute.y) + multiplier << straight_route(pdk, gate_S_port, psuedo_Ngateroute) + # place route met: gate + gate_width = ( + gate_S_port.center[0] + - multiplier.ports["row0_col0_gate_S"].center[0] + + gate_S_port.width + ) + gate = rename_ports_by_list( + via_array( + pdk, + "poly", + gate_route_topmet, + size=(gate_width, None), + num_vias=(None, gate_rmult), + no_exception=True, + fullbottom=True, + ), + [("top_met_", "gate_")], + ) + gate_ref = align_comp_to_port( + gate.copy(), + psuedo_Ngateroute, + alignment=(None, "b"), + layer=pdk.get_glayer("poly"), + ) + multiplier.add(gate_ref) + # place route met: source, drain + sd_width = sdvia_ports[-1].center[0] - sdvia_ports[0].center[0] + sd_route = rectangle( + size=(sd_width, sdmet_hieght), + layer=pdk.get_glayer(sd_route_topmet), + centered=True, + ) + source = align_comp_to_port( + sd_route.copy(), sdvia_ports[0], alignment=(None, "c") + ) + drain = align_comp_to_port( + sd_route.copy(), sdvia_ports[2], alignment=(None, "c") + ) + multiplier.add(source) + multiplier.add(drain) + # add ports + multiplier.add_ports(drain.get_ports_list(), prefix="drain_") + multiplier.add_ports(source.get_ports_list(), prefix="source_") + multiplier.add_ports(gate_ref.get_ports_list(prefix="gate_")) + + ########################################################################################################################################################### + # Added the option to place the gate above or below the component along with its connection ports as long as routing = False. + if gate_down: + for finger in range(fingers): + gate_S_port = multiplier.ports[f"row0_col{finger}_gate_S"] + metal_seperation = pdk.util_max_metal_seperation() + psuedo_Ngateroute = movey( + gate_S_port.copy(), 0 - metal_seperation - gate_route_extension + ) + psuedo_Ngateroute.y = pdk.snap_to_2xgrid(psuedo_Ngateroute.y) + multiplier << straight_route(pdk, gate_S_port, psuedo_Ngateroute) + gate_width = ( + gate_S_port.center[0] + - multiplier.ports["row0_col0_gate_S"].center[0] + + gate_S_port.width + ) + gate = rename_ports_by_list( + via_array( + pdk, + "poly", + gate_route_topmet, + size=(gate_width, None), + num_vias=(None, gate_rmult), + no_exception=True, + fullbottom=True, + ), + [("top_met_", "gate_")], + ) + gate_ref = align_comp_to_port( + gate.copy(), + psuedo_Ngateroute, + alignment=(None, "b"), + layer=pdk.get_glayer("poly"), + ) + multiplier.add(gate_ref) + multiplier.add_ports(gate_ref.get_ports_list(prefix="gate_")) + elif gate_up: + for finger in range(fingers): + gate_N_port = multiplier.ports[f"row0_col{finger}_gate_N"] + metal_seperation = pdk.util_max_metal_seperation() + psuedo_Ngateroute = movey( + gate_N_port.copy(), 0 + metal_seperation + gate_route_extension + ) + psuedo_Ngateroute.y = pdk.snap_to_2xgrid(psuedo_Ngateroute.y) + multiplier << straight_route(pdk, gate_N_port, psuedo_Ngateroute) + gate_width = ( + gate_N_port.center[0] + - multiplier.ports["row0_col0_gate_N"].center[0] + + gate_N_port.width + ) + gate = rename_ports_by_list( + via_array( + pdk, + "poly", + gate_route_topmet, + size=(gate_width, None), + num_vias=(None, gate_rmult), + no_exception=True, + fullbottom=True, + ), + [("top_met_", "gate_")], + ) + gate_ref = align_comp_to_port( + gate.copy(), + psuedo_Ngateroute, + alignment=(None, "t"), + layer=pdk.get_glayer("poly"), + ) + multiplier.add(gate_ref) + multiplier.add_ports(gate_ref.get_ports_list(prefix="gate_")) + ########################################################################################################################################################### + + # create dummy regions + if isinstance(dummy, bool): + dummyl = dummyr = dummy + else: + dummyl, dummyr = dummy + if dummyl or dummyr: + dummy = __gen_fingers_macro( + pdk, + rmult=interfinger_rmult, + fingers=1, + length=length, + width=width, + poly_height=poly_height, + sdlayer=sdlayer, + inter_finger_topmet="met1", + ) + dummyvia = dummy << via_stack(pdk, "poly", "met1", fullbottom=True) + align_comp_to_port( + dummyvia, dummy.ports["row0_col0_gate_S"], layer=pdk.get_glayer("poly") + ) + dummy << L_route( + pdk, dummyvia.ports["top_met_W"], dummy.ports["leftsd_top_met_S"] + ) + dummy << L_route( + pdk, dummyvia.ports["top_met_E"], dummy.ports["row0_col0_rightsd_top_met_S"] + ) + dummy.add_ports(dummyvia.get_ports_list(), prefix="gsdcon_") + dummy_space = pdk.get_grule(sdlayer)["min_separation"] + dummy.xmax + sides = list() + if dummyl: + sides.append((-1, "dummy_L_")) + if dummyr: + sides.append((1, "dummy_R_")) + for side, name in sides: + dummy_ref = multiplier << dummy + dummy_ref.movex(side * (dummy_space + multiplier.xmax)) + multiplier.add_ports(dummy_ref.get_ports_list(), prefix=name) + return component_snap_to_grid(rename_ports_by_orientation(multiplier)) + + +def layer_pin_and_label(pdk:MappedPDK, metal: str, label_or_pin: str): + if not "met" in metal: + raise ValueError("layer must be a metal") + if label_or_pin not in ["label", "pin"]: + raise ValueError("label_or_pin must be 'label' or 'pin'") + + if pdk is sky130: + diccionario_label = { + "met1": (67, 5), + "met2": (68, 5), + "met3": (69, 5), + "met4": (70, 5), + "met5": (71, 5), + } + diccionario_pin = { + "met1": (67, 16), + "met2": (68, 16), + "met3": (69, 16), + "met4": (70, 16), + "met5": (71, 16), + } + + elif pdk is gf180: + diccionario_label = { + "met1": (34, 10), + "met2": (36, 10), + "met3": (42, 10), + "met4": (46, 10), + "met5": (81, 10), + } + diccionario_pin = { + "met1": (67, 16), + "met2": (68, 16), + "met3": (69, 16), + "met4": (70, 16), + "met5": (71, 16), + } + if label_or_pin == "label": + layer = diccionario_label[metal] + else: + layer = diccionario_pin[metal] + return layer + + +def pin_label_creation(pdk:MappedPDK, pin, label, met, componente, signal: bool = False): + # Obtengo el ancho del port en x e y + x_size = componente.ports[pin + "_N"].width + y_size = componente.ports[pin + "_W"].width + label_met = layer_pin_and_label(pdk, met, "label") + pin_met = layer_pin_and_label(pdk, met, "pin") + # Obtengo la posicion central del port + pos = [ + componente.ports[pin + "_N"].center[0], + componente.ports[pin + "_E"].center[1], + ] + # Calculo el centro del rectangulo con la layer del pian a agregar + center = [pos[0] - y_size / 2, pos[1] - y_size / 2] + # Creo el rectangulo para pin + if pdk is sky130: + pin_rectangle = rectangle(size=(y_size, y_size), layer=pin_met) + # Agrego el pin y lo centro + pin_t = componente << pin_rectangle + pl = pin_t.bbox + offset = -pl[0] + pin_t.move(destination=offset) + # Lo ubico a la posicion final calculada + pin_t.movey(center[1]).movex(center[0]) + # Agrego los ports al componente + componente.add_ports(pin_t.get_ports_list(), prefix=label + "_") + # Agrego el label segun el metal + componente.add_label(label, position=(pos[0], pos[1]), layer=label_met) + if signal: + print(f"Pin {pin} and label {label} created on component with metal {met}.") + + +def filtrar_puertos( + componente_original, + componente_filtrado, + filtro, + port_name: Optional[str] = None, + signal: bool = False, +): + if port_name is None: + port_name = filtro + all_ports = componente_original.ports + buscar_w = filtro + "W" + buscar_e = filtro + "E" + buscar_n = filtro + "N" + buscar_s = filtro + "S" + if buscar_w not in all_ports: + raise ValueError(f"Port not found") + selected_ports = { + name: port + for name, port in all_ports.items() + if buscar_w in name or buscar_e in name or buscar_n in name or buscar_s in name + } # Ejemplo: solo los que tienen 'in' en su nombre + for name_original, port in selected_ports.items(): + new_name = port_name + name_original[-1] # Add prefix + componente_filtrado.add_port( + new_name, + port.center, + port.width, + port.orientation, + layer=port.layer, + port_type="electrical", + ) + if signal: + print(f"Port {port_name} filtered and added to the component.") + + +def center_component_with_ports(component: Component) -> Component: + centered = Component() + ref = centered << component + + # Calcular el desplazamiento necesario para centrar + dx, dy = -component.center[0], -component.center[1] + ref.move((dx, dy)) # Mueve la referencia al centro + + # Transformar y añadir los puertos + for port in component.get_ports_list(): + new_port = port.copy() + new_port.center = (port.center[0] + dx, port.center[1] + dy) + centered.add_port(name=port.name, port=new_port) + + return centered + + +def Boundary_layer(pdk:MappedPDK, componente=Component(), layer=(235, 4)) -> Component: + if pdk is sky130: + layer=(235, 4) + elif pdk is gf180: + layer=(63,0) + dimension = evaluate_bbox(componente) + rectangle_boundary = rectangle( + (dimension[0], dimension[1]), layer=layer, centered=True + ) + rect_ref = componente << rectangle_boundary + return rect_ref + + +def rails( + pdk, + component: Component, + width: float, + route_list: Optional[list] = None, + specific_rail: Optional[list] = None, +) -> Component: + + if specific_rail != None: + for info in specific_rail: + if len(info) > 2: + raise ValueError( + "Each component must be conformed by rail label and rail number (left to right)" + ) + size_component = evaluate_bbox(component) + rectangle_ref = rectangle( + (width, size_component[1]), layer=pdk.get_glayer("met5"), centered=True + ) + min_separation_met5 = pdk.get_grule("met5")["min_separation"] + L = size_component[0] + W = width + s_min = min_separation_met5 if W < min_separation_met5 else W / 2 + separation = W + n = 1 + while True: + s_n = (L - (2 * n + 1) * W) / (2 * n) + if s_n < s_min: + n -= 1 + break + if s_n < separation: + separation = s_n + n += 1 + n_rectangles = n * 2 + 1 + space = separation + width + carril = list() + rail_list = list() + prefix_list = list() + Available_space = dict() + if specific_rail is not None: + Available_space = {item[0]: [] for item in specific_rail} + Available_space["VSS"] = [] + Available_space["VDD"] = [] + for i in range(n_rectangles): + carril.append(component << rectangle_ref) + carril[-1].movex(pdk.snap_to_2xgrid(-size_component[0] / 2 + width / 2)) + carril[-1].movex(pdk.snap_to_2xgrid(space * i)) + prefijo = None + if specific_rail != None: + for rail_info in specific_rail: + for rail in rail_info[1]: + if i + 1 == rail: + prefijo = rail_info[0] + "_" + str(i + 1) + "_" + prefijo_label = rail_info[0] + rail_list.append(rail_info[0]) + break + if prefijo is None: + if i % 2 == 0: + prefijo = "VSS_" + str(i + 1) + "_" + prefijo_label = 'VSS' + rail_list.append("VSS") + else: + prefijo = "VDD_" + str(i + 1) + "_" + prefijo_label = 'VDD' + rail_list.append("VDD") + prefix_list.append(prefijo) + component.add_ports(carril[-1].ports, prefix=prefijo) + component = rename_ports_by_orientation(component) + pin_label_creation(pdk, prefijo[0:-1], prefijo_label, 'met5', component) + + ports = [ + name + for name in component.ports + if "Ref1_B_drain_T" in name or "Ref1_B_source_T" in name + ] + #print(ports) + # Available spaces + for i in range(len(rail_list)): + Available_space[rail_list[i]].append( + [ + component.ports[prefix_list[i] + "W"].center[0], + component.ports[prefix_list[i] + "E"].center[0], + ] + ) + + # Via conection + via_ref = via_stack(pdk, "met4", "met5") + min_separation_via5 = pdk.get_grule("via4")["min_separation"] + separation = evaluate_bbox(via_ref)[0] + min_separation_via5 + for route in route_list: + if (len(route)) != 2: + raise ValueError( + "Each route must be conformed by a port name and a rail name" + ) + if route[1] not in Available_space: + raise ValueError("The rail name must be in the specific rail list") + port_E = route[0] + "E" + port_W = route[0] + "W" + # ports = [name for name in component.ports if 'Ref1_A_drain_T' in name] + # print(ports) + range_ports_available = [ + component.ports[port_W].center[0], + component.ports[port_E].center[0], + ] + space_available = abs(range_ports_available[1] - range_ports_available[0]) + if space_available < separation: + raise ValueError("There is not enough space to add the via") + n_vias = int(space_available // separation) + vias = list() + for i in range(n_vias): + movement_x = range_ports_available[0] + separation / 2 + separation * i + movement_y = component.ports[port_W].center[1] + for j in range(len(Available_space[route[1]])): + if ( + Available_space[route[1]][j][0] + evaluate_bbox(via_ref)[0] / 2 + < movement_x + < Available_space[route[1]][j][1] - evaluate_bbox(via_ref)[0] / 2 + ): + vias.append(component << via_ref) + vias[-1].movex(movement_x).movey(movement_y) + # component.add_ports(vias[-1].ports, prefix=route[0]+'_via_') + break diff --git a/blocks/composite/folded_cascode/glayout/primitives.py b/blocks/composite/folded_cascode/glayout/primitives.py new file mode 100644 index 00000000..d44dadad --- /dev/null +++ b/blocks/composite/folded_cascode/glayout/primitives.py @@ -0,0 +1,719 @@ +# Numerical functions +from decimal import Decimal +from typing import Literal, Optional, Union + +# PDK functions + +from glayout import MappedPDK, sky130, gf180 + + +from gdsfactory.component import Component, copy + +# Import custom functions (Matrix generator) +from custom_functions import macro_two_transistor_placement_Onchip +from custom_functions import pin_label_creation +from custom_functions import filtrar_puertos +from custom_functions import center_component_with_ports + +# Glayout tools + +from glayout.util.comp_utils import ( + align_comp_to_port, + evaluate_bbox, + movex, + movey, + prec_ref_center, + prec_array, +) + +from glayout.util.port_utils import ( + add_ports_perimeter, + get_orientation, + print_ports, + rename_ports_by_list, + rename_ports_by_orientation, + set_port_orientation, +) + +from glayout.util.snap_to_grid import component_snap_to_grid + +# Routing functions +from glayout import via_stack +from glayout.routing import c_route, L_route, straight_route + +# Porting functions +from gdsfactory.functions import transformed + + +#### 1ST LEVEL PRIMITIVES #### + +### Mirror primitive ### + +def mirror(pdk: MappedPDK, devices_info, matrix, with_pin: int = 0) -> Component: + mirror = Component() + """" + pdk = pdk to use + devices_info = the devices to place, usually formed as an array with all the information + matrix = A full matrix with the placement organization + with_pin = Makes the primitive have pins which don't have any electrical purpose + + Mirror primitive, can be used in its NMOS version or PMOS + """ + # Matrix placement + + config = macro_two_transistor_placement_Onchip(pdk=pdk, deviceA_and_B=devices_info['type'], with_substrate_tap=devices_info['with_substrate_tap'], + with_tie=devices_info['with_tie'], width1=devices_info['width'], length1=devices_info['length'], + fingers1=devices_info['fingers'], matriz=matrix, with_dummy=devices_info['with_dummy'], + width_route_mult=devices_info['width_route_mult'], with_lvt_layer=devices_info['lvt']) + + matrix = mirror << config + mirror.add_ports(matrix.get_ports_list()) + + # Evaluate the dimensions + ################################ + size_component = evaluate_bbox(matrix) + + # Routing + ##################### + + # Gate to Gate (A -> B) + route_Gate = mirror << straight_route(pdk, matrix.ports['A_gate_E'], matrix.ports['B_gate_W']) + + # Source to Source (A -> B) + route_Src = mirror << L_route(pdk, matrix.ports['A_source_N'], matrix.ports['B_source_E']) + + # Gate to Drain (A -> A (B)) + route_gate_drain_A = mirror << L_route(pdk, matrix.ports['A_gate_S'], matrix.ports['A_drain_W']) + + # Bulk routing (Neglecting Body Effect) + route_bulk_1 = mirror << straight_route(pdk, matrix.ports['A_source_N'], matrix.ports['bulk_down_S'], glayer1='met3', glayer2='met3') + route_bulk_2 = mirror << straight_route(pdk, matrix.ports['B_source_N'], matrix.ports['bulk_down_S'], glayer1='met3', glayer2='met3') + + ## External o Internal device + + if with_pin == 1: + # Pin creation + pin_label_creation('A_drain', 'V_REF', 'met3', mirror) + pin_label_creation('B_drain', 'V_OUT', 'met3', mirror) + pin_label_creation('B_source', 'VS', 'met3', mirror) + pin_label_creation('A_gate', 'VB', 'met3', mirror) + + + + component = Component() + component << mirror + + filtrar_puertos(mirror, component, 'A_drain_', 'V_REF_') + filtrar_puertos(mirror, component, 'B_drain_', 'V_OUT_') + filtrar_puertos(mirror, component, 'B_source_', 'VS_') + filtrar_puertos(mirror, component, 'A_gate_', 'VB_') + + return component + +### Single transistor primitive ### + +def transistor(pdk, devices_info, matrix, with_pin: int = 0, with_b_effect: int = 0) -> Component: + transistor = Component() + """" + pdk = pdk to use + devices_info = The devices to place, usually formed as an array with all the information + matrix = A full matrix with the placement organization + with_pin = Makes the primitive have pins which don't have any electrical purpose + with_b_effect = Allows to have or not to have a bulk port + + Transistor primitive, can be used in its NMOS version or PMOS, it already neglects the body effect + """ + #Matrix placement + + config = macro_two_transistor_placement_Onchip(pdk=pdk, deviceA_and_B=devices_info['type'], with_substrate_tap=devices_info['with_substrate_tap'], + with_tie=devices_info['with_tie'], width1=devices_info['width'], length1=devices_info['length'], + fingers1=devices_info['fingers'], matriz=matrix, with_dummy=devices_info['with_dummy'], + width_route_mult=devices_info['width_route_mult'], with_lvt_layer=devices_info['lvt']) + + matrix = transistor << config + transistor.add_ports(matrix.get_ports_list()) + + # Evaluate the dimensions + ################################ + size_component = evaluate_bbox(matrix) + + # Routing + ##################### + + if with_b_effect == 0: + + # Bulk routing (Neglecting Body Effect) + via_ref = via_stack(pdk, 'met2', 'met3') + + via_bulk = transistor << via_ref + via_bulk.movex(matrix.ports['A_source_N'].center[0]).movey(matrix.ports['bulk_down_E'].center[1]) + + route_bulk_1 = transistor << straight_route(pdk, matrix.ports['A_source_S'], via_bulk.ports['top_met_N']) + + ## External o Internal device + + if with_pin == 1: + + #Pin creation + pin_label_creation('A_drain', 'VD', 'met3', transistor) + pin_label_creation('A_gate', 'VG', 'met3', transistor) + pin_label_creation('A_source', 'VS', 'met3', transistor) + + + + component = Component() + component << transistor + + filtrar_puertos(transistor, component, 'A_drain_', 'VD_') + filtrar_puertos(transistor, component, 'A_gate_', 'VG_') + filtrar_puertos(transistor, component, 'A_source_', 'VS_') + filtrar_puertos(transistor, component, 'bulk_down_', 'VBC_D_') + filtrar_puertos(transistor, component, 'bulk_up_', 'VBC_U_') + + if with_b_effect == 1: + if with_pin == 1: + + ## External o Internal device + + #Pin creation + pin_label_creation('A_drain', 'VD', 'met3', transistor) + pin_label_creation('A_gate', 'VG', 'met3', transistor) + pin_label_creation('A_source', 'VS', 'met3', transistor) + pin_label_creation('bulk_down', 'VB', 'met3', transistor) + + + + component = Component() + component << transistor + + filtrar_puertos(transistor, component, 'A_drain_', 'VD_') + filtrar_puertos(transistor, component, 'A_gate_', 'VG_') + filtrar_puertos(transistor, component, 'A_source_', 'VS_') + filtrar_puertos(transistor, component, 'bulk_down_', 'VBC_D_') + filtrar_puertos(transistor, component, 'bulk_up_', 'VBC_U_') + + return component + +### Single transistor diode primitive ### + +def diode(pdk, devices_info, matrix, with_pin: int = 0) -> Component: + diode = Component() + """" + pdk = pdk to use + devices_info = The devices to place, usually formed as an array with all the information + matrix = A full matrix with the placement organization + with_pin = Makes the primitive have pins which don't have any electrical purpose + + Diode primitive, can be used in its NMOS version or PMOS + """ + #Matrix placement + + config = macro_two_transistor_placement_Onchip(pdk=pdk, deviceA_and_B=devices_info['type'], with_substrate_tap=devices_info['with_substrate_tap'], + with_tie=devices_info['with_tie'], width1=devices_info['width'], length1=devices_info['length'], + fingers1=devices_info['fingers'], matriz=matrix, with_dummy=devices_info['with_dummy'], + width_route_mult=devices_info['width_route_mult'], with_lvt_layer=devices_info['lvt']) + matrix = diode << config + diode.add_ports(matrix.get_ports_list()) + + # Evaluate the dimensions + ################################ + size_component = evaluate_bbox(matrix) + + # Routing + ##################### + + # Gate to Drain (A -> A) + route_gate_drain_A = diode << L_route(pdk, matrix.ports['A_gate_S'], matrix.ports['A_drain_W']) + + # Bulk routing (Neglecting Body Effect) + route_bulk_1 = diode << straight_route(pdk, matrix.ports['A_source_N'], matrix.ports['bulk_down_S'], glayer1='met3', glayer2='met3') + + if with_pin == 1: + #Pin creation + pin_label_creation('A_drain', 'VD', 'met3', diode) + pin_label_creation('A_source', 'VS', 'met3', diode) + + + component = Component() + component << diode + + filtrar_puertos(diode, component, 'A_drain_', 'VD_') + filtrar_puertos(diode, component, 'A_source_', 'VS_') + + return component + +### Current source primitive ### + +def current_source(pdk,devices_info,matrix, with_pin: int = 0, with_b_effect: int = 0) -> Component: + """" + pdk = pdk to use + devices_info = The devices to place, usually formed as an array with all the information + matrix = A full matrix with the placement organization + with_pin = Makes the primitive have pins which don't have any electrical purpose + with_b_effect = Allows to have or not to have a bulk port + + Current source primitive, can be used in its NMOS version or PMOS + """ + current_source = Component() + + #Matrix placement + config = macro_two_transistor_placement_Onchip(pdk=pdk, deviceA_and_B=devices_info['type'], with_substrate_tap=devices_info['with_substrate_tap'], + with_tie=devices_info['with_tie'], width1=devices_info['width'], length1=devices_info['length'], + fingers1=devices_info['fingers'], matriz=matrix, with_dummy=devices_info['with_dummy'], + width_route_mult=devices_info['width_route_mult'], with_lvt_layer=devices_info['lvt']) + matrix = current_source << config + current_source.add_ports(matrix.get_ports_list()) + + # Evaluate the dimensions + ################################ + size_component = evaluate_bbox(matrix) + + # Routing + ##################### + + #Gate routing (Gate (A) -> Gate (B)) + route_Gate = current_source << straight_route(pdk, matrix.ports['A_gate_E'], matrix.ports['B_gate_W']) + + if with_b_effect == 0: + + # Bulk routing (Neglecting Body Effect) + via_ref = via_stack(pdk, 'met2', 'met3') + + via_A_bulk = current_source << via_ref + via_A_bulk.movex(matrix.ports['A_source_N'].center[0]).movey(matrix.ports['bulk_down_E'].center[1]) + + via_B_bulk = current_source << via_ref + via_B_bulk.movex(matrix.ports['B_source_N'].center[0]).movey(matrix.ports['bulk_down_E'].center[1]) + + Route_bulk_1 = current_source << straight_route(pdk, matrix.ports['A_source_N'], via_A_bulk.ports['top_met_N']) + Route_bulk_2 = current_source << straight_route(pdk, matrix.ports['B_source_N'], via_B_bulk.ports['top_met_N']) + + ## External o Internal device + + if with_pin == 1: + #Pin creation + pin_label_creation('A_gate', 'VBIAS', 'met3', current_source) + pin_label_creation('B_gate', 'VBIAS2', 'met3', current_source) + pin_label_creation('A_source', 'VS1', 'met3', current_source) + pin_label_creation('B_source', 'VS2', 'met3', current_source) + pin_label_creation('A_drain', 'VD1', 'met3', current_source) + pin_label_creation('B_drain', 'VD2', 'met3', current_source) + pin_label_creation('bulk_up', 'VBC_U', 'met3',current_source) + pin_label_creation('bulk_down', 'VBC_D', 'met3',current_source) + + + component = Component() + component << current_source + + filtrar_puertos(current_source, component, 'A_gate_', 'VBIAS_') + filtrar_puertos(current_source, component, 'B_gate_', 'VBIAS2_') + filtrar_puertos(current_source, component, 'A_source_', 'VS1_') + filtrar_puertos(current_source, component, 'B_source_', 'VS2_') + filtrar_puertos(current_source, component, 'A_drain_', 'VD1_') + filtrar_puertos(current_source, component, 'B_drain_', 'VD2_') + filtrar_puertos(current_source, component, 'bulk_up_', 'VBC_U_') + filtrar_puertos(current_source, component, 'bulk_down_', 'VBC_D_') + + if with_b_effect == 1: + + ## External o Internal device + + if with_pin == 1: + #Pin creation + pin_label_creation('A_gate', 'VBIAS', 'met3', current_source) + pin_label_creation('B_gate', 'VBIAS2', 'met3', current_source) + pin_label_creation('A_source', 'VS1', 'met3', current_source) + pin_label_creation('B_source', 'VS2', 'met3', current_source) + pin_label_creation('A_drain', 'VD1', 'met3', current_source) + pin_label_creation('B_drain', 'VD2', 'met3', current_source) + pin_label_creation('bulk_down', 'VB', 'met3', current_source) + + + component = Component() + component << current_source + + filtrar_puertos(current_source, component, 'A_gate_', 'VBIAS_') + filtrar_puertos(current_source, component, 'B_gate_', 'VBIAS2_') + filtrar_puertos(current_source, component, 'A_source_', 'VS1_') + filtrar_puertos(current_source, component, 'B_source_', 'VS2_') + filtrar_puertos(current_source, component, 'A_drain_', 'VD1_') + filtrar_puertos(current_source, component, 'B_drain_', 'VD2_') + filtrar_puertos(current_source, component, 'bulk_down_', 'VBC_D_') + filtrar_puertos(current_source, component, 'bulk_up_', 'VBC_U_') + + return component + +### Differential pair ### + +def differential_pair(pdk,devices_info,matrix, with_pin: int = 0, with_b_effect: int = 0) -> Component: + """" + pdk = pdk to use + devices_info = The devices to place, usually formed as an array with all the information + matrix = A full matrix with the placement organization + with_pin = Makes the primitive have pins which don't have any electrical purpose + with_b_effect = Allows to have or not to have a bulk port + + Differential pair primitive, can be used in its NMOS version or PMOS + """ + differential_pair = Component() + + #Matrix placement + config = macro_two_transistor_placement_Onchip(pdk=pdk, deviceA_and_B=devices_info['type'], with_substrate_tap=devices_info['with_substrate_tap'], + with_tie=devices_info['with_tie'], width1=devices_info['width'], length1=devices_info['length'], + fingers1=devices_info['fingers'], matriz=matrix, with_dummy=devices_info['with_dummy'], + width_route_mult=devices_info['width_route_mult'], with_lvt_layer=devices_info['lvt']) + matrix = differential_pair << config + differential_pair.add_ports(matrix.get_ports_list()) + + # Evaluate the dimensions + ################################ + size_component = evaluate_bbox(matrix) + + # Routing + ##################### + + #Routing from Source(A -> B) + route_source_A_source_B = differential_pair << L_route(pdk, matrix.ports['A_source_N'], matrix.ports['B_source_E']) + + if with_b_effect == 0: + # Bulk routing (Neglecting Body Effect) + via_ref = via_stack(pdk, 'met2', 'met3') + + via_A_bulk = differential_pair << via_ref + via_A_bulk.movex(matrix.ports['A_source_N'].center[0]).movey(matrix.ports['bulk_down_E'].center[1]) + + via_B_bulk = differential_pair << via_ref + via_B_bulk.movex(matrix.ports['B_source_N'].center[0]).movey(matrix.ports['bulk_down_E'].center[1]) + + ruta_bulk_1 = differential_pair << straight_route(pdk, matrix.ports['A_source_S'], via_A_bulk.ports['top_met_N']) + ruta_bulk_2 = differential_pair << straight_route(pdk, matrix.ports['B_source_S'], via_B_bulk.ports['top_met_N']) + + ## External o Internal device + + if with_pin == 1: + #Pin creation + pin_label_creation('A_gate', 'VGP', 'met3', differential_pair) + pin_label_creation('B_gate', 'VGN', 'met3', differential_pair) + pin_label_creation('A_source', 'VS', 'met3', differential_pair) + pin_label_creation('A_drain', 'VD1', 'met3', differential_pair) + pin_label_creation('B_drain', 'VD2', 'met3', differential_pair) + + + + component = Component() + component << differential_pair + filtrar_puertos(differential_pair, component, 'A_gate_', 'VGP_') + filtrar_puertos(differential_pair, component, 'B_gate_', 'VGN_') + filtrar_puertos(differential_pair, component, 'B_source_', 'VS_') + filtrar_puertos(differential_pair, component, 'A_drain_', 'VD1_') + filtrar_puertos(differential_pair, component, 'B_drain_', 'VD2_') + filtrar_puertos(differential_pair, component, 'bulk_down_', 'VBC_D_') + filtrar_puertos(differential_pair, component, 'bulk_up_', 'VBC_U_') + + if with_b_effect == 1: + + ## External o Internal device + + if with_pin == 1: + #Pin creation + pin_label_creation('A_gate', 'VGP', 'met3', differential_pair) + pin_label_creation('B_gate', 'VGN', 'met3', differential_pair) + pin_label_creation('A_source', 'VS', 'met3', differential_pair) + pin_label_creation('A_drain', 'VD1', 'met3', differential_pair) + pin_label_creation('B_drain', 'VD2', 'met3', differential_pair) + pin_label_creation('bulk_down', 'VB', 'met3', differential_pair) + + + + component = Component() + component << differential_pair + filtrar_puertos(differential_pair, component, 'A_gate_', 'VGP_') + filtrar_puertos(differential_pair, component, 'B_gate_', 'VGN_') + filtrar_puertos(differential_pair, component, 'B_source_', 'VS_') + filtrar_puertos(differential_pair, component, 'A_drain_', 'VD1_') + filtrar_puertos(differential_pair, component, 'B_drain_', 'VD2_') + filtrar_puertos(differential_pair, component, 'bulk_down_', 'VBC_D_') + filtrar_puertos(differential_pair, component, 'bulk_up_', 'VBC_U_') + + + return component + +#### 2ND LEVEL PRIMITIVES #### + +### Cascode ### + +def Cascode(pdk, devices_info, array, with_pin: int = 0) -> Component: + """" + pdk = pdk to use + devices_info = The devices to place, usually formed as an array with all the information + array = A full matrix with the placement organization + with_pin = Makes the primitive have pins which don't have any electrical purpose + + Cascode primitive, can be used in its NMOS version or PMOS + """ + Cascode = Component() + + # Use of 1st order primitive + + CS1 = current_source(pdk, devices_info[0], array[0], 0, 1) + CS2 = current_source(pdk, devices_info[1], array[1], 0, 0) + + Current_Source_1 = Cascode << CS1 + Current_Source_2 = Cascode << CS2 + + + # Placement and size of the current source + #################### + + size_CS_2 = evaluate_bbox(Current_Source_2) + size_CS_1 = evaluate_bbox(Current_Source_1) + max_size = pdk.snap_to_2xgrid(pdk.get_grule('met4')['min_separation'] + (size_CS_1[1]+size_CS_2[1])/2) + Current_Source_1.movey(sky130.get_grule('met4')['min_separation']+max_size) + + Current_Source_1.mirror(p1=(0, 0), p2=(1, 0)) + Current_Source_2.mirror(p1=(0, 0), p2=(1, 0)) + + # Centering + + ### Porting ### + + Cascode.add_ports(Current_Source_1.get_ports_list(),prefix='CS1_') + Cascode.add_ports(Current_Source_2.get_ports_list(),prefix='CS2_') + + # Routing + ################### + + ### Diode routing ### + diode_route = Cascode << c_route(pdk, Current_Source_1.ports['VD1_W'], Current_Source_2.ports['VBIAS_W'], cglayer = 'met3', cwidth = (Current_Source_2.ports['VS2_E'].width)/2) + + ### Between transistors routing ### + Route_DS1 = Cascode << straight_route(pdk, Current_Source_1.ports['VS1_N'], Current_Source_2.ports['VD1_S']) + Route_DS2 = Cascode << straight_route(pdk, Current_Source_1.ports['VS2_N'], Current_Source_2.ports['VD2_S']) + + ### Source connections ### + + Route_Ref = Cascode << L_route(pdk, Current_Source_2.ports['VS1_N'], Current_Source_2.ports['VS2_E']) + + ### Bulk connection ### + + via_ref = via_stack(pdk, 'met2', 'met3') + via_cs1 = Cascode << via_ref + via_cs1.movex(Current_Source_1.ports['VBC_D_N'].center[0]).movey(Current_Source_1.ports['VBC_D_E'].center[1]) + + via_cs2 = Cascode << via_ref + via_cs2.movex(Current_Source_2.ports['VBC_U_N'].center[0]).movey(Current_Source_2.ports['VBC_U_E'].center[1]) + Route_bulk = Cascode << straight_route(pdk, via_cs1.ports['top_met_N'], via_cs2.ports['top_met_S']) + ## External o Internal device + + if with_pin == 1: + + pin_label_creation('CS2_VS1', 'VREF', 'met3', Cascode) + pin_label_creation('CS2_VD1', 'VIP', 'met3', Cascode) + pin_label_creation('CS2_VD2', 'VIN', 'met3', Cascode) + pin_label_creation('CS1_VBIAS', 'VB1', 'met3', Cascode) + pin_label_creation('CS1_VD1', 'VD1', 'met3', Cascode) + pin_label_creation('CS1_VD2', 'VOUT', 'met3', Cascode) + + component = Component() + component << Cascode + + filtrar_puertos(Cascode, component, 'CS2_VS2_', 'VREF_') + filtrar_puertos(Cascode, component, 'CS2_VD1_', 'VIP_') + filtrar_puertos(Cascode, component, 'CS2_VD2_', 'VIN_') + filtrar_puertos(Cascode, component, 'CS1_VBIAS2_', 'VB1_') + filtrar_puertos(Cascode, component, 'CS2_VBIAS2_', 'VB2_') + filtrar_puertos(Cascode, component, 'CS1_VD1_', 'VD1_') + filtrar_puertos(Cascode, component, 'CS1_VD2_', 'VOUT_') + + component_centered = center_component_with_ports(component) + + return component_centered + +### Bi current source ### + +def Bi_current_source(pdk, devices_info, array, with_pin: int = 0) -> Component: + """" + pdk = pdk to use + devices_info = The devices to place, usually formed as an array with all the information + array = A full matrix with the placement organization + with_pin = Makes the primitive have pins which don't have any electrical purpose + + Bi_current_source primitive, can be used in its NMOS version or PMOS + """ + Bi_current_source = Component() + + # Use of 1st order primitive + + CS1 = current_source(pdk, devices_info[0], array[0], 0, 0) + CS2 = current_source(pdk, devices_info[1], array[1], 0, 1) + + Current_Source_1 = Bi_current_source << CS1 + Current_Source_2 = Bi_current_source << CS2 + + + # Placement and size of the current source + #################### + + size_CS_2 = evaluate_bbox(Current_Source_2) + size_CS_1 = evaluate_bbox(Current_Source_1) + max_size = (size_CS_1[1]+size_CS_2[1])/2 + + Current_Source_2.movey(sky130.get_grule('met4')['min_separation']+max_size) + + ### Porting ### + + Bi_current_source.add_ports(Current_Source_1.get_ports_list(),prefix='CS1_') + Bi_current_source.add_ports(Current_Source_2.get_ports_list(),prefix='CS2_') + + # Routing + ################### + + ### Between transistors routing ### + Route_DS1 = Bi_current_source << straight_route(pdk, Current_Source_1.ports['VD1_N'], Current_Source_2.ports['VS1_S']) + Route_DS2 = Bi_current_source << straight_route(pdk, Current_Source_1.ports['VD2_N'], Current_Source_2.ports['VS2_S']) + + ### Source connections ### + + Route_Ref = Bi_current_source << L_route(pdk, Current_Source_1.ports['VS1_N'], Current_Source_1.ports['VS2_E']) + + ### Bulk connection ### + via_ref = via_stack(pdk, 'met2', 'met3') + via_cs1 = Bi_current_source << via_ref + via_cs1.movex(Current_Source_1.ports['VBC_U_N'].center[0]).movey(Current_Source_1.ports['VBC_U_E'].center[1]) + + via_cs2 = Bi_current_source << via_ref + via_cs2.movex(Current_Source_2.ports['VBC_D_N'].center[0]).movey(Current_Source_2.ports['VBC_D_E'].center[1]) + Route_bulk = Bi_current_source << straight_route(pdk, via_cs1.ports['top_met_N'], via_cs2.ports['top_met_S']) + + #Route_bulk = Bi_current_source << L_route(pdk, Current_Source_1.ports['VS2_E'], Current_Source_2.ports['VB_S'], + # vglayer = 'met3', hwidth = (Current_Source_1.ports['VS2_N'].width)/2) + ## External o Internal device + + if with_pin == 1: + + pin_label_creation('CS1_VD2', 'VOUT', 'met3', Bi_current_source) + pin_label_creation('CS1_VD1', 'VD1', 'met3', Bi_current_source) + pin_label_creation('CS2_VD2', 'VCOMM', 'met3', Bi_current_source) + pin_label_creation('CS1_VBIAS', 'VB2', 'met3', Bi_current_source) + pin_label_creation('CS2_VBIAS2', 'VB3', 'met3', Bi_current_source) + pin_label_creation('CS2_VS2', 'VREF', 'met3', Bi_current_source) + + component = Component() + component << Bi_current_source + + filtrar_puertos(Bi_current_source, component, 'CS2_VD2_', 'VOUT_') + filtrar_puertos(Bi_current_source, component, 'CS2_VD1_', 'VD1_') + filtrar_puertos(Bi_current_source, component, 'CS1_VBIAS_', 'VB2_') + filtrar_puertos(Bi_current_source, component, 'CS1_VBIAS2_', 'VB2R_') + filtrar_puertos(Bi_current_source, component, 'CS2_VBIAS2_', 'VB3_') + filtrar_puertos(Bi_current_source, component, 'CS1_VS2_', 'VREF_') + filtrar_puertos(Bi_current_source, component, 'CS1_VD2_', 'VCOMM_') + + + component_centered = center_component_with_ports(component) + + return component_centered + +### Pair bias ### + +def Pair_bias(pdk, devices_info, array, with_pin: int = 0) -> Component: + """" + pdk = pdk to use + devices_info = The devices to place, usually formed as an array with all the information + array = A full matrix with the placement organization + with_pin = Makes the primitive have pins which don't have any electrical purpose + + Pair_bias primitive, can be used in its NMOS version or PMOS + """ + Pair_bias = Component() + + # Use of 1st order primitive + + P1 = differential_pair(pdk, devices_info[0], array[0], 0, 1) + T1 = transistor(pdk, devices_info[1], array[1], 0, 0) + + Pair = Pair_bias << P1 + Tail = Pair_bias << T1 + + # Placement and size of pair and tail + #################### + + size_P1 = evaluate_bbox(Pair) + size_T1 = evaluate_bbox(Tail) + max_size = (size_P1[1] + size_T1[1])/2 + + Pair.movey(sky130.get_grule('met4')['min_separation']+max_size) + + ### Porting ### + + Pair_bias.add_ports(Pair.get_ports_list(),prefix='P1_') + Pair_bias.add_ports(Tail.get_ports_list(),prefix='T1_') + + # Routing + ################### + + ### Source to drain + + Route_SD = Pair_bias << L_route(pdk, Pair.ports['VS_S'], Tail.ports['VD_E']) + + if with_pin == 1: + + pin_label_creation('P1_VGP', 'VGP', 'met3', Pair_bias) + pin_label_creation('P1_VGN', 'VGN', 'met3', Pair_bias) + pin_label_creation('P1_VD1', 'VDP', 'met3', Pair_bias) + pin_label_creation('P1_VD2', 'VDN', 'met3', Pair_bias) + pin_label_creation('T1_VG', 'VBIAS', 'met3', Pair_bias) + pin_label_creation('T1_VS', 'VREF', 'met3', Pair_bias) + + + + component = Component() + component << Pair_bias + + filtrar_puertos(Pair_bias, component, 'P1_VGP_', 'VGP_') + filtrar_puertos(Pair_bias, component, 'P1_VGN_', 'VGN_') + filtrar_puertos(Pair_bias, component, 'P1_VD1_', 'VDP_') + filtrar_puertos(Pair_bias, component, 'P1_VD2_', 'VDN_') + filtrar_puertos(Pair_bias, component, 'P1_VBC_D_', 'P_VBC_D_') + filtrar_puertos(Pair_bias, component, 'P1_VBC_U_', 'P_VBC_U_') + filtrar_puertos(Pair_bias, component, 'T1_VG_', 'VBIAS_') + filtrar_puertos(Pair_bias, component, 'T1_VS_', 'VREF_') + filtrar_puertos(Pair_bias, component, 'T1_VBC_D_', 'T_VBC_D_') + filtrar_puertos(Pair_bias, component, 'T1_VBC_U_', 'T_VBC_U_') + + component_centered = center_component_with_ports(component) + return component_centered + +def moscap(pdk,devices_info, matrix): + moscap = Component() + """" + description + """ + + #Matrix placement + config = macro_two_transistor_placement_Onchip(pdk=pdk, deviceA_and_B=devices_info['type'], with_substrate_tap=devices_info['with_substrate_tap'], + with_tie=devices_info['with_tie'], width1=devices_info['width'], length1=devices_info['length'], + fingers1=devices_info['fingers'], matriz=matrix, with_dummy=devices_info['with_dummy'], + width_route_mult=devices_info['width_route_mult'], with_lvt_layer=devices_info['lvt']) + + matrix = moscap << config + moscap.add_ports(matrix.get_ports_list()) + + # Routing + ##################### + + # Bulk to source connection + + # route_bulk_1 = moscap << L_route(pdk, matrix.ports['A_source_N'], matrix.ports['bulk_down_E']) + route_drain_source = moscap << straight_route(pdk, matrix.ports['A_drain_N'], matrix.ports['A_source_S']) + + component = Component() + component << moscap + + filtrar_puertos(moscap, component, 'A_drain_', 'VD_') + filtrar_puertos(moscap, component, 'A_source_', 'VS_') + filtrar_puertos(moscap, component, 'A_gate_', 'VG_') + + return component + + ## External o Internal device \ No newline at end of file