tree: 26e6224fa5be2cb4ffa52a272d8f6b8e1a62b525 [path history] [tgz]
  1. .travisCI/
  2. def/
  3. docs/
  4. gds/
  5. lef/
  6. macros/
  7. mag/
  8. maglef/
  9. ngspice/
  10. openlane/
  11. qflow/
  12. scripts/
  13. signoff/
  14. spi/
  15. utils/
  16. verilog/
  17. .travis.yml
  18. info.yaml
  19. LICENSE
  20. Makefile
  21. Makefile.master
  22. manifest
  23. mpw-one-b.md
  24. README.md
README.md

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.

Neuron circuit

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.

Pinout

nodepadnodepadnodepad
i_biasmprj_io[13]v_buffmprj_io[22]vddvdda1
vadmprj_io[14]u_buffmprj_io[23]vssvssa1
vrmprj_io[15]a_buffmprj_io[24]vdd_auxvdda2
vkmprj_io[16]axon_buffmprj_io[25]
vthmprj_io[17]selmprj_io[26]
vwmprj_io[18]v_synmprj_io[27]
vaumprj_io[19]u_synmprj_io[28]
vsyn0mprj_io[20]a_synmprj_io[29]
vsyn1mprj_io[21]axon_synmprj_io[30]
i_inmprj_io[31]

Extracted Netlist Simulation

Spiking pattern at v_buff for i_in = 10pA DC

SONOS array

A 2x2 array of nfet sonos cells with transistor sizing 420nmx150nm.

Pinout

nodepad
WL0mprj_io[7]
WL1mprj_io[8]
BL0mprj_io[9]
SL0mprj_io[10]
BL1mprj_io[11]
SL1mprj_io[12]

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.

Pinout

NodePad
Analog_Outanalog_io[25]
Digital_In[0]io_in[0]
Digital_In[1]io_in[1]
Digital_In[2]io_in[2]
Digital_In[3]io_in[3]
Digital_In[4]io_in[4]
Digital_In[5]io_in[5]
Digital_In[6]io_in[6]
Digital_In[7]io_in[7]
Digital_In[8]io_in[8]
Digital_In[9]io_in[9]
VDDvdda1
Gndvssa1

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.

Installation

To setup and install the repo for development:

  1. Install prerequisite tools:
    1. 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.
    2. Install KLayout
    3. Install SkywaterPDK and OpenPDK using OpenLane
      1. Clone and Install OpenLane. This will also grab and install SkywaterPDK and OpenPDK for you:
export PDK_ROOT=(where pdks will be installed)

cd $PDK_ROOT

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