Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 

Repository files navigation

OpenLake x FOSSI

FOSSi — Free Open Source Silicon Society
Credits: Rishik Ram J, IIT Bhilai '22


1. Core Focus Areas

ASIC / FPGA Development

Front-End Design

  • RTL Design Languages
    • Verilog (HDL)
    • Amaranth
    • Chisel (Hardware Construction Language / HCL)
  • Verification
    • Simulation
      • Open-Source: Verilator, Icarus Verilog (iverilog)
      • Proprietary: Synopsys VCS, Cadence Xelium
    • Formal Verification
      • Open-Source: SymbiYosys
      • Proprietary: Jasper, VC Formal

Back-End Design

  • FPGA
    • Understanding Architecture
    • Implementation Flow (Refer to slide 16+ for extended details):
      1. Synthesis
      2. Place and Route
      3. Bitstream Generation
  • ASIC
    • Digital Design (Physical Design — RTL to GDS)
      • Synthesis
      • Floorplanning & Chip Design
      • Placement
      • Clock Tree Synthesis (CTS)
      • Parasitic Extraction
      • Routing
      • DRC / LVS Checks
      • GDS Generation
    • Analog Design & PDK


Verilog to GDSII Learning Map

Ten phases. Each phase gives resources, practicals .


The Ten Phases

# Phase Time
00 Set Up The Toolchain
01 Verilog Language Core
02 Testbench And Verification
03 FPGA Flow And Bitstream Generation
04 RTL To GDS - First Full Run
05 Constraints, Clocks And Timing
06 Synthesis, Floorplan And Power
07 Placement, CTS And Routing
08 Signoff - STA, DRC, LVS And GDS
09 Tapeout On Real Silicon

00 — Set Up The Toolchain

All members use the same tools. Do this before any other phase.

Resources

Practicals

  • Install OSS CAD Suite. Run yosys -V and iverilog -V.
  • Write blink.v. Simulate it with Icarus Verilog.
  • Open the VCD file in Surfer or GTKWave.

Please Open issue if you are not able to setup or facing any issues !


01 — Verilog Language Core

Read and write synthesisable Verilog

  • Combinational Logic
  • Sequential Logic
  • state machines etc..
  • Following HDLBits constructs

Resources

Direction

  • complete HDLBits Verilog Language section
  • complete HDLBits Circuits section.
    • Combinational first
    • sequential
    • FSM etc ..
  • Do the Verification: Reading Simulations section. It teaches debug.
  • examples to build :
    • 4-bit counter
    • frequency divider
    • shift register
    • gray code counter
    • one-hot FSM
    • synchronous FIFO.

We can make a weekly HDLBits sprint


02 — Testbench And Verification

Prove that the design is correct. Do not trust the eye.

Resources

Practicals

  • Write a self-checking testbench for the FIFO. It must fail loudly on error.
  • Convert one testbench to cocotb.
  • Run verilator --lint-only on every design. Fix all warnings.
  • Write one formal property with sby. Example: the FIFO never overflows.

03 — FPGA Flow And Bitstream

Move RTL to real hardware. See the LED blink.

FPGA FLOW

Resources

Practicals

OpenSource FPGA Flow

  • Take any fpga board for the group. Good options: Tang Nano 9K (low cost), iCEBreaker, ULX3S.(for opensource ) , same flow for the xilinix fpgas if you have
  • Run the four steps by hand:
    • yosys - synthesis
    • nextpnr, packer : Placement and Routing
    • openFPGALoader - Flash bitstream
  • Write a Makefile for the four steps. Share it in the community repo.
  • Flash the frequency divider. Prove the LED rate with a scope or a counter.
  • Build a UART transmitter. Print Hello from the FPGA to a terminal.
  • Read the nextpnr timing report. Find the critical path.

Community Job

Start a board pool. One board serves four members by post or by a remote JTAG host. Record a 60 second demo video for each flash.


Practicals

  • Write an SDC file. Set create_clock, input_delay and output_delay.
  • Run OpenSTA on a synthesised netlist. Read the worst negative slack.
  • Break the timing on purpose. Add a long combinational chain. Watch the slack go negative.
  • Fix the timing with a pipeline register. Compare the two reports.

Community Job

Hold one whiteboard session. Each member draws a setup and a hold violation. Post the photos to the wiki.


04 — RTL To GDS - First Full Run

Get one GDSII file. Do not study each step yet. Get the win first.

Resources

Practicals

  • Install LibreLane with Nix. Follow the getting started guide.
  • Run the built-in spm design (serial parallel multiplier). It is the standard first example.
  • Open the final GDS in KLayout. Zoom to a single standard cell.

05 — Synthesis, Floorplan And Power

Open the black box. Study the first half of the flow.

Resources

Practicals

  • Run yosys alone on the frequency divider. Read the gate level netlist.
  • Use the yosys show command. Look at the mapped gates.
  • Change the core utilisation from 0.4 to 0.7. Rerun. Compare the die area.
  • Change the aspect ratio. See the effect on the floorplan.
  • View the power distribution network in KLayout. Trace one power strap.
  • Break the PDN on purpose. Read the error. Then fix it.

06 — Constraints, Clocks And Timing

Understand setup, hold and the clock tree. This is the bridge to ASIC.

Resources


Loop Back and fix the synthesis timing file

07 — Placement, CTS And Routing

Study the second half of the flow. Watch the design become physical.

Resources

Practicals

  • Open the OpenROAD GUI. Load the design after each stage.
  • Find the clock tree after CTS. Measure the clock skew in the report.
  • Count the buffers that CTS added. Compare with the pre-CTS netlist.
  • Look at the routing congestion heat map. Find the hot region.
  • Force congestion. Set utilisation to 0.85. Read the failure.

08 — Signoff - STA, DRC, LVS And GDS

Prove the layout is correct and manufacturable.

Resources

Practicals

  • Run DRC in Magic and in KLayout. Compare the two reports.
  • Run LVS with Netgen. Read the device count match.
  • Add a deliberate DRC error. Example: make one metal spacing too small. Find it again.
  • Run multi corner STA. Read the slow corner and the fast corner.
  • Export the GDS. Check the layer count and the file size.

Community Job

Build a shared error dictionary. Each new DRC or LVS message goes in the wiki with the fix. This is the highest value community asset.


09 — Tapeout On Real Silicon

Send a design to a real fab. The community gets real chips.

Resources

Practicals

  • Fork the Tiny Tapeout template. Fit your design in one tile.
  • Pass the GitHub Actions checks. They run the full GDS flow.
  • Submit to the open shuttle before the close date.
  • Design the test plan now. You will get the chip many months later.
  • Build the demo board or use the Tiny Tapeout demo PCB.

Design Ladder

Use the same designs across phases. The design gets harder. The flow stays the same.

Design Used in Why it earns a place
Frequency divider Phase 01, 03, 06 Simplest clocked design. Good first FPGA and first GDS.
Serial parallel multiplier (spm) Phase 05 The standard LibreLane example. Small and complete.
4-bit and 8-bit counter Phase 01, 03 Teaches reset style and enable logic.
Shift register and LFSR Phase 01, 03 Teaches sequential structure and pseudo random data.
Synchronous FIFO Phase 02 Teaches pointers, full and empty flags, and self-checking tests.
UART transmit and receive Phase 03 First useful hardware. Connects to a PC terminal.
SPI master Phase 03 Teaches protocol timing and external devices.
Simple ALU Phase 01, 06 Teaches area and timing trade-offs in synthesis.
GCD accelerator Phase 05 The ORFS reference design. Good for flow comparison.
PicoRV32 or Ibex core Phase 06 to 08 A real CPU. Large enough to show congestion and CTS effects.
Tiny Tapeout tile project Phase 09 The final group deliverable.

About

FOSSI (Free open-source silicon) : Groups focus on learning, getting exposure onto EDA tools, fun projects in verticals of algorithms to transistor gates

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors