Skip to content

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

Choose a tag to compare

@JayceVane JayceVane released this 28 Sep 12:19
· 128 commits to master since this release

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)