Analog Spiking Neuron Circuit and 10-bit Digital to Analog Converter - Caravel Submission
Analog Spiking Neuron Circuit
This is the Google/EFabless/Skywater Caravel submission of an Analog Spiking Neuron Circuit. The submission also includes a SONOS transistor array.
The circuit in the original paper is in 130nm technology and has a vdd of 300mV. Skywater pdk is hybrid 180nm/130nm node where the minimum transistor length is 150nm. As a result vdd needs to be higher in order to get the circuit to work properly. In simulation 700mV seems to work well.
| node | pad | node | pad | node | pad | |--------|-------------|-----------|-------------|-------------|-------------| | i_bias | mprj_io | v_buff | mprj_io | vdd | vdda1 | | vad | mprj_io | u_buff | mprj_io | vss | vssa1 | | vr | mprj_io | a_buff | mprj_io | vdd_aux | vdda2 | | vk | mprj_io | axon_buff | mprj_io | | vth | mprj_io | sel | mprj_io | | vw | mprj_io | v_syn | mprj_io | | vau | mprj_io | u_syn | mprj_io | | vsyn0 | mprj_io | a_syn | mprj_io | | vsyn1 | mprj_io | axon_syn | mprj_io | | | | i_in | mprj_io |
Extracted Netlist Simulation
Spiking pattern at v_buff for i_in = 10pA DC
A 2x2 array of nfet sonos cells with transistor sizing 420nmx150nm.
| node | pad | |------|-------------| | WL0 | mprj_io | | WL1 | mprj_io | | BL0 | mprj_io | | SL0 | mprj_io | | BL1 | mprj_io | | SL1 | mprj_io |
10-bit Digital to Analog Converter
The mega project area also contains a 10-bit Potentiometric Digital to Analog Converter built off of Ashutosh Sharma's design. The design uses a 3.3V rail voltage, and 1.8V digital input voltage. The DAC's inputs are controlled by the Caravel harness' built in RISC-V core. Ashutosh Sharma's design used the OSU180 process, for the caravel submission it was ported to the Sky130 process.
The design uses a string of polysilicon resistors in series to create a string DAC. The resistors are connected to digital switches in order to achieve an exact voltage at the output. The device was built through hierarchical sub-circuits and sub-layouts starting off at 2-bit, then 3-bit and so forth, incrementally reaching 10-bit. With a full scale of 3.3 V and a 10 bit resolution.
| Node | Pad | | :------------ | ------------- | | Analog_Out | analog_io | | Digital_In | io_in | | Digital_In | io_in | | Digital_In | io_in | | Digital_In | io_in | | Digital_In | io_in | | Digital_In | io_in | | Digital_In | io_in | | Digital_In | io_in | | Digital_In | io_in | | Digital_In | io_in | | VDD | vdda1 | | Gnd | vssa1 |
Simplified DAC Architecture
String of resistors and switches that make up potentiometric DAC.
Abstracted DAC Block Diagram
Simple block representing all inputs and outputs of DAC.
To setup and install the repo for development:
- Install prerequisite tools:
- Install Magic VLSI Layout Tool
- Note: As of 12/7/2020 you must install Magic from source code. The packaged version will not work with OpenPDKS.
- Install KLayout
- Install SkywaterPDK and OpenPDK using OpenLane
- Clone and Install OpenLane. This will also grab and install SkywaterPDK and OpenPDK for you:
```shell export PDK_ROOT=(where pdks will be installed)
git clone https://github.com/efabless/openlane.git -b mpw-one-a
cd openlane export OPENLANE_ROOT=\$(pwd) make ```
2. Clone and uncompress the repo:
git clone https://github.com/Bryce-Readyhough/caravel_UNCC_MPW_1.git
make uncompress -j\$nproc