Verdi Waveform Utilities: Get More Done with Faster Runtime and Less Memory

Lauren Wu, Robert Ruiz

Jun 13, 2024 / 2 min read

The oceans are filled with waves containing almost unmeasurable amounts of water, which is similar to the huge amount of data in waveform files generated from various verification engines. This massive amount of data can be daunting for analysis. But, just like new wave turbines can harness the power of ocean waves, Synopsys Verdi utilities can process waveform files for powerful analysis. Furthermore, the next generation of Verdi waveform utilities offer even more performance and capacity.

Want to generate reports from your waveform files? Need to extract insightful data from your waveform files generated from simulation or emulation of a large design? The next generation Verdi waveform utilities, known simply as “WaveUtils”, provide various capabilities to assist. WaveUtils can process signal waveform results stored in the ubiquitous signal waveform FSDB file and is available to Verdi debug users. Verdi WaveUtils offers the following features:

  • Extract – extract signals
  • Report – report signals and events
  • 2vcd – convert an FSDB file to a VCD file

Debugging requires much more time with each new design generation because of its increased complexity. The Verdi debug platform is well-known for accelerating a user’s abilities to find errors, or “bugs”, in functionality. In the course of bug hunting, you might need specific information or analysis of the waveforms. For example, you might want a report of specific signals and their value changes. WaveUtils conveniently provides multiple methods to analyze and manipulate the FSDB file in batch mode. The report feature can then generate a text file with a list of specified signals from an FSDB file and list the corresponding signal value changes at each key point of a user-specified timeline. 

Verdi WaveUtils can also read an FSDB database file on-demand using time-saving, multithreading processing to write values and handle large designs. To further improve runtime, WaveUtils also uses multiprocessing to extract signals. As a result, the overall runtime is shortened and memory consumption reduced.

Extract Feature

The “extract” feature can be used to extract a selected scope from an FSDB database and write the result to a new FSDB database. Test results show improvement of up to 15X faster runtime versus early versions.

Case 1

  • FSDB size 7.5G
  • Gate-level
  • Partial signal/time extraction

Case 2

  • FSDB size 6.1G
  • RTL
  • Full signal/time extraction

Case 3

  • FSDB size 1.6G
  • Only hierarchy tree
  • Partial signal/time extraction
  • 48 signal list strings

Report Feature

The "report" feature can be used to output selected signal values to a report. Test results show the improvement can be more than 700X.

Case 1

  • FSDB size 7.5G
  • All signals: 51M
  • Partial signal/time extraction

Case 2

  • FSDB size 1.6G
  • All signals: 516M
  • Full signal/time extraction

2vcd Feature

The "2vcd" feature can be used to translate a FSDB file into VCD format. Test results show improvement up to 3X.

Case 1

  • 827MB FSDB
  • Gate level
  • Translate to VCD with time range, resulting VCD is 40G

Case 2

  • 371MB FSDB
  • Extracted from Case 1
  • Time range specified
  • Convert to VCD without time range, resulting VCD is 40G

Conclusion

As you can see using Verdi WaveUtils can result in significantly faster runtimes. Give them a try and quickly gain insights into FSDB waveforms. Take on the waves of simulation and emulation data! 

Continue Reading