On a clean working area, after following the steps...
# shuttle
k
On a clean working area, after following the steps outlined in the documentation, when I run
make verify-io_ports
, I get the below error.
/<path>/caravel/verilog/rtl/caravel_netlists.v:90: Include file mgmt_core_wrapper.v not found
m
You need to
make install_mcw
, in order to get the mgmt_core_wrapper
k
And this one too-
/<path>/caravel/verilog/rtl/caravel_netlists.v:47: Include file libs.ref/sky130_sram_macros/verilog/sky130_sram_2kbyte_1rw1r_32x512_8.v not found
You need to 
make install_mcw
 , in order to get the mgmt_core_wrapper
I did that. I have the
mgmt_core_wrapper/
folder at the root after building that command.
The
iverilog
command in the
Makefile
doesn't include
mgmt_core_wrapper
in the search path.
m
We're working on a fix, will notify you once it's merged
k
Thanks @Marwan Abbas. Can you also suggest what could be the problem with the below error?
/<path>/caravel/verilog/rtl/caravel_netlists.v:47: Include file libs.ref/sky130_sram_macros/verilog/sky130_sram_2kbyte_1rw1r_32x512_8.v not found
m
You need to install the SRAM when installing the pdk
using
make pdk-with-sram
k
Sure I can do that. Perhaps the documentation needs an update? I'm simply trying to run the instructions out of the box so it shouldn't really fail.
m
Yes, we are working on it, sorry for the inconvenience.
k
No problems 🙂
And thanks for the quick response. I'm building the pdk and will let you know if everything was clean.
m
Anytime, please let me know if you have anymore questions
🙏 1
k
Another issue I hit so worth considering. The instructions suggested to set
export MCW=pico
. We also run
make install_mcw
. And after cloning the repo that contains the
Pico
CPU, we sort of end up with two versions of the
mgmt_core_wrapper
. So the
Makefile
for simulation needs to pick up the correct core if you end up with both. Ideally if
MCW=pico
is set, then the search path should look for
caravel_pico
and not
mgmt_core_wrapper
directory. I hope this makes sense.
m
This is actually an issue from my end, the documentation shouldn't be mentioning pico as we're using litex now. We're removing this part from the documentation now. don't export pico.
k
Understood!
m
@Marwan Abbas I believe the
caravel-lite/Makefile
is missing
make full-pdk
and
make full-pdk-with-sram
. I couldn't figure out how to install all the libraries with the current Makefile.
m
@Mitch Bailey Unfortunately that feature is not supported.
m
Here are the changes I made for full pdk installation.
Copy code
local@ciic-cvc:~/mpw-5/test-mpw5a/caravel_example/caravel$ git diff
diff --git a/Makefile b/Makefile
index 806cfd1..f4055e9 100644
--- a/Makefile
+++ b/Makefile
@@ -1213,6 +1213,11 @@ pdk-with-sram: pdk
 .PHONY: pdk
 pdk: skywater-pdk skywater-library skywater-timing open_pdks build-pdk gen-sources
 
+full-pdk-with-sram: INSTALL_SRAM=yes
+full-pdk-with-sram: full-pdk
+.PHONY: full-pdk
+full-pdk: skywater-pdk all-skywater-libraries open_pdks build-pdk gen-sources
+
 $(PDK_ROOT)/skywater-pdk:
        git clone <https://github.com/google/skywater-pdk.git> $(PDK_ROOT)/skywater-pdk
 
@@ -1230,6 +1235,18 @@ skywater-library: check-env $(PDK_ROOT)/skywater-pdk
                git submodule update --init libraries/$(SPECIAL_VOLTAGE_LIBRARY)/latest && \
                git submodule update --init libraries/$(PRIMITIVES_LIBRARY)/latest
 
+.PHONY: all-skywater-libraries
+all-skywater-libraries: skywater-pdk
+       cd $(PDK_ROOT)/skywater-pdk && \
+               git submodule update --init libraries/sky130_fd_sc_hd/latest && \
+               git submodule update --init libraries/sky130_fd_sc_hs/latest && \
+               git submodule update --init libraries/sky130_fd_sc_hdll/latest && \
+               git submodule update --init libraries/sky130_fd_sc_ms/latest && \
+               git submodule update --init libraries/sky130_fd_sc_ls/latest && \
+               git submodule update --init libraries/sky130_fd_sc_hvl/latest && \
+               git submodule update --init libraries/sky130_fd_io/latest && \
+               $(MAKE) timing
+
 gen-sources: $(PDK_ROOT)/sky130A
        touch $(PDK_ROOT)/sky130A/SOURCES
        echo -ne "skywater-pdk " >> $(PDK_ROOT)/sky130A/SOURCES
