206
									
								
								talk.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										206
									
								
								talk.md
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,206 @@ | ||||
|  | ||||
| - [What does it mean for silicon to be "Open"?](#what-does-it-mean-for-silicon-to-be-open) | ||||
|   - [Parts of chip design](#parts-of-chip-design) | ||||
|   - [Open tooling](#open-tooling) | ||||
|   - [Manual design (In The Beginning)](#manual-design-in-the-beginning) | ||||
|   - [Digital logic overview](#digital-logic-overview) | ||||
|   - [How can we use standard cells?](#how-can-we-use-standard-cells) | ||||
|   - [Digital design](#digital-design) | ||||
|   - [Process Design Kits](#process-design-kits) | ||||
|   - [What about blackboxes?](#what-about-blackboxes) | ||||
|   - [Place and route](#place-and-route) | ||||
|   - [Other tools](#other-tools) | ||||
| - [What is the current state of the art?](#what-is-the-current-state-of-the-art) | ||||
|   - [Things are looking pretty good!](#things-are-looking-pretty-good) | ||||
|   - [End-to-end tool flow possible!](#end-to-end-tool-flow-possible) | ||||
|   - [Current open PDKs are "ginormous"](#current-open-pdks-are-ginormous) | ||||
|   - [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) | ||||
|   - [Wide selection of existing chips](#wide-selection-of-existing-chips) | ||||
|   - [Large selection of existing IP](#large-selection-of-existing-ip) | ||||
| - [Where are we going from here?](#where-are-we-going-from-here) | ||||
|   - [More open PDKs](#more-open-pdks) | ||||
|   - [Improved analogue IP](#improved-analogue-ip) | ||||
|   - [Better IP discoverability](#better-ip-discoverability) | ||||
|   - [Better integration](#better-integration) | ||||
|   - [Memories are still hard](#memories-are-still-hard) | ||||
|   - [Flash is still hard](#flash-is-still-hard) | ||||
|   - [EEPROM is still hard](#eeprom-is-still-hard) | ||||
|   - [Exotic, non-digital IP is hard!](#exotic-non-digital-ip-is-hard) | ||||
| - [Getting involved!](#getting-involved) | ||||
|   - [Siliwiz for raw tapeout](#siliwiz-for-raw-tapeout) | ||||
|   - [TinyTapeout](#tinytapeout) | ||||
|   - [](#) | ||||
|  | ||||
| # What does it mean for silicon to be "Open"? | ||||
|  | ||||
| ## Parts of chip design | ||||
|  | ||||
| * Tooling | ||||
| * PDKs | ||||
| * IP | ||||
|  | ||||
| ## Open tooling | ||||
|  | ||||
| * Industry tools cost $1mm plus per seat | ||||
| * Process design kits (PDKs) are closed and under NDA | ||||
| * Tooling includes synthesis, placement, and routing | ||||
| * Tooling also includes verification, clock generation, and power generation | ||||
|  | ||||
| ## Manual design (In The Beginning) | ||||
|  | ||||
| * Rubylith | ||||
| * Magic | ||||
| * [Picture of Siliwiz] | ||||
|  | ||||
| ## Digital logic overview | ||||
|  | ||||
| * Boolean values | ||||
|  | ||||
| ## How can we use standard cells? | ||||
|  | ||||
| * Manual synthesis | ||||
| * Automated synthesis | ||||
|  | ||||
| Almost all code is automatically synthesized from source code! | ||||
|  | ||||
| ## Digital design | ||||
|  | ||||
| Source code can be in a Hardware Description Language. For example: | ||||
|  | ||||
| * Verilog | ||||
| * SystemVerilog | ||||
| * VHDL | ||||
|  | ||||
| [Example of live generation of cells] | ||||
|  | ||||
| ## Process Design Kits | ||||
|  | ||||
| * Very low-level logic | ||||
| * AND | ||||
| * NOR | ||||
| * NOT | ||||
| * Diode | ||||
| * Tie | ||||
|  | ||||
| Digital logic is, for the most part, a collection of these standard cells! | ||||
|  | ||||
| [Image of standard cells] | ||||
|  | ||||
| ## What about blackboxes? | ||||
|  | ||||
| * Frequently called "IP" | ||||
| * Blackboxes allow for more functionality, or higher performance | ||||
|   * Memories, RF, ADC, etc. | ||||
| * Usually have Verilog models that are non-synthesizable. | ||||
| * Place-and-route tool wires up the ports | ||||
| * Blackboxes are how we get analogue! | ||||
|  | ||||
| ## Place and route | ||||
|  | ||||
| The tool will automatically place cells, and will add wires between them! | ||||
|  | ||||
| ## Other tools | ||||
|  | ||||
| * Clock generation | ||||
| * Power generation | ||||
| * Reset inserters | ||||
| * Parasitic extraction | ||||
| * Layout-vs-Schematic | ||||
|  | ||||
| # What is the current state of the art? | ||||
|  | ||||
| ## Things are looking pretty good! | ||||
|  | ||||
| ## End-to-end tool flow possible! | ||||
|  | ||||
| * Open tooling, open PDK | ||||
| * Chips have been produced using this flow | ||||
| * Production is still an issue | ||||
|  | ||||
| ## Current open PDKs are "ginormous" | ||||
|  | ||||
| * 180nm and 130nm are peak-1999 technology | ||||
|    * Still can do interesting things at 180/130nm! | ||||
| * "Fake" PDKs exist | ||||
|  | ||||
| ## Hardware synthesis | ||||
|  | ||||
| * Yosys | ||||
| * GHDL | ||||
|  | ||||
| Ingests Verilog or VHDL and generates basic netlists | ||||
|  | ||||
| ## High level languages | ||||
|  | ||||
| * LiteX [Python] | ||||
| * SpinalHDL [Scala] | ||||
| * [Rust] | ||||
|  | ||||
| These all geneate Verilog, and are fully open! | ||||
|  | ||||
| ## Floorplanning, Placement, Routing | ||||
|  | ||||
| * OpenROAD is the current gold-standard | ||||
| * Compatitive with closed tools | ||||
|  | ||||
| ## Power and Clock generation | ||||
|  | ||||
| * Setup and hold timing validation | ||||
| * Basic power nets supported | ||||
| * Straps are generated as expected | ||||
|  | ||||
| ## Verification | ||||
|  | ||||
| * Parasitic extraction works | ||||
| * Layout-versus-Schematics | ||||
| * Simulation of extracted netlist | ||||
| * Design Rule Checking | ||||
|  | ||||
| ## Wide selection of existing chips | ||||
|  | ||||
| * Taped out | ||||
| * Still being characterized | ||||
|  | ||||
| ## Large selection of existing IP | ||||
|  | ||||
| * [Picture of MPW list] | ||||
|  | ||||
| # Where are we going from here? | ||||
|  | ||||
| ## More open PDKs | ||||
|  | ||||
| * GF180MCU is relatively new | ||||
| * ??? PDKs | ||||
|  | ||||
| ## Improved analogue IP | ||||
|  | ||||
| * Each run adds even more designs | ||||
|  | ||||
| ## Better IP discoverability | ||||
|  | ||||
| * Indexes of IP cores | ||||
|  | ||||
| ## Better integration | ||||
|  | ||||
| * Wishbone is standard in open source | ||||
| * AXI4 is common in industry | ||||
|  | ||||
| ## Memories are still hard | ||||
|  | ||||
| ## Flash is still hard | ||||
|  | ||||
| ## EEPROM is still hard | ||||
|  | ||||
| ## Exotic, non-digital IP is hard! | ||||
|  | ||||
| # Getting involved! | ||||
|  | ||||
| ## Siliwiz for raw tapeout | ||||
|  | ||||
| ## TinyTapeout | ||||
|  | ||||
| ##  | ||||
		Reference in New Issue
	
	Block a user