Skip to content

SoCGen is a tool that automates SoC design by taking in a JSON description of the system and producing the final GDS-II. SoCGen supports AMBA AHB and APB.

License

Notifications You must be signed in to change notification settings

habibagamal/SoC_Automation

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

91 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SoCGen

A truly no man in the loop SoC generator.

SoCGen automates SoC design through taking JSON input and generating verilog HDL for the SoC. We're working on the integration with OpenLane to generate the final GDS2.
Currently we support AMBA AHB-Lite for the high-speed (main) bus and APB for the low speed peripherals bus.

Getting Started

This instruction will get you a copy of the project up and running on your local machine for development and testing purposes.

% git clone https://github.com/habibagamal/SoC_automation

If you need help with how to run the program

% node ./src/sys_gen.js -help 

To generate the full SoC .v files

% node ./src/sys_gen.js -soc <soc.json> -mastersLib <masters_lib.json> -IPlib <ip_lib.json> -subsystem <subsystem.json> -outDir <output directory> 
  • Omit any fields you don't need in the above command.
  • If there are no subsystems or real masters, you can ommit "-subsystem <subsystem.json>" or "-mastersLib <masters_lib.json>", respectively, from the command.
  • You can use this shell script to run SoCGen, run iverilog, then open scansion waveform viewer

Expected input

For instructions on how to write the JSON file for:

Directory structure

  • systems: contains soc examples
  • IPs: contains JSON for IPs library and verilog files for open-source IPs
  • masters: contains JSON for masters library and master-related files
  • src: contains source code
  • JSON_format_doc: contains documentation for JSON format
  • Images: contains images used in README

Memory Address Sketch

For AHB

For APB

  • The page field is used as the base address of buses, AHB slaves and subsystems.
  • The subpage field is used as the base address of slaves on APB
  • The peripherial field is used as the slave's register offset

Currently supported features

  • Having multiple masters (tested on dummy masters)
  • Having multiple buses connected to the same master
  • Having multiple APBs on the same AHB
  • Using created and open source verification IPs for testing
  • Using IPs that are not APB or AHB compatible
  • Having soft IPs and hard IPs
  • Having I/O pads library that is not technology specific (for behavioral simulation)
  • Specify the placement levels of external components (testbench or soc_core)
  • Auto-generating self-checking testbench
  • Generating hierarchicial testbenches

Flow

System Block Diagram

This diagram represents this example

Go here to download Arm Cortex M0, M3 files

Used Projects

  • Arbiter taken from here

To-do

  • Datasheet generation

References

  • Check this poster and video presented in DAC 2020 Young Fellowship Program about the project
  • Check this presentation, slides and paper presented in Workshop on Open-source EDA Technology (WOSET) 2020 collocated with International Conference on Computer Aided Design (ICCAD) 2020

Authors

About

SoCGen is a tool that automates SoC design by taking in a JSON description of the system and producing the final GDS-II. SoCGen supports AMBA AHB and APB.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages