Skip to content

[dv,tools] Add Xcelium reinvoke simulator - #31137

Open
martin-velay wants to merge 1 commit into
lowRISC:masterfrom
martin-velay:xcelium_reinvoke_simulator
Open

[dv,tools] Add Xcelium reinvoke simulator#31137
martin-velay wants to merge 1 commit into
lowRISC:masterfrom
martin-velay:xcelium_reinvoke_simulator

Conversation

@martin-velay

Copy link
Copy Markdown
Contributor

Until now a GUI run (--gui or --gui-debug) had to be closed and relaunched through dvsim for an RTL or DV fix to be picked up, which lost the waveform, the probes and every breakpoint that had been set.

The run step of an Xcelium GUI run now compiles and elaborates for itself instead of loading the snapshot the build step produced. That makes it a single-step xrun invocation, so "Reinvoke Simulator..." in SimVision recompiles the changed design units and reloads the design into the running session.

Three things follow from that. FuseSoC no longer exports the sources into the build tree for Xcelium, so that SimVision recompiles the real files and batch and GUI builds can share one build directory. Every Xcelium include path therefore names the source tree. And every build records its options in build_opts.f, which the GUI run reads back, so that the run compiles the design the build described.

One-time action for anyone with an existing Xcelium scratch tree: the first build after this change fails with "No rule to make target .../fusesoc-work/src//.c". Xcelium caches DPI dependency files under <build_dir>/xcelium.d with absolute source paths and does not regenerate them when those paths change. Delete the scratch tree once, or rerun dvsim with --purge, and it does not recur.

@martin-velay
martin-velay requested review from a team and vogelpi as code owners August 26, 2026 08:16
@martin-velay
martin-velay requested review from rswarbrick and removed request for a team August 27, 2026 10:57
@rswarbrick

Copy link
Copy Markdown
Contributor

I think there's a danger we'll end up writing a competitor to a bit of dvsim here. Is there any way this could have been done by dvsim itself?

@martin-velay

martin-velay commented Aug 31, 2026

Copy link
Copy Markdown
Contributor Author

I think there's a danger we'll end up writing a competitor to a bit of dvsim here. Is there any way this could have been done by dvsim itself?

Some changes cannot be part of DVSim, but I agree that some pieces should probably better go in there. I'll try to fix this

@rswarbrick: it should be addressed now (see my latest push and DVSim change)

@martin-velay

Copy link
Copy Markdown
Contributor Author

This PR depends on lowRISC/dvsim#256

Until now a GUI run (--gui or --gui-debug) had to be closed and
relaunched through dvsim for an RTL or DV fix to be picked up, which
lost the waveform, the probes and every breakpoint that had been set.

The run step of an Xcelium GUI run now compiles and elaborates for
itself instead of loading the snapshot the build step produced. That
makes it a single-step xrun invocation, so "Reinvoke Simulator..." in
SimVision recompiles the changed design units and reloads the design
into the running session.

Three things follow from that. FuseSoC no longer exports the sources
into the build tree for Xcelium, so that SimVision recompiles the real
files and batch and GUI builds can share one build directory. Every
Xcelium include path therefore names the source tree. And every build
records its options in build_opts.f, which the GUI run reads back, so
that the run compiles the design the build described.

One-time action for anyone with an existing Xcelium scratch tree: the
first build after this change fails with "No rule to make target
.../fusesoc-work/src/<core>/<file>.c". Xcelium caches DPI dependency
files under <build_dir>/xcelium.d with absolute source paths and does
not regenerate them when those paths change. Delete the scratch tree
once, or rerun dvsim with --purge, and it does not recur.

Signed-off-by: martin-velay <mvelay@lowrisc.org>
@martin-velay
martin-velay force-pushed the xcelium_reinvoke_simulator branch from 94ba26c to 68d6de1 Compare August 31, 2026 14:34
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

Successfully merging this pull request may close these issues.

2 participants