s
make pdk-with-sram fails with the following:
Copy code
Error message output from magic script:
Can't write file named '(UNNAMED)'
Annotating files in /home/supratim/caravel_tutorial/pdks/open_pdks/sky130/sky130A/libs.ref/sky130_sram_macros/maglef
No CDL file contains sky130_sram_macros device sky130_sram_1kbyte_1rw1r_32x256_8
No CDL file contains sky130_sram_macros device sky130_sram_1kbyte_1rw1r_8x1024_8
No CDL file contains sky130_sram_macros device sram_1rw1r_32_256_8_sky130
No CDL file contains sky130_sram_macros device sky130_sram_2kbyte_1rw1r_32x512_8
make[4]: Leaving directory '/home/supratim/caravel_tutorial/pdks/open_pdks/sky130'
if test "x" != "x" ; then \
        echo "Building OSU 12-track-high standard cell library" ;\
        make osu-t12-a ;\
fi
if test "x" != "x" ; then \
        echo "Building OSU 15-track-high standard cell library" ;\
        make osu-t15-a ;\
fi
if test "x" != "x" ; then \
        echo "Building OSU 18-track-high standard cell library" ;\
        make osu-t18-a ;\
fi
make[3]: Leaving directory '/home/supratim/caravel_tutorial/pdks/open_pdks/sky130'
echo "Ended sky130A PDK staging on "`date` >> sky130A_make.log
make[2]: Leaving directory '/home/supratim/caravel_tutorial/pdks/open_pdks/sky130'
make[2]: Entering directory '/home/supratim/caravel_tutorial/pdks/open_pdks/sky130'
echo "Starting SKY130 PDK migration on "`date` > sky130A_install.log
../common/staging_install.py -std_format \
        -source /home/supratim/caravel_tutorial/pdks/open_pdks/sky130/sky130A \
        -finalpath /home/supratim/caravel_tutorial/pdks/sky130A \
        -variable PDKPATH \
        -link_from none 2>&1 | tee -a sky130A_install.log
Installing in target directory /home/supratim/caravel_tutorial/pdks/sky130A
Removing files from target
Copying staging files to target
Done.
Changing local path references from /home/supratim/caravel_tutorial/pdks/open_pdks/sky130/sky130A to /home/supratim/caravel_tutorial/pdks/sky130A
Part 1:  Tools
      xschem (1 substitution)
      xcircuit (1 substitution)
      qflow (16 substitutions)
      magic (2 substitutions)
Part 2:  Libraries
   sky130_fd_pr
      mag (1 substitution)
      maglef (1 substitution)
   sky130_ml_xx_hd
   sky130_sram_macros
      mag (1 substitution)
      maglef (1 substitution)
   sky130_fd_sc_hd
      mag (1 substitution)
      maglef (1 substitution)
   sky130_fd_sc_hvl
      mag (1 substitution)
      maglef (1 substitution)
   sky130_fd_io
      mag (1 substitution)
      maglef (1 substitution)
Removing temporary files from destination.
Done with PDK migration.
echo "Ended SKY130 PDK migration on "`date` >> sky130A_install.log
make[2]: Leaving directory '/home/supratim/caravel_tutorial/pdks/open_pdks/sky130'
make[2]: Entering directory '/home/supratim/caravel_tutorial/pdks/open_pdks/sky130'
set -f ; ../common/foundry_install.py -std_format -target /home/supratim/caravel_tutorial/pdks/open_pdks/sky130/sky130A -clean
Done removing staging area.
make[2]: Leaving directory '/home/supratim/caravel_tutorial/pdks/open_pdks/sky130'
make[1]: Leaving directory '/home/supratim/caravel_tutorial/caravel_example'
make: *** [Makefile:38: pdk-with-sram] Error 2
Error message output from magic script:
Can't write file named '(UNNAMED)'
m
@Supratim Das
UNNAMED
error is a known benign warning. That's not a problem. You're running
make pdk-with-sram
from a
caravel_user_project
clone, correct? Are you on
mpw-5a
?
s
yes, i am running from caravel_user_project and on mpw-5a
m
What version of magic?
magic -dnull -noc < /dev/null
s
Copy code
Magic 8.3 revision 265 - Compiled on Saturday 05 February 2022 12:35:23 PM IST.
Starting magic under Tcl interpreter
Using the terminal as the console.
Using NULL graphics device.
Processing system .magicrc file
Using technology "minimum", version 0.0
m
Let me check my log files.
Can you post your
pdks/open_pdks/sky130/sky130A_make.log
?
Looks like your log file is truncated. How's your disk space?
s
oops my bad, It got overritten by an on going run. will post a new one in a while
m
good luck!
s
it succeeded this time, turns out in my earlier run I used the -j option with make, and it failed with that due to some reason, without -j option it passed.
m
Can confirm Pdk build fails with -j
m
@Supratim Das @Mitch Bailey @Matt Venn These questions aren't really related to the main question and it's actually a very useful conversation for the community, so please for any unrelated questions start a new thread so that the whole community could benefit from it. Thank you!
👍 2
@User @User @User The -j flag with building the pdk actually corrupts the files, @User can comment on that
👍 1
t
Working on the multithreaded build problem. Testing a solution now.
@Marwan Abbas, @Supratim Das, @Mitch Bailey, @Matt Venn: The current version of open_pdks (as of yesterday afternoon) works cleanly with
make -jX
.
👍 1
🙌 2