Skip to content

Latest commit

 

History

History
99 lines (73 loc) · 3.02 KB

basic_rom_usage.md

File metadata and controls

99 lines (73 loc) · 3.02 KB

Basic Usage

This page of the documentation explains the basic usage of OpenRAM's ROM compiler (OpenROM). For usage of the RAM compiler see here

Table of Contents

  1. Environment Variable Setup
  2. Command Line Usage
  3. Script Usage
  4. Configuration Files
  5. Common Configuration File Options
  6. Output Files

Environment Variable Setup (assuming bash)

Environment configuration is the same as described in basic SRAM usage

Accepted Data formats

OpenROM currently supports input data formatted as a binary file or a text file of hexadecimal-encoded data. For hexadecimal data, the input file must contain a single line of hexadecimal text. The data in any input file will be written the ROM in the order it appears in the input file, ie. the first bit in the input will be written to address 0.

Command Line Usage

Once you have defined the environment, you can run OpenROM from the command line using a single configuration file written in Python. You can then run OpenROM by executing:

python3 $OPENRAM_HOME/../rom_compiler.py myconfig

You can see all of the options for the configuration file in $OPENRAM_HOME/options.py

To run macros, it is suggested to use, for example:

cd OpenRAM/macros/rom_configs
make sky130_rom_1kbyte
  • Common arguments:
    • -h print all arguments
    • -t specify technology (currently only sky130 is supported)
    • -v increase verbosity of output
    • -n don't run DRC/LVS
    • -d don't purge /tmp directory contents

Configuration Files

  • Shares some configuration options with SRAM compiler.
  • Complete configuration options are in $OPENRAM_HOME/options.py
  • Some options can be specified on the command line as well
    • Not recommended for replicating results
  • Example configuration file:
    # Data word size
    word_size = 2
    
    # Enable LVS/DRC checking
    check_lvsdrc = True
    
    # Path to input data. Either binary file or hex.
    rom_data = "data_1kbyte.bin"
    # Format type of input data
    data_type = "bin"
    
    # Technology to use in $OPENRAM_TECH, currently only sky130 is supported
    tech_name = "sky130"
    
    # Output directory for the results
    output_path = "temp"
    # Output file base name
    output_name = "rom_1kbyte"
    
    # Only nominal process corner generation is currently supported
    nominal_corner_only = True
    
    # Add a supply ring to the generated layout
    route_supplies = "ring"

Output Files

The output files are placed in the output_dir defined in the configuration file.

The base name is specified by output_name and suffixes are added. Currently only layout and schematic files are generated.

The final results files are:

  • GDS (.gds)
  • SPICE (.sp)
  • Log (.log)
  • Configuration (.py) for replication of creation