Adolph-Align


一款为 Verilog/VHDL 设计的 VS Code 插件,提供代码对齐、文件树导航和信号跳转等功能,旨在提升 HDL 开发效率。
写在前面
- 注意: 体积有点大,把linux-64和mac-64的jre环境打压缩包了,对应环境的亲自己去解压缩一下 .vscode\extensions\adolphwang.adolph-align-2.1.0\resources\jre ,然后可以将不需要的环境删除
✨ 主要功能
1. 括号内容对齐
选中代码块后,使用快捷键快速对齐括号内的内容:
- 右对齐:
Alt+R
- 居中对齐:
Alt+C
- 左对齐:
Alt+L
2. 智能代码对齐
在打开的 Verilog 文件中,按下 Alt+A
触发智能对齐。支持以下语法结构:
- 常见预编译指令(注意会将预编译指令进行替换,这个有点不是很友好,现在先就这样吧)
parameter
/ localparam
参数声明
port
端口声明
reg
/ wire
/ integer
/ real
等内部信号声明
- 二维数组声明
assign
连续赋值语句
initial
过程块
always
进程块(支持 if-else
/ case
/ for
的自动缩进)
- 模块实例化
- 门级例化
task
/Function
/generate
声明
3. Verilog 文件树
在侧边栏提供一个清晰的模块/实体层级视图,方便快速导航。
4. 定义跳转
按住 Ctrl
并单击信号名,即可跳转到其定义位置。仅支持*.v文件
5. 内置代码片段
提供常用的 Verilog 和 VHDL 代码片段,加速开发。
// Verilog
zhushi、defe_key_word、reg-Signal、reg-x[x:00] signal
wire-Signal、wire-x[x:00] signal、task_key_word、case_key_word
input-Signal、input-x[xx:00] Signal
output-s-wire Signal、output-x-wire[xx:00] Signal
output-s-reg Signal、output-x-reg [:00] Signal
repeat_key_word、localparam-c、parameter-c、defparam_key_word
if_a_key_word、else_if_table、else_a_key_word、begin_key_word
jsq、jsq_2level、jsq_3level、shixu-full、shixu-less、Zuhe_logic
module-verilog、my_testbench、head-verilog-self、start_do、ztj_3_level
// VHDL
head-VHDL-self、module-VHDL、vhdl-input-s、vhdl-input-x、vhdl-input-int
vhdl-output-S、vhdl-output-x、vhdl-output-int、vhdl-io-s、vhdl-io-x
vhdl-constant、vhdl-signal-s、vhdl-signal-x、vhdl-signal-int、vhdl-note
vhdl-process-less、vhdl-process-full、vhdl-if-a、vhdl-elsif-a、vhdl-else-b
vhdl-case、vhdl-function、vhdl-procedure、vhdl-component、vhdl-test-bench
vhdl-process-normal、vhdl-file-opt
⚙️ 配置选项
您可以在 VS Code 的设置页面或 settings.json
文件中自定义对齐规则。
提示:每级缩进固定为4个空格,未来可能作为可配置项。
{
// 端口对齐 (Port Alignment)
"adolphAlign.port_num2": 16, // 行首 -> signed/unsigned
"adolphAlign.port_num3": 24, // 行首 -> 位宽 '['
"adolphAlign.port_num4": 48, // 行首 -> 信号名
"adolphAlign.port_num5": 80, // 行首 -> 行尾符号 (, or ;)
// 内部信号对齐 (Signal Alignment)
"adolphAlign.signal_num2": 16, // 行首 -> signed/unsigned
"adolphAlign.signal_num3": 24, // 行首 -> 位宽 '['
"adolphAlign.signal_num4": 48, // 行首 -> 变量名
"adolphAlign.signal_num5": 80, // 行首 -> 行尾符号 (;)
// 参数对齐 (Parameter Alignment)
"adolphAlign.param_num2": 24, // 行首 -> 参数名
"adolphAlign.param_num3": 48, // 行首 -> 赋值符号 (=)
"adolphAlign.param_num4": 80, // 行首 -> 行尾符号 (; , or //)
// Assign 语句对齐 (Assign Statement Alignment)
"adolphAlign.assign_num2": 12, // 行首 -> 变量名
"adolphAlign.assign_num3": 48, // 行首 -> 赋值符号 (=)
"adolphAlign.assign_num4": 80, // 行首 -> 行尾符号 (;)
// 模块实例化对齐 (Instance Alignment)
"adolphAlign.inst_num2": 40, // 端口名 '.' -> 左括号 '('
"adolphAlign.inst_num3": 80, // 端口名 '.' -> 右括号 ')'
// 位宽格式 (Bit-width Formatting)
"adolphAlign.upbound": 2, // 位宽 `[]` 内左侧空格数
"adolphAlign.lowbound": 2, // 位宽 `[]` 内右侧空格数
// 预编译指令对齐 (Preprocessor Directive Alignment)
"adolphAlign.preprocessor_col1": 12, // 信号名对齐列
"adolphAlign.preprocessor_col2": 24, // 字符串对齐列
// Always 块对齐 (Always Block Alignment)
"adolphAlign.always_lvalue_align": 28, // 左值变量对齐列
"adolphAlign.always_op_align": 32, // 赋值符号对齐列
"adolphAlign.always_comment_align": 80, // 行尾注释对齐列
// Case 语句对齐 (Case Statement Alignment)
"adolphAlign.case_colon_align": 20, // 条件 -> 冒号 ':' 对齐列
// 缩进回退 (Fallback Indent)
"adolphAlign.fallbackIndentSize": 4 // 非AST解析时的缩进大小
}
⚠️ 兼容性与依赖
- Java 环境: 本插件的AST(抽象语法树)解析功能依赖 Java 环境。已内置了
win-x64
、linux-x64
和 mac-x64
平台的解析器(仅在 win-x64
上完整测试)。
- 其他平台: 如果您使用其他操作系统或架构,或遇到解析问题,请手动安装 VS Code 官方的 Extension Pack for Java 扩展包以获得支持。
📜 更新日志
v2.0.6
- 修复: 修复了always的不可综合语句中,丢失内容的问题
v2.0.5
- 优化: 优化了插件打包机制,使用webpack替换vsce工具
v2.0.4
v2.0.3
- 修正: 体积有点大,把linux-64和mac-64的jre环境打压缩包了,根据需要自行使用相应的环境,另外的用不到的可以删除
- 修正: 集成ctags,这样不需要独立安装配置ctags以实现文件/信号跳转,声明悬停。
- 新增: 集成iverilog,会对预编译指令进行处理替换(这个只集成了win-x64平台,所以其他平台mac/linux 需要自行安装iverilog)。
v2.0.2
- 修正: 忘记关闭调试模式了,人一上了年纪就容易忘事。
- 修正: 增加代码片段使用关键字注解。
v2.0.1
- 修正: 解决了
assign
语句匹配缺失的问题。
- 修正: 优化了信号/端口声明及模块实例化中最后一行注释的对齐效果。
v2.0.0
- 新增: 全新的解析引擎,同时支持 AST 识别 和 正则表达式识别,大幅提升对齐准确性。
v1.1.0
- 修复: 解决了需要多次执行对齐指令才能生效的 Bug。
- 修复: 修正了同一
module/entity
对应多个文件时,文件树节点覆盖显示的问题。
v1.0.5
v1.0.4
- 新增: 增加对
real
, signed
类型的对齐支持。
- 新增: 文件树增加对 VHDL 模块的识别。
... (更早版本省略)
📦 仓库
项目地址: adolph-align on GitHub
❤️ 致谢
本插件的开发参考了以下优秀项目: