Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
amc:start [2019/05/08 10:37]
samira [AMC Copyright Notice]
amc:start [2020/12/02 01:00] (current)
Line 30: Line 30:
  
  
-In //example_config.py//  file you can specify the following parameters:+In //example_config.py//  file you can specify the following parameters: (//example_config_scn3me_subm.py// is included in git repo for 0.5um technology)
  
 <code> <code>
Line 51: Line 51:
 # Bank orientations (orientation of inner-banks and outer-banks).  # Bank orientations (orientation of inner-banks and outer-banks). 
 # Acceptable tuple values are (("H", "H"), (("V", "H"), (("H", "V"), or (("V", "V") # Acceptable tuple values are (("H", "H"), (("V", "H"), (("H", "V"), or (("V", "V")
-bank_orientation = ("V", "H")+bank_orientations = ("V", "H")
  
 # Output directory for the results.  # Output directory for the results. 
Line 57: Line 57:
  
 # Output file name # Output file name
-output_name = "AMC_sram"+name = "AMC_sram"
  
 # Specify the technology name. Default is "scn3me_subm" for SCMOS 0.5um # Specify the technology name. Default is "scn3me_subm" for SCMOS 0.5um
Line 68: Line 68:
  
 # Voltage corners to characterize # Voltage corners to characterize
-supply_voltages = [ 5.0, 4.5 ]+supply_voltages = [5.0, 4.5]
  
 # Temperature corners to characterize # Temperature corners to characterize
-temperatures = [ 25, 125 ]+temperatures = [25, 125]
  
 </code> </code>
Line 79: Line 79:
 Some optional arguments to run the ''AMC'' are: Some optional arguments to run the ''AMC'' are:
  
-   * -t or --tech to define the technology name+   * -o or --output to specify the output file name prefix 
 +   * -t or --tech to specify the technology name
    * -c or --characterize to disable the characterization    * -c or --characterize to disable the characterization
    * -n or --nocheck to disable inline DRC/LVS checks    * -n or --nocheck to disable inline DRC/LVS checks
    * -d or --dontpurge for not purging the content of temporary directory after a successful run    * -d or --dontpurge for not purging the content of temporary directory after a successful run
 +   * -v or --verbose to increase the verbosity level
 +   * -h or --help to show the help message
  
 ''AMC'' puts all output files in a temporary directory (the path of temporary directory is shown in the banner). If ''AMC'' passes, files in temporary directory are deleted. If you don't want to purge the content of temporary directory use //-d// or //--dontpurge//. If it fails, first thing to check is the standard output and error output from DRC/LVC which are .out and .err files in temporary directory. Any problem with your ''Calibre'' setup will be shown in either of those files. In case DRC or LVS fails, then you need to check either doc.result or las.result files. You need a layout viewer to debug DRC/LVS errors. You can use any of the following layout viewers:   ''AMC'' puts all output files in a temporary directory (the path of temporary directory is shown in the banner). If ''AMC'' passes, files in temporary directory are deleted. If you don't want to purge the content of temporary directory use //-d// or //--dontpurge//. If it fails, first thing to check is the standard output and error output from DRC/LVC which are .out and .err files in temporary directory. Any problem with your ''Calibre'' setup will be shown in either of those files. In case DRC or LVS fails, then you need to check either doc.result or las.result files. You need a layout viewer to debug DRC/LVS errors. You can use any of the following layout viewers:  
