patch notes · #123 October

#12 · Vivado projects and editor tasks that preserve user files

Commands now discover a Vivado .xpr or .srcs layout and read the enabled design, constraint and simulation sets. Running from a nested source directory writes build outputs in the project root. The project's selected top is respected unless explicitly named. dewfpga tops lists candidates as module/file pairs without writing files. Missing design files and ambiguous active sets produce actionable errors; a problem confined to the simulation set stops sim, not bit, tops or clean.

Local include directories reach both readers. .v files retain Verilog-2005 keywords in Icarus and the slang fallback. The first implementation deleted a pre-existing top.kw directory and mapped a/b.v and a_b.v to the same temporary filename. Root counterexamples rejected it. Wrappers now use a privately reserved directory, numbered filenames and scoped cleanup. clean leaves other recipes' temporary folders alone. Probe 74's RTL stage now passes; its netlist stage remains a known gap.

dewfpga vscode builds a deterministic companion VSIX and installs user tasks only for the selected supported editor and named profiles with the companion available. JSONC comments and unrelated tasks survive. Removal checks recorded content hashes, keeps user edits, and rolls back task writes if the ownership record cannot be saved. Symlinked setup records are refused. Automatic install/uninstall hooks can be skipped with DEWFPGA_SKIP_VSCODE=1; explicit editor setup still works. Native tests use that flag and isolated fake editors so they cannot modify a developer's real profile.

Independent review reproduced Cursor's code being mistaken for VS Code and a failed profile retry losing its earlier ownership record. A further root case showed that a code symlink into Insiders must not be selected for a Code removal. These cases have specific regression checks. Profile metadata was checked against Microsoft's source; that is distinct from testing the real editor GUI.

Focused checks before final acceptance: task writer 69/0, companion 35/0, Vivado 82/0, setup 89/0. An additional eight editor-boundary checks passed in a corrected isolated copy. The first full run caught two flat-folder compile-line regressions despite those focused results. They are retained in the test history; the corrected full run passed 269, failed 0, with 52 known gaps, in 24 minutes 11 seconds, with the tested files unchanged. The command list contains 325 available checks, not 325 executed successes. Real GUI and Basys3 acceptance remain unverified. Remote CI is pending for this integration.

Release review then found the tracked-file package builder omitted the companion sources. The old archive now fails validation for all four missing files. The fixed archive builds a VSIX byte-identical to the source tree and runs vscode --print. Both assembled site variants pass: 101 pages, 0 failures each. CI now builds the companion from the unpacked release, so source-only success cannot hide this omission.


previous: #11 Five CLI steps and accurate Homebrew diagnosis
next: #13 Accurate lint severity and fresh waveforms
This entry in the full list
The commands this entry names: dewfpga tops · dewfpga vscode
Every SystemVerilog construct measured so far, next to what Vivado does: the probes, stage by stage