Coder Social home page Coder Social logo

make emu error about xiangshan HOT 17 CLOSED

openxiangshan avatar openxiangshan commented on August 21, 2024
make emu error

from xiangshan.

Comments (17)

JustLuoyu avatar JustLuoyu commented on August 21, 2024 1

I have a similar error :
$make emu CONFIG=MinimalConfig EMU_THREADS=2 -j16
xxx
%Error: Invalid Option: --threads-dpi

from xiangshan.

poemonsense avatar poemonsense commented on August 21, 2024

Is there any more error information when it crashes?

Did you ctrl-c to kill the process? I see from the log

Killed
%Error: Command Failed

from xiangshan.

jfan0 avatar jfan0 commented on August 21, 2024

Is there any more error information when it crashes?

Did you ctrl-c to kill the process? I see from the log

Killed
%Error: Command Failed

No more error info.
And I don't kill the process manually.

Killed
%Error: Command Failed

is printed automatically when it crashed.

from xiangshan.

poemonsense avatar poemonsense commented on August 21, 2024

Can you try a newer version of Verilator? Refer to Section Git Quick Install on https://verilator.org/guide/latest/install.html.

v4.028 was released more than one year ago. We are currently using v4.204.

from xiangshan.

jfan0 avatar jfan0 commented on August 21, 2024

Can you try a newer version of Verilator? Refer to Section Git Quick Install on https://verilator.org/guide/latest/install.html.

v4.028 was released more than one year ago. We are currently using v4.204.

Tried Verilator 4.204 2021-06-12 rev v4.204, same error info.