Line 88: Line 91:
    * [[http://www.peardrop.co.uk/glade/]]    * [[http://www.peardrop.co.uk/glade/]]
  
-Also, you can use ''Calibre DESIGNrev'', ''Magic'' ([[http://opencircuitdesign.com | Magic]]) or ''Cadence Virtuoso'' to stream the output GDS file for debugging. +Also, you can use ''Calibre DESIGNrev'', ''Magic'' ([[http://opencircuitdesign.com/magic/index.html | Magic]]) or ''Cadence Virtuoso'' to stream the output GDS file for debugging. 
  
 To report a bug please submit it to:  To report a bug please submit it to: 
Line 95: Line 98:
 If you are interested in submitting a fix or adding a new feature to ''AMC'' use: If you are interested in submitting a fix or adding a new feature to ''AMC'' use:
    * [[https://github.com/asyncvlsi/AMC/pulls]]    * [[https://github.com/asyncvlsi/AMC/pulls]]
- 
 ====== AMC Dependencies ====== ====== AMC Dependencies ======
  
Line 108: Line 110:
 ''AMC'' has two main directory: ''AMC'' has two main directory:
     ***compiler:** where you can find the source code of compiler itself     ***compiler:** where you can find the source code of compiler itself
-    ***technology:** where you can find the technology information for SCMOS 0.um technology.+    ***technology:** where you can find the technology information for SCMOS 0.5um technology.
  
 compiler directory contains following sub-directories: compiler directory contains following sub-directories:
     ***base:** contain base data structure modules and base utility functions     ***base:** contain base data structure modules and base utility functions
     ***characterizer:** contains the functional verification and timing/power charazterization codes.     ***characterizer:** contains the functional verification and timing/power charazterization codes.
-    ***gdsMill:** GDSII file format reader and writer. You can learn more about gdsMill here [[http://michaelwieckowski.com/wp-content/uploads/2012/01/GdsMillUserManual.pdf | gdsMill]] +    ***gdsMill:** GDSII file format reader and writer. You can learn more about gdsMill here[[http://michaelwieckowski.com/wp-content/uploads/2012/01/GdsMillUserManual.pdf | gdsMill]] 
-    ***modules:**modules and submodules of SRAM architecture +    ***modules:** modules and submodules of SRAM architecture 
-    ***tests:**unit tests, there is a unit test for each module.+    ***tests:** unit tests, there is a unit test for each module.
  
 technology directory contains the following sub-directories: technology directory contains the following sub-directories:
-    ***setup_scripts:** you need to add a setup script for each technology node that you port the compiler to. Check the //setup_AMC_scn3me_sumb.py// as an example.The correct format for setup file name is:  +    ***setup_scripts:** you need to add a setup script for each technology node that you port the compiler to. Check the //setup_AMC_scn3me_sumb.py// as an example.The correct format for setup file name is: ''setup_AMC_techname.py'' 
-     <code> +
-     setup_AMC_techname.py +
-     </code>   +
     ***scn3me_subm:** contains all the technology information needed by ''AMC'' to generate/characterize the circuits in SCMOS 0.5um technology node:     ***scn3me_subm:** contains all the technology information needed by ''AMC'' to generate/characterize the circuits in SCMOS 0.5um technology node:
-        ***gds_lib:** contains the custom library cells +        ***gds_lib:** contains the GDS layout of custom library cells 
         ***sp_lib:** contains the SPICE netlist for the custom cells         ***sp_lib:** contains the SPICE netlist for the custom cells
         ***models:** contains the transistor models for different process corners         ***models:** contains the transistor models for different process corners
Line 158: Line 157:
     * test.sp: HSIM deck containing all the HSIM parameters used in simulation     * test.sp: HSIM deck containing all the HSIM parameters used in simulation
     * test.v: Verilog test-bench     * test.v: Verilog test-bench
-    * source.v: input-vector pattern generation for data, address and controls+    * source.v: input-vector pattern generator for data, address and controls
     * cosim.cfg: SPICE-Verilog co-simulation setup file.      * cosim.cfg: SPICE-Verilog co-simulation setup file. 
     * Makefile     * Makefile
  
-Different random input vector patterns can be generated for simulation simply by modifying the //source.v// file. AMC runs the simulation at batch mode. If simulation fails, first thing to check is the standard output and error output from spice which are //spice_stderr.log// and //spice_stdout.log// files in temporary directory. Any problem with your SPICE setup will be shown in either of those files. A successful simulation generates the following files (some of these files are generated when simulation is complete):+Different random input vector patterns can be generated simply by modifying the //source.v// file. AMC runs the simulation at batch mode. If simulation fails, first thing to check is the standard output and error output from spice which are //spice_stderr.log// and //spice_stdout.log// files in temporary directory. Any problem with your SPICE setup will be shown in either of those files. A successful simulation generates the following files (some of these files are generated when simulation is complete):
    
     * hsim.fsdb: Cscope/Custom WaveView compatible trace file     * hsim.fsdb: Cscope/Custom WaveView compatible trace file
Line 177: Line 176:
 **Hint:** **Hint:**
  
-AMC characterization relies on SPICE simulations and for large SRAM arrays, characterization is slow. To reduce the characterization time you can trim the SPICE netlist using //AMC/compiler/characterizer/trim_spice.py// file. By timing the SPICE netlist, portions of SRAM array that are not active during read/write operation will be removed. Trimed netlists can be used for delay calculations. Do **NOT** use trimed netlist for LVS verification or leakage/energy measurement.+AMC characterization relies on SPICE simulations and for large SRAM arrays, characterization is slow. To reduce the characterization time you can trim the SPICE netlist using //AMC/compiler/characterizer/trim_spice.py// file. By timing the SPICE netlist, portions of SRAM array that are not critical during read/write operation will be removed. Trimed netlists can be used for delay calculations. **DO NOT** use trimed netlist for LVS verification or leakage/energy measurement.
 ====== AMC Copyright Notice ====== ====== AMC Copyright Notice ======
  
-''AMC'' is licensed under GNU General Public License v2.0 ([[https://github.com/asyncvlsi/AMC/blob/master/LICENSE | LICENSE]]). AMC project originated from the OpenRAM code ([[https://github.com/VLSIDA/OpenRAM |OpenRAM]]) version 7b5791b from May 9, 2018, developed by Matthew Guthaus from UC Santa Cruz VLSIDA group as the lead architect and also contributed to by Samira Ataei. AMC developers have made a large number of changes that have to do with changing the memory interface circuits, supporting modern design rules and thin-cell SRAM layout, new partitioning and floorplanning, and different timing and characterization methodology. The organization of the code base mirrors the OpenRAM version 7b5791b. As OpenRAM is under BSD 3-Clause License, portions of code that are derived from OpenRAM remain under BSD license [[https://github.com/asyncvlsi/AMC/blob/master/LICENSE.OR | LICENSE.OR]].+''AMC'' is licensed under GNU General Public License v2.0 ([[https://github.com/asyncvlsi/AMC/blob/master/LICENSE | LICENSE]]). AMC project originated from the OpenRAM code ([[https://github.com/VLSIDA/OpenRAM |OpenRAM]]) version 7b5791b from May 9, 2018, developed by Matthew Guthaus from UC Santa Cruz VLSIDA group as the lead architect and also contributed to by Samira Ataei. AMC developers have made a large number of changes that have to do with changing the memory interface circuits, supporting modern design rules and thin-cell SRAM layout, new partitioning and floorplanning, and different timing and characterization methodology. The organization of the code base mirrors the OpenRAM version 7b5791b. As OpenRAM is under BSD 3-Clause License, portions of code that are derived from OpenRAM remain under BSD license ([[https://github.com/asyncvlsi/AMC/blob/master/LICENSE.OR | LICENSE.OR]]).