Skip to content

nmendezst/bag3_adc_test

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

35 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Testing the BAG3 ADC generator on Ubuntu 22.04.4 LTS

1. Install conda (I used Miniconda)

wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh

2. Clone the SKY130 workspace and initialize all submodules

git clone https://github.com/ucb-art/bag3_skywater130_workspace
cd bag3_skywater130_workspace
git submodule update --init --recursive

3. Create a conda environment from the workspace

conda env create -f environment.yml

4. Download the required packages and install them on the created environment

By default should be in:

/home/${USER}/miniconda3/envs/bag_py3d7_c 

cmake 3.17

wget https://github.com/Kitware/CMake/releases/download/v3.17.0/cmake-3.17.0.tar.gz
tar -xvf cmake-3.17.0.tar.gz
cd cmake-3.17.0
./bootstrap --prefix=/home/${USER}/miniconda3/envs/bag_py3d7_c  --parallel=4
make -j4
sudo make install

magic_enum

git clone https://github.com/Neargye/magic_enum.git
cd magic_enum
cmake -H. -Bbuild -DCMAKE_BUILD_TYPE=Release -DMAGIC_ENUM_OPT_BUILD_EXAMPLES=FALSE -DMAGIC_ENUM_OPT_BUILD_TESTS=FALSE -DCMAKE_INSTALL_PREFIX=/home/${USER}/miniconda3/envs/bag_py3d7_c
cmake --build build
cd build
sudo make install

yaml-cpp

git clone https://github.com/jbeder/yaml-cpp.git
cd yaml-cpp
cmake -B_build -H. -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DCMAKE_INSTALL_PREFIX=/home/${USER}/miniconda3/envs/bag_py3d7_c
sudo cmake --build _build --target install -- -j 4

libfyaml

git clone https://github.com/pantoniou/libfyaml.git
cd libfyaml
./bootstrap.sh
./configure --prefix=/home/${USER}/miniconda3/envs/bag_py3d7_c
make -j12
sudo make install

HDF5 1.10

wget https://support.hdfgroup.org/ftp/HDF5/releases/hdf5-1.10/hdf5-1.10.6/src/hdf5-1.10.6.tar.gz
tar -xvf hdf5-1.10.6.tar.gz
cd hdf5-1.10.6
./configure --prefix=/home/${USER}/miniconda3/envs/bag_py3d7_c
make -j24
sudo make install

Boost

wget https://boostorg.jfrog.io/artifactory/main/release/1.72.0/source/boost_1_72_0.tar.gz
tar -xvf boost_1_72_0.tar.gz
cd boost_1_72_0
./bootstrap.sh --prefix=/home/${USER}/miniconda3/envs/bag_py3d7_c

In the resulting `project-config.jam file, change the using python line to:

using python : 3.7 : /home/${USER}/miniconda3/envs/bag_py3d7_c : =/home/${USER}/miniconda3/envs/bag_py3d7_c/include/python3.7m ;

If it exists, delete the line:

path-constant ICU_PATH : /usr ;

Run:

./b2 --build-dir=_build cxxflags=-fPIC -j8 -target=shared,static --with-filesystem --with-serialization --with-program_options install | tee install.log

Not sure if I did this step correctly because there wasn't a using python line originally on the .jam file. Should--with-python flag be added?

5. Activate environment

conda activate bag_py3d7_c

6. Modify .bashrc_bag and source it

vim bag3_skywater130_workspace
export BAG_TOOLS_ROOT=/home/${USER}/miniconda3/envs/bag_py3d7_c
export BAG_TEMP_DIR=/home/${USER}/BAGTMP/skywater130

source .bashrc_bag

7. Install framework

cd bag3_skywater130_workspace/BAG_framework
python3 setup.py build
python3 setup.py install

8. Building cbag and pybag

cd BAG_framework/pybag
./run_test.sh 

For some reason, the following errors are present when attempting to build cbag:

Error: ‘numeric_limits’ is not a member of ‘std’
Error: ‘optional’ in namespace ‘std’ does not name a template type

To "solve" them, edit typedefs.h:

vim bag3_skywater130_workspace/BAG_framework/pybag/cbag/include/cbag/common/typedefs.h

Add the following lines at the preamble:

#include <limits>
#include <optional>

When building pybag, a few multiple definitions error occurs:

/usr/bin/ld: name_unit.cpp.o (symbol from plugin): in function `cbag::spirit::name_unit()':
(.text+0x0): multiple definitions of `cbag::spirit::parser::check_str'; name.cpp.o (symbol from plugin):(.text+0x0): first defined here
/usr/bin/ld: name_unit.cpp.o (symbol from plugin): in function `cbag::spirit::name_unit()':
(.text+0x0): multiple definitions of `cbag::spirit::parser::check_zero'; name.cpp.o (symbol from plugin):(.text+0x0): first defined here
/usr/bin/ld: name_unit.cpp.o (symbol from plugin): in function `cbag::spirit::name_unit()':
(.text+0x0): multiple definitions of `cbag::spirit::parser::init_range'; name.cpp.o (symbol from plugin):(.text+0x0): first defined here

To "solve" them, add static on the functions definition

Modify name_unit_def.h

vim pybag/cbag/include/cbag/spirit/name_unit_def.h
auto check_str ->
auto static check_str

Modify range_def.h

vim pybag/cbag/include/cbag/spirit/range_def.h
auto init_range ->
auto static init_range
auto check_zero ->
auto static check_zero
ImportError: /home/${USER}/miniconda3/envs/bag_py3d7_c/bin/../lib/libstdc++.so.6: version `GLIBCXX_3.4.29' not found (required by /home/${USER}/asic/bag3_skywater130_workspace/BAG_framework/pybag/_build/lib/pybag/core.cpython-37m-x86_64-linux-gnu.so)

Update Libgcc

 conda install anaconda::libgcc

9. Generate an inverter as test

./gen_cell.sh data/bag3_digital/specs_blk/inv_chain/gen.yaml -raw -netlist

WARNING: Error registering BLOSC filter for HDF5.  Default to LZF
creating BAG project
*WARNING* invalid literal for int() with base 10: ''.  Operating without Virtuoso.
RuntimeError: module compiled against API version 0xe but this version of numpy is 0xd

Update numpy version of conda, with environment activated, and ./run_test.sh again

pip install numpy --upgrade
WARNING: Error registering BLOSC filter for HDF5.  Default to LZF
creating BAG project
*WARNING* invalid literal for int() with base 10: ''.  Operating without Virtuoso.
computing layout...
[2024-05-29 16:50:09.996] [STDCellWrapper] [warning] ports on private layer 0 detected, converting to primitive ports.
[2024-05-29 16:50:09.997] [STDCellWrapper] [warning] ports on private layer 0 detected, converting to primitive ports.
[2024-05-29 16:50:09.997] [STDCellWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-29 16:50:09.997] [STDCellWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
computation done.
creating layout...
Traceback (most recent call last):
  File "BAG_framework/run_scripts/gen_cell.py", line 82, in <module>
    run_main(_prj, _args)
  File "BAG_framework/run_scripts/gen_cell.py", line 68, in run_main
    gen_netlist=args.gen_netlist)
  File "/home/nmendez/asic/bag3_skywater130_workspace/BAG_framework/src/bag/core.py", line 479, in generate_cell
    square_bracket=square_bracket)
  File "/home/nmendez/asic/bag3_skywater130_workspace/BAG_framework/src/bag/layout/template.py", line 153, in batch_layout
    self.batch_output(output, info_list, **kwargs)
  File "/home/nmendez/asic/bag3_skywater130_workspace/BAG_framework/src/bag/util/cache.py", line 720, in batch_output
    lay_map = get_gds_layer_map()
  File "/home/nmendez/asic/bag3_skywater130_workspace/BAG_framework/src/bag/env.py", line 223, in get_gds_layer_map
    raise ValueError(f'{ans} is not a file.')
ValueError: /home/nmendez/asic/bag3_skywater130_workspace/skywater130/gds_setup/gds.layermap is not a file.

> /home/nmendez/asic/bag3_skywater130_workspace/BAG_framework/src/bag/env.py(223)get_gds_layer_map()
-> raise ValueError(f'{ans} is not a file.')
(Pdb) 

gds.layermap is a symbolic link, which points to:

../workspace_setup/PDK/VirtuosoOA/libs/s8phirs_10r/s8phirs_10r.layermap

There is an open source version of the layermap file (thanks to Felicia Guo) Linen.dev mirror

cd skywater130
git fetch
git pull origin open
WARNING: Error registering BLOSC filter for HDF5.  Default to LZF
creating BAG project
*WARNING* invalid literal for int() with base 10: ''.  Operating without Virtuoso.
computing layout...
[2024-05-30 13:45:50.786] [STDCellWrapper] [warning] ports on private layer 0 detected, converting to primitive ports.
[2024-05-30 13:45:50.786] [STDCellWrapper] [warning] ports on private layer 0 detected, converting to primitive ports.
[2024-05-30 13:45:50.786] [STDCellWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 13:45:50.786] [STDCellWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
computation done.
creating layout...
layout done: time taken = 0.005554666000080033
computing schematic...
computation done.
creating netlist...
netlisting done: time taken = 0.03081732300006479

Output files are in gen_outputs\inv_chain_sch, there is a .cdl netlist, a .gds layout and a .log report.

gdstk render of the .gds layout:

import pathlib
import gdstk

library = gdstk.read_gds("AA_inv_chain.gds")
top_cells = library.top_level()
top_cells[0].write_svg("AA_inv_chain.svg")

10. Testing the ADC generator

In the bag3_skywater130_workspace directory:

git clone https://github.com/ucb-art/bag3_sync_sar_adc
cd data
git clone https://github.com/ucb-art/bag3_sync_sar_adc_data_skywater130 bag3_sync_sar_adc

Modify .bashrc_pypath to add the following line:

export PYTHONPATH="${PYTHONPATH}:${BAG_WORK_DIR}/bag3_sync_sar_adc/src"

To generate a top level 8-bit SAR ADC:

./gen_cell.sh data/bag3_sync_sar_adc/specs_gen/sar_lay/specs_slice_sync_bootstrap.yaml -raw -netlist
Log
WARNING: Error registering BLOSC filter for HDF5.  Default to LZF
creating BAG project
*WARNING* invalid literal for int() with base 10: ''.  Operating without Virtuoso.
computing layout...
[2024-05-30 16:23:13.290] [GenericWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:13.291] [GenericWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:13.291] [GenericWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:13.473] [GenericWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:13.474] [GenericWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:13.476] [GenericWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:13.477] [GenericWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:13.504] [GenericWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:19.506] [GenericWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:19.506] [GenericWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:19.689] [GenericWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:19.690] [GenericWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:19.692] [GenericWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:26.305] [GenericWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:26.509] [GenericWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:26.511] [GenericWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:26.577] [GenericWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:26.577] [GenericWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:26.578] [GenericWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:26.578] [GenericWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:26.579] [GenericWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:26.644] [GenericWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:26.645] [GenericWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:26.645] [GenericWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:26.686] [GenericWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:26.686] [GenericWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:26.686] [GenericWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:26.687] [GenericWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:26.687] [GenericWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:26.716] [GenericWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:26.717] [GenericWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:26.717] [GenericWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:26.759] [GenericWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:26.760] [GenericWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:26.760] [GenericWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:26.760] [GenericWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:26.761] [GenericWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:26.787] [GenericWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:26.787] [GenericWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:26.788] [GenericWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:26.805] [GenericWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:26.805] [GenericWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:26.806] [GenericWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:26.806] [GenericWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:26.806] [GenericWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:26.818] [GenericWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:26.819] [GenericWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:26.819] [GenericWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:26.844] [GenericWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:26.844] [GenericWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:26.844] [GenericWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:26.845] [GenericWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:26.845] [GenericWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:26.857] [GenericWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:26.857] [GenericWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:26.858] [GenericWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:26.875] [GenericWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:26.876] [GenericWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:26.876] [GenericWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:26.876] [GenericWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:26.876] [GenericWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:26.889] [GenericWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:26.890] [GenericWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:26.890] [GenericWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:26.915] [GenericWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:26.915] [GenericWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:26.915] [GenericWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:26.916] [GenericWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:26.916] [GenericWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:26.934] [GenericWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:26.934] [GenericWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:26.934] [GenericWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:26.992] [GenericWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:26.993] [GenericWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:26.994] [GenericWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
TIDX LIST:  [HalfInt(31.5), HalfInt(32.5), HalfInt(33.5), HalfInt(34.5), HalfInt(35.5), HalfInt(36.5), HalfInt(37.5), HalfInt(38.5), HalfInt(39.5), HalfInt(40.5), HalfInt(41.5), HalfInt(42.5), HalfInt(43.5), HalfInt(44.5), HalfInt(45.5), HalfInt(46.5), HalfInt(47.5), HalfInt(48.5), HalfInt(49.5), HalfInt(53.5), HalfInt(54.5), HalfInt(55.5), HalfInt(56.5)]
TIDX LIST:  [HalfInt(63.5), HalfInt(64.5), HalfInt(65.5), HalfInt(66.5), HalfInt(67.5), HalfInt(68.5), HalfInt(69.5), HalfInt(70.5), HalfInt(71.5), HalfInt(72.5), HalfInt(73.5), HalfInt(74.5), HalfInt(75.5), HalfInt(76.5), HalfInt(77.5), HalfInt(78.5), HalfInt(79.5), HalfInt(80.5), HalfInt(81.5), HalfInt(85.5), HalfInt(86.5), HalfInt(87.5), HalfInt(88.5)]
TIDX LIST:  [HalfInt(95.5), HalfInt(96.5), HalfInt(97.5), HalfInt(98.5), HalfInt(99.5), HalfInt(100.5), HalfInt(101.5), HalfInt(102.5), HalfInt(103.5), HalfInt(104.5), HalfInt(105.5), HalfInt(106.5), HalfInt(107.5), HalfInt(108.5), HalfInt(109.5), HalfInt(110.5), HalfInt(111.5), HalfInt(112.5), HalfInt(113.5), HalfInt(117.5), HalfInt(118.5), HalfInt(119.5)]
[2024-05-30 16:23:28.050] [MOSBaseTapWrapper] [warning] ports on private layer 0 detected, converting to primitive ports.
[2024-05-30 16:23:28.050] [MOSBaseTapWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:28.051] [MOSBaseTapWrapper] [warning] ports on private layer 0 detected, converting to primitive ports.
[2024-05-30 16:23:28.051] [MOSBaseTapWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:28.052] [MOSBaseTapWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:28.052] [MOSBaseTapWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:28.052] [MOSBaseTapWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:28.052] [MOSBaseTapWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:28.052] [MOSBaseTapWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:28.052] [MOSBaseTapWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:28.053] [MOSBaseTapWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:28.053] [MOSBaseTapWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:28.053] [MOSBaseTapWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:28.053] [MOSBaseTapWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:28.053] [MOSBaseTapWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:28.053] [MOSBaseTapWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:28.053] [MOSBaseTapWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:28.053] [MOSBaseTapWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:28.053] [MOSBaseTapWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:28.053] [MOSBaseTapWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:28.053] [MOSBaseTapWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:28.053] [MOSBaseTapWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:28.053] [MOSBaseTapWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:28.053] [MOSBaseTapWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:28.053] [MOSBaseTapWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:28.053] [MOSBaseTapWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:28.053] [MOSBaseTapWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:28.053] [MOSBaseTapWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:28.054] [MOSBaseTapWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:28.054] [MOSBaseTapWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:28.054] [MOSBaseTapWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:28.054] [MOSBaseTapWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:28.054] [MOSBaseTapWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:28.054] [MOSBaseTapWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:28.054] [MOSBaseTapWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:28.054] [MOSBaseTapWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:28.054] [MOSBaseTapWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:28.054] [MOSBaseTapWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:28.054] [MOSBaseTapWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:28.054] [MOSBaseTapWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:28.054] [MOSBaseTapWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:28.054] [MOSBaseTapWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:28.054] [MOSBaseTapWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:28.054] [MOSBaseTapWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:28.054] [MOSBaseTapWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:28.054] [MOSBaseTapWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:28.054] [MOSBaseTapWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:28.054] [MOSBaseTapWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:28.054] [MOSBaseTapWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:28.054] [MOSBaseTapWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:28.054] [MOSBaseTapWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:28.054] [MOSBaseTapWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:28.055] [MOSBaseTapWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:28.055] [MOSBaseTapWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:28.055] [MOSBaseTapWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:28.055] [MOSBaseTapWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:28.055] [MOSBaseTapWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:28.055] [MOSBaseTapWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:28.055] [MOSBaseTapWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:28.055] [MOSBaseTapWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:28.055] [MOSBaseTapWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:28.055] [MOSBaseTapWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:28.055] [MOSBaseTapWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:28.055] [MOSBaseTapWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:28.055] [MOSBaseTapWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:28.055] [MOSBaseTapWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:28.055] [MOSBaseTapWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:28.055] [MOSBaseTapWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:28.055] [MOSBaseTapWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:28.055] [MOSBaseTapWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:28.118] [GenericWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:28.119] [GenericWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:28.330] [MOSBaseTapWrapper] [warning] ports on private layer 0 detected, converting to primitive ports.
[2024-05-30 16:23:28.331] [MOSBaseTapWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:28.331] [MOSBaseTapWrapper] [warning] ports on private layer 0 detected, converting to primitive ports.
[2024-05-30 16:23:28.331] [MOSBaseTapWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:28.331] [MOSBaseTapWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:28.331] [MOSBaseTapWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:28.331] [MOSBaseTapWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:28.331] [MOSBaseTapWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:28.367] [GenericWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:28.367] [GenericWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:28.446] [GenericWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:28.446] [GenericWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:28.446] [GenericWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:28.446] [GenericWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:28.446] [GenericWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:28.446] [GenericWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:28.446] [GenericWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:28.446] [GenericWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:28.446] [GenericWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:28.470] [GenericWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:28.470] [GenericWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:28.471] [GenericWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:28.471] [GenericWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:28.527] [GenericWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:28.552] [GenericWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:28.552] [GenericWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:28.553] [GenericWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:28.553] [GenericWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:28.568] [GenericWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
[2024-05-30 16:23:28.568] [GenericWrapper] [warning] ports on private layer 2 detected, converting to primitive ports.
computation done.
creating layout...
layout done: time taken = 0.11354740400020091
computing schematic...
/home/nmendez/asic/bag3_skywater130_workspace/bag3_sync_sar_adc/src/bag3_sync_sar_adc/schematic/bootstrap.py:85: UserWarning: Doesn't implement dummy sampling sw
  warnings.warn("Doesn't implement dummy sampling sw")
CM:  1
computation done.
creating netlist...
netlisting done: time taken = 0.03970662599931529

Output files are in gen_outputs\bag3_sync_sar_adc/AAAA_SAR_lay_sky_check, there is a .cdl netlist, a .gds layout and a .log report.

11. DRC check

Magic

git clone https://github.com/RTimothyEdwards/magic/
cd magic
./configure
make
sudo make install

There are two ways to get the Skywater 130 PDK, open_pdks and volare. open_pdks are the source files, it contains everything (there are options to enable or disable different libraries) and has the most recent updates and fixes, but it has to be built (which takes some time) and it takes more space.

volare is a Python package that retrieves pre-built versions, it's quite convenient to use, but currently doesn't have the combined SPICE models and can be outdated at times (which is a crucial drawback during tapeout deadlines).

open_pdks

git clone https://github.com/RTimothyEdwards/open_pdks.git
cd open_pdks
./configure --enable-sky130-pdk --enable-sram-sky130
make
sudo make install
make veryclean 

volare

# To install (or upgrade)
python3 -m pip install --upgrade --no-cache-dir volare

# To verify it works
volare --version

To open Magic using the PDK managed by volare:

export PDK_ROOT=/home/$USER/.volare/volare/sky130/versions/bdc9412b3e468c102d01b7cf6337be06ec6e9c9a/
magic -d XR -rcfile /$PDK_ROOT/sky130A/libs.tech/magic/sky130A.magicrc

In the console

drc style drc(full)
drc count


There are 6946 error tiles

To view what rules are being affected

drc why

N-diff distance to P-tap must be < 15.0um (LU.2)
P-diff distance to N-tap must be < 15.0um (LU.3)
MiM cap bottom plate spacing < 1.2um (capm.2b)

References

Official documentation

BAG3++ 1.0 documentation

BAG3 SAR ADC Setup

gdstk

Repositories

BAG3++ Skywater 130 Workspace

Skywater primitives for BAG

BAG3 SAR ADC Generator

Skywater 130 BAG3 SAR ADC Generator

Collective wisdom of the ancients

‘numeric_limits’ is not a member of ‘std’

Multiple definition errors during gcc linking in Linux

RuntimeError: module compiled against API version a but this version of numpy is 9

About

Testing the BAG3 ADC generator on Ubuntu

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published