Coder Social home page Coder Social logo

vlsida / openram_testchip Goto Github PK

View Code? Open in Web Editor NEW

This project forked from efabless/caravel_user_project

10.0 2.0 3.0 1.22 GB

https://caravel-user-project.readthedocs.io

License: Apache License 2.0

Tcl 0.01% Makefile 0.02% C 0.05% Verilog 99.92% Shell 0.01%

openram_testchip's Introduction

Caravel User Project

License UPRJ_CI Caravel Build

โ— 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 SRAM0
  • sky130_sram_1kbyte_1rw1r_32x256_8 SRAM1
  • sram_2kbyte_32b_2bank SRAM2 (2 x sky130_sram_1kbyte_1rw1r_32x256_8)
  • sky130_sram_2kbyte_1rw1r_32x512_8 SRAM3
  • sky130_sram_4kbyte_1rw1r_32x1024_8 SRAM4
  • sky130_sram_2kbyte_1rw1r_32x512_8 SRAM5
  • sky130_sram_4kbyte_1rw1r_32x1024_8 SRAM6
  • sky130_sram_1kbyte_1rw_32x256_8 SRAM8
  • sky130_sram_2kbyte_1rw_32x512_8 SRAM9
  • sky130_sram_2kbyte_1rw_32x512_8 SRAM10

Test Modes

There are three test modes available. Each one inputs a packet that configures the read and write operations of a particular SRAM. The GPIO pin io_in[14] determines whether to use Wishbone mode (1) or GPIO/LA mode (0). Furthermore, io_in[23] and io_in[16] determines the clock the design runs on.

{io_in[23], io_in[16]}
2'b00 : clock is provided through LA (la test mode)
2'b01 : clock is provided through io_in[17] (gpio test mode)
2'b10 : clock is provided through wb_clk_i (wishbone test mode)

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[14] = 0 // selects the testing mode to be gpio
  • Clock select: clk_select {io_in[23], io[16]} = 2'b01 // makes sure the clk goes through the io_in[17]
  • 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.

  • Test mode select: in_select io_in[14] = 0 // selects the testing mode to be gpio
  • Clock select: clk_select {io_in[23], io[16]} = 2'b00 // makes sure the clk goes through the la_data_in[127]
  • 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: la_global_cs la_data_in[123]

Wishbone Mode (WIP)

The wishbone mode currently tests the single port memories. The wishbone interface is used to provide data packet to the memories based on the address map of each memory.

  • Test mode select: in_select io_in[14] = 1 // selects the testing mode to be wishbone
  • Clock select: clk_select {io_in[23], io[16]} = 2'b00 // makes sure the clk goes through the wb_clk_i
  • CSB for all SRAM: based on the wbs_cyc_i, wbs_stb_i and wbs_adr_i.
  • Data for all SRAM: wbs_dat_i
  • Write enable for all SRAM: wbs_we_i

Authors

Muhammad Hadir Khan [email protected] Jesse Cirimeli-Low [email protected] Amogh Lonkar [email protected] Bugra Onal [email protected] Samuel Crow [email protected] Matthew Guthaus [email protected]

openram_testchip's People

Contributors

a-omla avatar agorararmard avatar amoghlonkar avatar ax3ghazy avatar donn avatar hadirkhan10 avatar jcirimel avatar jeffdi avatar kareefardi avatar manarabdelaty avatar marwaneltoukhy avatar mattvenn avatar mguthaus avatar mkkassem avatar rtimothyedwards avatar russellfriesenhahn avatar shalan avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.