2023-04-03 00:28:16 +00:00
|
|
|
|
2023-04-08 04:44:03 +00:00
|
|
|
- [The State of Open Silicon](#the-state-of-open-silicon)
|
|
|
|
- [Talk Outline](#talk-outline)
|
|
|
|
- [About Me](#about-me)
|
2023-04-03 00:28:16 +00:00
|
|
|
- [What does it mean for silicon to be "Open"?](#what-does-it-mean-for-silicon-to-be-open)
|
2023-04-08 04:44:03 +00:00
|
|
|
- [Levels of "open"](#levels-of-open)
|
2023-04-03 00:28:16 +00:00
|
|
|
- [Parts of chip design](#parts-of-chip-design)
|
2023-04-08 04:44:03 +00:00
|
|
|
- [Process Design Kit](#process-design-kit)
|
|
|
|
- [Intellectual Property / Libraries](#intellectual-property--libraries)
|
|
|
|
- [Digital design (In The Beginning)](#digital-design-in-the-beginning)
|
|
|
|
- [Digital logic overview (Today)](#digital-logic-overview-today)
|
2023-04-03 00:28:16 +00:00
|
|
|
- [How can we use standard cells?](#how-can-we-use-standard-cells)
|
2023-04-08 04:44:03 +00:00
|
|
|
- [Tooling](#tooling)
|
|
|
|
- [End-to-end runs take weeks or months](#end-to-end-runs-take-weeks-or-months)
|
|
|
|
- [Method to tape out](#method-to-tape-out)
|
|
|
|
- [Where are we now (in open source)?](#where-are-we-now-in-open-source)
|
|
|
|
- [Things are looking pretty good](#things-are-looking-pretty-good)
|
|
|
|
- [End-to-end tool flow possible](#end-to-end-tool-flow-possible)
|
|
|
|
- [Open PDKs](#open-pdks)
|
|
|
|
- [Available IP](#available-ip)
|
|
|
|
- [Standard cells](#standard-cells)
|
|
|
|
- [What about tooling?](#what-about-tooling)
|
2023-04-03 00:28:16 +00:00
|
|
|
- [Hardware synthesis](#hardware-synthesis)
|
|
|
|
- [High level languages](#high-level-languages)
|
|
|
|
- [Floorplanning, Placement, Routing](#floorplanning-placement-routing)
|
|
|
|
- [Power and Clock generation](#power-and-clock-generation)
|
|
|
|
- [Verification](#verification)
|
2023-04-08 04:44:03 +00:00
|
|
|
- [What about taping out chips?](#what-about-taping-out-chips)
|
|
|
|
- [What can't we do today?](#what-cant-we-do-today)
|
2023-04-03 00:28:16 +00:00
|
|
|
- [Memories are still hard](#memories-are-still-hard)
|
2023-04-08 04:44:03 +00:00
|
|
|
- [Nonvolatile storage is still hard](#nonvolatile-storage-is-still-hard)
|
|
|
|
- [Analogue IP is still difficult](#analogue-ip-is-still-difficult)
|
|
|
|
- [Where are we going from here?](#where-are-we-going-from-here)
|
|
|
|
- [Improved languages](#improved-languages)
|
|
|
|
- [Improved memories](#improved-memories)
|
|
|
|
- [Better inference](#better-inference)
|
|
|
|
- [More analogue IP](#more-analogue-ip)
|
2023-04-03 00:28:16 +00:00
|
|
|
- [Getting involved!](#getting-involved)
|
2023-04-08 04:44:03 +00:00
|
|
|
|
|
|
|
# The State of Open Silicon
|
|
|
|
|
|
|
|
# Talk Outline
|
|
|
|
|
|
|
|
- What does it mean to be "open"?
|
|
|
|
- What can we do today?
|
|
|
|
- What can't we do today?
|
|
|
|
- Where can we go from here?
|
|
|
|
|
|
|
|
# About Me
|
2023-04-03 00:28:16 +00:00
|
|
|
|
|
|
|
# What does it mean for silicon to be "Open"?
|
|
|
|
|
2023-04-08 04:44:03 +00:00
|
|
|
## Levels of "open"
|
2023-04-03 00:28:16 +00:00
|
|
|
|
2023-04-08 04:44:03 +00:00
|
|
|
1. Manuals available
|
|
|
|
2. Source available
|
|
|
|
3. GDSII available
|
2023-04-03 00:28:16 +00:00
|
|
|
|
2023-04-08 04:44:03 +00:00
|
|
|
## Parts of chip design
|
2023-04-03 00:28:16 +00:00
|
|
|
|
2023-04-08 04:44:03 +00:00
|
|
|
1. PDKs
|
|
|
|
2. IP
|
|
|
|
3. Tooling
|
|
|
|
4. Method to tape out
|
2023-04-03 00:28:16 +00:00
|
|
|
|
2023-04-08 04:44:03 +00:00
|
|
|
## Process Design Kit
|
2023-04-03 00:28:16 +00:00
|
|
|
|
2023-04-08 04:44:03 +00:00
|
|
|
- <https://skywater-pdk.readthedocs.io/en/main/_images/metal_stack.svg>
|
|
|
|
- Process design kits (PDKs) are closed and under NDA
|
|
|
|
- Mostly just a blank canvas
|
2023-04-03 00:28:16 +00:00
|
|
|
|
2023-04-08 04:44:03 +00:00
|
|
|
## Intellectual Property / Libraries
|
2023-04-03 00:28:16 +00:00
|
|
|
|
2023-04-08 04:44:03 +00:00
|
|
|
- Memories
|
|
|
|
- IO blocks
|
|
|
|
- Standard cells
|
2023-04-03 00:28:16 +00:00
|
|
|
|
2023-04-08 04:44:03 +00:00
|
|
|
## Digital design (In The Beginning)
|
2023-04-03 00:28:16 +00:00
|
|
|
|
2023-04-08 04:44:03 +00:00
|
|
|
- [Picture of Z80 or 6502]
|
|
|
|
- Magic
|
|
|
|
- [Picture of Siliwiz]
|
2023-04-03 00:28:16 +00:00
|
|
|
|
2023-04-08 04:44:03 +00:00
|
|
|
## Digital logic overview (Today)
|
2023-04-03 00:28:16 +00:00
|
|
|
|
2023-04-08 04:44:03 +00:00
|
|
|
- Standard cells
|
|
|
|
- Basic boolean logic
|
2023-04-03 00:28:16 +00:00
|
|
|
|
2023-04-08 04:44:03 +00:00
|
|
|
## How can we use standard cells?
|
2023-04-03 00:28:16 +00:00
|
|
|
|
2023-04-08 04:44:03 +00:00
|
|
|
- Manual synthesis
|
|
|
|
- Automated synthesis
|
|
|
|
|
|
|
|
Almost all code is automatically synthesized from source code!
|
2023-04-03 00:28:16 +00:00
|
|
|
|
|
|
|
[Example of live generation of cells]
|
|
|
|
|
2023-04-08 04:44:03 +00:00
|
|
|
## Tooling
|
2023-04-03 00:28:16 +00:00
|
|
|
|
2023-04-08 04:44:03 +00:00
|
|
|
- Synthesis
|
|
|
|
- Power generation
|
|
|
|
- Clock tree
|
|
|
|
- Place and route
|
|
|
|
- Verification
|
|
|
|
- **Industry tools cost $1mm plus per seat**
|
2023-04-03 00:28:16 +00:00
|
|
|
|
2023-04-08 04:44:03 +00:00
|
|
|
## End-to-end runs take weeks or months
|
2023-04-03 00:28:16 +00:00
|
|
|
|
2023-04-08 04:44:03 +00:00
|
|
|
- Specialized tooling requires specialized engineers
|
|
|
|
- Large separation between digital designers and tapeout
|
2023-04-03 00:28:16 +00:00
|
|
|
|
2023-04-08 04:44:03 +00:00
|
|
|
## Method to tape out
|
2023-04-03 00:28:16 +00:00
|
|
|
|
2023-04-08 04:44:03 +00:00
|
|
|
- Shuttle runs
|
|
|
|
- Full wafer
|
|
|
|
- Turnaround time is in months
|
2023-04-03 00:28:16 +00:00
|
|
|
|
2023-04-08 04:44:03 +00:00
|
|
|
# Where are we now (in open source)?
|
2023-04-03 00:28:16 +00:00
|
|
|
|
2023-04-08 04:44:03 +00:00
|
|
|
## Things are looking pretty good
|
2023-04-03 00:28:16 +00:00
|
|
|
|
2023-04-08 04:44:03 +00:00
|
|
|
## End-to-end tool flow possible
|
2023-04-03 00:28:16 +00:00
|
|
|
|
2023-04-08 04:44:03 +00:00
|
|
|
- Open tooling, open PDK
|
|
|
|
- Chips have been produced using this flow
|
|
|
|
- Digital logic is very doable
|
2023-04-03 00:28:16 +00:00
|
|
|
|
2023-04-08 04:44:03 +00:00
|
|
|
## Open PDKs
|
2023-04-03 00:28:16 +00:00
|
|
|
|
2023-04-08 04:44:03 +00:00
|
|
|
- Real PDKs
|
|
|
|
- SKY130
|
|
|
|
- SKY90FD
|
|
|
|
- GF180MCU
|
|
|
|
- "Fake" PDKs
|
|
|
|
- FreePDK45
|
|
|
|
- ASAP5
|
2023-04-03 00:28:16 +00:00
|
|
|
|
2023-04-08 04:44:03 +00:00
|
|
|
## Available IP
|
2023-04-03 00:28:16 +00:00
|
|
|
|
2023-04-08 04:44:03 +00:00
|
|
|
- OpenMPW projects
|
|
|
|
- ADC, LDO, Bandgap, DAC, and more
|
2023-04-03 00:28:16 +00:00
|
|
|
|
2023-04-08 04:44:03 +00:00
|
|
|
## Standard cells
|
2023-04-03 00:28:16 +00:00
|
|
|
|
2023-04-08 04:44:03 +00:00
|
|
|
- SKY130
|
|
|
|
- GF180MCU
|
|
|
|
- OSU
|
|
|
|
- LibreSilicon
|
2023-04-03 00:28:16 +00:00
|
|
|
|
2023-04-08 04:44:03 +00:00
|
|
|
## What about tooling?
|
2023-04-03 00:28:16 +00:00
|
|
|
|
2023-04-08 04:44:03 +00:00
|
|
|
## Hardware synthesis
|
2023-04-03 00:28:16 +00:00
|
|
|
|
2023-04-08 04:44:03 +00:00
|
|
|
- Yosys (Verilog)
|
|
|
|
- VHDL
|
|
|
|
- SystemVerilog
|
2023-04-03 00:28:16 +00:00
|
|
|
|
|
|
|
## High level languages
|
|
|
|
|
2023-04-08 04:44:03 +00:00
|
|
|
- LiteX [Python]
|
|
|
|
- SpinalHDL [Scala]
|
|
|
|
- Clash
|
2023-04-03 00:28:16 +00:00
|
|
|
|
2023-04-08 04:44:03 +00:00
|
|
|
These all generate Verilog, and are fully open!
|
2023-04-03 00:28:16 +00:00
|
|
|
|
|
|
|
## Floorplanning, Placement, Routing
|
|
|
|
|
2023-04-08 04:44:03 +00:00
|
|
|
- OpenROAD is the current gold-standard
|
|
|
|
- Competitive with closed tools
|
2023-04-03 00:28:16 +00:00
|
|
|
|
|
|
|
## Power and Clock generation
|
|
|
|
|
2023-04-08 04:44:03 +00:00
|
|
|
- Setup and hold timing validation
|
|
|
|
- Basic power nets supported
|
|
|
|
- Straps are generated as expected
|
2023-04-03 00:28:16 +00:00
|
|
|
|
|
|
|
## Verification
|
|
|
|
|
2023-04-08 04:44:03 +00:00
|
|
|
- Parasitic extraction works
|
|
|
|
- Layout-versus-Schematics
|
|
|
|
- Simulation of extracted netlist
|
|
|
|
- Design Rule Checking
|
|
|
|
|
|
|
|
## What about taping out chips?
|
2023-04-03 00:28:16 +00:00
|
|
|
|
2023-04-08 04:44:03 +00:00
|
|
|
- Google OpenMPW shuttles
|
|
|
|
- MPW shuttle runs
|
2023-04-03 00:28:16 +00:00
|
|
|
|
2023-04-08 04:44:03 +00:00
|
|
|
# What can't we do today?
|
2023-04-03 00:28:16 +00:00
|
|
|
|
2023-04-08 04:44:03 +00:00
|
|
|
## Memories are still hard
|
2023-04-03 00:28:16 +00:00
|
|
|
|
2023-04-08 04:44:03 +00:00
|
|
|
- Density is constantly improving
|
|
|
|
- Expect kilobytes of RAM on a chip
|
|
|
|
- Compare to megabytes of cache
|
|
|
|
- A ~4x increase is possible
|
2023-04-03 00:28:16 +00:00
|
|
|
|
2023-04-08 04:44:03 +00:00
|
|
|
## Nonvolatile storage is still hard
|
2023-04-03 00:28:16 +00:00
|
|
|
|
2023-04-08 04:44:03 +00:00
|
|
|
- No EEPROM or flash
|
|
|
|
- ReRAM is experimental on SKY130
|
2023-04-03 00:28:16 +00:00
|
|
|
|
2023-04-08 04:44:03 +00:00
|
|
|
## Analogue IP is still difficult
|
2023-04-03 00:28:16 +00:00
|
|
|
|
2023-04-08 04:44:03 +00:00
|
|
|
- Some tapeouts exist, but documentation is scarce
|
|
|
|
- Need more integration examples
|
2023-04-03 00:28:16 +00:00
|
|
|
|
2023-04-08 04:44:03 +00:00
|
|
|
# Where are we going from here?
|
2023-04-03 00:28:16 +00:00
|
|
|
|
2023-04-08 04:44:03 +00:00
|
|
|
## Improved languages
|
2023-04-03 00:28:16 +00:00
|
|
|
|
2023-04-08 04:44:03 +00:00
|
|
|
- Type-checking for timing?
|
|
|
|
- Bus integration
|
|
|
|
- Documentation generation
|
2023-04-03 00:28:16 +00:00
|
|
|
|
2023-04-08 04:44:03 +00:00
|
|
|
## Improved memories
|
2023-04-03 00:28:16 +00:00
|
|
|
|
2023-04-08 04:44:03 +00:00
|
|
|
- OpenRAM coming to more processes
|
2023-04-03 00:28:16 +00:00
|
|
|
|
2023-04-08 04:44:03 +00:00
|
|
|
## Better inference
|
2023-04-03 00:28:16 +00:00
|
|
|
|
2023-04-08 04:44:03 +00:00
|
|
|
## More analogue IP
|
2023-04-03 00:28:16 +00:00
|
|
|
|
|
|
|
# Getting involved!
|
|
|
|
|
2023-04-08 04:44:03 +00:00
|
|
|
- Siliwiz for raw tapeout
|
|
|
|
- TinyTapeout
|
|
|
|
- Write more blogposts
|
|
|
|
- Give it a try
|
2023-04-03 00:28:16 +00:00
|
|
|
|
2023-04-08 04:44:03 +00:00
|
|
|
Thank you!
|