Bhawandeep Singh Harsh
05/29/2021, 8:18 AM1302 git clone <https://github.com/efabless/caravel_user_project.git>
1304 cd caravel_user_project/
1305 make install
1307 mkdir PDK_ROOT
1308 mkdir OPENLANE_ROOT
1309 export PDK_ROOT=~/caravel_user_project/PDK_ROOT/
1310 export OPENLANE_ROOT=~/caravel_user_project/OPENLANE_ROOT/
1311 make update_caravel
1312 make pdk
1313 make simenv
1314 export CARAVEL_ROOT=$(pwd)/caravel
1315 export SIM=RTL
1317 make verify-io_ports
1318 make openlane
1319 make user_proj_example
Is anyone else getting magic drc violations ? My magic version is -
$ magic --version
8.2.157
ThanksHieu Bui
05/29/2021, 10:36 AMBhawandeep Singh Harsh
05/29/2021, 10:48 AMmake <project>
My magic version is -
$ magic --version
8.2.157
Hieu Bui
05/29/2021, 10:57 AMmake pdk-nonnative
However, by default, the docker image might not have the internet connection. You have to config docker to allow the image to have the internet connection.Bhawandeep Singh Harsh
05/29/2021, 11:47 AMMatt Venn
05/29/2021, 11:58 AMBhawandeep Singh Harsh
05/29/2021, 12:21 PMMatt Venn
05/29/2021, 12:22 PMBhawandeep Singh Harsh
05/29/2021, 12:59 PMYour branch is up to date with 'origin/master'.
Already up to date.
make[1]: Leaving directory '/home/bhawandeepsingh/Desktop/darkriscv_in_openlane'
docker run --rm -v /home/bhawandeepsingh/Desktop/darkriscv_in_openlane/PDK_ROOT:/home/bhawandeepsingh/Desktop/darkriscv_in_openlane/PDK_ROOT -v :/user_project -v /home/bhawandeepsingh/Desktop/darkriscv_in_openlane/caravel:/home/bhawandeepsingh/Desktop/darkriscv_in_openlane/caravel -e CARAVEL_ROOT=/home/bhawandeepsingh/Desktop/darkriscv_in_openlane/caravel -e PDK_ROOT=/home/bhawandeepsingh/Desktop/darkriscv_in_openlane/PDK_ROOT -u 1000:1000 efabless/openlane:current sh -c "cd /home/bhawandeepsingh/Desktop/darkriscv_in_openlane/caravel; make build-pdk; make gen-sources"
docker: Error response from daemon: OCI runtime create failed: invalid mount {Destination::/user_project Type:bind Source:/var/lib/docker/volumes/4301b3c91a0ea81bc278fa77113dcd90b078f8354c72fd80886c9411f9945d7e/_data Options:[rbind]}: mount destination :/user_project not absolute: unknown.
make: *** [Makefile:153: pdk-nonnative] Error 125
Hieu Bui
05/29/2021, 1:06 PMpdk-nonnative: skywater-pdk skywater-library skywater-timing open_pdks
docker run --rm -v $(PDK_ROOT):$(PDK_ROOT) -v $(shell pwd):/user_project -v $(CARAVEL_ROOT):$(CARAVEL_ROOT) -e CARAVEL_ROOT=$(CARAVEL_ROOT) -e PDK_ROOT=$(PDK_ROOT) -u $(shell id -u $(USER)):$(shell id -g $(USER)) efabless/openlane:current sh -c "cd $(CARAVEL_ROOT); make build-pdk; make gen-sources"
docker run -it -v $(pwd):/openLANE_flow -v $PDK_ROOT:$PDK_ROOT -e PDK_ROOT=$PDK_ROOT -u $(id -u $USER):$(id -g $USER) efabless/openlane:current
then run:
$ ping <http://google.com|google.com>
Bhawandeep Singh Harsh
05/29/2021, 1:38 PMmagic --version
? My runs are ending abruptly at magic related steps. The error message is -
[INFO]: current step index: 35
Magic 8.3 revision 145 - Compiled on Mon Mar 22 04:21:56 UTC 2021.
Starting magic under Tcl interpreter
Using the terminal as the console.
Using NULL graphics device.
Processing system .magicrc file
Sourcing design .magicrc for technology sky130A ...
2 Magic internal units = 1 Lambda
Input style sky130(): scaleFactor=2, multiplier=2
Scaled tech values by 2 / 1 to match internal grid scaling
Loading sky130A Device Generator Menu ...
Loading "/openLANE_flow/scripts/magic/maglef.tcl" from command line.
Reading LEF data from file /project/openlane/user_project_wrapper/runs/user_project_wrapper/results/magic/user_project_wrapper.lef.
This action cannot be undone.
LEF read: Processed 21978940 lines.
[INFO]: DONE GENERATING MAGLEF VIEW
sh: line 1: 8 Killed flow.tcl -design ./user_project_wrapper -save_path .. -save -tag user_project_wrapper -overwrite
make[1]: *** [Makefile:43: user_project_wrapper] Error 137
make[1]: Leaving directory '/home/bhawandeepsingh/Desktop/darkriscv_in_openlane/openlane'
make: *** [Makefile:71: user_project_wrapper] Error 2
Hieu Bui
05/30/2021, 2:30 AM$ docker run -it -v $(pwd):/openLANE_flow -v $PDK_ROOT:$PDK_ROOT -e PDK_ROOT=$PDK_ROOT -u $(id -u $USER):$(id -g $USER) efabless/openlane:current
$ magic --version
$ ping -c 4 <http://google.com|google.com>
Docker run a separate system on your machine. It is like a virtual machine actually. Everything will be contained in that environment. Magic in your machine stay the same. But the magic in the docker image will be the correct version. However, I think 'make pdk-nonnative' would fail if it does not have internet connection.Bhawandeep Singh Harsh
05/30/2021, 2:52 AMbash-4.2$ magic --version
8.3.145
The ping also returned -
bash-4.2$ ping -c 4 <http://google.com|google.com>
PING <http://google.com|google.com> (216.58.195.78) 56(84) bytes of data.
64 bytes from <http://sfo07s16-in-f14.1e100.net|sfo07s16-in-f14.1e100.net> (216.58.195.78): icmp_seq=1 ttl=116 time=12.3 ms
64 bytes from <http://sfo07s16-in-f14.1e100.net|sfo07s16-in-f14.1e100.net> (216.58.195.78): icmp_seq=2 ttl=116 time=12.1 ms
64 bytes from <http://sfo07s16-in-f14.1e100.net|sfo07s16-in-f14.1e100.net> (216.58.195.78): icmp_seq=3 ttl=116 time=12.1 ms
64 bytes from <http://sfo07s16-in-f14.1e100.net|sfo07s16-in-f14.1e100.net> (216.58.195.78): icmp_seq=4 ttl=116 time=12.0 ms
--- <http://google.com|google.com> ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3003ms
rtt min/avg/max/mdev = 12.009/12.156/12.305/0.172 ms
Hieu Bui
05/30/2021, 2:59 AMBhawandeep Singh Harsh
05/30/2021, 3:06 AMcpu time = 00:05:11, elapsed time = 00:01:18, memory = 2066.19 (MB), peak = 4341.46 (MB)
Hieu Bui
05/30/2021, 3:08 AMBhawandeep Singh Harsh
05/30/2021, 3:11 AM#set ::env(PL_RESIZER_DESIGN_OPTIMIZATIONS) 0
#set ::env(PL_RESIZER_TIMING_OPTIMIZATIONS) 0
#set ::env(PL_RESIZER_BUFFER_INPUT_PORTS) 0
#set ::env(PL_RESIZER_BUFFER_OUTPUT_PORTS) 0
#
#set ::env(PL_OPENPHYSYN_OPTIMIZATIONS) 0
#set ::env(DIODE_INSERTION_STRATEGY) 0
#set ::env(FILL_INSERTION) 0
#set ::env(TAP_DECAP_INSERTION) 0
Hieu Bui
05/30/2021, 3:28 AMset script_dir [file dirname [file normalize [info script]]]
# User config
set ::env(DESIGN_NAME) darksocv
# Change if needed
#set ::env(VERILOG_FILES) [glob $::env(DESIGN_DIR)/src/*.v]
set ::env(VERILOG_FILES) "\
$script_dir/../../caravel/verilog/rtl/defines.v \
$script_dir/../../verilog/rtl/darksocv.v \
$script_dir/../../verilog/rtl/darkriscv.v \
$script_dir/../../verilog/rtl/darkuart.v"
# Fill this
set ::env(CLOCK_PERIOD) "100"
set ::env(CLOCK_PORT) "XCLK"
#-> Do the below from the bash shell inside docker
#export STD_CELL_LIBRARY="sky130_fd_sc_ls"
set ::env(CLOCK_NET) $::env(CLOCK_PORT)
#set ::env(CLOCK_NET) "XCLK"
#set ::env(CLOCK_NET) "CLK"
#set ::env(CLOCK_NET) "core0.CLK"
#set ::env(CLOCK_NET) "uart0.CLK"
set ::env(FP_SIZING) relative
set ::env(FP_CORE_UTIL) 30
set ::env(DESIGN_IS_CORE) 0
set ::env(PL_TARGET_DENSITY) 0.5
set ::env(PL_BASIC_PLACEMENT) 0
set ::env(PL_ROUTABILITY_DRIVEN) 1
set ::env(VDD_NETS) [list {vccd1} {vccd2} {vdda1} {vdda2}]
set ::env(GND_NETS) [list {vssd1} {vssd2} {vssa1} {vssa2}]
set ::env(RUN_CVC) 0
You can try to harden it futher by using the exploration mode in Openlane. You can explore the synthesis results (choose the one that you think is the best for you). Openlane can also sweep different design parameters and give you a report. But it would take a lot of time to run 🙂.Bhawandeep Singh Harsh
05/30/2021, 4:19 PM