Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

SBT test failed #127

Closed
Martoni opened this issue Mar 7, 2024 · 6 comments
Closed

SBT test failed #127

Martoni opened this issue Mar 7, 2024 · 6 comments

Comments

@Martoni
Copy link
Contributor

Martoni commented Mar 7, 2024

Can't simulate the template with sbt test :

 sbt test
[info] welcome to sbt 1.9.7 (Private Build Java 16.0.1)
[info] loading settings for project chisel-template-build from plugins.sbt ...
[info] loading project definition from /tmp/chisel-template/project
[info] loading settings for project root from build.sbt ...
[info] set current project to %NAME% (in build file:/tmp/chisel-template/)
[info] compiling 2 Scala sources to /tmp/chisel-template/target/scala-2.13/classes ...
[info] compiling 1 Scala source to /tmp/chisel-template/target/scala-2.13/test-classes ...
[info] GCDSpec:
[info] - Gcd should calculate proper greatest common denominator *** FAILED ***
[info]   java.lang.Exception: make: Entering directory '/tmp/chisel3.simulator.EphemeralSimulator/114498@martoni/workdir-default'
[info] ls . | grep -v Makefile | grep -v execution-script.txt | xargs rm -rf
[info] \
[info] /usr/local/bin/verilator \
[info] 	'--cc' \
[info] 	'--exe' \
[info] 	'--build' \
[info] 	'-o' \
[info] 	'../simulation' \
[info] 	'--top-module' \
[info] 	'svsimTestbench' \
[info] 	'--Mdir' \
[info] 	'verilated-sources' \
[info] 	'-CFLAGS' \
[info] 	'-std=c++11 -I/tmp/chisel3.simulator.EphemeralSimulator/114498@martoni/workdir-default -DSVSIM_ENABLE_VERILATOR_SUPPORT' \
[info] 	'../primary-sources/DecoupledGcd.sv' 'c-dpi-bridge.cpp' '../generated-sources/testbench.sv' '../generated-sources/simulation-driver.cpp'
[info] make[1]: Entering directory '/tmp/chisel3.simulator.EphemeralSimulator/114498@martoni/workdir-default/verilated-sources'
[info] ccache g++  -I.  -MMD -I/usr/local/share/verilator/include -I/usr/local/share/verilator/include/vltstd -DVM_COVERAGE=0 -DVM_SC=0 -DVM_TRACE=0 -DVM_TRACE_FST=0 -DVM_TRACE_VCD=0 -faligned-new -fcf-protection=none -Wno-bool-operation -Wno-shadow -Wno-sign-compare -Wno-tautological-compare -Wno-uninitialized -Wno-unused-but-set-parameter -Wno-unused-but-set-variable -Wno-unused-parameter -Wno-unused-variable    -std=c++11 -I/tmp/chisel3.simulator.EphemeralSimulator/114498@martoni/workdir-default -DSVSIM_ENABLE_VERILATOR_SUPPORT   -Os -c -o c-dpi-bridge.o c-dpi-bridge.cpp
[info] ccache g++  -I.  -MMD -I/usr/local/share/verilator/include -I/usr/local/share/verilator/include/vltstd -DVM_COVERAGE=0 -DVM_SC=0 -DVM_TRACE=0 -DVM_TRACE_FST=0 -DVM_TRACE_VCD=0 -faligned-new -fcf-protection=none -Wno-bool-operation -Wno-shadow -Wno-sign-compare -Wno-tautological-compare -Wno-uninitialized -Wno-unused-but-set-parameter -Wno-unused-but-set-variable -Wno-unused-parameter -Wno-unused-variable    -std=c++11 -I/tmp/chisel3.simulator.EphemeralSimulator/114498@martoni/workdir-default -DSVSIM_ENABLE_VERILATOR_SUPPORT   -Os -c -o simulation-driver.o simulation-driver.cpp
[info] In file included from ./VsvsimTestbench.h:11,
[info]                  from simulation-driver.cpp:883:
[info] /usr/local/share/verilator/include/verilated.h:76:22: error: ‘literals’ is not a namespace-name
[info]    76 | using namespace std::literals;  // "<std::string literal>"s; see SF.7 core guideline
[info]       |                      ^~~~~~~~
[info] In file included from /usr/local/share/verilator/include/verilated.h:950,
[info]                  from ./VsvsimTestbench.h:11,
[info]                  from simulation-driver.cpp:883:
[info] /usr/local/share/verilator/include/verilated_types.h: In function ‘std::string VL_TO_STRING(const VlEvent&)’:
[info] /usr/local/share/verilator/include/verilated_types.h:266:12: error: unable to find string literal operator ‘operator""s’ with ‘const char [11]’, ‘long unsigned int’ arguments
[info]   266 |     return "triggered="s + (e.isTriggered() ? "true" : "false");
[info]       |            ^~~~~~~~~~~~~
[info] /usr/local/share/verilator/include/verilated_types.h: In function ‘std::string VL_TO_STRING(const VlEventBase&)’:
[info] /usr/local/share/verilator/include/verilated_types.h:277:12: error: unable to find string literal operator ‘operator""s’ with ‘const char [11]’, ‘long unsigned int’ arguments
[info]   277 |     return "triggered="s + (e.isTriggered() ? "true" : "false");
[info]       |            ^~~~~~~~~~~~~
[info] /usr/local/share/verilator/include/verilated_types.h: In constructor ‘VlClassRef<T_Class>::VlClassRef(VlClassRef<T_Class>&&)’:
[info] /usr/local/share/verilator/include/verilated_types.h:1651:23: error: ‘exchange’ is not a member of ‘std’; did you mean ‘vlstd::exchange’?
[info]  1651 |         : m_objp{std::exchange(moved.m_objp, nullptr)} {}
[info]       |                       ^~~~~~~~
[info] In file included from /usr/local/share/verilator/include/verilated.h:42,
[info]                  from ./VsvsimTestbench.h:11,
[info]                  from simulation-driver.cpp:883:
[info] /usr/local/share/verilator/include/verilatedos.h:637:3: note: ‘vlstd::exchange’ declared here
[info]   637 | T exchange(T& obj, U&& new_value) {
[info]       |   ^~~~~~~~
[info] In file included from /usr/local/share/verilator/include/verilated.h:950,
[info]                  from ./VsvsimTestbench.h:11,
[info]                  from simulation-driver.cpp:883:
[info] /usr/local/share/verilator/include/verilated_types.h: In constructor ‘VlClassRef<T_Class>::VlClassRef(VlClassRef<T_OtherClass>&&)’:
[info] /usr/local/share/verilator/include/verilated_types.h:1661:23: error: ‘exchange’ is not a member of ‘std’; did you mean ‘vlstd::exchange’?
[info]  1661 |         : m_objp{std::exchange(moved.m_objp, nullptr)} {}
[info]       |                       ^~~~~~~~
[info] In file included from /usr/local/share/verilator/include/verilated.h:42,
[info]                  from ./VsvsimTestbench.h:11,
[info]                  from simulation-driver.cpp:883:
[info] /usr/local/share/verilator/include/verilatedos.h:637:3: note: ‘vlstd::exchange’ declared here
[info]   637 | T exchange(T& obj, U&& new_value) {
[info]       |   ^~~~~~~~
[info] In file included from /usr/local/share/verilator/include/verilated.h:950,
[info]                  from ./VsvsimTestbench.h:11,
[info]                  from simulation-driver.cpp:883:
[info] /usr/local/share/verilator/include/verilated_types.h: In member function ‘VlClassRef<T_Class>& VlClassRef<T_Class>::operator=(VlClassRef<T_Class>&&)’:
[info] /usr/local/share/verilator/include/verilated_types.h:1676:23: error: ‘exchange’ is not a member of ‘std’; did you mean ‘vlstd::exchange’?
[info]  1676 |         m_objp = std::exchange(moved.m_objp, nullptr);
[info]       |                       ^~~~~~~~
[info] In file included from /usr/local/share/verilator/include/verilated.h:42,
[info]                  from ./VsvsimTestbench.h:11,
[info]                  from simulation-driver.cpp:883:
[info] /usr/local/share/verilator/include/verilatedos.h:637:3: note: ‘vlstd::exchange’ declared here
[info]   637 | T exchange(T& obj, U&& new_value) {
[info]       |   ^~~~~~~~
[info] In file included from /usr/local/share/verilator/include/verilated.h:950,
[info]                  from ./VsvsimTestbench.h:11,
[info]                  from simulation-driver.cpp:883:
[info] /usr/local/share/verilator/include/verilated_types.h: In member function ‘VlClassRef<T_Class>& VlClassRef<T_Class>::operator=(VlClassRef<T_OtherClass>&&)’:
[info] /usr/local/share/verilator/include/verilated_types.h:1691:23: error: ‘exchange’ is not a member of ‘std’; did you mean ‘vlstd::exchange’?
[info]  1691 |         m_objp = std::exchange(moved.m_objp, nullptr);
[info]       |                       ^~~~~~~~
[info] In file included from /usr/local/share/verilator/include/verilated.h:42,
[info]                  from ./VsvsimTestbench.h:11,
[info]                  from simulation-driver.cpp:883:
[info] /usr/local/share/verilator/include/verilatedos.h:637:3: note: ‘vlstd::exchange’ declared here
[info]   637 | T exchange(T& obj, U&& new_value) {
[info]       |   ^~~~~~~~
[info] make[1]: *** [VsvsimTestbench.mk:65: simulation-driver.o] Error 1
[info] make[1]: Leaving directory '/tmp/chisel3.simulator.EphemeralSimulator/114498@martoni/workdir-default/verilated-sources'
[info] %Error: make -C verilated-sources -f VsvsimTestbench.mk -j 1 exited with 2
[info] %Error: Command Failed ulimit -s unlimited 2>/dev/null; exec /usr/local/bin/verilator_bin --cc --exe --build -o ../simulation --top-module svsimTestbench --Mdir verilated-sources -CFLAGS -std=c++11\ -I/tmp/chisel3.simulator.EphemeralSimulator/114498\@martoni/workdir-default\ -DSVSIM_ENABLE_VERILATOR_SUPPORT ../primary-sources/DecoupledGcd.sv c-dpi-bridge.cpp ../generated-sources/testbench.sv ../generated-sources/simulation-driver.cpp
[info] make: *** [Makefile:12: simulation] Error 2
[info] make: Leaving directory '/tmp/chisel3.simulator.EphemeralSimulator/114498@martoni/workdir-default'
[info]   at svsim.Workspace.compile(Workspace.scala:390)
[info]   at chisel3.simulator.Simulator$WorkspaceCompiler.liftedTree1$1(Simulator.scala:60)
[info]   at chisel3.simulator.Simulator$WorkspaceCompiler.process(Simulator.scala:53)
[info]   at chisel3.simulator.SingleBackendSimulator.processBackends(Simulator.scala:139)
[info]   at chisel3.simulator.SingleBackendSimulator.processBackends$(Simulator.scala:138)
[info]   at chisel3.simulator.EphemeralSimulator$DefaultSimulator.processBackends(EphemeralSimulator.scala:27)
[info]   at chisel3.simulator.Simulator._simulate(Simulator.scala:116)
[info]   at chisel3.simulator.Simulator._simulate$(Simulator.scala:97)
[info]   at chisel3.simulator.EphemeralSimulator$DefaultSimulator._simulate(EphemeralSimulator.scala:27)
[info]   at chisel3.simulator.SingleBackendSimulator.simulate(Simulator.scala:146)
[info]   ...
[info] Run completed in 2 seconds, 948 milliseconds.
[info] Total number of tests run: 1
[info] Suites: completed 1, aborted 0
[info] Tests: succeeded 0, failed 1, canceled 0, ignored 0, pending 0
[info] *** 1 TEST FAILED ***
[error] Failed tests:
[error] 	gcd.GCDSpec
[error] (Test / test) sbt.TestsFailedException: Tests unsuccessful
[error] Total time: 9 s, completed 7 mars 2024, 15:23:36

Same error occur with chisel version 6.1.0 and 7.0.0-M1 in build.sbt.

Tested with following verilator versions :

# on one computer
$ verilator --version
Verilator 4.038 2020-07-11 rev v4.036-114-g0cd4a57ad

# on another computer
$ verilator --version
Verilator 5.022 2024-02-24 rev v5.020-157-g2b4852048
@seldridge
Copy link
Member

I think you need a C++14 or newer compiler: verilator/verilator#4898

There was a change recently on upstream Chisel to indicate -std=c++14 which in new versions of Verilator should produce an error if you have a compiler that can't support it.

@Martoni
Copy link
Contributor Author

Martoni commented Mar 7, 2024

I think my gcc version support C++14.

$ g++ --version
g++ (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0
Copyright (C) 2021 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.

As I read in documentation, C++14 is fully supported since gcc version 6. Version 11 should be good no ?

@seldridge
Copy link
Member

It's likely that GCC is treating --std=c++11 as not enabling c++14 support, even though it can handle it. This was added to Chisel explicitly recently, but it may require a backport for you to pick it up: chipsalliance/chisel#3876

This is (empirically) working on Ubuntu 22.04 in CI with Verilator 5.012 built from source. It may be that Verilator 5.0.12+ started causing this. I can kick off CI and see what happens.

@Martoni
Copy link
Contributor Author

Martoni commented Mar 7, 2024

I recompiled verilator with version 5.012 and it works now.
Thanks

@Martoni Martoni closed this as completed Mar 7, 2024
@seldridge
Copy link
Member

@jackkoenig and I will get a release out with the fix for 5.022. I can reproduce the failure you're seeing when trying to bump to 5.022 here: #128 We'll get the template updated once there is a suitable release.

Thanks for the issue report!

@seldridge
Copy link
Member

This is fixed on main which is now tested against Verilator 5.022 and necessarily uses Chisel 6.2.0.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants