Warp11.SimView 0.1.0-alpha.2

This is a prerelease version of Warp11.SimView.
dotnet add package Warp11.SimView --version 0.1.0-alpha.2
                    
NuGet\Install-Package Warp11.SimView -Version 0.1.0-alpha.2
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Warp11.SimView" Version="0.1.0-alpha.2" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Warp11.SimView" Version="0.1.0-alpha.2" />
                    
Directory.Packages.props
<PackageReference Include="Warp11.SimView" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Warp11.SimView --version 0.1.0-alpha.2
                    
#r "nuget: Warp11.SimView, 0.1.0-alpha.2"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Warp11.SimView@0.1.0-alpha.2
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Warp11.SimView&version=0.1.0-alpha.2&prerelease
                    
Install as a Cake Addin
#tool nuget:?package=Warp11.SimView&version=0.1.0-alpha.2&prerelease
                    
Install as a Cake Tool

Warp11.SimView

A step-through debugger for Warp 11 designs. Watch any signal at any depth, poke inputs, page through memories, set breakpoints written as expressions over your own signal names, see a per-cycle waveform, export VCD.

It is a component, not an application. It knows how to watch a signal, window a memory and draw a trace — the things true of any design — and nothing about what a particular design means. Your project supplies the design and, if you want them, your own panels.

dotnet add package Warp11.SimView.Desktop --prerelease

That is the package to reference from a desktop app; it pulls in Warp11.SimView and Warp11 with it. Reference Warp11.SimView directly only if you are building a non-desktop head — the browser one, say.

One line, on a design you already have

open Warp11

let blinker =
    design "Blinker" (fun () ->
        let enable = inputBit "enable"
        let led = outputBit "led"
        let count = reg "count" 24
        If enable (fun () -> count + 1UL ==> count)
        slice 23 23 count ==> led)

[<EntryPoint>]
let main _ =
    Warp11.SimView.Desktop.debug "Blinker" blinker
    0

Run it and the debugger opens on your design: your signals down the left, a watch list, a memory pane, a waveform, and a breakpoint box that takes expressions over your own names. Try count == 0x7fffff and press Run.

That is the whole integration. Warp11.Gep and Warp11.Mandelbrot open their debuggers exactly this way.

Several designs, with pages and presets

debug opens one design with nothing behind it. A catalog gives the picker several, each able to arrive with signals already watched and inputs already driven:

open Warp11.Catalog

let catalog =
    embedded (System.Reflection.Assembly.GetExecutingAssembly()) "Designs.fs"
        [ entry "Blinker" (nameof blinker) (fun () -> blinker)
          |> watching [ "count" ]
          |> poking [ "enable", 1UL ]

          entry "Counter" (nameof counter) (fun () -> counter) ]

[<EntryPoint>]
let main _ =
    Warp11.SimView.Desktop.run (View.FromCatalog(catalog, None)) []
    0

embedded reads the design's own source out of your assembly, so the source pane shows the bytes the design was elaborated from rather than a copy that can drift. Add Designs.fs as an EmbeddedResource in your .fsproj for that to work, and pass Some "Blinker" instead of None to open on a particular entry.

The second argument is your panels — see below. [] is fine.

Your own panels

What you actually want to look at is specific to what you built: a Game of Life grid, a register-map view, an image the design just rendered. Those arrive as ordinary values:

open Warp11.SimView

let grid : View.Panel =
    { label = "grid"
      placement = View.WithInstruments
      view = fun ctx ->
        // ctx.session drives the design, ctx.snapshot is the current frame,
        // ctx.theme is the window's colours so a panel matches rather than
        // guessing. Draw whatever you like.
        TextBlock.create [ TextBlock.text $"cycle {ctx.snapshot.cycle}" ] }

Warp11.SimView.Desktop.run (View.Attached(session, "Life")) [ grid ]

Placement is the interesting parameter.

  • WithInstruments — a tab beside watch, memory and waveform. For a thing you look at, in the space the instruments already use.
  • Alongside — its own column, on screen the whole time you work the instruments. For reference you read while stepping: the tutorial's prose sits here so a page can say poke enable and press Step and you can do it without leaving the words.

A host that offers no Alongside panel keeps the plain two-column layout; an empty third of a window is worse than no column at all.

If your catalog has written pages, Pages.both catalog gives you the about and source panels ready-made.

Attaching to a design already running

View.Attached opens a debugger on a session someone else owns and is driving — an application that is already running your design and wants to look inside it. The picker becomes a label, and closing the window does not stop the design.

That is how the Game of Life view offers a Debugger button that opens on the very session it is rendering.

What you need

  • .NET 10
  • An Avalonia desktop app. Warp11.SimView.Desktop brings Avalonia.Desktop with it; you supply main.

The split between the two packages is not tidiness: UsePlatformDetect lives in Avalonia.Desktop, which carries native Win32/X11/macOS backends that a WebAssembly build cannot scan. Keeping the view platform-neutral is what lets the same debugger run in a browser — as it does at warp11.org/try.

Status

Prerelease. The API is not stable. See what is not built.

Product Compatible and additional computed target framework versions.
.NET net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (1)

Showing the top 1 NuGet packages that depend on Warp11.SimView:

Package Downloads
Warp11.SimView.Desktop

Opens the Warp 11 step-through debugger as a desktop application: `Warp11.SimView.Desktop.debug "title" design` is the whole integration. Reference this from a desktop app; it brings Warp11.SimView and Warp11 with it.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.1.0-alpha.2 81 8/21/2026
0.1.0-alpha.1 69 8/20/2026

Tracks Warp11 0.1.0-alpha.2, which renames several return types from anonymous records to named ones — recompile against this version rather than mixing it with alpha.1. No change to the debugger's own API. IDebugSession and the snapshot types are now fully documented, and those docs ship in the package.