mattvenn / instrumented_adder

Instrumenting adders to measure speed
https://zerotoasiccourse.com
Apache License 2.0
13 stars 3 forks source link
adder asic hardware ngspice simulation sky130

Measuring the speed of optimised hardware adders

Teo's work (see below) gives us 4 options for hardware adder to use for ASIC and FPGA design.

hardware adders

The results in the table above are calculated by the OpenLane ASIC flow. We want to put these designs on the next free Google shuttle to validate the timings.

Aim of this project

More about hardware adders

Block diagram

The basic idea is to have a ring oscillator with 3 modes:

In this way we can first measure the ring period, then see how it changes for each bit of the adders.

instrumented adder

The netnames, inputs and outputs in this diagram (should) match the Verilog source.

Digital simulation

trace

Trace shows the results of running the cocotb test.

To run the digital sim, type make test_adder

Analog simulations

Shows the stop_b and ring_osc_out traces. These traces are to get an idea on the frequency of the ring oscillator loop with and without the adder.

The following show just for the behavioral adder. To check the other adders, look in the spice directory.

Bypass loop - fastest

control

run make analog_bypass

Control loop - adds 4 more inverters to the ring osc

control

run make analog_control

Adder loop - slowest

control

run make analog_adder

Hardening with OpenLane (and create spice files)

adder gds

Prerequisites

TODO (PRs welcome!)

Log of work in progress.

Zero to ASIC Course

This project was made as part of the Zero to ASIC Course!

License

This project is licensed under Apache 2