Digital IDE

repository·main·Indexed 22 days ago

https://github.com/digital-eda/digital-ide

A comprehensive VSCode extension for hardware engineers providing language services, simulation waveform rendering (VCD), and netlist visualization for Verilog, VHDL, and SystemVerilog. It features high-performance LSP written in Rust, Wavedrom-style comment rendering, and integration with third-party linters such as Vivado, ModelSim, and Verilator. The plugin also includes specialized components like dide-netlist and dide-viewer for hardware design visualization.

Tokens
17.3K
Snippets
70
Records
93
Agent score
77%

What's inside Digital IDE

  1. Overview of the dide-netlist component

    main
    The dide-netlist component is a web-based visualization tool within the Digital IDE ecosystem. It is structured as a web application containing a view directory (housing the index.html, CSS, and JavaScript logic) and a static directory for assets. It is designed to render and interact with netlist data.
  2. Overview of Digital IDE

    main
    Digital IDE is an all-in-one VSCode plugin designed for Verilog, VHDL, and SystemVerilog development. It provides high-performance language services (LSP) written in Rust, documentation rendering, and specialized visualization tools for hardware design.
  3. Visualize HDL files with Wavedrom-style comments

    main
    The plugin provides improved documentation access for HDL files. It supports Wavedrom-style comments within your code, which are automatically rendered into visual diagrams to help document dependencies and basic information directly in the IDE.
  4. Use the VCD Renderer for waveform visualization

    main

    The built-in VCD (Value Change Dump) renderer allows you to visualize simulation waveforms with several advanced features:

    • Signal Management: Drag-and-drop signals, group selected signals in the left panel, and use Shift to select/deselect multiple signals.
    • Coordinate Systems: Establish a relative coordinate system based on system beacons.
    • Top Toolbar: Perform base conversion for displayed numbers, switch rendering modes, and render signals as analog values.
    • System Beacon: Use system beacons to aid in waveform navigation and alignment.
  5. Naming conventions for localization keys

    main

    Localization keys in Digital IDE follow a hierarchical dot-notation structure to define the severity level, the functional module, the specific feature name, and optionally the UI component. This allows for fine-grained control over translations for different parts of the same feature.

    Standard Format

    <level>.<module>.<name>

    • level: The notification or logging level (e.g., info).
    • module: The functional module (e.g., monitor, vcd-view).
    • name: A description of the feature, which can include nested hierarchies (e.g., update-pl or load.subname).

    Component-Specific Format

    To specify translations for different UI elements within the same feature, use the extended format: <level>.<module>.<name>.<component>

    • component: The specific UI entity where the text will be rendered (e.g., button, title, text). The valid values for this field are determined by product requirements.
    {
        "info.vcd-view.load.button": "加载",
        "info.vcd-view.load.title": "加载",
        "info.vcd-view.load.text": "正在加载 ..."
    }
  6. Supported Waveform File Types

    main

    The waveform viewer supports two primary file formats:

    1. .vcd (Value Change Dump): The standard raw waveform data file. When opened, the viewer attempts to find a matching .view file to restore previous zoom levels, markers, or configurations.
    2. .view: A specialized file used to store waveform view states. These are BSON-encoded files that contain a reference to the originVcdFile. If the original VCD file is not at the recorded path, the viewer will attempt to find a VCD file with the same name in the same directory.
  7. How HdlMonitor event listeners are registered

    main

    The HdlMonitor class does not implement the event logic itself. Instead, it uses specialized action classes to register listeners for file system events (add, change, unlink). When you call start() or a remake method, the following registration pattern occurs:

    1. HDL Events: Uses HdlAction to listen for listenAdd, listenChange, and listenUnlink on the monitor instance.
    2. Property Events: Uses PpyAction to listen for listenAdd, listenChange, and listenUnlink on the monitor instance.
    3. Ignore Events: Uses IgnoreAction to listen for listenAdd, listenChange, and listenUnlink on the monitor instance.

    Note: The monitor does not explicitly implement addDir or unlinkDir because file-level events are automatically triggered by the underlying watcher when directories are modified.

  8. Configure third-party linters for VHDL and Verilog

    main

    Digital IDE supports integration with third-party tools like Vivado, ModelSim, and Verilator for simulation and auto-correction. You can configure these tools by setting the following linter diagnostor settings in your VSCode configuration:

    • For VHDL: function.lsp.linter.vhdl.diagnostor
    • For Verilog: function.lsp.linter.vlog.diagnostor