HDL Copilot

Overview

Metalware was founded by engineers from SpaceX, Amazon Robotics, and L3Harris to address the gap in modern tooling for hardware design and embedded systems. Our focus is on enhancing productivity and ensuring the accuracy of RTL development through advanced linting, editing, and code generation features.

HDL Copilot is a VS Code extension that provides immediate, real-time feedback on your digital design and verification work. By identifying functional errors early in the development cycle, our tool significantly reduces the time spent on debugging and testing, streamlining your workflow from design to deployment.

Metalware HDL Copilot currently supports the SystemVerilog language (IEEE 1800-2017) only. VHDL (IEEE 1076) coming soon!

Installation

Metalware HDL Copilot is available in the VS Code Marketplace. You can also search "Metalware" directly in VS Code IDE within the extensions tab.

Please visit the VS Code Extension readme for system requirements, setup, and configuration instructions.

Key Features

  • Real-time Linting: Performs immediate syntactic and semantic checks directly within your coding workflow.
  • Static Analysis: Comprehensive checks to catch identify potential footguns like implicit conversions, truncations, extraneous semicolons, undriven nets, type mismatches, unused definitions, unsized integer concatenation, bound violations, constant edge expression, and more.
  • Incremental Compilation: Employs an IEEE 1800 SystemVerilog compliant compiler for real-time compilation, flagging errors ahead of simulation.
  • Editing Enhancements: Autocomplete, quick fixes, and smart code formatting to streamline code writing.
  • Autocomplete Support: Generates code for over 30 SystemVerilog constructs.
  • Dependency Resolution: Automatically resolves project and library directory dependencies, including UVM, for seamless integration.
  • Data Privacy: Runs locally so no proprietary code or intellectual property leaves your machine.
  • Comprehensive Rules: Features over 1,000 rules aligned with the IEEE 1800-2017 standard for thorough compliance checks.
  • Macro Expansion: Offers extensive support for preprocessor directives and macro expansions.
  • Code Navigation: Provides advanced navigation tools, including hyperlinks to files and methods, for efficient code exploration.
  • Customizability: Easily suppress linting diagnostics at the line, file, and project levels to maximize signal/noise ratio.

FAQ

Set your project

You can only have one project folder selected in a single VS Code window. When dealing with multiple projects within the current workspace or across multiple workspace folders, HDL Copilot prompts you to select one.

If you wish to change the current project folder to a different folder or subfolder, use the shortcut Ctrl+Shift+P to access the command palette and select HDL Copilot: Set as SystemVerilog project to set your preferred project folder.

Example:

foo
  bar1
  bar2
  bar3

In a scenario where bar1, bar2, and bar3 directories share a common root directory named foo, you can designate foo as the project folder in a VSCode window, particularly useful if bar1 relies on bar2 and bar3 for dependencies.

Including additional folders in compilation

You can link additional folders to your project from the "HDL Project View" by clicking on the folder icon. No copies are made of the included folders.

dependencies

Excluding file from compilation

If you want HDL Copilot to exclude a file from compilation, you can right click the file in the HDL Project View and select HDL Copilot: Exclude from Compilation

exclude

Defining custom macros

From the top bar (Ctrl+Shift+P) select HDL Copilot: Open Preferences. You can specify the macros in the "Macros" section: macros

Suppress linting errors for single line, file, or project

To suppress an error, you can use Quick Fixes in one of three ways:

1) Right-click the error in the Problems Pane at the bottom of VS Code suppress2 2) Select the linting error with your cursor/caret, and use the inline Quick Fix shortcut by clicking on the lightbulb suppress1 3) Select the linting error with your cursor/caret, and use Ctrl+Shift+P to access the command palette to select Quick Fixes...