Skip to content

Files for production of ASIC via Google and Skywater shuttle program.

License

Notifications You must be signed in to change notification settings

PaulSchulz/mawsonlakesorg-skywater-shuttle

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

43 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MawsonLakes.Org SkyWater Shuttle

This repository contains the files and documentation for production of an ASIC via the Google and Skywater shuttle program.

Site: https://github.com/google/skywater-pdk

The specific design and purpose for this ASIC is still a work in progress.

Tools / Installation

These comments are based on installations on Ubuntu (most recent - 20.10).

Most of these tools are hosted by ‘efabless’. For more information, see: http://opencircuitdesign.com

For a useful quick-start script that installs most of the tools required, see: https://github.com/mabrains/sky130_ubuntu_setup

Open PDKS (part 1)

The Open-PDKs project aims to collect the technology data for open and freely available Process Development Kits for ASIC development.

It contains the technology and configuration files required to design an ASICS for a particular fabrication process.

Download with:

git clone git://opencircuitdesign.com/open_pdks

Documentation on how to proceed installing the Skywater SDK, as well as how to configure the various tools, can be found in the document: open_pdks/sky130/README

Skywater SDK

This repository contans the foundry source files for the Skywater sky130 130nm process.

Download with

git clone https://github.com/google/skywater-pdk

Installation details can be found in the open_pdks/sky130/README document, but the process is:

cd skywater-pdk
git submodule init libraries/sky130_fd_sc_hd/latest
git submodule init libraries/sky130_fd_sc_hdll/latest
git submodule init libraries/sky130_fd_sc_hs/latest
git submodule init libraries/sky130_fd_sc_ms/latest
git submodule init libraries/sky130_fd_sc_ls/latest
git submodule init libraries/sky130_fd_sc_lp/latest
git submodule init libraries/sky130_fd_sc_hvl/latest
git submodule update

make timing

The Skywater PDK uses the Conda Package Management Software to manage it’s environment and software dependencies.

Configuration

./configure \
    --with-sky130-source=$BASEDIR/skywater-pdk \
    --with-sky130-local-path=$BASEDIR/pdks

Magic VLSI

Magic allows VLSI designs to be drawn by hand and exported to GDS format. It does a lot more though, and can be used to check designs created by other means against design rule constraints (DRC)

Magic version 8.3 appears to be required. The version packaged for Ubuntu is version 8.2.157 and gives errors during the install, so DON’T do the following for now:

sudo apt install magic

Instead, download and install Magic from source:

# Dependancies (there may be more)
  sudo apt install csh
  sudo apt install tcl-dev tk-dev
  
  git clone https://github.com/RTimothyEdwards/magic.git
  cd magic
  ./configure
  make
  sudo make install

This install the binary, and files:

/usr/local/bin/magic  (binary)
/usr/local/lib/magic/ (lots of stuff, including tutorial files)

Magic is installed, but it still needs to be configured to use the Sky150 process and design rules. This is done in the next step.

The tutorial files can be copied to the current directory with

cp /usr/local/lib/magic/tutorials .

Magic appears to work better when enabled with the ‘DR’ option, which is required for plotting to SVG. The following can be added to ‘~/.bashrc’ to enable this

alias magic='magic -d XR $@'

Some additional configurations have been added to the file ‘magic/settings.tcl’ which can be loaded into Magic at the command prompt with:

source magic/settings.tcl

Open PDKS (Part 2)

Continue to follow the instructions in: open_pdks/sky130/README

At the top level:

BASEDIR='/put/the/base/directory/of/your/working/files/here'
./configure \
  --with-sky130-source=$BASEDIR/skywater-sdk \
  --with-sky130-local-path=$BASEDIR/pdks

cd sky130
make
make local-install

This will install the SDK files into

$BASEDIR/pdks/sky130A

Configure the startup script for magic.

ln -s $BASEDIR/pdks/sky130A/libs.tech/magic/sky130A.magicrc ~/.magicrc

Magic can then be able to be started with:

magic

When starting up, look for the following line in the console (about 10 lines down), which indicated that the Magic configuration file from Open_PDKs has been read correctly for the Sky130 PDK.

Sourcing design .magicrc for technology sky130A ...

Electric

Electric is similar to Magic. Originally written in ‘C’ it has been ported to Java and is available on other operating systems.

It also provides a 3D visualization option.

To install

sudo apt install electric

klayout

VLSI Layout software written in KDE

To install

sudo apt install klayout

GDS2WebGL

Tool to produce a a visualisation of VLSI design in a 3D layout, viewable in a web browser.

Available here: https://github.com/s-holst/GDS2WebGL

# In parent directory
git clone https://github.com/s-holst/GDS2WebGL
pip3 install gdspy
pip3 install pyclipper
pip3 install mapbox_earcut

