-
Notifications
You must be signed in to change notification settings - Fork 244
Description
Describe the bug
The lef file generated for the sky130 has 'DATABASE MICRONS 2000'.
Version
Both stable and dev
To Reproduce
I used the following configuration file:
write_size = 8
num_words = 512
num_rw_ports = 0
num_r_ports = 1
num_w_ports = 1
tech_name = "sky130"
nominal_corner_only = True
local_array_size = 16
route_supplies = False
check_lvsdrc = True
perimeter_pins = False
Then I compared the lef and gds files by opening them independently with klayout. In both cases klayout says it's using database units 0.001 microns which doesn't match the value in the lef file. Yet the layout is correct, as far as I can tell: the overall size, and the size/position of the din0 pin match that of the gds file. EDIT: Also, those sizes match the the raw values in the .lef file, without any factor of 2 or 0.5.
Expected behavior
The lef file should have 'DATABASE MICRONS 1000'
Additional context
- In VLSIDA/sky130_sram_macros@c233339 you changed the value of the output file manually.
- Other users seem to follow the same path, e.g. in Question: What is the correct allignment in SKY130? Intermediate Pins are not connected to the grid. Likely user mistake. #239
- OpenRoad also seems to use 1000 microns, or at least it fails when I try to import the ram as generated by OpenRam.
Possible solution
In compiler/base/lef.py, change self.lef_units = 2000 to self.lef_units = 1000. I know this will fix the bug for the sky130 technology, but I do not know if it'll break others.