Surfer
  • NEW!
    NEW!  Connect Ideas Across Notes
    Save time and share insights. With Paragraph Citation, you can quote others’ work with source info built in. If someone cites your note, you’ll see a card showing where it’s used—bringing notes closer together.
    Got it
        • Sharing URL Link copied
        • /edit
        • View mode
          • Edit mode
          • View mode
          • Book mode
          • Slide mode
          Edit mode View mode Book mode Slide mode
        • Customize slides
        • Note Permission
        • Read
          • Owners
          • Signed-in users
          • Everyone
          Owners Signed-in users Everyone
        • Write
          • Owners
          • Signed-in users
          • Everyone
          Owners Signed-in users Everyone
        • Engagement control Commenting, Suggest edit, Emoji Reply
      • Invite by email
        Invitee

        This note has no invitees

      • Publish Note

        Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note No publishing access yet

        Your note will be visible on your profile and discoverable by anyone.
        Your note is now live.
        This note is visible on your profile and discoverable online.
        Everyone on the web can find and read all notes of this public team.

        Your account was recently created. Publishing will be available soon, allowing you to share notes on your public page and in search results.

        Your team account was recently created. Publishing will be available soon, allowing you to share notes on your public page and in search results.

        Explore these features while you wait
        Complete general settings
        Bookmark and like published notes
        Write a few more notes
        Complete general settings
        Write a few more notes
        See published notes
        Unpublish note
        Please check the box to agree to the Community Guidelines.
        View profile
      • Commenting
        Permission
        Disabled Forbidden Owners Signed-in users Everyone
      • Enable
      • Permission
        • Forbidden
        • Owners
        • Signed-in users
        • Everyone
      • Suggest edit
        Permission
        Disabled Forbidden Owners Signed-in users Everyone
      • Enable
      • Permission
        • Forbidden
        • Owners
        • Signed-in users
      • Emoji Reply
      • Enable
      • Versions and GitHub Sync
      • Note settings
      • Note Insights New
      • Engagement control
      • Make a copy
      • Transfer ownership
      • Delete this note
      • Insert from template
      • Import from
        • Dropbox
        • Google Drive
        • Gist
        • Clipboard
      • Export to
        • Dropbox
        • Google Drive
        • Gist
      • Download
        • Markdown
        • HTML
        • Raw HTML
    Menu Note settings Note Insights Versions and GitHub Sync Sharing URL Help
    Menu
    Options
    Engagement control Make a copy Transfer ownership Delete this note
    Import from
    Dropbox Google Drive Gist Clipboard
    Export to
    Dropbox Google Drive Gist
    Download
    Markdown HTML Raw HTML
    Back
    Sharing URL Link copied
    /edit
    View mode
    • Edit mode
    • View mode
    • Book mode
    • Slide mode
    Edit mode View mode Book mode Slide mode
    Customize slides
    Note Permission
    Read
    Owners
    • Owners
    • Signed-in users
    • Everyone
    Owners Signed-in users Everyone
    Write
    Owners
    • Owners
    • Signed-in users
    • Everyone
    Owners Signed-in users Everyone
    Engagement control Commenting, Suggest edit, Emoji Reply
  • Invite by email
    Invitee

    This note has no invitees

  • Publish Note

    Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note No publishing access yet

    Your note will be visible on your profile and discoverable by anyone.
    Your note is now live.
    This note is visible on your profile and discoverable online.
    Everyone on the web can find and read all notes of this public team.

    Your account was recently created. Publishing will be available soon, allowing you to share notes on your public page and in search results.

    Your team account was recently created. Publishing will be available soon, allowing you to share notes on your public page and in search results.

    Explore these features while you wait
    Complete general settings
    Bookmark and like published notes
    Write a few more notes
    Complete general settings
    Write a few more notes
    See published notes
    Unpublish note
    Please check the box to agree to the Community Guidelines.
    View profile
    Engagement control
    Commenting
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    • Everyone
    Suggest edit
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    Emoji Reply
    Enable
    Import from Dropbox Google Drive Gist Clipboard
       Owned this note    Owned this note      
    Published Linked with GitHub
    • Any changes
      Be notified of any changes
    • Mention me
      Be notified of mention me
    • Unsubscribe
    # Surfer meeting notes This is the agenda/minutes for bi-weekly meetings for Surfer development discussions. Anyone who is interested in working on Surfer is more than welcome to join! The meetings take place roughly every other ~~Wednesday~~ Tuesday (except Dec. 16) at 20:00 CET on https://meet.jit.si/moderated/9f0bd2e2d9c6e38f1e2fa87fc2747b3abc1d12e5709f2ea9cb518656987dafc7 Calendar link (ICS/Ical): https://calendar.google.com/calendar/ical/d647b1431fcab73daa7450580e0e5f5c54fc19837d4ffbcd8a297d38d2faf91e%40group.calendar.google.com/public/basic.ics ## Future topics - Create LinkedIn "company"? (Post updates etc) ## Summer of Code Ideas - Tree widget for hierarchy/variables - Only drawing relevant parts (using https://docs.rs/egui/latest/egui/containers/scroll_area/struct.ScrollArea.html#method.show_rows) - Multi-selection - Adding waves - As groups - Add to other windows (list etc not yet developed) - Handling records and arrays as variables - Python translators - Multiple translators possible to load - Sigrok support - Require stateful translators - Sigrok support require a way for translators to get access to the whole variable - Probably one would like to cache the translated result and run sigrok-like translators in a separate thread to build the cache - Preference system/dialog - Ideally autogenerated from config file - Suitable setting widgets - Load from file - Save to user config file - Better VS Code integration - Save state file - Proxy for Surver connections - Configuration - Run sucl-scripts in Surfer from text editor ## 21/04/2026 - Changelog system (as in write something in the MR or in the comment or something)? - git lfs? - I've had to update all images three times recently... - Loading of old state files? - Ideally we should store a new state file after every(?) merge/commit and then try to reload them as part of the tests. - Merge requests - [Toolbar groups](https://gitlab.com/surfer-project/surfer/-/merge_requests/931) - [WASI 1](https://gitlab.com/surfer-project/surfer/-/merge_requests/904) - [WASM 2](https://gitlab.com/surfer-project/surfer/-/merge_requests/905) - [WASM 3](https://gitlab.com/surfer-project/surfer/-/merge_requests/902) ## 07/04/2026 - Add drawing style preference to translator trait? Specifically, should the floating-point translators state that they prefers an analog waveform? It for sure makes sense for plugins though (I think). https://gitlab.com/surfer-project/surfer/-/work_items/569 - At least add a default height setting for analog. - Windows test timing out despite two hours (and setting being four hours). Can it be split somehow and cleverly cached? - Make Windows build depedendent on some other job and set Windows test to allowed to fail. - ~~OSVX upload broken~~ seem to have been a glitch (or solved) ``` $ npx ovsx publish surfer-vscode/extension/extension.vsix -p ${VSIX_PAT} ❌ You must sign a Publisher Agreement with the Eclipse Foundation before publishing any extension. See the documentation for more information: https://github.com/eclipse/openvsx/wiki/Publishing-Extensions ``` - GSoC status ## 24/03/2026 - Postpone release 0.7 until we have support for the new SV Array feature? - Yes ## 10/03/2026 - Some MRs were handled. ## 24/02/2026 Limited attendance. ## 10/02/2026 - Download statistics? - No - Release 0.6 - Yes - Survey for collaborative debugging - Include link as part of Frans' announcement. ## 27/01/2026 - Artifact expiration and cleanup - We currently have 36 GB of old artifacts. - Store latest successful build in main? - Expire MR artifacts after a month? - Keep all artifacts from tagged versions. Good idea to cleanup. Should be enough to keep releases (but also make sure that all artifacts, including built binaries are in the releseses). - Two bachelor project groups will work on Surfer during the spring - Integration with NVC (and general approach for other simulators) - Collaborative debugging - Postpone release two weeks? - Would like to get the mappings translator in, but no time to fix it before Thursday... Get the new logo in at least and then we'll see how easy it is to release a new version... ## 13/01/2026 - [Group translators](https://gitlab.com/surfer-project/surfer/-/issues/490) - Merge requests - [Add remix icons for scopes and variables in hierarchy view](https://gitlab.com/surfer-project/surfer/-/merge_requests/835) - Nice improvement. Will be useful with color in the long run (and SVG if someone insists). - [Support creating commands for approximate user state](https://gitlab.com/surfer-project/surfer/-/merge_requests/834) - A bit of discussion about use case, but in general positive. - Probably also useful to be able to save this file in non-WASM. - [Mnemonic translator](https://gitlab.com/surfer-project/surfer/-/merge_requests/757) - Call it "mapping translator", which will olny be used in the code and documentation anyway. - [Added a `config_dir` function to the translator extension API](https://gitlab.com/surfer-project/surfer/-/merge_requests/777) - Good (maybe change directory name as discussed) - [File history](https://gitlab.com/surfer-project/surfer/-/merge_requests/680) - Look at removing index_map - [Allow translators to specify a sub-translator](https://gitlab.com/surfer-project/surfer/-/merge_requests/672) - [Add index to VariableRef](https://gitlab.com/surfer-project/surfer/-/merge_requests/814) - Consider serializing the index for less possible breakage later - Keyboard shortcuts ## 30/12/2025 - Merge requests - [Mnemonic translator](https://gitlab.com/surfer-project/surfer/-/merge_requests/757) - Format is good now - Should we do a two-stage as GTKWave? ## 18/12/2025 (Thursday) - Should we deprecate `surfer server` and refer to `surver` only? - A bit of work to handle arguments etc. - Would need a separate config file (which is still needed) - Let's deprecate. - Merge requests - Analog drawing - Merged. - Multi-file support for surver - Probably OK. - Event drawing - Andreas will have a look. - Transition values - Display the setting somehow to avoid confusion. - Tracebacks - Andreas will selfmerge after rebase. - Release 0.5 - Blog post - Remove old artifacts? 32 GB now... - Andreas found a solution. - Google Summer of Code? - Think about good ideas. - Logo - Andreas provides some suggestions ## 3/12/2025 - Change weekday? - Yes. Tuesdays. Except next time, when it will be a Thursday. - Can/should we establish an email adress where people can send non-working waveform files that they do not want to publish in public? - It is possible to create confidential issues. Create an issue template that informs about this. - Version 0.5: Target release date 2025-12-18 (or at least before Christmas)? - Yes - What should an "enum/mnemonic" file format look like? Reference: https://gitlab.com/surfer-project/surfer/-/merge_requests/757 - Some discussions, but will be postponed. - Analog drawing MR: https://gitlab.com/surfer-project/surfer/-/merge_requests/767 - Looks promising. Merge soon and one can work on any outstanding/found issues. - Surver improvement MRs: - Reload: https://gitlab.com/surfer-project/surfer/-/merge_requests/750 - Should be OK. Remove the reload rate limit as the change detection handles it already. - Limit URL length: https://gitlab.com/surfer-project/surfer/-/merge_requests/751 - Should be even more OK. - Other MRs - Dinotrace - Should be OK. - Unique name computation - Should be OK. - Logo/icon - Merge. - Preferred time unit setting - Fine. We can rebase and fix the conflicts. - Surver/server still experimental? - No, we should revise the README. ## 17/09/2025 - Handled some MRs ## 03/09/2025 - WCP discussion - Some changes were proposed in matrix. We'll merge the add_item and add_scope commands to avoid the "what is a scope" question - We'll remove the python `wcp` library and only keep `wcp_async` to avoid double work ## 04/06/2025 ## 07/05/2025 - Automatic build of VS Code extension? ## 23/04/2025 - Demo of upcoming SLang-Surfer integration. Really cool. ## 09/04/2025 - Move WCP to Surfer organization. - Move Surfer documentation (book) to Surfer main repo. - [#392](https://gitlab.com/surfer-project/surfer/-/issues/392) Current behaviour is not correct. If the clicked signal is focused/selected, move all focused/selected signals. If other signals are focused/selected, only move the clicked signal. ## 12/03/2025 - Parallel FST - GTKWave proposed a metadata file to specify where data is. - External file which says which files are included in the simulation. - This allows multi-simulator simulation in additon to more efficient fst dumping in verilator. ## 26/02/2025 - Shared config file - Things like what variables are viewed - File identification - .wave.json - let's make a shared wishlist - WCP - TCP failed so our test coverage isn't great - Not obvious how to fix, we should re-add a few TCP tests to at - least ensure that different messages work - Todd proposed some changes, all sound good: - Tokioify the wcp server. - WaveformLoaded event on all waveform loads, not just triggered by wcp ## 12/02/2025 ## 29/01/2025 Limited attendance. ## 15/01/2025 - Move book (documentation) to main repo? Easier to change in one location... - Yes! - Add doc-build to main repo CI? - Yes! - MR Status updates - Merge grouping now. - WCP command naming - Should we try to be consistent between command prompt and WCP? - x_add is intuitive because you can search - add_x is intuitive for APIs - Should we couple WCP to Surfer? - Consensus seems to be now - Transcript windows - Serialize commands or a transcript? - Meeting meta - Opt-in meetings? - 20:00 is a bit awkward, 17:00 since we rarely have west coastees here - Other discussion - Date of next meeting ## 18/12/2024 No sound from Frans ## 6/11/2024 ## 23/10/2024 - Other discussion - Some discussion about Extensibility. Hudson River Trading are interested in macros in the UI or similar via plugins. The WCP might do some of what they want, but we should think about this for the python plugin system design - Date of next meeting ## 09/10/2024 - MR Status updates - Nothing needs discussing - Other discussion - There is a PR open for wellen python API - Wellen API might change a bit, but surfer changes should be minimal - Date of next meeting ## 25/09/2024 Attending: @TheZoq2 @oscargus @ekiwi1 - MR Status updates - Only one new MR - Get the GTKWave parsing in? - Other discussion - @TheZoq2 has received publishing rights for the VS Code extension - Date of next meeting ## 28/08/2024 - MR Status updates - Other discussion - Milestone all (merged) MRs - Will make it easier to quickly check if something is missing from the change log at release time. - Menu item ordering - Especially the file menu seems a bit random to me - Use separators more? - The file menu could be more like the view menu - Settings is very cluttered, perhaps a settings window - would make sense at this point - VSCode plugin status - Frans contacts Fischer to get push rights - Release process - Frans does not have the time/energy to do a release post, can someone take over? - Lucas might do it - Date of next meeting - 18/09 ## 21/08/2024 No attendance, postponed one week ## 07/08/2024 - MR Status updates - Other discussion - Should clicking move the cursor or is dragging the expected behavior? https://gitlab.com/surfer-project/surfer/-/issues/297 - It should move, the change was made on accident. The issue has a note about where to start looking into it - Clippy errors & compile time warnings - Add pre-commit check for some obvious ones, like dereferencing and clone. - Black bar below signal values - Lucas looks into this - Date of next meeting ## 24/07/2024 Attending: @TheZoq2 @sornas @oscargus @kacper-uminski - MR Status updates - Other discussion - Package naming for Python translator bindings / others (@sornas / @oscargus) - Date of next meeting ## 10/07/2024 Attending: @TheZoq2 @lklemmer @sornas @oscargus @TopTortoise @kacper-uminski ### MR - Remote control - Pretty much done - Needs review - Grouping - Needs review, Frans maybe - Drawing - Lucas will fix the remaining things ### Loadable Translators Showing off the new python translator, it works! Spade via wasm also works, but is very slow. Investigate performance. (Could also cache translation results.) Python translators are running through pyo3. pyo3 should work on web but it is not tested yet. WASM uses extism. Next steps: Translator customization UI? Written proposals for larger changes. ### Transaction streams Protocol for transaction streams. Based on pretty old Surfer code, needs a big rebase / re-do. Will continue working ### Accessible Themes Work is progressing on accessible themes. It should be trivial to add an editable background alpha for signals and clock lines. ## 26/06/2024 Attending: @oscargus, @TheZoq2, @andreasWallner, @FRoith ### MR Status updates - 395 - new - 394 - new - 391 - Mostly for feedback on the backend implementation - Hierarchical stuff - We should try to unify the representation of hierarchical things - 388 - Waiting on workspaces - load_state opens a dialog, kind of strange - In the future, add optional_everything thingy to the command prompt - Unit tests are still a bit hacky :( - 380 - ready for merge - 375 - CI failed in merge train - 319 - Rebased but CI failed ### Instruction decoder Felix has a tool to generate decoder configs for almost all risc-v instructions. Missing compressed instructions, once that works we'll have full risc-v suport. Custom toml files are coming, and docs. We can do HDL decoding using this. That would require some way to map variables to decoders, could do with a single file or 2 stage process Translators supporting multiple signals would be nice ## 05/06/2024 Attending: @oscargus, @TheZoq2, @lklemmer, @sornas, @andreasWallner, @fischermoseley, @FRoith, @kacper-uminski, @TopTortoise - Introductions - Example stuff: - What is your name? - Where do you live (roughly)? - What is your background? What do you work on outside of Surfer? - What made you get involved with Surfer? - What current Surfer features are you most excited about? - What are the most important features missing from Surfer (max. 3)? - How do you see yourself contributing to Surfer over the next couple of months? - MR Status updates - Draft: Add save, rename old save to save as - command prompt: use show_rows instead of show - Waiting on author (not present) - Draft: Add server for remote control interface - Difficult to test with split client/server (?) - Drawing and other things - Out of date, has been rebased but not very cleanly - Draw overview in canvas - Blocked on bike-shedding - Moves the timeline overview so it is below the canvas, not the entire window. - Leave opinions in the MR - Draft: Add modifiable key bindings - Good starting point for further work on key bindings (?) - Draft: Add multi-selection - Was approved, needs re-do - WIP Touchpad-optimized input - egui does not automatically know the difference between mouse and touchpad - Frans has ideas but not enough time - Perhaps investigate querying the system? - Add tomldoc-generated documentation - Has weird bugs - Frans has not enough time - Draft: Add numeric range and value to translators for plotting - Old, needs re-thinking - Close it - Other discussion - Stateful translators would be nice, if someone wants to work on it - Give Frans VSCode extension publishing permisssions - Date of next meeting - 2024-06-26, same time (20:00 CET)

    Import from clipboard

    Paste your markdown or webpage here...

    Advanced permission required

    Your current role can only read. Ask the system administrator to acquire write and comment permission.

    This team is disabled

    Sorry, this team is disabled. You can't edit this note.

    This note is locked

    Sorry, only owner can edit this note.

    Reach the limit

    Sorry, you've reached the max length this note can be.
    Please reduce the content or divide it to more notes, thank you!

    Import from Gist

    Import from Snippet

    or

    Export to Snippet

    Are you sure?

    Do you really want to delete this note?
    All users will lose their connection.

    Create a note from template

    Create a note from template

    Oops...
    This template has been removed or transferred.
    Upgrade
    All
    • All
    • Team
    No template.

    Create a template

    Upgrade

    Delete template

    Do you really want to delete this template?
    Turn this template into a regular note and keep its content, versions, and comments.

    This page need refresh

    You have an incompatible client version.
    Refresh to update.
    New version available!
    See releases notes here
    Refresh to enjoy new features.
    Your user state has changed.
    Refresh to load new user state.

    Sign in

    Forgot password
    or
    Sign in via Google Sign in via Facebook Sign in via X(Twitter) Sign in via GitHub Sign in via Dropbox Sign in with Wallet
    Wallet ( )
    Connect another wallet

    New to HackMD? Sign up

    By signing in, you agree to our terms of service.

    Help

    • English
    • 中文
    • Français
    • Deutsch
    • 日本語
    • Español
    • Català
    • Ελληνικά
    • Português
    • italiano
    • Türkçe
    • Русский
    • Nederlands
    • hrvatski jezik
    • język polski
    • Українська
    • हिन्दी
    • svenska
    • Esperanto
    • dansk

    Documents

    Help & Tutorial

    How to use Book mode

    Slide Example

    API Docs

    Edit in VSCode

    Install browser extension

    Contacts

    Feedback

    Discord

    Send us email

    Resources

    Releases

    Pricing

    Blog

    Policy

    Terms

    Privacy

    Cheatsheet

    Syntax Example Reference
    # Header Header 基本排版
    - Unordered List
    • Unordered List
    1. Ordered List
    1. Ordered List
    - [ ] Todo List
    • Todo List
    > Blockquote
    Blockquote
    **Bold font** Bold font
    *Italics font* Italics font
    ~~Strikethrough~~ Strikethrough
    19^th^ 19th
    H~2~O H2O
    ++Inserted text++ Inserted text
    ==Marked text== Marked text
    [link text](https:// "title") Link
    ![image alt](https:// "title") Image
    `Code` Code 在筆記中貼入程式碼
    ```javascript
    var i = 0;
    ```
    var i = 0;
    :smile: :smile: Emoji list
    {%youtube youtube_id %} Externals
    $L^aT_eX$ LaTeX
    :::info
    This is a alert area.
    :::

    This is a alert area.

    Versions and GitHub Sync
    Get Full History Access

    • Edit version name
    • Delete

    revision author avatar     named on  

    More Less

    Note content is identical to the latest version.
    Compare
      Choose a version
      No search result
      Version not found
    Sign in to link this note to GitHub
    Learn more
    This note is not linked with GitHub
     

    Feedback

    Submission failed, please try again

    Thanks for your support.

    On a scale of 0-10, how likely is it that you would recommend HackMD to your friends, family or business associates?

    Please give us some advice and help us improve HackMD.

     

    Thanks for your feedback

    Remove version name

    Do you want to remove this version name and description?

    Transfer ownership

    Transfer to
      Warning: is a public team. If you transfer note to this team, everyone on the web can find and read this note.

        Link with GitHub

        Please authorize HackMD on GitHub
        • Please sign in to GitHub and install the HackMD app on your GitHub repo.
        • HackMD links with GitHub through a GitHub App. You can choose which repo to install our App.
        Learn more  Sign in to GitHub

        Push the note to GitHub Push to GitHub Pull a file from GitHub

          Authorize again
         

        Choose which file to push to

        Select repo
        Refresh Authorize more repos
        Select branch
        Select file
        Select branch
        Choose version(s) to push
        • Save a new version and push
        • Choose from existing versions
        Include title and tags
        Available push count

        Pull from GitHub

         
        File from GitHub
        File from HackMD

        GitHub Link Settings

        File linked

        Linked by
        File path
        Last synced branch
        Available push count

        Danger Zone

        Unlink
        You will no longer receive notification when GitHub file changes after unlink.

        Syncing

        Push failed

        Push successfully