Jumping to a specific signal value in a waveform viewer

1,287 views
Skip to first unread message

Benjamin Ou

unread,
Sep 23, 2021, 7:53:19 PM9/23/21
to Chipyard
I've been poking around BOOM core running hello world with GTKWave, which has been great for seeing how signals behave for a random instruction I can find - but is there a standard way to jump to when a specific signal is a specific value? In particular, let's say I want to jump to all the "add" instructions; in that case, I'd like to jump to the points in time where the instruction signal's opcode bits match up with the add instruction. Is there an easy way to go about that?

Jerry Zhao

unread,
Sep 23, 2021, 8:02:44 PM9/23/21
to chip...@googlegroups.com
More advanced waveform viewers like DVE include such functionality. I'm not sure if GTKWave supports search like that.

One way is to add a signal in the RTL that is high only for the events which you care about. For example, a signal that is high only when an add instruction is committed.
This approach is annoying because you have to recompile and rerun the simulator, but it should let you quickly find those events in GTKWave,

On Thu, Sep 23, 2021 at 4:53 PM Benjamin Ou <bislov...@gmail.com> wrote:
I've been poking around BOOM core running hello world with GTKWave, which has been great for seeing how signals behave for a random instruction I can find - but is there a standard way to jump to when a specific signal is a specific value? In particular, let's say I want to jump to all the "add" instructions; in that case, I'd like to jump to the points in time where the instruction signal's opcode bits match up with the add instruction. Is there an easy way to go about that?

--
You received this message because you are subscribed to the Google Groups "Chipyard" group.
To unsubscribe from this group and stop receiving emails from it, send an email to chipyard+u...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/chipyard/795e7bbd-99ee-4f8d-a986-52baba3c584cn%40googlegroups.com.

Benjamin Ou

unread,
Sep 23, 2021, 8:08:08 PM9/23/21
to chip...@googlegroups.com
Don't think I have access to non-freeware waveform viewers, unfortunately. I'll have to try out that added signal trick - though my immediate thought is that I've tried adding signals intended to help me debug before, and they often seem to get pruned due to not being connected to anything. Is there a reliable way to make sure a signal shows up without interfering with the functionality of the rest of the circuit?

You received this message because you are subscribed to a topic in the Google Groups "Chipyard" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/chipyard/UcPRRqVAe3o/unsubscribe.
To unsubscribe from this group and all its topics, send an email to chipyard+u...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/chipyard/CAC%2BpDSHC437NPACsYke7ozqxFfBPptc9HC5ZKLbt8r9OT1feYg%40mail.gmail.com.

Jerry Zhao

unread,
Sep 23, 2021, 8:09:36 PM9/23/21
to chip...@googlegroups.com
Yes. Use `dontTouch(my_signal)` to prevent the signal from being optimized away.

Benjamin Ou

unread,
Sep 23, 2021, 8:15:07 PM9/23/21
to chip...@googlegroups.com

mysa...@gmail.com

unread,
Nov 4, 2022, 7:28:57 AM11/4/22
to Chipyard
Seems like there is a pattern-search option in GTKwave as per its document: https://gtkwave.sourceforge.net/gtkwave.pdf  (page 42). Have you tried that? 
Essentially, you select a signal in the waveform window, in the menu bar: "Search" > "Pattern Search"
In the dialog that pops up, select "String" in the dropdown, and write the signal value you wish to find in the corresponding field.
Not sure what the logical-operation drop-down does -- let me know if you figure it out.
Reply all
Reply to author
Forward
0 new messages