<@U016HU5HK8V>: We are still working out the diff...
# openlane
t
@User: We are still working out the differences between what magic produces for LEF and what SkyWater provided for LEF. Issues cropped up with the way the power bias pins VNB / VPB were handled. In the SkyWater LEF they were moved to the local interconnect layer where they should not be. But a handful of the cells contain their own taps and those pins do attach to local interconnect. So it is taking some work to sort out.
u
interesting, is the local tap existing on level shifters or other?
t
@20Mhz: Yes, level shifters and domain-isolating buffers.
t
@Tim Edwards Right, I was more referring to the fact that the foundry_install script should pick one of the two and not include both 🙂
t
@tnt: I changed the foundry_install script to pick only one, plus the script is supposed to remove redundant entries from the resulting library file. Is neither of those working?
t
Ah well, I have to use the open_pdk from efabless the exact version from the README to work with openlane, so I'm guessing those changes didn't make it there.
t
@tnt: The Makefile line
-lef %l/latest/cells/*/*.lef exclude=*.*.v compile-only
is supposed to select the .lef files and ignore the .magic.lef files, although I think perhaps it will need to be the other way around.
t
How would that exclude .magic.lef files ?
*.lef
matches
xxx.magic.lef
I used
-lef %l/latest/cells/*/*.lef exclude=*.*.v,*.magic.lef compile-only
t
@tnt: The "exclude" part of the line is supposed to exclude the one with two periods in the name.
@tnt: Possibly the "exclude" option is buggy. I will check it.
t
But ... that ends with a
.v
?
t
@tnt: Okay, perhaps I am blind. . .
u
👀 now wondering why you didn’t name the files *.magiclef instead 😭
t
@20Mhz: At efabless we have a format called ".maglef" which is something different (a .mag database file that was read from a LEF file and so is an abstract view), so it's already kind of confusing. Separating things out with periods is Tim Ansell's idea for keeping a consistent naming convention in the Google/SkyWater PDK.
a
@Tim Edwards open_pdks (efabless fork): -lef %l/latest/cells/*/*.magic.lef exclude=..v compile-only \
your own repo: -lef %l/latest/cells/*/*.lef exclude=..v compile-only \ (which I used before)
which one ? or neither ?
@tnt & @20Mhz I guess you guys are using the efabless version right ?
t
Huh I use the efabless but at the specified commit exactly and that one was not using the
*.magic.lef
On the contrary, I had to explicitely exclude those because they would make TritonRoute crash.
a
yeah the commit I mentioned is not the rc2 tag
its master
for both
but actually that change is included in the rc2
I guess you were using the rc1 tag maybe ?
t
Yeah, rc2 didn't exist 😛
a
hahahaha
welcome to the world of moving fast
anyway
I am now completely confused
t
I have no idea if they fixed the issue ... but I'm also using master of skywater-pdk which might be why the magic.lef didn't work for me.
a
if you are really using master they should work I think
but can't speak to that since I am just rebuilding
anyway
I used Tim's repo before with the .lef
and that worked completely fine with OpenROAD Triton
but now I guess we are going to use the .magic.lef ?
and more to the actual point are those backward compatible to openroad or are they just openlane ?
t
In theory they should be ... In practice ... there was some weirdness to be investigated.
a
🤦
u
I’m not completely sure about this whole thread, but I’m beginning to think that part of the problem is that you’re confusing space with enter… 😅
a
?
@20Mhz if your point was that I should write a wall of text => will do next time 😄
u
haha just joking, felt like machine gun of one liners, but I admit I have tendency to do same,…sorry for derailing the post
a
🙂 nah its fine, I noticed my tendency to treat Slack channels like IRC or so ...
more to the point are you using the .lef or .magic.lef ?
u
define “using”
a
:)))
good point, in the sky130 Makefile from the open_pdks repo that you checked out which of the 2 lines from above do you have ?
or in reverse inside of your "compiled" PDK_ROOT which kind does your openlane config file refer to
u
It seems I have *.lef which explains why I got both installed… I guess this is still not conclusive coming to what gets actually used by a specific tool
Copy code
# Install all SkyWater digital standard cells.
set -f ; ../common/foundry_install.py -ef_format -source ../../skywater-pdk/libraries -target `pwd`/sky130A \
                -techlef %l/latest/tech/*.tlef \
                -spice %l/latest/cells/*/*.spice compile-only \
                -cdl %l/latest/cells/*/*.cdl ignore=topography compile-only \
                -lef %l/latest/cells/*/*.lef exclude=*.*.v compile-only \
                -doc %l/latest/cells/*/*.pdf \
                -lib %l/latest/timing/*.lib \
                -gds %l/latest/cells/*/*.gds compile-only \
                -verilog %l/latest/cells/*/*.v compile-only \
                -library digital sky130_fd_sc_hd \
                -library digital sky130_fd_sc_hdll \
                -library digital sky130_fd_sc_hvl \
                -library digital sky130_fd_sc_hs \
                -library digital sky130_fd_sc_ls \
                -library digital sky130_fd_sc_ms \
                -library digital sky130_fd_sc_lp | tee -a sky130A_install.log
a
that's what I was looking for ... so that's basically Tim's version right now
u
Checking config.tcl… still not conclusive
Copy code
# Technology LEF
set ::env(TECH_LEF) "$::env(PDK_ROOT)/sky130A/libs.ref/techLEF/$::env(PDK_VARIANT)/$::env(PDK_VARIANT).tlef"
set ::env(CELLS_LEF) [glob "$::env(PDK_ROOT)/sky130A/libs.ref/lef/$::env(PDK_VARIANT)/*.lef"]
set ::env(GPIO_PADS_LEF) [glob "$::env(PDK_ROOT)/sky130A/libs.ref/lef/sky130_fd_io/sky130_fd_io.lef"]
a
that looks like the .lefs or ?
i mean ... yeah I see your point .. but at least the Makefile is something where we can partially trace it for now
u
Okey… it seems is already merged after open_pdk make, so I’m not sure what it did, probably prioritized magic.lef? is confusing, I could look for the SOURCE statement, but I manually removed that 😕
Copy code
find  pdks/sky130A/ -name "*lef"
pdks/sky130A//libs.ref/maglef
pdks/sky130A//libs.ref/techLEF/sky130_fd_sc_ls/sky130_fd_sc_ls.tlef
pdks/sky130A//libs.ref/techLEF/sky130_fd_sc_hs/sky130_fd_sc_hs.tlef
pdks/sky130A//libs.ref/techLEF/sky130_fd_sc_hdll/sky130_fd_sc_hdll.tlef
pdks/sky130A//libs.ref/techLEF/sky130_fd_sc_ms/sky130_fd_sc_ms.tlef
pdks/sky130A//libs.ref/techLEF/sky130_fd_sc_hd/sky130_fd_sc_hd.tlef
pdks/sky130A//libs.ref/lef
pdks/sky130A//libs.ref/lef/sky130_fd_pr_base/sky130_fd_pr_base.lef
pdks/sky130A//libs.ref/lef/sky130_fd_io/sky130_fd_io.lef
pdks/sky130A//libs.ref/lef/sky130_fd_io/power_pads_lib.lef
pdks/sky130A//libs.ref/lef/sky130_fd_sc_hd/sky130_fd_sc_hd.lef
a
oh, I really don't want to start having to diff those things ...