https://open-source-silicon.dev logo
t

Tim Edwards

07/27/2020, 1:34 AM
@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

20Mhz

07/27/2020, 1:36 AM
interesting, is the local tap existing on level shifters or other?
t

Tim Edwards

07/27/2020, 1:49 AM
@20Mhz: Yes, level shifters and domain-isolating buffers.
t

tnt

07/27/2020, 8:06 AM
@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

Tim Edwards

07/27/2020, 1:03 PM
@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

tnt

07/27/2020, 1:04 PM
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

Tim Edwards

07/27/2020, 1:04 PM
@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

tnt

07/27/2020, 1:05 PM
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

Tim Edwards

07/27/2020, 1:06 PM
@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

tnt

07/27/2020, 1:07 PM
But ... that ends with a
.v
?
t

Tim Edwards

07/27/2020, 1:08 PM
@tnt: Okay, perhaps I am blind. . .
u

20Mhz

07/27/2020, 1:18 PM
👀 now wondering why you didn’t name the files *.magiclef instead 😭
t

Tim Edwards

07/27/2020, 3:55 PM
@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

AndrewSftD

07/27/2020, 10:26 PM
@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

tnt

07/27/2020, 10:30 PM
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

AndrewSftD

07/27/2020, 10:31 PM
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

tnt

07/27/2020, 10:32 PM
Yeah, rc2 didn't exist 😛
a

AndrewSftD

07/27/2020, 10:32 PM
hahahaha
welcome to the world of moving fast
anyway
I am now completely confused
t

tnt

07/27/2020, 10:33 PM
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

AndrewSftD

07/27/2020, 10:33 PM
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

tnt

07/27/2020, 10:37 PM
In theory they should be ... In practice ... there was some weirdness to be investigated.
a

AndrewSftD

07/27/2020, 10:37 PM
🤦
u

20Mhz

07/27/2020, 10:46 PM
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

AndrewSftD

07/27/2020, 10:49 PM
?
@20Mhz if your point was that I should write a wall of text => will do next time 😄
u

20Mhz

07/27/2020, 10:53 PM
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

AndrewSftD

07/27/2020, 10:55 PM
🙂 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

20Mhz

07/27/2020, 10:58 PM
define “using”
a

AndrewSftD

07/27/2020, 10:58 PM
:)))
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

20Mhz

07/27/2020, 11:01 PM
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

AndrewSftD

07/27/2020, 11:03 PM
that's what I was looking for ... so that's basically Tim's version right now
u

20Mhz

07/27/2020, 11:03 PM
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

AndrewSftD

07/27/2020, 11:04 PM
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

20Mhz

07/27/2020, 11:06 PM
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

AndrewSftD

07/27/2020, 11:08 PM
oh, I really don't want to start having to diff those things ...