vscode仅编辑和调度任务,vhdl仿真必须由ghdl分-a、-e、-r三步执行;需确认ghdl已安装且path正确,tasks.json须分步定义并配置problemmatcher,波形需手动用gtkwave查看。

VSCode 本身不运行 VHDL,它只负责编辑和任务调度;真正执行仿真必须靠 ghdl 完成分析(-a)、绑定(-e)、运行(-r)三步,缺一不可。没配好 ghdl 或漏掉任一环节,就只会看到“无输出”或“command not found”。
确认 ghdl 已安装且 VSCode 能调用
这是所有后续操作的前提,跳过这步等于在空转配置。
- 终端里直接运行
ghdl --version,有版本号输出才算成功;若提示command not found,说明没装或没进PATH - macOS 用户用
brew install ghdl最稳;Windows 用户推荐 MSYS2 或 prebuilt 版,别选 ModelSim(许可证+启动慢) - VSCode 集成终端里也得能运行
ghdl --version—— 有些用户装了但没重启 VSCode,导致which ghdl在集成终端里仍为空 - 路径不对时,
tasks.json里得写绝对路径,比如"command": "/opt/homebrew/bin/ghdl"(Apple Silicon)
tasks.json 必须分三步定义,不能合并
把 ghdl -a、ghdl -e、ghdl -r 塞进一个 task 看似省事,实际失败时根本没法定位是哪步崩了。
- 每个 task 单独定义:
"label": "GHDL Analyze"、"label": "GHDL Elaborate"、"label": "GHDL Run" -
ghdl -a用${file}分析当前文件;ghdl -e和ghdl -r必须用${fileBasenameNoExtension},否则找不到实体 - 每个 task 都要加
"problemMatcher": ["$ghdl"],否则错误只滚屏,双击无法跳转到报错行 -
ghdl -r建议加--vcd=wave.vcd参数,不然不会生成波形文件,后面 GTKWave 就没得看
波形查看必须手动触发 gtkwave,且顺序不能错
ghdl -r 输出的是纯文本 wave.vcd,VSCode 不会自动打开图形界面,也不等前一个 task 结束就往下跑。
- 先确保已装
gtkwave:macOS 执行brew install gtkwave,Windows 注意路径含空格(如C:\Program Files\GTKWave\gtkwave.exe)需加引号或改用短路径 - 在
tasks.json新增 task:"command": "gtkwave", "args": ["wave.vcd"],并设"group": "build"方便归类 - 必须手动作:先 Run “GHDL Run”,等终端显示
Done后,再 Run “GTKWave View”;VSCode 不自动串行,也不会检查wave.vcd是否存在 - 如果
wave.vcd是空的,大概率是ghdl -r没带--vcd=wave.vcd,或 testbench 里没写wait for 100 ns;类似的延时,仿真瞬间结束没采样
最容易被忽略的是:多文件工程中 ghdl -a *.vhdl 和单文件 ghdl -a ${file} 行为完全不同,前者才能让实体间互相可见;而 vhdllint 和 teros_hdl 插件不能共存,冲突会导致语法检查失效 —— 这些细节不踩一遍坑,很难意识到问题出在哪。











