# Caravel User Project

[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) [![UPRJ_CI](https://github.com/efabless/caravel_project_example/actions/workflows/user_project_ci.yml/badge.svg)](https://github.com/efabless/caravel_project_example/actions/workflows/user_project_ci.yml) [![Caravel Build](https://github.com/efabless/caravel_project_example/actions/workflows/caravel_build.yml/badge.svg)](https://github.com/efabless/caravel_project_example/actions/workflows/caravel_build.yml)

| :exclamation: Important Note            |
|-----------------------------------------|

# Overview

This project contains a test chip for several OpenRAM memory configurations. The
configurations have varying levels of verification. In particular, it has these sizes:
* sky130_sram_1kbyte_1rw1r_8x1024_8
* sky130_sram_1kbyte_1rw1r_32x256_8
* sky130_sram_2kbyte_1rw1r_32x512_8
* sky130_sram_4kbyte_1rw1r_32x1024_8
* sky130_sram_8kbyte_1rw1r_32x2048_8
* sky130_sram_1kbyte_1rw_32x256_8
* sky130_sram_2kbyte_1rw_32x512_8
* sky130_sram_4kbyte_1rw_32x1024_8
* sky130_sram_4kbyte_1rw_32x512_8
* sky130_sram_8kbyte_1rw_64x1024_8

# Test Modes

There are two test modes available. Each one inputs an packet that
configures the read and write operations of a particular SRAM. The
GPIO pin io_in[16] determines whether to use GPIO (1) or LA mode (0).

## Test Packet

The test packet is a 112-bit value that has the follow signals and bit size:
* chip_select (4)
* addr0 (16)
* din0 (32)
* csb0 (1)
* web0 (1)
* wmask0 (1)
* addr1 (16)
* din1 (32)
* csb1 (1)
* web1 (1)
* wmask1 (4)

During a read operation, the din bits are replaced with the data
output bits so that they can be verified.

Note: The 64-bit memory leaves the middle 32-bits as a value of 0 and
instead reads/writes the upper and lower 16-bits to reduce the number
of packet bits.

## GPIO Mode

In GPIO mode, the test packet is scanned in/out with the GPIO pins in 112 cycles. The
GPIO pins used are as follows:
* Test mode select: in_select io_in[16]
* Scan reset: resetn: io_in[15]
* Scan clock: gpio_clk io_in[17]
* Scan enable: gpio_scan io_in[19]
* Load SRAM result into register: gpio_sram_load io_in[20]
* CSB for all SRAM: global_csb io_in[21]
* Scan input: gpio_in io_in[22]
* Scan output: gpio_out io_out[22]


## LA Mode

In LA mode, the test packet is directly written from the output of the 128-bit LA.
The top bits of the LA register are used for the control signals during test:
* Control register clock: la_clk la_data_in[127]
* Load control register: la_in_load la_data_in[125]
* Load SRAM result into register: la_sram_load la_data_in[124]
* CSB for all SRAM: ??

# Authors

Jesse Cirimeli-Low <jcirimel@ucsc.edu>
Amogh Lonkar <alonkar@ucsc.edu>
Matthew Guthaus <mrg@ucsc.edu>