cd mawsonlakes-skywater-shuttle/doc
cp ../../GDS2WebGL/index.html .
cp ../../GDS2WebGL/bundle.js .
python3 ../../GDS2WebGL/gds2webgl.py -i ../gds/open-source-hardware.gds -o open-source-hardware.html

Then open a browser to ‘open-source-hardware.html’

chromium-browser open-source-hardware.html

logo-to-gds2

Tool to create logos for ASICs. Turns SVGs or PNGs into GDS2 and LEF files for use on top metal of ASICs for artwork.

Available here: https://github.com/s-holst/GDS2WebGL

This tool is also a useful example for processing files with a Makefile.

caravel - SoC template

A template SoC for Google SKY130 free shuttles.

Available here: https://github.com/efabless/caravel

git clone https://github.com/efabless/caravel.git

docker

Container software used to distribute the build and testing tools for the efabless/caravel architecture, including any local modifications.

NOTE: Please be aware that ‘docker’ is not available for Ubuntu 20.10. Currently looking for a suitable workaround.

Install with the instructions from Docker website: https://docs.docker.com/engine/install/ubuntu/

Use the packages from Ubuntu “20.04” (focal), eg.

$ sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable"

Skywater 130nm Font Library

See: https://github.com/PaulSchulz/sky130_pschulz_xx_hd

A font library has been created, so that text can be rendered in the silicon wafer production process.

Targets and Building

The Makefile has been configured with the following targets:

make TARGET
TARGETDescription
docProduces HTML documentation in ‘doc’

Examples

Editing gds with Magic (minimal installation and setup)

The following was done prior to ‘open_pdks’ being used to install the ‘sky130’ PDK. It required that Magic be installed, and that ‘open_pdks’ be download. The VLSI technology layers are available, but there are no Design Rule Checks being performed in this case.

magic -T ../open_pdks/sky130/magic/sky130gds.tech gds/open-source-hardware.gds

or, to load the sky130 technology file separately, at the prompt in the magic console, use:

tech load ../open_pdks/sky130/magic/sky130gds.tech

In this example, we are creating and editing a feature in the ‘metal 1’ layer. Details of the constraints can be found in the documentation: https://skywater-pdk.readthedocs.io/en/latest/rules/assumptions.html#minimum-critical-dimensions

From the documentation, for the ‘metal 1’ layer

ParameterSizeComment
Feature Size0.14 um
Space Size0.14 umSpace between features
Minimum Area0.083 um^2Equivalent to 0.28 um x 0.28 um

If these parameters are not satisfied, and if the Design Rules have been configured in Magic, it will flag errors and mark the features that need to be fixed.

Magic Tutorials

Create a local directory, and copy the Magic tutorial files

mkdir magic-tutorial
cd magic-tutorial
cp /usr/local/lib/magic/tutorial/* .

The tutorials can be read with the ‘evince’ viewer

evince /usr/local/lib/magic/doc/introduction.ps

These tutorials are for Magic Version 7, and we have 8.3 installed, but the general details are the same.

Creating a VLSI Font and Logos

A font for the SkyWater 130nm process has been created, called “font-sky130”, as well as some logos, for use in the Google + SkyWater process.

The font has been put into its own library in github, and has been included in this project as a submodule.

To install elsewere:

git clone https://github.com/PaulSchulz/sky130_ml_xx_hd

and add the path to Magic, using

% addpath path/to/sky130_ml_xx_hd/mag

Initially, font characters were based on a 7 high x 3 wide grid of 150x150nm ‘pixels’ (In magic, these are represented by a 3x3 grid, where the grid size was 0.05um). The larger characters (‘M’ and ‘W’) were based on a 7x7 grid, and the smaller characters (‘i’ and ‘l’) were based on narrower grid with width 2.

The design rules for the minimum area require that the dots on the ‘i’ and ‘j’ are 2x2 in size, and that the ‘i’ has ‘serifs’.

The cells are stored as ‘cell_xx’, where xx is the ASCII(Unicode) code for the particular character.

Explicitly

This can be run via the Makefile, with ‘make’

The following currently needs to be run manually, until I figure out how to atomate this process. There is an issue with requiring the screen when positioning the glyphs.

magic magic/skywater.mag
  source tcl/skywater.tcl
  gds write gds/skywater

magic magic/babbage.mag
  source tcl/babbage.tcl
  gds write gds/babbage

magic magic/the-elements.mag
  source tcl/the-elements.tcl
  gds write gds/the-elements

magic magic/war-of-the-worlds.mag
  source tcl/war-of-the-worlds.tcl
  gds write gds/war-of-the-worlds

Then in magic

Building Caravel

Install the caravel code by cloning the efebless/caravel github repository.

git clone https://github.com/efabless/caravel.git

The README.md defines the initial setup. Other than the Management System on a Chip (SoC), the customizable area has been preconfigured with a 32-bit up counter.

To build and run test locally, there is a ‘docker’ image available which can be used.

About

Files for production of ASIC via Google and Skywater shuttle program.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published