username@100013000737:~/riscv/open_xiangshan/XiangShan$ make emu
time -a -o ./build/time.log verilator --cc --exe --top-module SimTop +define+VERILATOR=1 +define+PRINTF_COND=1 +define+RANDOMIZE_REG_INIT +define+RANDOMIZE_MEM_INIT +define+RANDOMIZE_GARBAGE_ASSIGN +define+RANDOMIZE_DELAY=0 -Wno-STMTDLY -Wno-WIDTH -I/home/username/riscv/open_xiangshan/XiangShan/build --x-assign unique -O3 -CFLAGS "-std=c++11 -static -Wall -I/home/username/riscv/open_xiangshan/XiangShan/src/test/csrc/verilator -I/home/username/riscv/open_xiangshan/XiangShan/src/test/csrc/common -I/home/username/riscv/open_xiangshan/XiangShan/src/test/csrc/difftest -DVERILATOR -Wno-maybe-uninitialized" -LDFLAGS "-lpthread -lSDL2 -ldl -lz" --assert --stats-vars --output-split 30000 --output-split-cfuncs 30000
-o /home/username/riscv/open_xiangshan/XiangShan/build/emu -Mdir build/emu-compile build/SimTop.v ./src/test/vsrc/common/assert.v ./src/test/vsrc/common/difftest.v ./src/test/vsrc/common/ref.v ./src/test/vsrc/common/ram.v /home/username/riscv/open_xiangshan/XiangShan/src/test/csrc/verilator/emu.cpp /home/username/riscv/open_xiangshan/XiangShan/src/test/csrc/verilator/main.cpp /home/username/riscv/open_xiangshan/XiangShan/src/test/csrc/verilator/snapshot.cpp /home/username/riscv/open_xiangshan/XiangShan/src/test/csrc/common/compress.cpp /home/username/riscv/open_xiangshan/XiangShan/src/test/csrc/common/uart.cpp /home/username/riscv/open_xiangshan/XiangShan/src/test/csrc/common/ram.cpp /home/username/riscv/open_xiangshan/XiangShan/src/test/csrc/common/common.cpp /home/username/riscv/open_xiangshan/XiangShan/src/test/csrc/common/axi4.cpp /home/username/riscv/open_xiangshan/XiangShan/src/test/csrc/common/sdcard.cpp /home/username/riscv/open_xiangshan/XiangShan/src/test/csrc/common/vga.cpp /home/username/riscv/open_xiangshan/XiangShan/src/test/csrc/common/flash.cpp /home/username/riscv/open_xiangshan/XiangShan/src/test/csrc/common/keyboard.cpp /home/username/riscv/open_xiangshan/XiangShan/src/test/csrc/common/device.cpp /home/username/riscv/open_xiangshan/XiangShan/src/test/csrc/difftest/difftest.cpp /home/username/riscv/open_xiangshan/XiangShan/src/test/csrc/difftest/goldenmem.cpp /home/username/riscv/open_xiangshan/XiangShan/src/test/csrc/difftest/ref.cpp /home/username/riscv/open_xiangshan/XiangShan/src/test/csrc/difftest/nemuproxy.cpp /home/username/riscv/open_xiangshan/XiangShan/src/test/csrc/difftest/interface.cpp
Killed
%Error: Command Failed /usr/local/bin/verilator_bin --cc --exe --top-module SimTop +define+VERILATOR=1 +define+PRINTF_COND=1 +define+RANDOMIZE_REG_INIT +define+RANDOMIZE_MEM_INIT +define+RANDOMIZE_GARBAGE_ASSIGN +define+RANDOMIZE_DELAY=0 -Wno-STMTDLY -Wno-WIDTH -I/home/username/riscv/open_xiangshan/XiangShan/build --x-assign unique -O3 -CFLAGS -std=c++11\ -static\ -Wall\ -I/home/username/riscv/open_xiangshan/XiangShan/src/test/csrc/verilator\ -I/home/username/riscv/open_xiangshan/XiangShan/src/test/csrc/common\ -I/home/username/riscv/open_xiangshan/XiangShan/src/test/csrc/difftest\ -DVERILATOR\ -Wno-maybe-uninitialized -LDFLAGS -lpthread\ -lSDL2\ -ldl\ -lz --assert --stats-vars --output-split 30000 --output-split-cfuncs 30000 -o /home/username/riscv/open_xiangshan/XiangShan/build/emu -Mdir build/emu-compile build/SimTop.v ./src/test/vsrc/common/assert.v ./src/test/vsrc/common/difftest.v ./src/test/vsrc/common/ref.v ./src/test/vsrc/common/ram.v /home/username/riscv/open_xiangshan/XiangShan/src/test/csrc/verilator/emu.cpp /home/username/riscv/open_xiangshan/XiangShan/src/test/csrc/verilator/main.cpp /home/username/riscv/open_xiangshan/XiangShan/src/test/csrc/verilator/snapshot.cpp /home/username/riscv/open_xiangshan/XiangShan/src/test/csrc/common/compress.cpp /home/username/riscv/open_xiangshan/XiangShan/src/test/csrc/common/uart.cpp /home/username/riscv/open_xiangshan/XiangShan/src/test/csrc/common/ram.cpp /home/username/riscv/open_xiangshan/XiangShan/src/test/csrc/common/common.cpp /home/username/riscv/open_xiangshan/XiangShan/src/test/csrc/common/axi4.cpp /home/username/riscv/open_xiangshan/XiangShan/src/test/csrc/common/sdcard.cpp /home/username/riscv/open_xiangshan/XiangShan/src/test/csrc/common/vga.cpp /home/username/riscv/open_xiangshan/XiangShan/src/test/csrc/common/flash.cpp /home/username/riscv/open_xiangshan/XiangShan/src/test/csrc/common/keyboard.cpp /home/username/riscv/open_xiangshan/XiangShan/src/test/csrc/common/device.cpp /home/username/riscv/open_xiangshan/XiangShan/src/test/csrc/difftest/difftest.cpp /home/username/riscv/open_xiangshan/XiangShan/src/test/csrc/difftest/goldenmem.cpp /home/username/riscv/open_xiangshan/XiangShan/src/test/csrc/difftest/ref.cpp /home/username/riscv/open_xiangshan/XiangShan/src/test/csrc/difftest/nemuproxy.cpp /home/username/riscv/open_xiangshan/XiangShan/src/test/csrc/difftest/interface.cpp
make: *** [verilator.mk:107: build/emu-compile/VSimTop.mk] Error 137

from xiangshan.

poemonsense avatar poemonsense commented on August 21, 2024

What's the configurations of your machine? For example, cpu, memory, storage?

from xiangshan.

jfan0 avatar jfan0 commented on August 21, 2024

It's a laptop, WSL on Windows 10, Ubuntu 20.04.2 LTS, Intel Core i7-8565U @ 1.8GHz, 16.0 GB memory , 512GB SSD.
make verilog succeed.
make emu failed, and error info is here.

from xiangshan.

jfan0 avatar jfan0 commented on August 21, 2024

Tried on another machine: A cloud server, CentOS 8.2, 16.0 GB memory, 50GB SSD.

make verilog succeed with export _JAVA_OPTIONS='-XX:-UseGCOverheadLimit -Xms256m -Xmx11g -Xss256K'.
make emu still error.

My environment

[user@VM-0-17-centos XiangShan]# verilator --version
Verilator 4.204 2021-06-12 rev v4.204

[user@VM-0-17-centos XiangShan]# java -version
openjdk version "11.0.11" 2021-04-20 LTS
OpenJDK Runtime Environment 18.9 (build 11.0.11+9-LTS)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.11+9-LTS, mixed mode, sharing)

[user@VM-0-17-centos XiangShan]# g++ --version
g++ (GCC) 8.4.1 20200928 (Red Hat 8.4.1-1)
Copyright (C) 2018 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

[user@VM-0-17-centos XiangShan]# mill --version
Mill Build Tool version 0.9.8
Java version: 1.8.0_292, vendor: Red Hat, Inc., runtime: /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.292.b10-1.el8_4.x86_64/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "Linux", version: 4.18.0-193.28.1.el8_2.x86_64, arch: amd64

Error output of make emu.
Keyinfo is Error: Verilator threw signal 9. Suggest trying --debug --gdbbt. And I found chipsalliance/rocket-chip#780, but I use the Verilator version 4.204 recommended by @poemonsense , so seems not problem with Verilator version.

[user@VM-0-17-centos XiangShan]# make emu
Sat, 10 Jul 2021 21:13:37 +0800
time -a -o ./build/time.log verilator --cc --exe --top-module SimTop +define+VERILATOR=1 +define+PRINTF_COND=1 +define+RANDOMIZE_REG_INIT +define+RAN
DOMIZE_MEM_INIT +define+RANDOMIZE_GARBAGE_ASSIGN +define+RANDOMIZE_DELAY=0 -Wno-STMTDLY -Wno-WIDTH -I/user/riscv/OpenXiangShan/XiangShan/build --x-as
sign unique -O3 -CFLAGS "-std=c++11 -static -Wall -I/user/riscv/OpenXiangShan/XiangShan/src/test/csrc/verilator -I/user/riscv/OpenXiangShan/XiangShan
/src/test/csrc/common -I/user/riscv/OpenXiangShan/XiangShan/src/test/csrc/difftest -DVERILATOR -Wno-maybe-uninitialized -DNUM_CORES=1" -LDFLAGS "-lpt
hread -lSDL2 -ldl -lz" --assert --stats-vars --output-split 30000 --output-split-cfuncs 30000
-o /user/riscv/OpenXiangShan/XiangShan/build/emu -Mdir build/emu-compile build/SimTop.v ./src/test/vsrc/common/ref.v ./src/test/vsrc/common/a
ssert.v ./src/test/vsrc/common/difftest.v ./src/test/vsrc/common/ram.v /user/riscv/OpenXiangShan/XiangShan/src/test/csrc/verilator/emu.cpp /user/risc
v/OpenXiangShan/XiangShan/src/test/csrc/verilator/snapshot.cpp /user/riscv/OpenXiangShan/XiangShan/src/test/csrc/verilator/main.cpp /user/riscv/OpenX
iangShan/XiangShan/src/test/csrc/common/sdcard.cpp /user/riscv/OpenXiangShan/XiangShan/src/test/csrc/common/uart.cpp /user/riscv/OpenXiangShan/XiangS
han/src/test/csrc/common/axi4.cpp /user/riscv/OpenXiangShan/XiangShan/src/test/csrc/common/vga.cpp /user/riscv/OpenXiangShan/XiangShan/src/test/csrc/
common/keyboard.cpp /user/riscv/OpenXiangShan/XiangShan/src/test/csrc/common/device.cpp /user/riscv/OpenXiangShan/XiangShan/src/test/csrc/common/ram.
cpp /user/riscv/OpenXiangShan/XiangShan/src/test/csrc/common/common.cpp /user/riscv/OpenXiangShan/XiangShan/src/test/csrc/common/flash.cpp /user/risc
v/OpenXiangShan/XiangShan/src/test/csrc/common/compress.cpp /user/riscv/OpenXiangShan/XiangShan/src/test/csrc/difftest/goldenmem.cpp /user/riscv/Open
XiangShan/XiangShan/src/test/csrc/difftest/interface.cpp /user/riscv/OpenXiangShan/XiangShan/src/test/csrc/difftest/nemuproxy.cpp /user/riscv/OpenXia
ngShan/XiangShan/src/test/csrc/difftest/ref.cpp /user/riscv/OpenXiangShan/XiangShan/src/test/csrc/difftest/difftest.cpp
%Error: Verilator threw signal 9. Suggest trying --debug --gdbbt
%Error: Command Failed /usr/local/bin/verilator_bin --cc --exe --top-module SimTop +define+VERILATOR=1 +define+PRINTF_COND=1 +define+RANDOMIZE_REG_IN
IT +define+RANDOMIZE_MEM_INIT +define+RANDOMIZE_GARBAGE_ASSIGN +define+RANDOMIZE_DELAY=0 -Wno-STMTDLY -Wno-WIDTH -I/user/riscv/OpenXiangShan/XiangSha
n/build --x-assign unique -O3 -CFLAGS -std=c++11\ -static\ -Wall\ -I/user/riscv/OpenXiangShan/XiangShan/src/test/csrc/verilator\ -I/user/riscv/OpenXi
angShan/XiangShan/src/test/csrc/common\ -I/user/riscv/OpenXiangShan/XiangShan/src/test/csrc/difftest\ -DVERILATOR\ -Wno-maybe-uninitialized\ -DNUM_CO
RES=1 -LDFLAGS -lpthread\ -lSDL2\ -ldl\ -lz --assert --stats-vars --output-split 30000 --output-split-cfuncs 30000 -o /user/riscv/OpenXiangShan/Xiang
Shan/build/emu -Mdir build/emu-compile build/SimTop.v ./src/test/vsrc/common/ref.v ./src/test/vsrc/common/assert.v ./src/test/vsrc/common/difftest.v
./src/test/vsrc/common/ram.v /user/riscv/OpenXiangShan/XiangShan/src/test/csrc/verilator/emu.cpp /user/riscv/OpenXiangShan/XiangShan/src/test/csrc/ve
rilator/snapshot.cpp /user/riscv/OpenXiangShan/XiangShan/src/test/csrc/verilator/main.cpp /user/riscv/OpenXiangShan/XiangShan/src/test/csrc/common/sd
card.cpp /user/riscv/OpenXiangShan/XiangShan/src/test/csrc/common/uart.cpp /user/riscv/OpenXiangShan/XiangShan/src/test/csrc/common/axi4.cpp /user/ri
scv/OpenXiangShan/XiangShan/src/test/csrc/common/vga.cpp /user/riscv/OpenXiangShan/XiangShan/src/test/csrc/common/keyboard.cpp /user/riscv/OpenXiangS
han/XiangShan/src/test/csrc/common/device.cpp /user/riscv/OpenXiangShan/XiangShan/src/test/csrc/common/ram.cpp /user/riscv/OpenXiangShan/XiangShan/sr
c/test/csrc/common/common.cpp /user/riscv/OpenXiangShan/XiangShan/src/test/csrc/common/flash.cpp /user/riscv/OpenXiangShan/XiangShan/src/test/csrc/co
mmon/compress.cpp /user/riscv/OpenXiangShan/XiangShan/src/test/csrc/difftest/goldenmem.cpp /user/riscv/OpenXiangShan/XiangShan/src/test/csrc/difftest
/interface.cpp /user/riscv/OpenXiangShan/XiangShan/src/test/csrc/difftest/nemuproxy.cpp /user/riscv/OpenXiangShan/XiangShan/src/test/csrc/difftest/re
f.cpp /user/riscv/OpenXiangShan/XiangShan/src/test/csrc/difftest/difftest.cpp
make: *** [verilator.mk:107: build/emu-compile/VSimTop.mk] Error 255

I tried add --debug --gdbbg option to verilator, the error info is below.
From No stack., it seems not enough memory fot stack? Maybe similiar to nvdla/hw#112.
Any suggestions are appreciated.

  • V3Unknown.cpp:489: unknownAll:
  • V3Ast.cpp:1123: Dumping build/emu-compile/VSimTop_025_unknown.tree
  • V3Inline.cpp:712: inlineAll:

