Verilog For Hiro
一个功能完整的VS Code Verilog开发扩展,为Verilog和SystemVerilog提供全面的开发支持。
功能特性
🌳 智能文件树显示
- 模块层次视图:清晰展示Verilog模块的实例化层次关系
- 文件浏览视图:按目录或平铺方式浏览Verilog文件
- 顶层模块识别:自动识别并突出显示顶层模块
- 层次关系追踪:显示模块间的实例化关系
- 独立活动栏:在VS Code活动栏中注册专用视图容器
⚡ 智能模块实例化
- 多种连接风格:支持命名端口、位置端口或同时生成两种风格
- 智能端口连接:自动识别常见信号名(clk、rst等)并生成合适连接
- 参数处理:自动解析和包含模块参数
- 信号声明生成:可选择自动生成所需的wire/reg声明
- 交互式选项:提供友好的选项对话框供用户选择
- 剪贴板集成:生成的代码自动复制到剪贴板
🎨 语法高亮
支持多种HDL相关文件的语法高亮:
- Verilog (.v, .vh)
- SystemVerilog (.sv, .svh)
- UCF约束文件 (.ucf)
- XDC约束文件 (.xdc)
- TCL脚本 (.tcl, .do)
- 高云CST约束文件 (.cst)
🔍 定义跳转
- 快速跳转到模块、变量和引脚的定义位置
- 基于Universal Ctags实现,支持精确定位
- 用户可自定义ctags.exe路径
💡 定义悬停
- 鼠标悬停显示变量或模块的详细定义信息
- 显示符号类型、文件位置和源代码上下文
- 同样基于Universal Ctags实现
🔧 语法检查
- 使用Vivado xvlog工具进行语法错误检查
- 实时显示错误和警告信息
- 支持保存时自动检查
📝 智能代码补全
- 提供符合IEEE标准的Verilog代码片段
- 智能感知上下文,提供相关补全建议
- 支持模块实例化、状态机、测试台等常用模板
安装要求
必需工具
- Universal Ctags: 用于定义跳转和悬停功能
可选工具
- Vivado xvlog: 用于语法检查功能
- 需要安装Xilinx Vivado工具套件
- 在扩展设置中配置xvlog工具路径
使用方法
文件树操作
- 在侧边栏的"Verilog文件树"面板中查看项目结构
- 点击文件名打开文件
- 展开文件节点查看其中的模块定义
- 点击刷新按钮更新文件树
模块实例化
- 将光标放在要实例化的模块名上
- 右键选择"实例化模块"或使用命令面板
- 实例化代码将自动生成并插入到当前位置
- 代码同时复制到剪贴板方便复用
测试台生成
- 在包含模块定义的文件中
- 右键选择"生成测试台"
- 自动生成包含时钟、复位和测试激励的测试台文件
定义跳转
- 按住Ctrl并点击变量或模块名
- 自动跳转到定义位置
- 也可以右键选择"转到定义"
语法检查
- 保存文件时自动进行语法检查(如果启用)
- 手动执行:命令面板 -> "Verilog For Hiro: 语法检查"
- 错误信息显示在问题面板中
扩展设置
在VS Code设置中搜索"Verilog For Hiro"配置以下选项:
路径配置
verilogForHiro.ctagsPath : Universal Ctags可执行文件路径
verilogForHiro.xvlogPath : Vivado xvlog工具路径
功能开关
verilogForHiro.enableSyntaxCheck : 启用xvlog语法检查
verilogForHiro.enableHover : 启用悬停提示功能
verilogForHiro.enableGoToDefinition : 启用跳转到定义功能
verilogForHiro.autoFormat : 保存时自动格式化代码
实例化设置
verilogForHiro.instantiation.style : 实例化风格(simple/named/both)
verilogForHiro.instantiation.autoConnect : 自动连接同名信号
文件树设置
verilogForHiro.fileTree.showHierarchy : 显示模块层次关系
verilogForHiro.fileTree.groupByDirectory : 按目录分组显示文件
代码补全设置
verilogForHiro.completion.enableSnippets : 启用代码片段补全
verilogForHiro.completion.enableModuleInstance : 启用模块实例化补全
快捷键
功能 |
快捷键 |
命令 |
实例化模块 |
无默认快捷键 |
verilogForHiro.instantiateModule |
生成测试台 |
无默认快捷键 |
verilogForHiro.generateTestbench |
格式化文档 |
无默认快捷键 |
verilogForHiro.formatDocument |
语法检查 |
无默认快捷键 |
verilogForHiro.syntaxCheck |
刷新文件树 |
无默认快捷键 |
verilogForHiro.refreshFileTree |
用户可以在VS Code的键盘快捷方式设置中自定义这些命令的快捷键。
代码片段
扩展提供了丰富的IEEE标准Verilog代码片段,输入以下前缀并按Tab键展开:
Verilog片段
module - 基本模块模板
module_param - 带参数的模块模板
always_comb - 组合逻辑always块
always_ff - 时序逻辑always块
always_ff_rst - 带复位的时序逻辑块
case - case语句
if_else - if-else语句
for - for循环
function - 函数定义
task - 任务定义
testbench - 测试台模板
fsm - 有限状态机模板
SystemVerilog片段
svmodule - SystemVerilog模块
interface - 接口定义
class - 类定义
always_ff - SystemVerilog时序块
always_comb - SystemVerilog组合块
typedef_enum - 枚举类型定义
typedef_struct - 结构体定义
constraint - 约束块
covergroup - 覆盖率组
assert - 断言
故障排除
常见问题
Q: 定义跳转不工作
A: 请确保已安装Universal Ctags并在设置中配置了正确的路径。扩展会自动生成.tags文件。
Q: 语法检查功能不可用
A: 需要安装Xilinx Vivado并配置xvlog工具路径。确保xvlog命令在命令行中可以正常执行。
Q: 文件树没有显示
A: 确保工作区包含.v或.sv文件,并尝试刷新文件树。
Q: 代码补全不工作
A: 确保文件语言模式设置为"Verilog"或"SystemVerilog"。
性能优化
- 对于大型项目,ctags生成可能需要一些时间
- 可以通过.gitignore排除不需要的文件目录
- 语法检查建议只在需要时启用
更新日志
1.0.0
- 初始版本发布
- 实现所有核心功能
- 支持Verilog和SystemVerilog
- 提供完整的语法高亮和代码补全
贡献
欢迎提交Issues和Pull Requests来改进这个扩展。
许可证
MIT License
作者
MiniMax Agent
享受使用Verilog For Hiro进行高效的HDL开发! 🚀
| |