Fixing off_grid errors
diff --git a/gds/.magicrc b/gds/.magicrc deleted file mode 100644 index 67cdbf8..0000000 --- a/gds/.magicrc +++ /dev/null
@@ -1,96 +0,0 @@ -# SPDX-FileCopyrightText: 2020 Efabless Corporation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# SPDX-License-Identifier: Apache-2.0 - -puts stdout "Sourcing design .magicrc for technology sky130A ..." - -# Put grid on 0.005 pitch. This is important, as some commands don't -# rescale the grid automatically (such as lef read?). - -set scalefac [tech lambda] -if {[lindex $scalefac 1] < 2} { - scalegrid 1 2 -} - -drc off -drc euclidean on - -# Allow override of PDK path from environment variable PDKPATH -if {[catch {set PDKPATH $env(PDKPATH)}]} { - set PDKPATH "$::env(PDK_ROOT)/sky130A" -} - -# loading technology -tech load $PDKPATH/libs.tech/magic/sky130A.tech - -# load device generator -source $PDKPATH/libs.tech/magic/sky130A.tcl - -# load bind keys (optional) -# source $PDKPATH/libs.tech/magic/sky130A-BindKeys - -# set units to lambda grid -snap lambda - -# set sky130 standard power, ground, and substrate names -set VDD VPWR -set GND VGND -set SUB VSUBS - -# Allow override of type of magic library views used, "mag" or "maglef", -# from environment variable MAGTYPE - -if {[catch {set MAGTYPE $env(MAGTYPE)}]} { - set MAGTYPE maglef -} - - path search [concat "../$MAGTYPE" [path search]] - - -# add path to reference cells -if {[file isdir ${PDKPATH}/libs.ref/${MAGTYPE}]} { - addpath ${PDKPATH}/libs.ref/${MAGTYPE}/sky130_fd_pr - addpath ${PDKPATH}/libs.ref/${MAGTYPE}/sky130_fd_io - addpath ${PDKPATH}/libs.ref/${MAGTYPE}/sky130_fd_sc_hd - addpath ${PDKPATH}/libs.ref/${MAGTYPE}/sky130_fd_sc_hdll - addpath ${PDKPATH}/libs.ref/${MAGTYPE}/sky130_fd_sc_hs - addpath ${PDKPATH}/libs.ref/${MAGTYPE}/sky130_fd_sc_hvl - addpath ${PDKPATH}/libs.ref/${MAGTYPE}/sky130_fd_sc_lp - addpath ${PDKPATH}/libs.ref/${MAGTYPE}/sky130_fd_sc_ls - addpath ${PDKPATH}/libs.ref/${MAGTYPE}/sky130_fd_sc_ms - addpath ${PDKPATH}/libs.ref/${MAGTYPE}/sky130_osu_sc - addpath ${PDKPATH}/libs.ref/mag/sky130_ml_xx_hd -} else { - addpath ${PDKPATH}/libs.ref/sky130_fd_pr/${MAGTYPE} - addpath ${PDKPATH}/libs.ref/sky130_fd_io/${MAGTYPE} - addpath ${PDKPATH}/libs.ref/sky130_fd_sc_hd/${MAGTYPE} - addpath ${PDKPATH}/libs.ref/sky130_fd_sc_hdll/${MAGTYPE} - addpath ${PDKPATH}/libs.ref/sky130_fd_sc_hs/${MAGTYPE} - addpath ${PDKPATH}/libs.ref/sky130_fd_sc_hvl/${MAGTYPE} - addpath ${PDKPATH}/libs.ref/sky130_fd_sc_lp/${MAGTYPE} - addpath ${PDKPATH}/libs.ref/sky130_fd_sc_ls/${MAGTYPE} - addpath ${PDKPATH}/libs.ref/sky130_fd_sc_ms/${MAGTYPE} - addpath ${PDKPATH}/libs.ref/sky130_osu_sc/${MAGTYPE} - addpath ${PDKPATH}/libs.ref/sky130_ml_xx_hd/mag -} - -addpath hexdigits - -# add path to GDS cells - -# add path to IP from catalog. This procedure defined in the PDK script. -catch {magic::query_mylib_ip} -# add path to local IP from user design space. Defined in the PDK script. -catch {magic::query_my_projects}
diff --git a/gds/run_magic_drc.tcl b/gds/run_magic_drc.tcl deleted file mode 100644 index 0c06968..0000000 --- a/gds/run_magic_drc.tcl +++ /dev/null
@@ -1,32 +0,0 @@ -# run_magic_drc.tcl --- -# batch script for running DRC - -crashbackups stop -drc euclidean on -drc style drc(full) -drc on -snap internal -gds flatglob *__example_* -gds flatten true -gds read /home/mariam/mabrains/caravel_user_project_analog_LDO_DPLL/gds/user_analog_project_wrapper -load user_analog_project_wrapper -select top cell -expand -drc catchup -set allerrors [drc listall why] -set oscale [cif scale out] -set ofile [open user_analog_project_wrapper_drc.txt w] -puts $ofile "DRC errors for cell user_analog_project_wrapper" -puts $ofile "--------------------------------------------" -foreach {whytext rectlist} $allerrors { - puts $ofile "" - puts $ofile $whytext - foreach rect $rectlist { - set llx [format "%.3f" [expr $oscale * [lindex $rect 0]]] - set lly [format "%.3f" [expr $oscale * [lindex $rect 1]]] - set urx [format "%.3f" [expr $oscale * [lindex $rect 2]]] - set ury [format "%.3f" [expr $oscale * [lindex $rect 3]]] - puts $ofile "$llx $lly $urx $ury" - } -} -close $ofile
diff --git a/gds/run_standard_drc.py b/gds/run_standard_drc.py deleted file mode 100755 index 3cb9e7a..0000000 --- a/gds/run_standard_drc.py +++ /dev/null
@@ -1,228 +0,0 @@ -#!/usr/bin/env python3 -# Copyright 2020 R. Timothy Edwards -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# SPDX-License-Identifier: Apache-2.0 -#------------------------------------------------------------------------- -# run_standard_drc.py --- A script to run magic in batch mode and apply -# full DRC checks on a layout. This inclues full DRC but excludes -# antenna and density checks, for which there are separate scripts. -# -# Usage: -# -# run_standard_drc.py <layout_name> -# -# Results: -# -# generates a file "<layout_name>_drc.txt" containing a human-readable -# list of the DRC errors. -# -#------------------------------------------------------------------------- - -import subprocess -import shutil -import glob -import sys -import os -import re - -# Work in progress - -def run_full_drc(layout_name, output_file): - is_gds = False - - # Remove any extension from layout_name - layout_root = layout_name - layout_name = os.path.splitext(layout_root)[0] - layout_ext = os.path.splitext(layout_root)[1] - - if layout_ext != '.mag': - # Assume this is GDS - # Is the layout file in the current directory, or a full - # path, or is this a project directory? - - is_gds = True - if layout_name[0] == '/': - gdspath = os.path.split(layout_name)[0] - layout_name = os.path.split(layout_name)[1] - - else: - if not os.path.isfile(layout_root): - if not os.path.isfile('gds/' + layout_root): - print('Error: Cannot find GDS file ' + layout_root) - return - else: - gdspath = os.getcwd() + '/gds' - else: - gdspath = os.getcwd() - - if os.path.isdir('mag/'): - magpath = os.getcwd() + '/mag' - else: - magpath = os.getcwd() - - else: - # File is a .mag layout - # Is the layout file in the current directory, or a full - # path, or is this a project directory? - - if layout_name[0] == '/': - magpath = os.path.split(layout_name)[0] - layout_name = os.path.split(layout_name)[1] - - else: - if not os.path.isfile(layout_name + '.mag'): - if not os.path.isfile('mag/' + layout_name + '.mag'): - print('Error: Cannot find file ' + layout_name + '.mag') - return - else: - magpath = os.getcwd() + '/mag' - else: - magpath = os.getcwd() - - if output_file == '': - output_file = layout_name + '_drc.txt' - - # Check for presence of a .magicrc file, or else check for environment - # variable PDKPATH, or PDK_PATH - - myenv = os.environ.copy() - myenv['MAGTYPE'] = 'mag' - - if os.path.isfile(magpath + '/.magicrc'): - rcfile = magpath + '/.magicrc' - elif os.path.isfile(os.getcwd() + '/.magicrc'): - rcfile = os.getcwd() + '/.magicrc' - else: - if 'PDKPATH' in myenv: - rcpathroot = myenv['PDKPATH'] + '/libs.tech/magic' - rcfile = glob.glob(rcpathroot + '/*.magicrc')[0] - elif 'PDK_PATH' in myenv: - rcpathroot = myenv['PDKPATH'] + '/libs.tech/magic' - rcfile = glob.glob(rcpathroot + '/*.magicrc')[0] - else: - print('Error: Cannot get magic rcfile for the technology!') - return - - # Generate the DRC Tcl script - - # If magpath is writeable, then continue. If not, then if the - # current working directory is writeable, use it. - if not os.access(magpath, os.W_OK): - if os.access(os.getcwd(), os.W_OK): - scriptpath = os.getcwd() - # The output .txt file won't be writeable, either. - output_file = os.path.join(scriptpath, os.path.split(output_file)[1]) - else: - print('Error: Neither the path of the layout or the current directory is writeable.') - return - else: - scriptpath = magpath - - print('Evaluating full DRC results for layout ' + layout_name) - magic_script = scriptpath + "/run_magic_drc_%s.tcl" % os.path.basename(layout_name) - with open(magic_script, 'w') as ofile: - print('# run_magic_drc.tcl ---', file=ofile) - print('# batch script for running DRC', file=ofile) - print('', file=ofile) - print('crashbackups stop', file=ofile) - print('drc euclidean on', file=ofile) - print('drc style drc(full)', file=ofile) - print('drc on', file=ofile) - print('snap internal', file=ofile) - if is_gds: - print('gds flatglob *__example_*', file=ofile) - print('gds flatten true', file=ofile) - print('gds read ' + gdspath + '/' + layout_name, file=ofile) - print('load ' + layout_name, file=ofile) - else: - print('load ' + layout_name + ' -dereference', file=ofile) - print('select top cell', file=ofile) - print('expand', file=ofile) - print('drc catchup', file=ofile) - print('set allerrors [drc listall why]', file=ofile) - print('set oscale [cif scale out]', file=ofile) - print('set ofile [open ' + output_file + ' w]', file=ofile) - print('puts $ofile "DRC errors for cell ' + layout_name + '"', file=ofile) - print('puts $ofile "--------------------------------------------"', file=ofile) - print('foreach {whytext rectlist} $allerrors {', file=ofile) - print(' puts $ofile ""', file=ofile) - print(' puts $ofile $whytext', file=ofile) - print(' foreach rect $rectlist {', file=ofile) - print(' set llx [format "%.3f" [expr $oscale * [lindex $rect 0]]]', - file=ofile) - print(' set lly [format "%.3f" [expr $oscale * [lindex $rect 1]]]', - file=ofile) - print(' set urx [format "%.3f" [expr $oscale * [lindex $rect 2]]]', - file=ofile) - print(' set ury [format "%.3f" [expr $oscale * [lindex $rect 3]]]', - file=ofile) - print(' puts $ofile "$llx $lly $urx $ury"', file=ofile) - print(' }', file=ofile) - print('}', file=ofile) - print('close $ofile', file=ofile) - - # Run the DRC Tcl script - - print('Running: magic -dnull -noconsole -rcfile ' + rcfile + ' ' + magic_script) - print('Running in directory: ' + magpath) - mproc = subprocess.run(['magic', '-dnull', '-noconsole', '-rcfile', - rcfile, magic_script], - env = myenv, cwd = magpath, - stdin = subprocess.DEVNULL, stdout = subprocess.PIPE, - stderr = subprocess.PIPE, universal_newlines = True) - if mproc.stdout: - for line in mproc.stdout.splitlines(): - print(line) - if mproc.stderr: - print('Error message output from magic:') - for line in mproc.stderr.splitlines(): - print(line) - if mproc.returncode != 0: - print('ERROR: Magic exited with status ' + str(mproc.returncode)) - - print('Done!') - -# If called as main, run all DRC tests - -if __name__ == '__main__': - - # Divide up command line into options and arguments - options = [] - arguments = [] - for item in sys.argv[1:]: - if item.find('-', 0) == 0: - options.append(item) - else: - arguments.append(item) - - # Need one argument: path to layout - # If two arguments, then 2nd argument is the output file. - - if len(arguments) > 0 and len(arguments) < 3: - layout_root = arguments[0] - - if len(arguments) == 1: - out_filename = "" - elif len(arguments) > 2: - out_filename = arguments[1] - - if len(arguments) > 0 and len(arguments) < 3: - run_full_drc(layout_root, out_filename) - else: - print("Usage: run_standard_drc.py <layout_name> [<output_file>] [options]") - print("Options:") - print(" (none)") - -
diff --git a/gds/sky130_drc.txt b/gds/sky130_drc.txt new file mode 100644 index 0000000..69b1ca8 --- /dev/null +++ b/gds/sky130_drc.txt
@@ -0,0 +1,483 @@ +<?xml version="1.0" encoding="utf-8"?> +<report-database> + <description>SKY130 DRC runset</description> + <original-file/> + <generator>drc: script='/home/eslam/.klayout/tech/sky130/drc/drc_sky130.lydrc'</generator> + <top-cell>user_analog_project_wrapper</top-cell> + <tags> + </tags> + <categories> + <category> + <name>dnwell_OFFGRID</name> + <description>x.1b : OFFGRID vertex on dnwell</description> + <categories> + </categories> + </category> + <category> + <name>dnwell_angle</name> + <description>x.3a : non 45 degree angle dnwell</description> + <categories> + </categories> + </category> + <category> + <name>nwell_OFFGRID</name> + <description>x.1b : OFFGRID vertex on nwell</description> + <categories> + </categories> + </category> + <category> + <name>nwell_angle</name> + <description>x.3a : non 45 degree angle nwell</description> + <categories> + </categories> + </category> + <category> + <name>pwbm_OFFGRID</name> + <description>x.1b : OFFGRID vertex on pwbm</description> + <categories> + </categories> + </category> + <category> + <name>pwbm_angle</name> + <description>x.3a : non 45 degree angle pwbm</description> + <categories> + </categories> + </category> + <category> + <name>pwde_OFFGRID</name> + <description>x.1b : OFFGRID vertex on pwde</description> + <categories> + </categories> + </category> + <category> + <name>pwde_angle</name> + <description>x.3a : non 45 degree angle pwde</description> + <categories> + </categories> + </category> + <category> + <name>hvtp_OFFGRID</name> + <description>x.1b : OFFGRID vertex on hvtp</description> + <categories> + </categories> + </category> + <category> + <name>hvtp_angle</name> + <description>x.3a : non 45 degree angle hvtp</description> + <categories> + </categories> + </category> + <category> + <name>hvtr_OFFGRID</name> + <description>x.1b : OFFGRID vertex on hvtr</description> + <categories> + </categories> + </category> + <category> + <name>hvtr_angle</name> + <description>x.3a : non 45 degree angle hvtr</description> + <categories> + </categories> + </category> + <category> + <name>lvtn_OFFGRID</name> + <description>x.1b : OFFGRID vertex on lvtn</description> + <categories> + </categories> + </category> + <category> + <name>lvtn_angle</name> + <description>x.3a : non 45 degree angle lvtn</description> + <categories> + </categories> + </category> + <category> + <name>ncm_OFFGRID</name> + <description>x.1b : OFFGRID vertex on ncm</description> + <categories> + </categories> + </category> + <category> + <name>ncm_angle</name> + <description>x.3a : non 45 degree angle ncm</description> + <categories> + </categories> + </category> + <category> + <name>diff_OFFGRID</name> + <description>x.1b : OFFGRID vertex on diff</description> + <categories> + </categories> + </category> + <category> + <name>tap_OFFGRID</name> + <description>x.1b : OFFGRID vertex on tap</description> + <categories> + </categories> + </category> + <category> + <name>diff_angle</name> + <description>x.2 : non 90 degree angle diff</description> + <categories> + </categories> + </category> + <category> + <name>diff_angle</name> + <description>x.2c : non 45 degree angle diff</description> + <categories> + </categories> + </category> + <category> + <name>tap_angle</name> + <description>x.2 : non 90 degree angle tap</description> + <categories> + </categories> + </category> + <category> + <name>tap_angle</name> + <description>x.2c : non 45 degree angle tap</description> + <categories> + </categories> + </category> + <category> + <name>tunm_OFFGRID</name> + <description>x.1b : OFFGRID vertex on tunm</description> + <categories> + </categories> + </category> + <category> + <name>tunm_angle</name> + <description>x.3a : non 45 degree angle tunm</description> + <categories> + </categories> + </category> + <category> + <name>poly_OFFGRID</name> + <description>x.1b : OFFGRID vertex on poly</description> + <categories> + </categories> + </category> + <category> + <name>poly_angle</name> + <description>x.2 : non 90 degree angle poly</description> + <categories> + </categories> + </category> + <category> + <name>rpm_OFFGRID</name> + <description>x.1b : OFFGRID vertex on rpm</description> + <categories> + </categories> + </category> + <category> + <name>rpm_angle</name> + <description>x.3a : non 45 degree angle rpm</description> + <categories> + </categories> + </category> + <category> + <name>npc_OFFGRID</name> + <description>x.1b : OFFGRID vertex on npc</description> + <categories> + </categories> + </category> + <category> + <name>npc_angle</name> + <description>x.3a : non 45 degree angle npc</description> + <categories> + </categories> + </category> + <category> + <name>nsdm_OFFGRID</name> + <description>x.1b : OFFGRID vertex on nsdm</description> + <categories> + </categories> + </category> + <category> + <name>nsdm_angle</name> + <description>x.3a : non 45 degree angle nsdm</description> + <categories> + </categories> + </category> + <category> + <name>psdm_OFFGRID</name> + <description>x.1b : OFFGRID vertex on psdm</description> + <categories> + </categories> + </category> + <category> + <name>psdm_angle</name> + <description>x.3a : non 45 degree angle psdm</description> + <categories> + </categories> + </category> + <category> + <name>licon_OFFGRID</name> + <description>x.1b : OFFGRID vertex on licon</description> + <categories> + </categories> + </category> + <category> + <name>licon_angle</name> + <description>x.2 : non 90 degree angle licon</description> + <categories> + </categories> + </category> + <category> + <name>li_OFFGRID</name> + <description>x.1b : OFFGRID vertex on li</description> + <categories> + </categories> + </category> + <category> + <name>li_angle</name> + <description>x.3a : non 45 degree angle li</description> + <categories> + </categories> + </category> + <category> + <name>ct_OFFGRID</name> + <description>x.1b : OFFGRID vertex on mcon</description> + <categories> + </categories> + </category> + <category> + <name>ct_angle</name> + <description>x.2 : non 90 degree angle mcon</description> + <categories> + </categories> + </category> + <category> + <name>vpp_OFFGRID</name> + <description>x.1b : OFFGRID vertex on vpp</description> + <categories> + </categories> + </category> + <category> + <name>vpp_angle</name> + <description>x.3a : non 45 degree angle vpp</description> + <categories> + </categories> + </category> + <category> + <name>m1_OFFGRID</name> + <description>x.1b : OFFGRID vertex on m1</description> + <categories> + </categories> + </category> + <category> + <name>m1_angle</name> + <description>x.3a : non 45 degree angle m1</description> + <categories> + </categories> + </category> + <category> + <name>via_OFFGRID</name> + <description>x.1b : OFFGRID vertex on via</description> + <categories> + </categories> + </category> + <category> + <name>via_angle</name> + <description>x.2 : non 90 degree angle via</description> + <categories> + </categories> + </category> + <category> + <name>m2_OFFGRID</name> + <description>x.1b : OFFGRID vertex on m2</description> + <categories> + </categories> + </category> + <category> + <name>m2_angle</name> + <description>x.3a : non 45 degree angle m2</description> + <categories> + </categories> + </category> + <category> + <name>via2_OFFGRID</name> + <description>x.1b : OFFGRID vertex on via2</description> + <categories> + </categories> + </category> + <category> + <name>via2_angle</name> + <description>x.2 : non 90 degree angle via2</description> + <categories> + </categories> + </category> + <category> + <name>m3_OFFGRID</name> + <description>x.1b : OFFGRID vertex on m3</description> + <categories> + </categories> + </category> + <category> + <name>m3_angle</name> + <description>x.3a : non 45 degree angle m3</description> + <categories> + </categories> + </category> + <category> + <name>via3_OFFGRID</name> + <description>x.1b : OFFGRID vertex on via3</description> + <categories> + </categories> + </category> + <category> + <name>via3_angle</name> + <description>x.2 : non 90 degree angle via3</description> + <categories> + </categories> + </category> + <category> + <name>nsm_OFFGRID</name> + <description>x.1b : OFFGRID vertex on nsm</description> + <categories> + </categories> + </category> + <category> + <name>nsm_angle</name> + <description>x.3a : non 45 degree angle nsm</description> + <categories> + </categories> + </category> + <category> + <name>m4_OFFGRID</name> + <description>x.1b : OFFGRID vertex on m4</description> + <categories> + </categories> + </category> + <category> + <name>m4_angle</name> + <description>x.3a : non 45 degree angle m4</description> + <categories> + </categories> + </category> + <category> + <name>via4_OFFGRID</name> + <description>x.1b : OFFGRID vertex on via4</description> + <categories> + </categories> + </category> + <category> + <name>via4_angle</name> + <description>x.2 : non 90 degree angle via4</description> + <categories> + </categories> + </category> + <category> + <name>m5_OFFGRID</name> + <description>x.1b : OFFGRID vertex on m5</description> + <categories> + </categories> + </category> + <category> + <name>m5_angle</name> + <description>x.3a : non 45 degree angle m5</description> + <categories> + </categories> + </category> + <category> + <name>pad_OFFGRID</name> + <description>x.1b : OFFGRID vertex on pad</description> + <categories> + </categories> + </category> + <category> + <name>pad_angle</name> + <description>x.3a : non 45 degree angle pad</description> + <categories> + </categories> + </category> + <category> + <name>mf_OFFGRID</name> + <description>x.1b : OFFGRID vertex on mf</description> + <categories> + </categories> + </category> + <category> + <name>mf_angle</name> + <description>x.2 : non 90 degree angle mf</description> + <categories> + </categories> + </category> + <category> + <name>hvi_OFFGRID</name> + <description>x.1b : OFFGRID vertex on hvi</description> + <categories> + </categories> + </category> + <category> + <name>hvi_angle</name> + <description>x.3a : non 45 degree angle hvi</description> + <categories> + </categories> + </category> + <category> + <name>hvntm_OFFGRID</name> + <description>x.1b : OFFGRID vertex on hvntm</description> + <categories> + </categories> + </category> + <category> + <name>hvntm_angle</name> + <description>x.3a : non 45 degree angle hvntm</description> + <categories> + </categories> + </category> + <category> + <name>vhvi_OFFGRID</name> + <description>x.1b : OFFGRID vertex on vhvi</description> + <categories> + </categories> + </category> + <category> + <name>vhvi_angle</name> + <description>x.3a : non 45 degree angle vhvi</description> + <categories> + </categories> + </category> + <category> + <name>uhvi_OFFGRID</name> + <description>x.1b : OFFGRID vertex on uhvi</description> + <categories> + </categories> + </category> + <category> + <name>uhvi_angle</name> + <description>x.3a : non 45 degree angle uhvi</description> + <categories> + </categories> + </category> + <category> + <name>pwell_rs_OFFGRID</name> + <description>x.1b : OFFGRID vertex on pwell_rs</description> + <categories> + </categories> + </category> + <category> + <name>pwell_rs_angle</name> + <description>x.3a : non 45 degree angle pwell_rs</description> + <categories> + </categories> + </category> + <category> + <name>areaid_re_OFFGRID</name> + <description>x.1b : OFFGRID vertex on areaid.re</description> + <categories> + </categories> + </category> + </categories> + <cells> + <cell> + <name>user_analog_project_wrapper</name> + <variant/> + <references> + </references> + </cell> + </cells> + <items> + </items> +</report-database>
diff --git a/gds/user_analog_project_wrapper.gds b/gds/user_analog_project_wrapper.gds index 00c6a1d..e016367 100644 --- a/gds/user_analog_project_wrapper.gds +++ b/gds/user_analog_project_wrapper.gds Binary files differ