Program terminated with signal SIGKILL, Killed.
The program no longer exists.
No stack.
%Error: export VERILATOR_ROOT=
%Error: gdb /usr/local/bin/verilator_bin_dbg --batch --quiet --return-child-result -ex "run --cc --exe --top-module SimTop +define+VERILATOR=1 +define+PRINTF_COND=1 +define+RANDOMIZE_REG_INIT +define+RANDOMIZE_MEM_INIT +define+RANDOMIZE_GARBAGE_ASSIGN +define+RANDOMIZE_DELAY=0 -Wno-STMTDLY -Wno-WIDTH -I/home/user/riscv/OpenXiangShan/XiangShan/build --x-assign unique -O3 -CFLAGS -std=c++11\ -static\ -Wall\ -I/home/user/riscv/OpenXiangShan/XiangShan/src/test/csrc/verilator\ -I/home/user/riscv/OpenXiangShan/XiangShan/src/test/csrc/common\ -I/home/user/riscv/OpenXiangShan/XiangShan/src/test/csrc/difftest\ -DVERILATOR\ -Wno-maybe-uninitialized\ -DNUM_CORES=1 -LDFLAGS -lpthread\ -lSDL2\ -ldl\ -lz --debug --gdbbt --threads 2 --threads-dpi all --assert --stats-vars --output-split 30000 --output-split-cfuncs 30000 -o /home/user/riscv/OpenXiangShan/XiangShan/build/emu -Mdir build/emu-compile build/SimTop.v ./src/test/vsrc/common/ref.v ./src/test/vsrc/common/assert.v ./src/test/vsrc/common/difftest.v ./src/test/vsrc/common/ram.v /home/user/riscv/OpenXiangShan/XiangShan/src/test/csrc/verilator/emu.cpp /home/user/riscv/OpenXiangShan/XiangShan/src/test/csrc/verilator/snapshot.cpp /home/user/riscv/OpenXiangShan/XiangShan/src/test/csrc/verilator/main.cpp /home/user/riscv/OpenXiangShan/XiangShan/src/test/csrc/common/sdcard.cpp /home/user/riscv/OpenXiangShan/XiangShan/src/test/csrc/common/uart.cpp /home/user/riscv/OpenXiangShan/XiangShan/src/test/csrc/common/axi4.cpp /home/user/riscv/OpenXiangShan/XiangShan/src/test/csrc/common/vga.cpp /home/user/riscv/OpenXiangShan/XiangShan/src/test/csrc/common/keyboard.cpp /home/user/riscv/OpenXiangShan/XiangShan/src/test/csrc/common/device.cpp /home/user/riscv/OpenXiangShan/XiangShan/src/test/csrc/common/ram.cpp /home/user/riscv/OpenXiangShan/XiangShan/src/test/csrc/common/common.cpp /home/user/riscv/OpenXiangShan/XiangShan/src/test/csrc/common/flash.cpp /home/user/riscv/OpenXiangShan/XiangShan/src/test/csrc/common/compress.cpp /home/user/riscv/OpenXiangShan/XiangShan/src/test/csrc/difftest/goldenmem.cpp /home/user/riscv/OpenXiangShan/XiangShan/src/test/csrc/difftest/interface.cpp /home/user/riscv/OpenXiangShan/XiangShan/src/test/csrc/difftest/nemuproxy.cpp /home/user/riscv/OpenXiangShan/XiangShan/src/test/csrc/difftest/ref.cpp /home/user/riscv/OpenXiangShan/XiangShan/src/test/csrc/difftest/difftest.cpp" -ex 'set width 0' -ex 'bt' -ex 'quit'
%Error: Command Failed gdb /usr/local/bin/verilator_bin_dbg --batch --quiet --return-child-result -ex "run --cc --exe --top-module SimTop +define+VERILATOR=1 +define+PRINTF_COND=1 +define+RANDOMIZE_REG_INIT +define+RANDOMIZE_MEM_INIT +define+RANDOMIZE_GARBAGE_ASSIGN +define+RANDOMIZE_DELAY=0 -Wno-STMTDLY -Wno-WIDTH -I/home/user/riscv/OpenXiangShan/XiangShan/build --x-assign unique -O3 -CFLAGS -std=c++11\ -static\ -Wall\ -I/home/user/riscv/OpenXiangShan/XiangShan/src/test/csrc/verilator\ -I/home/user/riscv/OpenXiangShan/XiangShan/src/test/csrc/common\ -I/home/user/riscv/OpenXiangShan/XiangShan/src/test/csrc/difftest\ -DVERILATOR\ -Wno-maybe-uninitialized\ -DNUM_CORES=1 -LDFLAGS -lpthread\ -lSDL2\ -ldl\ -lz --debug --gdbbt --threads 2 --threads-dpi all --assert --stats-vars --output-split 30000 --output-split-cfuncs 30000 -o /home/user/riscv/OpenXiangShan/XiangShan/build/emu -Mdir build/emu-compile build/SimTop.v ./src/test/vsrc/common/ref.v ./src/test/vsrc/common/assert.v ./src/test/vsrc/common/difftest.v ./src/test/vsrc/common/ram.v /home/user/riscv/OpenXiangShan/XiangShan/src/test/csrc/verilator/emu.cpp /home/user/riscv/OpenXiangShan/XiangShan/src/test/csrc/verilator/snapshot.cpp /home/user/riscv/OpenXiangShan/XiangShan/src/test/csrc/verilator/main.cpp /home/user/riscv/OpenXiangShan/XiangShan/src/test/csrc/common/sdcard.cpp /home/user/riscv/OpenXiangShan/XiangShan/src/test/csrc/common/uart.cpp /home/user/riscv/OpenXiangShan/XiangShan/src/test/csrc/common/axi4.cpp /home/user/riscv/OpenXiangShan/XiangShan/src/test/csrc/common/vga.cpp /home/user/riscv/OpenXiangShan/XiangShan/src/test/csrc/common/keyboard.cpp /home/user/riscv/OpenXiangShan/XiangShan/src/test/csrc/common/device.cpp /home/user/riscv/OpenXiangShan/XiangShan/src/test/csrc/common/ram.cpp /home/user/riscv/OpenXiangShan/XiangShan/src/test/csrc/common/common.cpp /home/user/riscv/OpenXiangShan/XiangShan/src/test/csrc/common/flash.cpp /home/user/riscv/OpenXiangShan/XiangShan/src/test/csrc/common/compress.cpp /home/user/riscv/OpenXiangShan/XiangShan/src/test/csrc/difftest/goldenmem.cpp /home/user/riscv/OpenXiangShan/XiangShan/src/test/csrc/difftest/interface.cpp /home/user/riscv/OpenXiangShan/XiangShan/src/test/csrc/difftest/nemuproxy.cpp /home/user/riscv/OpenXiangShan/XiangShan/src/test/csrc/difftest/ref.cpp /home/user/riscv/OpenXiangShan/XiangShan/src/test/csrc/difftest/difftest.cpp" -ex 'set width 0' -ex 'bt' -ex 'quit'
make: *** [verilator.mk:107: build/emu-compile/VSimTop.mk] Error 255

