wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh
git clone https://github.com/ucb-art/bag3_skywater130_workspace
cd bag3_skywater130_workspace
git submodule update --init --recursive
conda env create -f environment.yml
By default should be in:
/home/${USER}/miniconda3/envs/bag_py3d7_c
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
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
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
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
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
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?
conda activate bag_py3d7_c
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
cd bag3_skywater130_workspace/BAG_framework
python3 setup.py build
python3 setup.py install
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
vim pybag/cbag/include/cbag/spirit/name_unit_def.h
auto check_str ->
auto static check_str
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
./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")
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.
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).
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
# 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)
Skywater 130 BAG3 SAR ADC Generator
‘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