StanfordAHA / garnet

Next generation CGRA generator
BSD 3-Clause "New" or "Revised" License
106 stars 11 forks source link

Inconsistent sram-cell lists in tapeout scripts #346

Open steveri opened 5 years ago

steveri commented 5 years ago

Inconsistent lists in the various tapeout scripts cause problems, see e.g. issue https://github.com/StanfordAHA/garnet/issues/345

Here are some examples of the inconsistencies that occur (examples taken from current branch "tapeout")

synthesize.tcl (four sram cells):
set_attr library [list \
  /sim/ajcars/mc/ts1n16ffcllsblvtc512x16m8s_130a/NLDM/...
  /sim/ajcars/mc/ts1n16ffcllsblvtc256x32m4sw_130a/NLDM/...
  /sim/ajcars/mc/ts1n16ffcllsblvtc256x32m8sw_130a/NLDM/...
  /sim/ajcars/mc/ts1n16ffcllsblvtc2048x32m8sw_130a/NLDM/...
  /sim/ajcars/mc/ts1n16ffcllsblvtc2048x64m8sw_130a/NLDM/...
] 
layout_Tile.tcl (one sram cell):
set lef_file [
    /sim/ajcars/mc/ts1n16ffcllsblvtc512x16m8s_130a/...
]
mmmc.tcl (three sram cells):
create_library_set -name ss_0p72_m40c_lib_set -timing [list \
    /sim/ajcars/mc/ts1n16ffcllsblvtc512x16m8s_130a/...
    /sim/ajcars/mc/ts1n16ffcllsblvtc2048x32m8sw_130a/...
    /sim/ajcars/mc/ts1n16ffcllsblvtc2048x64m8sw_130a/...
]

Similar lists exist in many other scripts as well:

% cd garnet/tapeout_16/scripts
% grep ts1n *.tcl | sed 's/:.*//' | uniq
    init_design_multi_vt.tcl
    init_design.tcl
    just_seal_ring.tcl
    layout_Tile_MemCore.tcl
    layout_Tile.tcl
    mmmc.tcl
    mmmc.top.tcl
    mmode.tcl
    pad_frame.tcl
    pads.tcl
    stream_func.tcl
    stream_out.tcl
    synthesize.tcl
    synthesize_top.tcl
    tile_grid.tcl
    viewDefinition_multi_vt.tcl
    viewDefinition.tcl

How do we keep all these sram-cell lists correct/consistent?

steveri commented 5 years ago

Alex's suggestion, which I copied from issue 345:

Also, in terms of maintaining consistency between P&R and synthesis scripts. We should probably refactor the scripts to read all technology libraries from a single file. This will make the scripts easier to maintain, make technology migration easier, and make it easier to add new libraries when needed.

EDIT: I agree that we should be able to generate things on-demand in the long term though.