You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Describe the bug
SupplyRouter fails to route some signals (typically VDD) for certain memory configurations.
[openram.router.supply_router/route]: Running router for vdd and gnd...
ERROR: file supply_router.py: line 84: Couldn't route from (vdd layer=m3 ll=v[191.795,-55.435] ur=v[192.285,-54.945]) to (vdd layer=m3 ll=v[191.635,-44.165] ur=v[192.125,-43.675]).
To Reproduce
This configuration should reproduce the bug:
word_size=64# Bitsnum_words=256words_per_row=1# Con also be reproduced with other dimensionshuman_byte_size="{:.0f}kbytes".format((word_size*num_words)/1024/8)
# Allow byte writeswrite_size=word_size# Bits# Dual portnum_rw_ports=1num_r_ports=0num_w_ports=0ports_human='1rw'num_spare_cols=5# Can also be reproduced with smaller numbersnum_spare_rows=5# Can also be reproduced with smaller numbersimportosexec(open(os.path.join(os.path.dirname(__file__), 'sky130_sram_common.py')).read())
Expected behavior
Don't crash. Don't miss any signals / nets. If routing is impossible, increase (vertical) area to ease routing, or move pins more to the left. Optionally, place pins on the west and east sides (not only south) to gain even more interface surface area to further ease routing.
Screenshots
The individually unroutable signal depents on the memory configuration. For the provided example, the error can be located in the generated gds files.
temp.gds:
error.gds:
zoomed-in error.gds:
Logs
As the screenshots have a limited resolution, you may use the actual GDS files to further zoom in. gds.tar.gz
Additional context
I created 120 different SKY130 memory macro configurations and executed them on our slurm cluster for 3 days.
I swept over different port configurations (rw, rw+r), word width(1, 4, 8, 16, 32, 64 byte), and memory sizes (64 bit... 128 kByte).
Openram finished only 10 macros. The other 110 configurations failed or ran into the SLURM job timeout after 96h.
While some configurations quickly failed for obvious reasons (the desired total size or word width was too small or too large), others failed due to internal problems (or other user error).
I can share all 120 configurations, and provide corresponding results (1+ gigabyte tar.gz file).
Questions:
Is there an easy fix to prevent a design from unroutability? E.g. provide more layers, give more vertical space?
The text was updated successfully, but these errors were encountered:
Thanks for this great project.
Describe the bug
SupplyRouter fails to route some signals (typically VDD) for certain memory configurations.
Version
1.2.48, b6a6f12
To Reproduce
This configuration should reproduce the bug:
Expected behavior
Don't crash. Don't miss any signals / nets. If routing is impossible, increase (vertical) area to ease routing, or move pins more to the left. Optionally, place pins on the west and east sides (not only south) to gain even more interface surface area to further ease routing.
Screenshots
The individually unroutable signal depents on the memory configuration. For the provided example, the error can be located in the generated gds files.
temp.gds:
error.gds:
zoomed-in error.gds:
Logs
As the screenshots have a limited resolution, you may use the actual GDS files to further zoom in.
gds.tar.gz
Log:
sky130_sram_custom.log
Additional context
I created 120 different SKY130 memory macro configurations and executed them on our slurm cluster for 3 days.
I swept over different port configurations (rw, rw+r), word width(1, 4, 8, 16, 32, 64 byte), and memory sizes (64 bit... 128 kByte).
Openram finished only 10 macros. The other 110 configurations failed or ran into the SLURM job timeout after 96h.
While some configurations quickly failed for obvious reasons (the desired total size or word width was too small or too large), others failed due to internal problems (or other user error).
I can share all 120 configurations, and provide corresponding results (1+ gigabyte tar.gz file).
Questions:
Is there an easy fix to prevent a design from unroutability? E.g. provide more layers, give more vertical space?
The text was updated successfully, but these errors were encountered: