Skip to content
| Marketplace
Sign in
Visual Studio Code>Linters>hdlfmtr - VHDL FormatterNew to Visual Studio Code? Get it now.
hdlfmtr - VHDL Formatter

hdlfmtr - VHDL Formatter

Henri Haka

|
3 installs
| (1) | Free
A fast VHDL formatter and linter. Formats on save, aligns declarations, normalizes spacing, and surfaces lint warnings in the Problems panel.
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

hdlfmtr for Visual Studio Code

A fast VHDL formatter and linter extension powered by hdlfmtr.

Zero-install

The extension bundles a cross-platform WebAssembly build of the hdlfmtr formatter. No Rust toolchain, no binary download, no PATH configuration - install the extension and it works immediately on Linux, macOS, and Windows.

Features

  • Format on save - registers as the default VHDL document formatter. Enable "editor.formatOnSave": true in your settings.
  • Lint diagnostics - unused signals, missing sensitivity-list entries, latch detection, multiple drivers, and more show up in the Problems panel with gutter markers and squiggly underlines.
  • 17-pass formatting pipeline - process labels, keyword case, indent normalization, vertical alignment, operator spacing, comma spacing, use-clause sorting, blank-line management, and more.
  • Configurable - all hdlfmtr options are exposed as VS Code settings under the hdlfmtr.* prefix.

Settings

Setting Default Description
hdlfmtr.indentStyle "tabs" "tabs", "spaces", or "preserve"
hdlfmtr.indentWidth 4 Spaces per indent level or tabstop hint
hdlfmtr.keywordCase "lower" "lower", "upper", or "preserve"
hdlfmtr.alignDeclarations true Align port / signal / variable / port-map / aggregate lists
hdlfmtr.caseBranchIndent true Extra indent for case when bodies
hdlfmtr.sortUseClauses true Sort consecutive use clauses, group by library
hdlfmtr.lint true Show lint diagnostics in Problems panel

Lint checks

Code Description
unused_001 Signal declared but never read or written
unused_002 Signal written but never read
unused_003 Input port never read
unused_004 Output port never assigned
sens_001 Signal read in combinational process not in sensitivity list
clock_001 rising_edge(X) but X not in sensitivity list
driver_001 Signal driven by multiple processes
latch_001 Signal may infer a latch (no default assignment)
reset_001 Inconsistent reset polarity

Contributing

See the main repository for build instructions and contribution guidelines.

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
© 2026 Microsoft