English | 简体中文 | Developer guide ZHDL
A VS Code extension for ASIC and FPGA development, with Verilog, SystemVerilog and VHDL editing, project management and tool integration. Version 8.0.11
Features
Module and port completionThe index first uses the ZHDL project containing the current file. Without a matching project, it uses the open Verilog and SystemVerilog files. Set the scope to Configure indexing under Open Global Settings Menu → General. The settings are stored in
On a blank line inside a module body, type a module name and select it to insert an instance with named parameters and ports. Use Tab to edit the instance name, parameter values and connections. The generated comments show port direction and width when ZHDL can determine them. Inside an existing instance:
Indexing parses HDL syntax without preprocessing or elaboration. Interfaces generated entirely by macros may therefore be incomplete. Live parsing for unsaved editsEnable Live parsing (experimental) in Open Global Settings Menu → General to update Verilog and SystemVerilog completion, Hover and dirty-buffer Outline from unsaved content. The first parse occurs when a file is opened. Later edits reuse its Tree-sitter syntax tree and normally update only affected declarations or regions. Other project files contribute lightweight module, parameter and port information; open unsaved project files contribute their current interfaces. The live snapshot recognizes modules, ports, registers, nets, instances, constants, macros, functions, tasks, classes, typedefs, enum and struct members, interfaces, packages, programs, checkers, modports, properties, sequences and covergroups. Function arguments and local variables are limited to their parent container when completion and Hover choose visible symbols. Current limitations:
Disable live parsing to restore the saved-file indexing behavior. Lint updatesOnce a linter is configured and enabled, opening, editing and saving a file can refresh diagnostics. External lint tools generally process the complete content, so their runtime is separate from live Tree-sitter completion. Offline useThe VSIX includes its HDL parsers, Yosys, Pyodide, SQL.js, required Python wheels, Webview assets and bundled native helper tools. The extension does not require a runtime download for these components. Install a VSIX compatible with the environment where the extension host runs. With Remote SSH, WSL or containers, tool paths and native binary compatibility refer to that remote environment. External tools such as Vivado, Quartus, GHDL and Verilator must still be installed there before their integrations can work offline. Online documentation and optional downloads still require a connection. Bundled helper versions:
Configuration and migration
On Windows, ZHDL no longer automatically reads or writes TerosHDL's The default build directory is Documentation and feedback
AcknowledgmentsThanks to Teros Technology and the TerosHDL maintainers and contributors. This project's foundational features and architecture come from their open-source work. LicenseThis project retains the upstream GNU GPL v3 license. Original author copyright notices are preserved. |