The Ultimate MOSAIC Bootcamp 2022 Documentation
The Modular Open Source Analog IC Design (MOSAIC) bootcamp had a goal to connect all independent parties working on automated analog design frameworks and workflows to “touch base”- to share the ideas and developments that had previously been fragmented and largely independent.
Speakers, contributors, and participants travelled to Linz, Austria from all over the world- Germany, US, Philippines, South Korea, Chile, Netherlands including of course people from other cities in Austria.
Student Participants:
- Hanyang University - NiftyLab Team
- Taeho Shin (신태호)
- Seonghyun Park (박성현)
- Youngmin Oh (오영민)
- University of the Philippines - Microlab Team
- Ryan Antonio
- Lawrence Quizon
- Unibersidad Federico Santa Maria - IC3E Team
- Aquiles Viza
- Kevin Pizarro
Offline Participants:
- Silicon Austria Labs
- Mirjana Videnovic-Misic
- Martin Koehler
- Fatemeh Abbassi
- Khuram Shehzad
- Infineon FAT
- Christoph Sandner
- Thomas Brandtner
- Florian Renneke
- Matthias Koefferlein
- Federico Passerini
- Thomas Parry (OS Community)
- Curtis Mayberry (Skyworks)
- Stephan Gether (CISC)
- Benjamin Prausch (Fraunhofer)
- Carinthia University of Applied Sciences
- Vinayak Hande
- Osheen Mechail
Talks
Things we made
1. LAYGO2 inside the MOSAIC Orchestrator
Aquiles, Ryan, Kevin, Lawrence
In the first week, the students worked on familiarizing themselves with Infineon’s MOSAIC Orchestrator by integrating the first fully open-source design flow into it: LAYGO2 + MAGIC VLSI.
Through the use of the Orchestrator’s task-based cache-enabled designs, the LAYGO2 design flow was made to be faster and more automated. Generator code was made more specific, with less overhead to the designer by lifting common calls to templates and grids and design initializations to a superclass.
By lifting all PDK-related template calls to the Orchestrator’s PDK abstraction, the generator code no longer requires particular knowledge of the PDK to create- also possibly enabling generator codes.
MAGIC was also integrated into the Orchestrator as a registered tool, allowing it to transform LAYGO2 designs into mag files handled hierarchically for every task with caching.
2. FiftyNifty Generators using LAYGO2 and virtuoso_template
Student Participants
After that, the students went on creating LAYGO2+SKY130 generators for the basic two-transistor circuits from the FiftyNifty, and some other basic circuits. See repository here.
LAYGO2
- (Nifty 7) Current Mirror (Kevin)
- (Nifty 1) Inverter (Lawrence)
- (Nifty 8) Differential Pair (Ryan)
- (Nifty 14) Transmission Gate (Lawrence)
- NOT NIFTY 2to1MUX (Lawrence)
- Seonghyun’s 19/50 Nifty Generators (Seonghyun)
- (Nifty 1) Inverter
- (Nifty 3) Tie-Zero
- (Nifty 5) NAND
- (Nifty 6) NOR
- (Nifty 7) Current Mirror
- (Nifty 8) Differential Pair
- (Nifty 9) Source Follower
- (Nifty 10) CS Amp
- (Nifty 11) CS Cascode Amp
- (Nifty 12) Cascode CG Amp
- (Nifty 13) CG Amp
- (Nifty 14) TGate
- (Nifty 15) 2to1MUX
- (Nifty 17) CS Amp with Diode Load
- (Nifty 18) Folded CS Amp with Diode Load
- (Nifty 19) ClassB PushPull Follower
- (Nifty 20) Degenerated CS Amp
- (Nifty 21) Variable Degeneration CS Amp
- (Nifty 24) PN Bias Voltage Generator
AnalogBase
- (Nifty 1) Inverter, NAND Gate (Taeho)
- NOR Gate (Seonghyun)
- Tri-state Inverter, NAND Gate (Youngmin)
- (Nifty 24, 25) PN, Stable Voltage References (Lawrence)
- NAND Gate, (Nifty 7, 1) Diff Pair, Inverters (Ryan)
- (Nifty 7) Sophisticated Current Mirrors (Kevin)
3. KLayout and LAYGO2
Ryan, Kevin
By using the LAYGO2 package and framework inside KLayout’s scripting environment, students managed to enable KLayout to show previews of LAYGO2 designs and allow it to export to GDS, which may eventually allow a complete LAYGO2 workflow to be automated (say, with the Orchestrator, XSchem and netgen) inside KLayout.
4. The open-source BAG2 Template (Temp Name)
Matthias Koefferlein, Thomas Parry
By replacing virtuoso-template’s existing skill.py, which handles communication with Virtuoso, with a new handler, opensource.py, they were able to port BAG2’s SKILL requests workflow to KLayout and XSchem instead.
gen make inverter_gen
This creates a GDS for KLayout, and a schematic file for XSchem
This enables the use of BAG2 with open-source tools paving the way for open-source IC development with analog generators.
Section for testimonies
- Boosting the ease of use of these documentation-lacking frameworks.
- Inspired people.
- For CIDR
- Cooperation outside the bubble for IC3E
- Discovering that people want to learn about LAYGO2
- Different POVs from people with different backgrounds (Digital, Software, Analog only, Layout generation people.)
- Kinda like a proto-conference on layout generation, for which everyone has different amounts of progress and different approaches and different software. It’s a way to remap in the heads of everyone who wants to work on these things.
- The mosaic orchestrator
- Troubles with definition of PDK views
- Need both approaches to work in the same kind of environment, instead of mosaic-laygo2-magic and mosaic-analogbase-virtuoso