from xiangshan.

JustLuoyu avatar JustLuoyu commented on August 21, 2024

I have a similar error :
$make emu CONFIG=MinimalConfig EMU_THREADS=2 -j16
xxx
%Error: Invalid Option: --threads-dpi
the version of Verilator which apt-get installed is too low. Git Quick Install solved my problem

from xiangshan.

poemonsense avatar poemonsense commented on August 21, 2024

Tried on another machine: A cloud server, CentOS 8.2, 16.0 GB memory, 50GB SSD.

make verilog succeed with export _JAVA_OPTIONS='-XX:-UseGCOverheadLimit -Xms256m -Xmx11g -Xss256K'.
make emu still error.

My environment

[user@VM-0-17-centos XiangShan]# verilator --version
Verilator 4.204 2021-06-12 rev v4.204

It looks like 16GB memory is not enough for verilator. I just tried on our machine (i9-10850k with 128GB memory). Verilator uses 31GB memory when I pass --threads 8 --trace to it.

Sorry we didn't expect verilator requires so much memory. Can you try a larger swap size? Or using a machine with a larger memory?

from xiangshan.

jfan0 avatar jfan0 commented on August 21, 2024

Finally make emu CONFIG=MinimalConfig SIM_ARGS=--disable-log EMU_THREADS=2 -j1 succeed, but it took me 16 hours with the swap size set to 32GB after 8/16GB failed.
(Change swap size by referring to https://net2.com/how-to-increase-swap-space-in-linux/).

By the way, I also install SDL2 to make emu, just paste the installing script below in case anyone need this.

#!/bin/bash
if [[ $EUID -ne 0 ]]; then
echo "This script must be run as root"
exit 1
fi
cd /tmp
git clone https://github.com/libsdl-org/SDL.git;
cd SDL;
mkdir build;
cd build;
../configure
make;
make install;
sudo ln -s /usr/local/lib/libSDL2-2.0.so.0 /usr/lib64/libSDL2-2.0.so.0

from xiangshan.

jfan0 avatar jfan0 commented on August 21, 2024

So, can I draw a conclusion that if I don't have a machine with great performance(maybe 64GB, i9-10850K), I can hardly explore XiangShan and make contribution?

from xiangshan.

poemonsense avatar poemonsense commented on August 21, 2024

So, can I draw a conclusion that if I don't have a machine with great performance(maybe 64GB, i9-10850K), I can hardly explore XiangShan and make contribution?

Thanks and you have made contributions to XiangShan by filing an issue to us, which we didn't expect to be a real issue.

We have been working on this problem. Currently the diffculty for reproducing XiangShan on personal laptops is not what we want and what we expected.

We have considered the following possibilities to allow users with their laptops to participate in XiangShan ecosystem:

  • to use CONFIG=MinimalSimConfig, which replaces L1plus, PTW, DCache and lower level caches with DPI-C functions that does not produce RTL. This is acceptable for users who want to contribute to the OoO pipelines.
  • (WIP) to use the simple in-order NutShell (https://github.com/OSCPU/NutShell) as the cpu core and XiangShan's simulation framework (with difftest, a instruction-level co-sim and verification framework). We have started this project. This work will be done in one or two weeks (should be no later than end of July). For users with interest in our verification framework, this is OK.
  • (WIP) to allow more configurations for XiangShan. MinimalSimConfig is probably not small enough but we have been working on it. We will let more pipelines to be configurable (especially the issue and function units) to achieve a two-issue or single-issue design. This work is expected to be done by the end of this month.
  • (WIP) use more DPI-C functions to replace the modules that users do not care. For example, if you want to see how the cache works, we let the CPU core be a functional model and only the caches are simulated based on RTL. This project is expected to be a long-term one (hope we can have it done by the end of this year).

If you have some ideas on how we can make this better, feel free to let us know.

BTW, there's no need to manually install the SDL lib (this lib is used in only one file and we rarely use it. Feel free to help us disable this file via some macro). Using sudo apt install libsdl2-dev to install by apt is more easier.

Also, allowing make to use more threads via -jN like -j4 helps the compilation a lot. Verilator produces hundreds of C++ files and we need to compile them all. If you have Synopsys VCS installed, it's much faster than Verilator since they work in different ways on simulation. It only takes less than 2 minutes to produce the simv though it simulates a lot slower than Verilator (hundreds of cycles per second in VCS v.s. 4K-6K cycles per second in Verilator with 8 threads).

from xiangshan.

poemonsense avatar poemonsense commented on August 21, 2024

@Kevo-Gabo Hi, we have updated MinimalConfig on the master branch to include only 2 ALUs and 1FMAC. Could you please have a try to see how long it takes to generate verilog and the simulator? See build/time.log for the time result after it succeeds.

from xiangshan.

jfan0 avatar jfan0 commented on August 21, 2024

Hi @poemonsense , thanks a lot for the update. Now, make emu CONFIG=MinimalConfig SIM_ARGS=--disable-log EMU_THREADS=2 -j8 takes about 15min.

from xiangshan.

poemonsense avatar poemonsense commented on August 21, 2024

Thanks!

from xiangshan.

fatalfeel avatar fatalfeel commented on August 21, 2024

I have a similar error :
$make emu CONFIG=MinimalConfig EMU_THREADS=2 -j16
xxx
%Error: Invalid Option: --threads-dpi
the version of Verilator which apt-get installed is too low. Git Quick Install solved my problem

%Error: Invalid Option: --threads
apt remove verilator
git clone --recursive https://github.com/verilator/verilator
cd verilator
autoconf
./configure
make -j8 && make install

from xiangshan.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.