🏄 Surfer Blog

Surfer 0.2.0 Released!

Posted 2024-05-28 by The Surfer Developers

Changelog - GitLab Release - Zenodo

Today marks the release of Surfer v0.2.0, a release packed with new additions and fixes. This blog post will highlight some important additions, you can read the full changelog at https://gitlab.com/surfer-project/surfer/-/wikis/0.2-changelog.

Remote Server🔗

If you run a simulation on a remote server, you no longer have to download the resulting wave file to your local computer to view it. Instead, you can start surfer in headless mode on the compute server using surfer server --file=waveformfile.vcd/fst/ghw, and then connect to that server from your local computer by following the instructions printed by the server.

This is significantly faster as the server will only send the hierarchy and the waves you actually view to the client.

VS Code Extension🔗

Fischer Moseley has created a Visual Studio Code extension for Surfer which allows you to run it directly in the editor. You can install it from https://marketplace.visualstudio.com/items?itemName=surfer-project.surfer. Like the web version, web assembly causes some limitations, so it may not be as fast as the native version.

Interface Improvements🔗

The interface has had several small and large changes to make Surfer nicer to use. Some of the smaller changes include

  • Undo/Redo: Many things you do can now be undone using u for undo and U for re-do. Perfect if you accidentally add a bunch of waves to your view!
  • Moving with the overview You can now click the timeline overview to center the view at a specific time.
  • Added several commands to the command line that only existed as buttons in the GUI and vice versa
  • The value of the selected variable at the current time stamp can now be copied to the clipboard with ctrl-c, context menu or the copy_value command prompt command.
  • Variables can now be dragged and dropped to re-order them

Variable Stepping🔗

You can now use the arrow keys to jump to the next and previous variable edge.

Combined Hierarchy and Variable List🔗

You can now switch to a combined hierarchy and variable list view, instead of having them split up.

Selectable Themes🔗

While Surfer has supported multiple themes for a while, you generally had to change themes by modifying a global configuration which wasn't even available in the web browser. Now you can switch theme on the go on all platforms.

Multiple Viewports🔗

Surfer now supports multiple vertical viewports which allows you to look at different areas of the waveform at the same time.

Control Surfer via Javascript🔗

When running surfer on the web, you can now inject messages for Surfer to execute. This can be used to integrate surfer in a bigger project, for example to make it jump to specific intersting time stamps in a teaching tool, or it can be used to turn surfer into a presentation tool.

Experimental GHW Support🔗

There is now experimental support for loading and displaying GHDL's native GHW files.

More Powerful RISC-V decoder🔗

We have replaced the old risc-v decoder with a new one written for, but not limited to, surfer. Rather than being hard coded, it is configurable by TOML files, so in the future adding new extensions or new ISAs is going to be much easier. In this version, the change means that we now support RV32IMAFDZicsr

The decoder is a standalone project hosted at https://github.com/ics-jku/instruction-decoder, so if you have a need for a powerful decoding library, have a look!

Bug Fixes🔗

We have squashed lots of bugs, especially fixing wave files that failed to load for various reasons. Thanks to everyone who reports bugs, if you find a wave file that doesn't work, please do share it with us so we can make the project more robust.

New Contributors🔗

This release has several changes made by new contributors:

  • Felix Roithmayr
  • alikates
  • Matt Taylor
  • Francesco Urbani
  • Tom Verbeure

Thanks everyone!