lowRISC / lowRISC/opentitan

[verilator] uart_smoketest_sim_verilator times out immediately after simctrl.Exec()

Open
#30,674 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
SystemVerilog
Stars
3.6k
Forks
1.1k
Avg merge
2d 22h
Merged PRs (30d)
141

Description

Description

Description

I am trying to run the UART smoketest using the Verilator backend.

The Verilator simulation model (//hw:verilator_real) builds successfully using Bazel. However, when running the UART smoketest target (//sw/device/tests:uart_smoketest_sim_verilator), the simulation consistently times out immediately after simctrl.Exec() is called.
I am not sure whether the issue is related to the OpenTitan simulation flow, the Verilator backend integration, or my local setup, and would appreciate any guidance.

Environment

  • Branch: master
  • OS: Ubuntu 26.04 LTS running under WSL2 (Windows 11)
  • Verilator: 5.049
  • Python (OpenTitan): 3.10.16
  • Edalize: 0.6.3

Commands

Build

./bazelisk.sh build //hw:verilator_real

Build completes successfully and generates the Verilator simulation model.

Run

./bazelisk.sh test --test_output=all //sw/device/tests:uart_smoketest_sim_verilator

Observed Output

Simulation of OpenTitan Earl Grey

[TB] About to call simctrl.Exec()

Tracing can be toggled by sending SIGUSR1 to this process:
$ kill -USR1

Error: Timed out

The simulator launches successfully, but the software testcase never appears to start executing. I also added debug messages in test_main(), but they are never printed.

Expected Behavior

The UART smoketest should execute successfully and complete with a PASS status

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reproducing //sw/device/tests:uart_smoketest_sim_verilator after building //hw:verilator_real, and trace the flow around simctrl.Exec(). Check why the simulator does not reach the UART smoketest's test_main(); done means the test executes and completes with PASS instead of timing out.

Written by the indexing model from the issue text.

Assessment

Domain
testing
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Needs clarification
Newbie friendliness
42/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.