In this project, we provide a Chisel generator for SDRAM controllers. Users will supply a .json representation
of their targetted SDRAM's datasheet to provide timing values and other parameters such as address bus size and
frequency. Templates are provided in the templates
directory and provides more information on .json file formatting.
To use this generator follow the steps below:
Clone the repo:
git clone https://github.com/gmejiamtz/sdram_controller_generator.git
Supply your config.json file and provide the generator its path to generate SDRAMController.v:
cd sdram_controller_gen
sbt "run $PATH_TO_CONFIG_FILE"
To test simply do the following commands:
cd sdram_controller_gen
sbt test
Tests at the moment only test for initialization of an MT48LC1M16A1 Micron SDRAM. More will be added soon!
Targetting Micron MT48LC1M16A1 SDRAM - 512K x 16 x 2 banks
-
Build SDRAM controller state machine - In Progress - Init and Read(CAS of 1,2, and 3) States are verified, Write State in current testing
-
Build SDRAM controller model - In Progress - Mostly complete, needs more rigorous testing, proper decay parameterization
-
Generate tests for MT48LC1M16A1 controller - In Progress - Analog Connection posing issues with ChiselTest thus need to write Verilog Testbenches by hand and use Verilator and Icarus-Verilog for simulations
-
Build Main program to generate Verilog - Parsing is done, need to rewrite Parameter case class to take in Map of String to Int
The following tools were used in this project:
This project is under license from MIT. For more details, see the LICENSE file.
Made by Gary Mejia and Joaquin Ortiz for CSE 228A - Agile Hardware Design