Skip to content
| Marketplace
Sign in
Visual Studio Code>Programming Languages>HVP Verification PlanNew to Visual Studio Code? Get it now.
HVP Verification Plan

HVP Verification Plan

Zvord

|
2 installs
| (0) | Free
Syntax highlighting, autocompletion, feature outline (Go to Symbol), and block-imbalance diagnostics for the HVP (Hierarchical Verification Plan) language.
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

HVP Language Support

VS Code support for the HVP (Hierarchical Verification Plan) language used by Synopsys Verification Planner.

This extension is a thin LSP client. All language intelligence (parsing, diagnostics, completion, outline, folding) lives in the standalone hvp-language-server npm package (sibling repo, ../hvp-language-server); this repo only wires that server into VS Code and ships a generated TextMate grammar for syntax highlighting. See CLAUDE.md in this folder for the file-by-file map.

Features

  • Syntax highlighting for .hvp files (keywords, types, built-in metrics, strings, numeric/percent literals, comments) — syntaxes/hvp.tmLanguage.json, generated by hvp-language-server's grammar generator (see "Syntax grammar" below).
  • Feature outline: the Outline view and "Go to Symbol" (Ctrl+Shift+O) list every feature block, nested to match the file's actual feature ... endfeature hierarchy. Only features are shown — measures, metrics, plans, subplans, overrides, and filters are intentionally excluded.
  • Block snippets: typing a block-opener keyword (plan, feature, metric, measure, override, filter, until) and accepting the suggestion inserts the full <keyword> <name>; ... end<keyword> skeleton with tabstops. Sent by the server as insertTextFormat: Snippet completion items — there's no local snippets/hvp.json file anymore.
  • Autocompletion: block keywords, built-in attributes/annotations (description, weight, owner, at_least, phase, source, test.expected), built-in metric names (Line, Group, test.*, etc.), type keywords, and aggregator names — all offered everywhere, but ranked by what block the cursor is currently inside (e.g. source sorts first inside a measure, measure/metric sort first inside a feature). Suppressed inside strings and comments. Triggers automatically after . (for dotted names like test.expected).
  • Auto-indentation: a line ending a feature ...; declaration increases the indent of the next line; endfeature decreases it (language-configuration.json, client-side).
  • Block folding: every plan/feature/metric/measure/override/filter/until block can be folded, from the server's foldingRangeProvider.
  • Problems (diagnostics), refreshed as you type (debounced 300ms server-side):
    • Error — a statement line doesn't end with a ; (block closers like endfeature/ endmeasure/endmetric/endoverride/endfilter/endplan/enduntil are exempt, and a line ending in , is treated as a continued list, e.g. a multi-line source = "...", "...";).
    • Error — block imbalance, treating every block pair (plan/endplan, feature/endfeature, metric/endmetric, measure/endmeasure, override/endoverride, filter/endfilter, until/enduntil) like matching parentheses: an unclosed block left open at end of file, a close keyword with no matching open, or a close keyword that doesn't match the innermost open block.
    • Warning — a feature block has no nested features and no measures.
    • Warning — a measure block has no source assignment.

Known limitations (v1)

  • Source-region keywords inside source = "..." strings (module:, instance:, tree:, property:, backtick wildcard/regex tags like `r`/`n`) are not tokenized — the whole string is highlighted as a plain string literal.

License

MIT

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