-
Notifications
You must be signed in to change notification settings - Fork 1
License
Purdue-SoCET/AFTx05_Public
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
-------------------------------- Purpose of This Repository: -------------------------------- This is the Purdue University SoCET Team's AFTx05_Public SoC which was taped out with the December 2019 MIT Lincoln Labs 90nm PDK. Both the source and design flow scripts used for this chip are included in this repository. The aim of publishing this open-source design is to: 1. Provide an example for other teams working on SoC/ VLSI development (especially with a RISCV processor) 2. Provide insight to what the SoCET Team is working on/ capable of. If you have any suggestions for how we can improve components in our design, or you would like to work on a project with us, please feel free to get in touch with Dr. Mark C. Johnson ([email protected]). ------------------------------------------ About the MIT Lincoln Labs 90nm FDSOI PDK: ------------------------------------------ The PDK version used to tapeout AFTx05_Public was the MITLL_90_Dec2019 revision released on 2019.12.20. To recieve a MITLL PDK, please email the technical contact listed below. We encourage people with new to using EDA tools to obtain the same PDK version listed below, since it is the most compatible with the design flow scripts included in this repository. *** YOU WILL NOT BE ABLE TO TAPEOUT A DESIGN USING AN OUT-OF-DATE PDK ***. The most compatible version listed is to only be used for EDA practice. Please request the latest PDK version from the technical contact if you would like to tapeout a design!! * Version of PDK used for AFTx05_Public: MITLL_90_Dec2019: MITLL90_STDLIB_8T (2019.12.20) MITLL90_IOPads_5_1_1 (2020.01.27) * MITLL website: https://www.ll.mit.edu/about/facilities/microelectronics-laboratory * CMOS brochure: https://www.ll.mit.edu/sites/default/files/facility/doc/2020-02/GOMAC_spotlight_CMOS_2020.pdf * Technical Contact: Pascale Gouker ([email protected]) -------------------------------- Directory Structure of AFTx05_Public: -------------------------------- makefile - Used for simulation, try "make sim_source" README.txt - The file you are currently reading The 'include' subdirectories contain the header (.vh) files The 'src' subdirectories contain systemVerilog (.sv) and verilog (.v) files The 'tb' subdirectories contain the testbench files 1) amba_common (Contains the header files for both AHB and APB) 2) ahb (Contains both the ahb files, as well as the ahb-apb bridge files) 1.a) ahb_interconnect 1.b) apb_bridge 1.c) bus_mux 1.d) common 1.e) frbm 1.f) scripts 1.g) slave 3) apb (Contains the apb peripheral files) 3.a) gpio (A general purpose input/ output with adjustable number of pins) 3.b) polymorphic_crc (A crc32 generator with configurable crc polynomial) 3.c) pwm (A pulse width modulator with adjustable number of channels) 3.d) timer (A timer with adjustable number of channels) 4) RISCVBusiness (Contains files for the single core, 2 stage, sparcity optimized RISCV processor, which is the first AHB master) 5) uart_debugger (Files for the UART, which is the second AHB master) 6) sram_controller (Contains files for the sram_controller, offchip_sram_controller, ROM, and flip-flop emulated RAM) 7) top_level (Contains files for top_level_bASIC, the top module in the design's hiearchy) 8) waveform_scripts (Scripts to send important signals to the waveform window automatically) 9) design_flow_scripts (Contains scripts to synthesize, place-and-route, and perform logic equivalency checks) 9.a) syn (Contains scripts to synthesize, try executing run_syn.sh) 9.a.i) run_syn.sh (Script to run synthesis) 9.a.ii) out (Where the generate mapped netlist will be) 9.a.iii) logs (Contains generated log files for each stage of synthesis) 9.a.iv) lec (Contains files for logic equivalency checks) 9.a.v) run (Contains generated database files for each stage of synthesis) 9.a.vi) fv (Contains generated LEC related databases) 9.a.vii) scripts (Contains scripts for synthesis) 9.a.vii.1) setup.tcl (Sets global variables the other scripts use) 9.a.vii.2) make_syn.tcl (The main synthesis script) 9.a.vii.3) top_level_bASIC.sdc (Sets the timing constraints and clock frequency) 9.a.vii.4) dft.tcl (Inserts the scan chains and verifies them as well) 9.a.vii.5) mmmc.tcl (Loads in the analysis views from the MITLL liberty file) 9.b) level2chip.sh (Transfers the mapped netlist to the pnr/prePnR_netlist directory and adds verilog for IO pads) 9c) pnr (Contains scripts for place-and-route, LEC, and ATPG) 9.b.i) pnr.tcl (Script that place and routes pnr/prePnR_netlist/top_chip.v) 9.b.ii) clean.sh (Script to clean out generated innovus files) 9.b.iii) fix_pnr_netlist.sh (Script to make the post-PnR netlist simulate-able) 9.b.vi) out (Where the generated place and route files will be) 9.b.v) prePnR_netlist (Where the IO pad verilog and netlist to be place-and-routed will be) 9.b.vi) timingReports (Chere the innovus timing reports will be generated) 9.b.vii) ATPG (Contains script for automatic test pattern generation) 9.b.viii) scripts (Contains the pnr scripts) 9.b.viii.1) top_chip.io (Assigns IO pad placement) 9.b.viii.2) top_chip.sdc (Determines timing constraints and clock frequency) 9.b.viii.3) mmmc_AFTx05_Public_chip.view (Loads in the analysis views from the MITLL liberty file) 9.b.viii.4) ro_hope.lef (Describes the shaped of the analog ring oscillator) 9.b.viii.5) polymorphic.lef (Describes the shape of the polymorphic standard cells) ----------------------------------- Versions of Cadence Software Used: ----------------------------------- Incisive 15.2 Genus 18.1 Innovus 18.1 Conformal 18.1 Modus 18.1 -------------------------------- How to simulate RTL source design: -------------------------------- 1. Navigate to AFTx05_Public/ 2. On the command line, execute 'make sim_source' ---------------------------------- How to synthesize a mapped netlist: ---------------------------------- 1. Navigate to AFTx05_Public/design_flow_scripts/syn/ 2. Modify AFTx05_Public/design_flow_scripts/syn/scripts/setup.tcl to point to the correct PDK locations 3. On the command line, execute './run_syn.sh' 4. The generated mapped netlist will be AFTx05_Public/design_flow_scripts/syn/out/top_level_bASIC/top_level_bASIC.v ---------------------------------- How to simulate the mapped design: ---------------------------------- 1. Navigate to AFTx05_Public/ 2. On the command line, execute 'make sim_mapped' ----------------------------------------------------------------------------- How to perform logical equivalence check (LEC) for mapped netlist: ----------------------------------------------------------------------------- 1. Navigate to AFTx05_Public/design_flow_scripts/syn/lec/ 2. On the command line, execute './fix_dofiles.sh' 3. Navigate to AFTx05_Public/design_flow_scripts/syn/lec/rtl2mapped/ 4. On the command line, execute './rtl2mapped.sh' 5. Check for Nonequivalencies 6. Navigate to AFTx05_Public/design_flow_scripts/syn/lec/mapped2final/ 7. On the command line, execute './mapped2final.sh' 8. Check for Nonequivalencies 9. Navigate to AFTx05_Public/design_flow_scripts/syn/lec/rtl2final/ 10. On the command line, execute './rtl2final.sh' 11. Check for Nonequivalencies ----------------------------------------------- How to place and route (PnR) the mapped design: ----------------------------------------------- 1. Navigate to AFTx05_Public/design_flow_scripts/ 2. On the command line, execute './level2chip.sh' 3. Navigate to AFTx05_Public/design_flow_scripts/pnr/ 4. Modify the top of AFTx05_Public/design_flow_scripts/pnr/pnr.tcl to point to the correct PDK locations 5. On the command line, execute 'innovus' 6. Within the Innovus CIW, execute 'source pnr.tcl' 7. The generated files will be located at AFTx05_Public/design_flow_scripts/pnr/out/
About
No description, website, or topics provided.
Resources
License
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published