<@U016EM8L91B> I recently tried to run open_pdks t...
# open_pdks
t
@Tim Edwards I recently tried to run open_pdks to install the latest sky130 but it keeps crashing killing the terminal instance. This has happened multiple times now even with completely fresh clones of the latest open_pdks:
Copy code
commit 6d4d11780c40b20ee63cc98e645307a9bf2b2ab8 (HEAD -> master, tag: 1.0.470, origin/open_pdks-1.0, origin/master, origin/HEAD)
I also have the latest version of magic installed. This is what I do: 1. create folder
/home/tom/repos/edalibs/pdks/sky130
2. From open_pdks I run the following
Copy code
./configure --enable-sky130-pdk
make && make install SHARED_PDKS_PATH=/home/tom/repos/edalibs/pdks/sky130
Quite a lot happens before it dies but it never ends up copying anything to
/home/tom/repos/edalibs/pdks/sky130
Interestingly and bizarrely it seems to take Google Chrome with it if it's open at the time (I have no idea what the connection is there). Is there a logfile I can dig up for you?
t
If you separate
make
and
make install
, which one does it die on? Is there any specific reason to be using the very obscure SHARED_PDKS_PATH setting? Log files are in, e.g.,
sky130/sky130A_make.log
and
sky130/sky130A_install.log
. They are usually large files and very hard to work through. Builds are done in parallel, so output from each thread is all scrambled together.
t
@Tim Edwards It dies during make. I'm using that variable because I have a separate drive I put edalibs on. Is there a better way to specifically that now?
Copy code
Install:../sources/sky130_fd_sc_hd/cells/xnor2/sky130_fd_sc_hd__xnor2.symbol.pp.v to /home/tom/repos/edatools/open_pdks/sky130/sky130A/libs.ref/sky130_fd_sc_hd/verilog/sky130_fd_sc_hd__xnor2.symbol.pp.v
   Install:../sources/sky130_fd_sc_hd/cells/xnor2/sky130_fd_sc_hd__xnor2.symbol.v to /home/tom/repos/edatools/open_pdks/sky130/sky130A/libs.ref/sky130_fd_sc_hd/verilog/sky130_fd_sc_hd__xnor2.symbol.v
   Install:../sources/sky130_fd_sc_hd/cells/xnor2/sky130_fd_sc_hd__xnor2.tb.v to /home/tom/repos/edatools/open_pdks/sky130/sky130A/libs.ref/sky130_fd_sc_hd/verilog/sky130_fd_sc_hd__xnor2.tb.v
   Install:../sources/sky130_fd_sc_hd/cells/xnor2/sky130_fd_sc_hd__xnor2_1.blackbox.pp.v to /home/tom/repos/edatools/open_pdks/sky130/sky130A/libs.ref/sky130_fd_sc_hd/verilog/sky130_fd_sc_hd__xnor2_1.blackbox.pp.v
   Install:../sources/sky130_fd_sc_hd/cells/xnor2/sky130_fd_sc_hd__xnor2_1.blackbox.v to /home/tom/repos/edatools/open_pdks/sky130/sky130A/libs.ref/sky130_fd_sc_hd/verilog/sky130_fd_sc_hd__xnor2_1.blackbox.v
   Install:../sources/sky130_fd_sc_hd/cells/xnor2/sky130_fd_sc_hd__xnor2_1.functional.pp.v to /home/tom/repos/edatools/open_pdks/sky130/sky130A/libs.ref/sky130_fd_sc_hd/verilog/sky130_fd_sc_hd__xnor2_1.functional.pp.v
   Install:../sources/sky130_fd_sc_hd/cells/xnor2/sky130_fd_sc_hd__xnor2_1.functional.v to /home/tom/repos/edatools/open_pdks/sky130/sky130A/libs.ref/sky130_fd_sc_hd/verilog/sky130_fd_sc_hd__xnor2_1.functional.v
   Install:../sources/sky130_fd_sc_hd/cells/xnor2/sky130_fd_sc_hd__xnor2_1.timing.pp.v to /home/tom/repos/edatools/open_pdks/sky130/sky130A/libs.ref/sky130_fd_sc_hd/verilog/sky130_fd_sc_hd__xnor2_1.timing.pp.v
   Install:../sources/sky130_fd_sc_hd/cells/xnor2/sky130_fd_sc_hd__xnor2_1.timing.v to /home/tom/repos/edatools/open_pdks/sky130/sky130A/libs.ref/sky130_fd_sc_hd/verilog/sky130_fd_sc_hd__xnor2_1.timing.v
   Install:../sources/sky130_fd_sc_hd/cells/xnor2/sky130_fd_sc_hd__xnor2_2.blackbox.pp.v to /home/tom/repos/edatools/open_pdks/sky130/sky130A/libs.ref/sky130_fd_sc_hd/verilog/sky130_fd_sc_hd__xnor2_2.blackbox.pp.v
   Install:../sources/sky130_fd_sc_hd/cells/xnor2/sky130_fd_sc_hd__xnor2_2.blackbox.v to /home/tom/repos/edatools/open_pdks/sky130/sky130A/libs.ref/sky130_fd_sc_hd/verilog/sky130_fd_sc_hd__xnor2_2.blackbox.v
   Install:../sources/sky130_fd_sc_hd/cells/xnor2/sky130_fd_sc_hd__xnor2_2.functional.pp.v to /home/tom/repos/edatools/open_pdks/sky130/sky130A/libs.ref/sky130_fd_sc_hd/verilog/sky130_fd_sc_hd__xnor2_2.functional.pp.v
   Install:../sources/sky130_fd_sc_hd/cells/xnor2/sky130_fd_sc_hd__xnor2_2.functional.v to /home/tom/repos/edatools/open_pdks/sky130/sky130A/libs.ref/sky130_fd_sc_hd/verilog/sky130_fd_sc_hd__xnor2_2.functional.v
   Install:../sources/sky130_fd_sc_hd/cells/xnor2/sky130_fd_sc_hd__xnor2_2.timing.pp.v to /home/tom/repos/edatools/open_pdks/sky130/sky130A/libs.ref/sky130_fd_sc_hd/verilog/sky130_fd_sc_hd__xnor2_2.timing.pp.v
   Install:../sources/sky130_fd_sc_hd/cells/xnor2/sky130_fd_sc_hd__xnor2_2.timing.v to /home/tom/repos/edatools/open_pdks/sky130/sky130A/libs.ref/sky130_fd_sc_hd/verilog/sky130_fd_sc_hd__xnor2_2.timing.v
   Install:../sources/sky130_fd_sc_hd/cells/xnor2/sky130_fd_sc_hd__xnor2_4.blackbox.pp.v to /home/tom/repos/edatools/open_pdks/sky130/sky130A/libs.ref/sky130_fd_sc_hd/verilog/sky130_fd_sc_hd__xnor2_4.blackbox.pp.v
   Install:../sources/sky130_fd_sc_hd/cells/xnor2/sky130_fd_sc_hd__xnor2_4.blackbox.v to /home/tom/repos/edatools/open_pdks/sky130/sky130A/libs.ref/sky130_fd_sc_hd/verilog/sky130_fd_sc_hd__xnor2_4.blackbox.v
   Install:../sources/sky130_fd_sc_hd/cells/xnor2/sky130_fd_sc_hd__xnor2_4.functional.pp.v to /home/tom/repos/edatools/open_pdks/sky130/sky130A/libs.ref/sky130_fd_sc_hd/verilog/sky130_fd_sc_hd__xnor2_4.functional.pp.v
   Install:../sources/sky130_fd_sc_hd/cells/xnor2/sky130_fd_sc_hd__xnor2_4.functional.v to /home/tom/repos/edatools/open_pdks/sky130/sky130A/libs.ref/sky130_fd_sc_hd/verilog/sky130_fd_sc_hd__xnor2_4.functional.v
   Install:../sources/sky130_fd_sc_hd/cells/xnor2/sky130_fd_sc_hd__xnor2_4.timing.pp.v to /home/tom/repos/edatools/open_pdks/sky130/sky130A/libs.ref/sky130_fd_sc_hd/verilog/sky130_fd_sc_hd__xnor2_4.timing.pp.v
   Install:../sources/sky130_fd_sc_hd/cells/xnor2/sky130_fd_sc_hd__xnor2_4.timing.v to /home/tom/repos/edatools/open_pdks/sky130/sky130A/libs.ref/sky130_fd_sc_hd/verilog/sky130_fd_sc_hd__xnor2_4.timing.v
   Install:../sources/sky130_fd_sc_hd/cells/xnor3/sky130_fd_sc_hd__xnor3.symbol.pp.v to /home/tom/repos/edatools/open_pdks/sky130/sky130A/libs.ref/sky130_fd_sc_hd/verilog/sky130_fd_sc_hd__xnor3.symbol.pp.v
   Install:../sources/sky130_fd_sc_hd/cells/xnor3/sky130_fd_sc_hd__xnor3.symbol.v to /home/tom/repos/edatools/open_pdks/sky130/sky130A/libs.ref/sky130_fd_sc_hd/verilog/sky130_fd_sc_hd__xnor3.symbol.v
   Install:../sources/sky130_fd_sc_hd/cells/xnor3/sky130_fd_sc_hd__xnor3.tb.v to /home/tom/repos/edatools/open_pdks/sky130/sky130A/libs.ref/sky130_fd_sc_hd/verilog/sky130_fd_sc_hd__xnor3.tb.v
   Install:../sources/sky130_fd_sc_hd/cells/xnor3/sky130_fd_sc_hd__xnor3_1.blackbox.pp.v to /home/tom/repos/edatools/open_pdks/sky130/sky130A/libs.ref/sky130_fd_sc_hd/verilog/sky130_fd_sc_hd__xnor3_1.blackbox.pp.v
   Install:../sources/sky130_fd_sc_hd/cells/xnor3/sky130_fd_sc_hd__xnor3_1.blackbox.v to /home/tom/repos/edatools/open_pdks/sky130/sky130A/libs.ref/sky130_fd_sc_hd/verilog/sky130_fd_sc_hd__xnor3_1.blackbox.v
   Install:../sources/sky130_fd_sc_hd/cells/xnor3/sky130_fd_sc_hd__xnor3_1.functional.pp.v to /home/tom/repos/edatools/open_pdks/sky130/sky130A/libs.ref/sky130_fd_sc_hd/verilog/sky130_fd_sc_hd__xnor3_1.functional.pp.v
   Install:../sources/sky130_fd_sc_hd/cells/xnor3/sky130_fd_sc_hd__xnor3_1.functional.v to /home/tom/repos/edatools/open_pdks/sky130/sky130A/libs.ref/sky130_fd_sc_hd/verilog/sky130_fd_sc_hd__xnor3_1.functional.v
   Install:../sources/sky130_fd_sc_hd/cells/xnor3/sky130_fd_sc_hd__xnor3_1.timing.pp.v to /home/tom/repos/edatools/open_pdks/sky130/sky130A/libs.ref/sky130_fd_sc_hd/verilog/sky130_fd_sc_hd__xnor3_1.timing.pp.v
   Install:../sources/sky130_fd_sc_hd/cells/xnor3/sky130_fd_sc_hd__xnor3_1.timing.v to /home/tom/repos/edatools/open_pdks/sky130/sky130A/libs.ref/sky130_fd_sc_hd/verilog/sky130_fd_sc_hd__xnor3_1.timing.v
   Install:../sources/sky130_fd_sc_hd/cells/xnor3/sky130_fd_sc_hd__xnor3_2.blackbox.pp.v to /home/tom/repos/edatools/open_pdks/sky130/sky130A/libs.ref/sky130_fd_sc_hd/verilog/sky130_fd_sc_hd__xnor3_2.blackbox.pp.v
   Install:../sources/sky130_fd_sc_hd/cells/xnor3/sky130_fd_sc_hd__xnor3_2.blackbox.v to /home/tom/repos/edatools/open_pdks/sky130/sky130A/libs.ref/sky130_fd_sc_hd/verilog/sky130_fd_sc_hd__xnor3_2.blackbox.v
   Install:../sources/sky130_fd_sc_hd/cells/xnor3/sky130_fd_sc_hd__xnor3_2.functional.pp.v to /home/tom/repos/edatools/open_pdks/sky130/sky130A/libs.ref/sky130_fd_sc_hd/verilog/sky130_fd_sc_hd__xnor3_2.functional.pp.v
   Install:../sources/sky130_fd_sc_hd/cells/xnor3/sky130_fd_sc_hd__xnor3_2.functional.v to /home/tom/repos/edatools/open_pdks/sky130/sky130A/libs.ref/sky130_fd_sc_hd/verilog/sky130_fd_sc_hd__xnor3_2.functional.v
   Install:../sources/sky130_fd_sc_hd/cells/xnor3/sky130_fd_sc_hd__xnor3_2.timing.pp.v to /home/tom/repos/edatools/open_pdks/sky130/sky130A/libs.ref/sky130_fd_sc_hd/verilog/sky130_fd_sc_hd__xnor3_2.timing.pp.v
   Install:../sources/sky130_fd_sc_hd/cells/xnor3/sky130_fd_sc_hd__xnor3_2.timing.v to /home/tom/repos/edatools/open_pdks/sky130/sky130A/libs.ref/sky130_fd_sc_hd/verilog/sky130_fd_sc_hd__xnor3_2.timing.v
   Install:../sources/sky130_fd_sc_hd/cells/xnor3/sky130_fd_sc_hd__xnor3_4.blackbox.pp.v to /home/tom/repos/edatools/open_pdks/sky130/sky130A/libs.ref/sky130_fd_sc_hd/verilog/sky130_fd_sc_hd__xnor3_4.blackbox.pp.v
   Install:../sources/sky130_fd_sc_hd/cells/xnor3/sky130_fd_sc_hd__xnor3_4.blackbox.v to /home/tom/repos/edatools/open_pdks/sky130/sky130A/libs.ref/sky130_fd_sc_hd/verilog/sky130_fd_sc_hd__xnor3_4.blackbox.v
   Install:../sources/sky130_fd_sc_hd/cells/xnor3/sky130_fd_sc_hd__xnor3_4.functional.pp.v to /home/tom/repos/edatools/open_pdks/sky130/sky130A/libs.ref/sky130_fd_sc_hd/verilog/sky130_fd_sc_hd__xnor3_4.functional.pp.v
   Install:../sources/sky130_fd_sc_hd/cells/xnor3/sky130_fd_sc_hd__xnor3_4.functional.v to /home/tom/repos/edatools/open_pdks/sky130/sky130A/libs.ref/sky130_fd_sc_hd/verilog/sky130_fd_sc_hd__xnor3_4.functional.v
   Install:../sources/sky130_fd_sc_hd/cells/xnor3/sky130_fd_sc_hd__xnor3_4.timing.pp.v to /home/tom/repos/edatools/open_pdks/sky130/sky130A/libs.ref/sky130_fd_sc_hd/verilog/sky130_fd_sc_hd__xnor3_4.timing.pp.v
   Install:../sources/sky130_fd_sc_hd/cells/xnor3/sky130_fd_sc_hd__xnor3_4.timing.v to /home/tom/repos/edatools/open_pdks/sky130/sky130A/libs.ref/sky130_fd_sc_hd/verilog/sky130_fd_sc_hd__xnor3_4.timing.v
   Install:../sources/sky130_fd_sc_hd/cells/xor2/sky130_fd_sc_hd__xor2.symbol.pp.v to /home/tom/repos/edatools/open_pdks/sky130/sky130A/libs.ref/sky130_fd_sc_hd/verilog/sky130_fd_sc_hd__xor2.symbol.pp.v
   Install:../sources/sky130_fd_sc_hd/cells/xor2/sky130_fd_sc_hd__xor2.symbol.v to /home/tom/repos/edatools/open_pdks/sky130/sky130A/libs.ref/sky130_fd_sc_hd/verilog/sky130_fd_sc_hd__xor2.symbol.v
   Install:../sources/sky130_fd_sc_hd/cells/xor2/sky130_fd_sc_hd__xor2.tb.v to /home/tom/repos/edatools/open_pdks/sky130/sky130A/libs.ref/sky130_fd_sc_hd/verilog/sky130_fd_sc_hd__xor2.tb.v
   Install:../sources/sky130_fd_sc_hd/cells/xor2/sky130_fd_sc_hd__xor2_1.blackbox.pp.v to /home/tom/repos/edatools/open_pdks/sky130/sky130A/libs.ref/sky130_fd_sc_hd/verilog/sky130_fd_sc_hd__xor2_1.blackbox.pp.v
   Install:../sources/sky130_fd_sc_hd/cells/xor2/sky130_fd_sc_hd__xor2_1.blackbox.v to /home/tom/repos/edatools/open_pdks/sky130/sky130A/libs.ref/sky130_fd_sc_hd/verilog/sky130_fd_sc_hd__xor2_1.blackbox.v
   Install:../sources/sky130_fd_sc_hd/cells/xor2/sky130_fd_sc_hd__xor2_1.functional.pp.v to /home/tom/repos/edatools/open_pdks/sky130/sky130A/libs.ref/sky130_fd_sc_hd/verilog/sky130_fd_sc_hd__xor2_1.functional.pp.v
The make log is too big to send but that is the end of it
@Tim Edwards does that info help at all?
t
@Tom: FYI, the only reason to use
SHARED_PDKS_PATH
is if you cannot stand having a
share/
component in the install path, which GNU autoconf seems to be hard-wired to do and requires annoying hacks to get around. Otherwise
--prefix=/home/tom/repos/edalibs
is preferred, although you will then get an extra component
/home/tim/repos/edalibs/share/pdks/sky130
. If that annoys you, then I understand perfectly, and I think your use of
SHARED_PDKS_PATH
is valid and correct.
You can compress and post the make log. I won't be able to tell anything from the end of the log file because everything is run in parallel, so the actual error could be very far back in the output. It definitely died somewhere in the middle, though. Question: What is your version of magic? An outdated magic is the best known way to get open_pdks to fail quickly.
t
@Tim Edwards. Understood. Magic version is:
Copy code
tom<@U0179HCG677>:~$ magic --version
8.3.460
And attached is the compressed log
There are lots of errors but i don't think ive ever seen an error free log even when it seems to work
t
Oh, definitely not. A lot of errors come from the output of individual tools; I really don't have the time to track them all down and figure out what to do about them. The vast majority are warnings masquerading as error messages.
Not a thing wrong with the output file, then it just ends in the middle. I'm suspicious that you that it was killed by a system OOM (out-of-memory) manager. How much memory do you have on your system, and how many cores? If you have multiple cores, you might try
make -j 1
to force it to one thread; it will take a lot longer but you won't have multiple threads taking up memory at the same time. You might want to keep an eye out on memory and disk space while it's running. Also, the output to the terminal, while mostly just a copy of what goes into the log file, may have more information, especially around what killed the process(es).
t
I'd be very surprised if my hardware was the issue: Motherboard MSI MPG Z490 GAMING PRO CARBON WIFI - Processor INTEL CORE i9 10900k 10C/20T 5.3GHz - Memory (4x16GB) G.SKILL TRIDENT Z NEO- DDR4 3600MHZ MEMORY 64GB Also, the terminal dies with open pdks so I don't ever see the output
Also this happens when nothing else is running
t
Your machine is a very similar spec as mine. I also have a core i9, 64GB DDR4 RAM, and open_pdks is pretty fast to run on it. I have had open_pdks + zoom take down my entire login session, though. open_pdks is pretty good at railing all the resources on the computer. Other than crashing my login session, I have never seen open_pdks die and take out the terminal window at the same time.
t
Right, yes it's usually pretty quick for me too and this is the first time I've ever seen this before too actually. Do you have any suggestions as to how to proceed with debug?
t
One thing you can do is to generate the PDK piecemeal; do
Copy code
cd sky130
make tools-A
make primitive-A
make io-A
make digital-hd-A
This might just run to completion, and if not, at least you'll pin the problem down to a specific build step.
t
@Tim Edwards that ran to completion. Does that tell you anything?
t
I'm still leaning toward it being an over-aggressive OOM hypervisor.
t
so fewer threads?
like a -j1 or something
t
Give it a try.
t
ok
it died again - taking the terminal with it same as before
t
Impressive. . . : )
At least the piecemeal approach works. Although I didn't have you try building all of the libraries that are included by default.
t
how do i find out what the comprehensive piecemeal recipe is so i can build the whole thing
t
I guess I can just tell you what all the default libraries are. It would be
Copy code
cd sky130
make tools-A
make primitive-A
make io-A
make alpha-A
make digital-hd-A
make digital-hvl-A
make digital-hdll-A
make digital-lp-A
make digital-hs-A
make digital-ms-A
make digital-ls-A
make sram-A
make sram-space-A
followed by
Copy code
make install-A
(otherwise "make install" will work but fail with an error as it discovers there isn't any "B" variant.) Also if you want the "B" variant just repeat all of the above, replacing "A" with "B", adding
make reram-B
, and finishing with
make install
. I'll let you decide if you really want all those digital libraries, especially since openlane isn't even configured for the last half of them.
t
Thanks @Tim Edwards I will give that a try