Skip to content

Releases: JayceVane/SV-Tools

v4.0.0-beta.2

v4.0.0-beta.2 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 16 Oct 11:14

SV Tools 4.0.0-beta.2

这是4.0的预览版,包含此前4.1 alpha开发阶段的电路查看器及格式化完善。正式版目标统一为4.0.0;当前仅通过GitHub Release发布Windows x64产物,不发布VS Code Marketplace。旧4.0.0-preview.1保留。

安装

下载svtools-v4.0.0-beta.2-win32-x64.vsix,在VS Code或兼容IDE中选择“从VSIX安装”,完成后重载窗口并重新生成电路。最低VS Code 1.106,使用兼容的Node/V8运行时。包中包含原生模块和离线Yosys,无需安装Rust或Python。独立CLI为svtools.exe,另附原生模块与SHA256SUMS.txt。

若已安装4.0.0-preview.1或4.1.0-alpha系列,SemVer会将本次版本视为回退,需手动安装VSIX并确认替换,必要时先卸载旧版;功能包含上述开发成果。

本次变化

  • 内置固定YoWASP Yosys,默认Slang前端支持合法SystemVerilog时序声明;自动收集工作区子模块与包依赖,并在失败时提供原文件行列及完整日志。
  • 独立电路模型、ELK正交布局与SVG交互视图,提供层级下钻、搜索、网络高亮和源码定位。编辑器右上角默认Yosys;RTL右键Vivado查看当前文件模块,工程面板继续使用工程top,原工程只读。
  • 时序单元按实际类型与参数绘制时钟触发沿和控制极性;总线粗线、单比特细线,多比特端口显示位数,总线位宽标记可点击并避让文字。
  • 按帧更新相机,视口外SVG按需挂载,总览简化细节;选中和搜索只更新变化对象,改善复杂图交互。
  • 修复generate内多个always与assign之后的模块例化对齐,以及带注释选区的分类和不支持的正则。新增Aurora结构Golden回归,继续强制保全空格、Tab、CR、LF之外的所有字符及顺序。
  • 保留此前4.0预览的标准目录补全、100/500MiB VCD查看、二维mem、浮点显示格式和Vivado工程管理改进。

验证与边界

本轮只调整版本与交付文档,运行逻辑与4.1.0-alpha9一致。发布构建执行152个JS文件语法检查、20组Golden共40项、既有Node516项(515通过、1可选跳过)、电路154项及Rust125项回归;Node22/24由分支CI复验。

此前已用真实内置Slang/Yosys、Vivado 2022.1及实际Qoder的Electron Node运行时核对编译、布局和原生ABI;正式页面在Edge155验证明暗主题、总线标签点击、避让与缩放。它们不等于完整IDE Webview宿主验收,仍需实际工程使用反馈。

复杂图基准为本机合成事件,不能保证任意设计或宿主60fps。总线标记带来初始化成本,详细性能样本见docs/V4_1_ALPHA9.md。当前按模块查看并有容量预算;Vivado为平坦RTL,尚无局部逻辑锥、增量布局或领域数据分页,未知单元不猜测时序极性。FSDB仍取消,Vivado IP管理仍在后续计划。

配置与操作见docs/CIRCUIT.md,本轮验证与完整修改清单见docs/V4_BETA2.md。

v4.0.0-preview.1

v4.0.0-preview.1 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 15 Oct 03:51
4cc1c73

SV Tools 4.0.0-preview.1

这是基于 3.5.0 的首个 4.0 公开预览版,汇总 alpha1–alpha13 的开发成果。发布渠道为 GitHub Release,安装包仅针对 Windows x64;尚未发布到 VS Code Marketplace。

安装

下载 svtools-v4.0.0-preview.1-win32-x64.vsix,在 VS Code 扩展页执行“从 VSIX 安装”。VSIX 已包含当前平台原生模块,无需自行编译 Rust。独立 CLI 为 svtools.exe,另附 .node 模块和 SHA256SUMS.txt 校验清单。

本次变化

  • 格式化器拆分词法扫描、结构状态和布局职责,修复 always 触发头及嵌套 if 条件紧凑。所有格式化入口强制保全 ASCII 空格、Tab、CR、LF 之外的字符及其顺序;不安全候选保留原文。
  • 补全按 Verilog/SystemVerilog 版本及 UVM 1.2/1800.2 公开目录组织,增加作用域、成员、参数化类型和工程 include 索引。它仍是容错代码补全,不等同于完整编译器详细化。
  • VCD 改用 Worker 流式解析和有界存储,按可见行与时间窗查询;支持二维 mem、双游标、精确边沿、分组、多选排序及可拖动栏宽/analog 行高。
  • 显示格式归入子菜单,支持 FP64、FP32、TF32、BF16、FP16 和 IEEE 风格 FP8(E3M4)。明暗主题、值标签和紧凑菜单同步调整。
  • 工具链统一任务取消、阶段成败和有界日志,避免失败后显示旧波形。修复 Vivado 空工程面板,统一工程选择、真实文件集与操作后验证。

验证与边界

发布构建通过 104 个 JS 文件语法检查、19 个 golden(38 断言)、510 项 Node 合同及 121 项 Rust 测试。此前使用真实 VS Code、Icarus、Vivado/XSim 和 100/500 MiB VCD 验证关键路径,详见仓库 docs/V4_ALPHA*.md。

500 MiB 生成 VCD 在本机热缓存下加载约 5.33 秒、RSS 峰值约 485 MiB;事件密度会影响资源用量,不保证任意同尺寸文件的表现。

已知限制:旧赋值对齐入口的正则异常会安全回退原文;GNU 风格与关闭行内紧凑的特定转换组合仍可能出现两轮缩进漂移。FSDB 已取消;Vivado IP 添加仍在后续计划。电路结构查看器属于下一版本,本安装包不包含该功能。其它平台及完整用户工程尚需进一步验收。

v3.5.0 —— Vivado 工程管理侧边栏

Choose a tag to compare

@JayceVane JayceVane released this 14 Oct 02:45

Added

  • Vivado 工程管理侧边栏(活动栏 $(chip)):.xpr 文件树按模块实例依赖组织;右键加入/移出/top 设置/src↔sim 移动(写操作按 .xpr 重解析事实校验,杜绝 Vivado batch 假成功);top 级快捷操作区(xelab/综合/综合报告/布局布线/布局布线报告/时序报告/Bitstream);报告独立页面展示,观感对齐 Vivado、明暗主题跟随
  • OOC 综合读序修复:read_verilog 前 package 文件前置 + import 拓扑排序(修复 Synth 8-36 'pkg' is not declared);综合前强制刷新设计单元索引
  • 波形查看器、器件选型页明暗主题适配

Fixed

  • 格式化五连修:声明对齐按空行分组(各组独立列宽);带数组维度的声明不再被无维度行名字列宽推远(mirror_q [$] 多 2 空格);例化声明区不再输出 localparam parameter 重复关键字;always 块赋值分号贴合表达式(i_data ; → i_data;,运算符列对齐保留);begin/end 块内 assign 组间空行保留(非幂等根因)
  • 波形查看器总线值徽章配色:亮色主题下深棕字叠深底对比度约 2:1 看不清,改固定浅橘 + 深底,明暗主题均 ≥7:1
  • golden 用例扩充至 18 个;门禁 golden 36/36、cargo 70/70、宿主 14/14

附件:svtools-3.5.0.vsix(扩展安装包)、svtools.exe(Windows CLI)。完整条目见 CHANGELOG。

v3.4.8

Choose a tag to compare

@JayceVane JayceVane released this 09 Oct 04:01

新增

  • xvlog lint 引擎可选(svtools.lint.engine):iverilog(默认)/ xvlog 一键切换,VRFC 诊断进 Problems 面板
  • xelab 详细化检查:编辑器工具栏按钮手动触发,依赖迭代自动补齐缺失定义文件(≤6 轮),捕捉类型/端口/位宽/未定义引用等深度错误
  • UVM 工程自动支持:检测到 UVM 即自动附加 -L UVM / -i <uvm 源码目录> / xelab --timescale,无需手动配置
  • 设计单元索引扩展到 module/interface/package/program;单文件 lint 自动补依赖,跨文件引用不再误报语法错
  • 仿真运行中状态栏/编辑器工具栏出现停止按钮

修复

  • vvp 仿真实时输出:Cygwin 构建管道下块缓冲导致「无输出」,stdbuf -oL 强制行缓冲
  • 停止仿真不留孤儿:cygwin exec 换 PID 的三重击杀;Vivado/xvlog 超时改按进程树终止(xsim 停不掉根因)
  • xsim 仿真 run all 被 wave 配置块阻断(动态数组等不可 trace 对象场景)
  • xvlog prj 顺序:package 必须在 importer 之前,补入依赖 prepend 修正

完整变更见 CHANGELOG。

安装:VS Code 用户下载 .vsix 后 code --install-extension svtools-3.4.8.vsix;CLI 用户可直接下载 svtools.exe(格式化器,svtools format <file>)。

v3.4.7

Choose a tag to compare

@JayceVane JayceVane released this 02 Oct 09:00

v3.4.7

新增

  • **pragma protect 加密区逐字节透传**(Xilinx/Synopsys 加密 IP,如 *_syn_rfs.v):BASE64 载荷行长是编码规范的一部分,重排会破坏解密;且长串无 ;`/关键字的行使对齐器二次方变慢——万行加密文件(ibert/ila 等)格式化 45+ 分钟不返回,透传后 81ms 且输出与输入逐字节一致(未闭合区域同样透传)
  • 端口/参数表名称列间距配置 svtools.portNameGap(1–8,默认 2,CLI --port-name-gap):模块/接口头端口表与 task/function 参数表统一适用
  • CI 门禁(PR 上跑 golden 测试)、npm scripts(npm test / npm run build:native)、45 项配置设置面板分组

修复

  • 端口/参数表名称列距随组宽在 2..5 间漂移(按缩进取整所致),改为可配置固定间距
  • 连续单行模块例化粘连与误展开(实例行被误判为声明)
  • for 头空格归一化覆盖 begin 块状体(此前 task 内块状 for 头乱空格不删,与单行 for 风格分裂)
  • for 归一化破坏字符串字面量("a=b c" 曾被改成 "a = b c");并入 inlineCompact 开关
  • CRLF 输入的 protect 段间空行丢失
  • stripEmptyLine 配置从未传给原生模块

完整变更见 CHANGELOG。

附件:svtools-3.4.7.vsix(插件包)、svtools.exe(CLI 格式化器,Windows x64)。源码安装需 npm install && npm run build:native。

v3.4.6 — 空行规则统一裁决 + 双轨对齐架构 + 格式化规范

Choose a tag to compare

@JayceVane JayceVane released this 30 Sep 11:53

格式化引擎大版本修复

新增

  • 格式化规范 docs/FORMAT_SPEC.md:格式化器唯一权威行为定义(空行/缩进/对齐/单行保留全量规则)
  • 单行/多行双轨对齐架构:用户未换行的语句走单行紧凑,显式换行的走多行列对齐
  • 行内紧凑开关 svtools.inlineCompact(默认开):else $error("x", $time); → else $error("x", $time);,单行例化保持单行并紧凑
  • 行间紧凑开关 svtools.blankCompact(默认开):块内无空行、块间空行分隔;关闭则保持用户空行且格式化绝不新增空行
  • CLI --no-inline-compact / --no-blank-compact

修复

  • 空行规则统一裁决(此前 task/covergroup/clocking 体首尾被插入空行、modport 续行误判致空行整段被删)
  • sequence/property 块头空行;体内多余空格归一化(property p; → property p;)
  • 单行写法保留:单行 constraint / 参数列表 / 模块例化不再被展开
  • end else if 的 else 落第 0 列(generate 链非幂等根因)
  • 对齐分组空行敏感导致的二次格式化列宽漂移(sfp_dma_rx 等 7 文件)
  • $display 在 wait fork 后被从字符串处断行;属性 + 行中块注释的 ; 甩行
  • SV 验证代码六处破坏(类/约束/covergroup/clocking/SVA/fork)

质量

  • golden 用例 7 → 14 个(28 项断言全绿,含幂等)
  • 实测工程幂等校验 38 → 120 文件:111/120 稳定
  • 格式化器内部空行伪影源头全部消除

v3.4.5 — 格式化引擎对齐校对基准(CRLF/语句拆行/case 对齐等修复)

Choose a tag to compare

@JayceVane JayceVane released this 28 Sep 12:19

v3.4.5 — 格式化引擎对齐校对基准

格式化引擎按用户手工校对后的 golden 基准(example/target/)全面对齐,node test/golden_test.js 7 用例 14 项全绿(含幂等双检),真实工程样例(aurora / test_comprehensive 等)输出零漂移。

Fixed

  • CRLF 输入产生伪空行:preprocess 入口统一行尾归一——此前 \r 被语句拆分当作行内剩余内容,每条语句后多出空行,同一文件 LF/CRLF 输出不一致
  • 语句拆行规则:单行 begin ... end 紧凑写法整行保留;begin 后同行有语句且无闭合 end 才断行;endcase/end 前有内容时断行(end end 拆两行)
  • case 项对齐此前从未生效:对齐正则含 (?!:) 前瞻,Rust regex 不支持导致整趟对齐被静默跳过;改为无前瞻正则 + 紧凑/规范双模式(紧凑风格保留 4'd0:result<=x;,一句一行时补运算符空格 result <= x;)
  • 续行空白压缩破坏既有对齐:仅对破行表达式中间片段(行尾悬空运算符)压缩空格,完整语句行(assign 组 / case 项 / 实例端口)原样保留
  • 行续接(反斜杠结尾)被拆断:宏 / 断言多行语句整行保留
  • 语句块内赋值列对齐:for / if 体等语句块的 <=/= 操作符列对齐
  • 单行 for 头运算符空格规范化:for(int i=0;i<len;i++) sum+=data[i]; → for(int i = 0; i < len; i++) sum += data[i];
  • modport 按方向拆行:modport master(output a,b,input c); → output a, b, 与 input c 两行
  • 紧凑声明参与对齐:logic[ID_W-1:0] awid; 参与声明对齐(位宽右对齐、名字/分号列);带初值的保持原样
  • interface 端口丢空格:axi_if.master axi 不再被格式化成 axi_if.masteraxi

Added

  • golden 格式化用例扩充至 7 个(新增 ex1.1 条件块展开、ex5 参数注释列对齐、ex6 声明对齐 / modport / interface 端口),全部含幂等校验

附件

  • svtools-3.4.5.vsix — VSCode 扩展安装包
  • svtools.exe — Rust CLI 格式化器(Windows x64,svtools --version → 3.4.5)

v3.4.4 — 格式化器严重 bug 修复 + Golden 测试基建

Choose a tag to compare

@JayceVane JayceVane released this 28 Sep 09:05

v3.4.4 — 格式化器严重 bug 修复 + Golden 测试基建

本版修复三处会破坏代码语义的参数列表格式化 bug(值被改写/丢失、逗号丢失、参数整个消失),并建立 golden 格式化回归测试基建。

🐛 修复

module/interface #(...) 参数列表三处严重破坏

  • 参数值错位/丢失:参数对齐重建误输出"当前值与下一个参数值的字典序最小者"——parameter BC = DATA_WIDTH>>3 会被改写成 = 0,最后一个参数值变成空
  • 尾逗号丢失:parameter A = 16 ,// comment 形态下,逗号判定被行尾注释遮挡且被补到注释之后;现按去注释文本判定、插在注释之前
  • 同行多参数整体丢失:parameter ADDR_W=32,parameter ID_W=4 同行写多个参数时只识别第一个,其余在格式化后消失;现已全部保留

assign 表达式破行(issue #3)

  • assign x = ( 或行尾 || 等悬空运算符的破行不再被错误切断,格式化后不再多出空行

✨ 新增

  • Golden 格式化测试基建:example/ 放格式化前输入、example/target/ 放期望输出,node test/golden_test.js 自动比对 + 幂等双检;含 issue #3、aurora 参数注释、interface 同行参数等回归用例,后续格式化问题按此流程持续加用例

安装:附件 svtools-3.4.4.vsix(扩展)与 svtools.exe(Rust CLI 格式化器);Open VSX / Marketplace 同步更新。

完整变更: CHANGELOG.md

v3.4.3 — Vivado 工具链集成 + 中文本地化 + 波形查看器增强

Choose a tag to compare

@JayceVane JayceVane released this 28 Sep 07:12

v3.4.3 — Vivado 工具链集成 + 中文本地化 + 波形查看器增强

svtools 正式成为 FPGA 仿真调试的完整入口:Icarus Verilog + Vivado 双仿真引擎、一键创建 Vivado 工程、内置波形查看器持续打磨。

✨ 新增

Vivado TCL 集成与工程创建

  • TCL 脚本运行:命令面板或 .tcl 标签页右上角 ▶ 按钮,batch 模式执行,流式输出、状态栏指示、停止/超时
  • 工程创建向导:工程名 → 目录 → 文件多选(按工程结构模板预分类)→ 器件选型详情页(系列/封装/速度筛选联动 + 搜索联想 + 表格排序;器件库首次经 get_parts 自动导出缓存)→ 顶层模块自动识别
  • 工程结构模板(svtools.vivado.structure):默认 src/rtl → RTL、sim/tb → 测试台、xdc → 约束、prj → 工程目录,glob 可完全自定义
  • 标签页快捷按钮:sv/v 文件 ▶ 仿真(选 Icarus Verilog / Vivado xsim,xsim 自动把当前文件置为仿真顶层,默认跑到 $finish);有 Vivado 工程时 ⊕ 加入/移出工程(左键添加/右键移出)
  • Vivado 自动探测(配置 → XILINX_VIVADO → PATH → 常见安装位置)

配置与命令中文本地化

  • 设置界面与命令面板的标题/描述跟随 VSCode 界面语言自动切换中英文(42 项配置 + 20 个命令)

波形查看器

  • 总线跳变 X 交叉:陡峭对角交叉线(Vivado 风格),密集跳变不再有"波浪"视觉
  • x/z 分色:x 红、z 深蓝
  • 全名切换入口加到波形区底部工具栏(信号树收起也能用);滚轮方向区分(上下滚信号行 / 左右滚或 Shift+滚轮平移时间轴)
  • 名称栏拖拽调序、Ctrl 单选/Shift 范围多选、分组可命名(聚拢到首成员位置)

🐛 修复

  • 工程创建向导崩溃(openTextDocument 打开不存在的脚本文件)
  • xsim 仿真被 1000ns 截断(现默认 run all 跑到 $finish)
  • timescale 单位变体兼容(sec/nsec 等长写法)+ 无法识别时显式提示
  • 总线实心色块、波形区多选分组入口、折叠层级无法展开等(3.4.2 系列修复)

安装:附件 svtools-3.4.3.vsix(扩展)与 svtools.exe(Rust CLI 格式化器);Open VSX / Marketplace 同步更新。

完整变更: CHANGELOG.md

v3.4.2 — Icarus Verilog 工具链集成 + 内置 VCD 波形查看器

Choose a tag to compare

@JayceVane JayceVane released this 26 Sep 05:05

v3.4.2 — Icarus Verilog 工具链集成 + 内置 VCD 波形查看器

本版将 svtools 从格式化工具升级为 FPGA 仿真调试入口:输入时自动语法检查、一键仿真、双击 .vcd 直接看波形,全部零外部依赖(波形查看器为纯 Canvas 渲染)。

✨ 新增

Icarus Verilog 集成:语法检查与仿真验证

  • 自动 lint:输入(防抖)/ 打开 / 保存 .v / .sv 时自动运行 iverilog -tnull,诊断进入 Problems 面板;未保存的缓冲区内容经临时文件参与检查
  • 跨文件模块解析:工作区目录自动加入 -y/-I,模块名与文件名不一致时按模块索引自动补编译(最多 3 轮迭代)
  • 一键仿真:状态栏 ▶ / 命令面板 "Icarus Verilog: Run Simulation",编译 + vvp 流式输出,支持停止与超时
  • 工具链自愈:自动探测 iverilog(配置 → IVERILOG_HOME → PATH);Cygwin 构建缺 cygwin1.dll 时自动定位同级 Cygwin 注入 PATH

内置 VCD 波形查看器

  • 双击 .vcd 直接以波形面板打开(.vcd 默认编辑器),标签页右上角波形 ↔ 文本一键切换;仿真产出波形后自动打开
  • 信号管理:层级信号树(折叠/展开/双击单独显示模块)、常量开关(默认隐藏、显示沉底)、名称排序/按模块分组
  • 多选与分组:Ctrl+点击单选加/减、Shift+点击范围多选(树与波形行统一);右键分组——组员聚拢到第一个成员位置(其余行相对序不变,Vivado 式),组可命名(建组后原位输入),支持重命名/解除
  • 拖拽调序:按住名称栏上下拖拽调整行顺序(手动排序优先),虚线箭头指示插入位
  • 显示格式:右键二级菜单切换 Hex / Bin / Dec / SDec / Analog 模拟量(阶梯折线自动量程),模拟量行底边可拖拽调高(24~240px)
  • 全名/简称切换:名称栏显示完整层级路径或短名,全名模式自动加宽
  • 边沿导航 + 吸附:点击自动吸附 8px 内最近跳变,◀ 沿 / 沿 ▶ 或 ←/→ 键跳沿并自动居中
  • 滚轮方向区分:上下滚=滚动信号行,左右滚(或 Shift+滚轮)=平移时间轴,Ctrl+滚轮缩放
  • 视口窗口渲染:数十亿 ticks 时间跨度流畅缩放,刻度尺按 $timescale 换算真实物理时间

🐛 修复

  • 总线信号被渲染成实心色块(drawBus 形参错位导致填充色失效)
  • 波形区 Shift 多选与分组此前只能从信号树触发
  • 手动 lint 清除缓存的工具链探测失败状态,环境修复后无需重载窗口
  • 波形面板折叠层级后无法再次展开

安装:附件 svtools-3.4.2.vsix 可直接下载安装;Open VSX / VS Code Marketplace 同步更新。

完整变更: CHANGELOG.md