Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
[![VS Code Marketplace](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fpascal-lab.gallery.vsassets.io%2F_apis%2Fpublic%2Fgallery%2Fpublisher%2Fpascal-lab%2Fextension%2Fvide-ls%2Flatest%2Fassetbyname%2FMicrosoft.VisualStudio.Code.Manifest&query=%24.version&label=Marketplace&prefix=v&logo=data%3Aimage%2Fsvg%2Bxml%3Bbase64%2CPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCI%2BPHBhdGggZmlsbD0iI2ZmZiIgZD0iTTIzLjE1IDIuNTkgMTguMjEuMjFhMS40OSAxLjQ5IDAgMCAwLTEuNy4yOUw3LjA2IDkuMTEgMi45NCA1Ljk5YTEgMSAwIDAgMC0xLjI3LjA2TC4zMyA3LjI2YTEgMSAwIDAgMCAwIDEuNDhMMy45IDEyIC4zMyAxNS4yNmExIDEgMCAwIDAgMCAxLjQ4bDEuMzQgMS4yMWExIDEgMCAwIDAgMS4yNy4wNmw0LjEyLTMuMTIgOS40NSA4LjYxYTEuNDkgMS40OSAwIDAgMCAxLjcuMjlsNC45NC0yLjM4QTEuNSAxLjUgMCAwIDAgMjQgMjAuMDZWMy45NGExLjUgMS41IDAgMCAwLS44NS0xLjM1Wk0xOCAxNy40NSAxMC44MyAxMiAxOCA2LjU1djEwLjlaIi8%2BPC9zdmc%2B&logoColor=white&color=007ACC)](https://marketplace.visualstudio.com/items?itemName=pascal-lab.vide-ls)
[![License](https://img.shields.io/badge/license-MIT-blue)](LICENSE)

Vide 是专为 Verilog/SystemVerilog 开发者打造的现代化编程开发环境,旨在让硬件设计像软件开发一样流畅顺手。Vide 提供了大量现代软件 IDE 标配,而硬件 IDE 缺失的代码分析功能,包括[定义跳转](https://vide.pascal-lab.net/user-guide/features/navigation/)、[代码注解](https://vide.pascal-lab.net/user-guide/features/annotations/)、[精准补全](https://vide.pascal-lab.net/user-guide/features/completion/)和[自动重构](https://vide.pascal-lab.net/user-guide/features/quick-fixes/)等。借助 Vide,硬件开发者可以更高效地理解、编写和维护 Verilog/SystemVerilog 代码。
Vide 是专为 Verilog/SystemVerilog 开发者打造的现代化编程 IDE,旨在让硬件设计像软件开发一样流畅顺手。Vide 提供了大量现代软件 IDE 标配,而硬件 IDE 缺失的代码分析功能,包括[定义跳转](https://vide.pascal-lab.net/user-guide/features/navigation/)、[代码注解](https://vide.pascal-lab.net/user-guide/features/annotations/)、[精准补全](https://vide.pascal-lab.net/user-guide/features/completion/)和[自动重构](https://vide.pascal-lab.net/user-guide/features/quick-fixes/)等。借助 Vide,硬件开发者可以更高效地理解、编写和维护 Verilog/SystemVerilog 代码。

完整功能展示、安装说明、在线体验和用户手册请访问 [vide.pascal-lab.net](https://vide.pascal-lab.net/)。

Expand Down
4 changes: 2 additions & 2 deletions docs/src/components/HomepageFeatureSection.astro
Original file line number Diff line number Diff line change
Expand Up @@ -14,12 +14,12 @@ const locale = normalizeHomepageLocale(Astro.props.locale);
{
locale === 'en' ? (
<>
Make <span class="vide-feature__accent"><strong>hardware design</strong></span><br />feel as fluid as
Make hardware design<br />feel as <span class="vide-feature__accent"><strong>fluid</strong></span> as
developing software
</>
) : (
<>
让<span class="vide-feature__accent"><strong>硬件设计</strong></span><br />像开发软件一样<wbr /><span class="vide-feature__nowrap">丝滑顺手</span>
让硬件设计<br />像开发软件一样<wbr /><span class="vide-feature__nowrap vide-feature__accent"><strong>丝滑顺手</strong></span>
</>
)
}
Expand Down
9 changes: 9 additions & 0 deletions docs/src/content/docs/en/404.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
---
title: "404"
template: splash
editUrl: false
pagefind: false
hero:
tagline: Page not found. Check the URL or try using the search bar.
actions: []
---
14 changes: 7 additions & 7 deletions docs/src/content/docs/en/advanced-guide/parsing-and-analysis.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,22 +13,22 @@ Vide enters different working states depending on whether the workspace has `vid

| State | What gets loaded | What it is for |
| --- | --- | --- |
| No `vide.toml` | Verilog/SystemVerilog files in the workspace are scanned as best-effort indexes | Reading code first: basic go to definition, references, hover, and completion |
| No `vide.toml` | Verilog/SystemVerilog files in the workspace are scanned into a best-effort index | Initial code reading: basic definition jumps, references, hover, and completion |
| `vide.toml` exists but omits `sources` | Best-effort indexing continues; if `include_dirs` is configured, those directories are loaded as include search paths | Transitional state; not recommended as a long-term setup |
| `sources = []` | Workspace source scanning is explicitly disabled; if `include_dirs` is configured, only those include directories are loaded | Newly created templates, or workspaces where Vide should not guess the source layout |
| `sources = ["rtl/**"]` | Project source files are loaded from `sources`, then combined with `include_dirs`, `defines`, `libraries`, and `top_modules` to build project analysis | Normal project configuration |

A short way to remember it:

- Omitted `sources`: read the workspace for me, but do not treat the scan result as the real project.
- Omitted `sources`: scan the workspace for code reading, but do not treat the scan result as the configured project.
- `sources = []`: do not scan source files automatically.
- `sources = ["rtl/**"]`: these files are the current project sources.

## Best-Effort Indexing and Project Analysis

Best-effort indexing is for reading code. It tries to load RTL files in the workspace so go to definition, references, hover, completion, and instance-count lens can work early. It is not a real compile configuration, and it does not enable full project semantic diagnostics or project rename.
Best-effort indexing is for reading code. It tries to load RTL files in the workspace so definition jumps, references, hover, completion, and the instance-count lens can work early. It is not a real compile configuration, and it does not enable full project semantic diagnostics or project rename.

Project analysis comes from `vide.toml`. After `sources` points to real source files, Vide puts those files into the project view and uses `include_dirs`, `defines`, `libraries`, and `top_modules` for cross-file parsing, diagnostics, rename, and Qihe project analysis.
Project analysis comes from `vide.toml`. After `sources` points to actual source files, Vide adds those files to the project view and uses `include_dirs`, `defines`, `libraries`, and `top_modules` for cross-file parsing, diagnostics, rename, and Qihe project analysis.

`libraries` are loaded as dependency workspaces and participate in the current project analysis. `exclude` removes generated files, simulation output, or black-box files from already loaded files. See [Project Configuration Reference](../../user-guide/project-configuration/#path-and-glob-rules-for-sources-and-exclude) for path and glob syntax.

Expand Down Expand Up @@ -60,17 +60,17 @@ So it is normal to see basic diagnostics in an unconfigured workspace. For cross

## Navigation and Duplicate Modules

Go to definition, references, hover, completion, and instance-count lens prefer already loaded index information. Best-effort indexing lets those features work in unconfigured workspaces, but it can only make editor-level reading guesses.
Definition jumps, references, hover, completion, and the instance-count lens prefer already loaded index information. Best-effort indexing lets those features work in unconfigured workspaces, but it can only make editor-level guesses.

In project analysis, duplicate module names are handled through the current project view. Vide does not treat directory names as implicit namespaces; if several duplicate module names are visible, the project should resolve that ambiguity through project configuration, library boundaries, or build scripts.

In best-effort indexing, if one instance can match several modules with the same name, Vide makes a nearest-candidate guess for reading features only: same file first, then deepest shared directory, then same scan root. The guess is used only when there is one best candidate; ties stay ambiguous.
In best-effort indexing, if one instance can match several modules with the same name, Vide makes a nearest-candidate guess for code-reading features only: same file first, then deepest shared directory, then same scan root. The guess is used only when there is one best candidate; ties stay ambiguous.

This guess is not a SystemVerilog language rule. If there is one nearest candidate, Vide does not report a diagnostic. If no unique candidate exists, Vide reports an informational `ambiguous-module-instantiation` diagnostic. Configured projects still use stricter semantic rules; when third-party `slang` semantic diagnostics are enabled, Vide prefers slang's diagnostics.

## When Qihe Runs as a Project

Qihe integration reuses Vide's project configuration discovery result. If the working directory has a usable `vide.toml` and the compile plan contains real source files, Vide passes project files, `--top`, `-I`, and `-D` arguments.
Qihe integration reuses Vide's project configuration discovery result. If the working directory has a usable `vide.toml` and the compile plan contains actual source files, Vide passes project files, `--top`, `-I`, and `-D` arguments.

If the current file only comes from best-effort indexing, or if the project configuration does not produce a usable compile plan, Vide falls back to single-file Qihe input. This avoids treating unconfigured scan results as a real project configuration.

Expand Down
16 changes: 3 additions & 13 deletions docs/src/content/docs/en/index.mdx
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
---
title: Vide - Home
description: Vide - modern SystemVerilog development environment
description: Vide - a modern SystemVerilog development environment
template: splash
editUrl: false
lastUpdated: false
hero:
title: |
<strong class="hero-tagline-accent">VIDE</strong> : Modern SystemVerilog Coding IDE
<strong class="hero-tagline-accent">VIDE</strong>: A Modern SystemVerilog IDE
tagline: |
Bringing modern software development environment features into the hardware world.
Bringing modern software IDE capabilities to hardware design.
actions:
- text: Quick Start
link: ./user-guide/
Expand Down Expand Up @@ -39,13 +39,3 @@ import HomepageHeroStyles from '../../../components/HomepageHeroStyles.astro';
<HomepageComparisonSection locale="en" />

<HomepageCta locale="en" />

---

<div class="pascal-footer">
<img
src={`${import.meta.env.BASE_URL.endsWith('/') ? import.meta.env.BASE_URL : `${import.meta.env.BASE_URL}/`}pascal.svg`}
alt="PASCAL Research Group"
/>
<a href="https://pascal-lab.net/" target="_blank" rel="noopener noreferrer">PASCAL Research Group</a>
</div>
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import { completionFiles } from '../../../../../examples/dailyUse';

## What It Is

Completion inserts candidates at the current position. Vide combines syntax position and semantics to offer useful candidates and suppress irrelevant ones: target ports in instance port lists, target parameters in parameter lists, visible symbols in expressions, and directives or macro-related candidates in preprocessor positions.
Completion inserts candidates at the current position. Vide combines syntax context with RTL semantics to suggest useful candidates and suppress irrelevant ones: target ports in instance port lists, target parameters in parameter lists, visible symbols in expressions, and directives or macro-related candidates in preprocessor positions.

Common trigger positions include instance `#(...)` and `(...)`, expressions, member access `.`, event controls `@(...)`, system tasks after `$`, preprocessor positions after `` ` ``, and integer literal base markers after `'`.

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import { slangDiagnosticFiles } from '../../../../../examples/dailyUse';

## What Diagnostics Are

Diagnostics are the <Codicon name="error" label="Error icon" color="#f14c4c" /> errors, <Codicon name="warning" label="Warning icon" color="#facc15" /> warnings, and <Codicon name="info" label="Hint icon" color="#3794ff" /> hints that Vide asks the editor to show. They appear in the VS Code Problems panel, as editor underlines, and near the affected code, helping you find syntax errors, parse errors, and semantic issues found by project analysis.
Diagnostics are the <Codicon name="error" label="Error icon" color="#f14c4c" /> errors, <Codicon name="warning" label="Warning icon" color="#facc15" /> warnings, and <Codicon name="info" label="Hint icon" color="#3794ff" /> hints that Vide reports to the editor. They appear in the VS Code Problems panel, as editor underlines, and near the affected code, helping you find syntax errors, parse errors, and semantic issues found by project analysis.

Vide's regular syntax and semantic diagnostics mainly come from slang, and Vide converts them into editor markers and Problems entries. For deeper static analysis, use [Qihe Integration](../qihe/).

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ Document symbols mainly come from the current file structure, so they work when

### With Complete Configuration

After `vide.toml` is configured, include files and macro branches are parsed from the project configuration, and the outline becomes closer to the structure seen in the real project.
After `vide.toml` is configured, include files and macro branches are parsed from the project configuration, and the outline more closely matches the structure seen in the actual project.

## Instance Count Lens

Expand Down
2 changes: 1 addition & 1 deletion docs/src/content/docs/en/user-guide/features/folding.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import { inlayHintFiles } from '../../../../../examples/dailyUse';

Folding lets the editor collapse code by structure. Vide provides folding ranges for multi-line comments, regions, modules, port lists, declarations, generate/specify constructs, instances, continuous assignments, block statements, and ordinary statements.

During development, folding can skip over parts of the code and keep the editor view cleaner.
During development, folding lets you hide less relevant parts of the code and keep the editor view cleaner.

## Demo

Expand Down
2 changes: 1 addition & 1 deletion docs/src/content/docs/en/user-guide/features/hover.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ Hover is a lightweight explanation shown near the cursor. Place the mouse over a

### Without Complete Configuration

Declarations in the current file and number literals can be shown directly. Cross-file targets only show complete information when Vide has scanned the target file and can determine a unique target.
Modules, ports, and parameters declared in the current file, as well as number literals, can be shown directly. Cross-file targets only show complete information when Vide has scanned the target file and can determine a unique target.

### With Complete Configuration

Expand Down
12 changes: 6 additions & 6 deletions docs/src/content/docs/en/user-guide/features/index.mdx
Original file line number Diff line number Diff line change
@@ -1,25 +1,25 @@
---
title: Features
description: Learn Vide go to definition, references, hover, completion, rename, syntax highlighting, semantic highlighting, annotations, document symbols, folding, refactoring, diagnostics, signature help, selection ranges, formatting, and Qihe integration.
description: Learn about Vide features including go to definition, references, hover, completion, rename, syntax highlighting, semantic highlighting, annotations, document symbols, folding, refactoring, diagnostics, signature help, selection ranges, formatting, and Qihe integration.
---

import { CardGrid, LinkCard } from '@astrojs/starlight/components';

This section introduces all features Vide provides in VS Code. Each feature has its own page.
This section introduces all of the features Vide provides in VS Code. Each feature has its own page.

On each feature page, you will see:

- what problem the feature solves;
- a screenshot or interactive demo;
- how to adjust behavior through `vide.toml` or VS Code Settings. The [Project Configuration](../project-configuration/#what-changes-after-configuration) page summarizes behavior before and after project configuration.

Before reading this section, read [Configure the First Project](../first-project/) first. Some deeper analysis features need a correct project configuration to work well.
Before reading this section, read [Configure the First Project](../first-project/) first. Some deeper analysis features require a well-formed project configuration.

<CardGrid>
<LinkCard
title="Go to Definition"
href="./navigation/"
description="Jump from instances, symbols, and port connections to corresponding declarations or definitions."
description="Jump from instances, symbols, and port connections to their corresponding declarations or definitions."
/>
<LinkCard
title="Find References"
Expand All @@ -44,12 +44,12 @@ Before reading this section, read [Configure the First Project](../first-project
<LinkCard
title="Syntax Highlighting"
href="./syntax-highlighting/"
description="Provide syntax-based highlighting for files."
description="Highlight files based on syntax."
/>
<LinkCard
title="Semantic Highlighting"
href="./semantic-highlighting/"
description="Mark port directions, clock/reset ports, and read/write positions."
description="Mark port directions, clock/reset signals, and read/write positions."
/>
<LinkCard
title="Annotations"
Expand Down
4 changes: 2 additions & 2 deletions docs/src/content/docs/en/user-guide/features/quick-fixes.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import { missingPortFiles } from '../../../../../examples/dailyUse';

## What It Is

Automatic refactoring handles repetitive and error-prone edits such as port connections, parameter assignments, and integer literal base conversion. In VS Code, you trigger these operations from the <Codicon name="lightbulb" label="Lightbulb menu icon" color="#facc15" /> lightbulb menu, also called Code Actions.
Automatic refactoring handles repetitive, error-prone edits such as port connections, parameter assignments, and integer literal base conversion. In VS Code, you trigger these operations from the <Codicon name="lightbulb" label="Lightbulb menu icon" color="#facc15" /> lightbulb menu, also called Code Actions.

## Demo

Expand Down Expand Up @@ -55,6 +55,6 @@ Some refactorings for instances and integer literals are available in the curren

### With Complete Configuration

After `vide.toml` is configured, Vide finds target modules through `sources`, `include_dirs`, `defines`, and `libraries`. Filling ports, filling parameters, and converting connection styles use the real project structure.
After `vide.toml` is configured, Vide finds target modules through `sources`, `include_dirs`, `defines`, and `libraries`. Filling ports, filling parameters, and converting connection styles use the actual project structure.

Diagnostic-driven quick fixes also require the matching diagnostic to be present in the current file.
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import { usageFiles } from '../../../../../examples/dailyUse';

## What It Is

Find References answers “where is this symbol used?” In SystemVerilog projects, it is useful for tracing module instances, port connections, parameters, and signals, and for checking whether a connection relationship is complete.
Find References answers “where is this symbol used?” In RTL projects, it is useful for tracing module instances, port connections, parameters, and signals, and for checking whether connections are complete.

Run VS Code's `Find All References` or `Peek References` on a symbol. Vide searches for its usage locations, deduplicates them, and shows them in the references view.

Expand Down
4 changes: 2 additions & 2 deletions docs/src/content/docs/en/user-guide/features/rename.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import { codeActionRenameFiles } from '../../../../../examples/dailyUse';

## What It Is

Rename changes the declaration and references of the same SystemVerilog symbol together. It is safer than manual search-and-replace because Vide first decides which symbol is under the cursor, then generates a workspace edit, avoiding unrelated symbols with the same name.
Rename updates the declaration and references of the same SystemVerilog symbol together. It is safer than manual search-and-replace because Vide first resolves the symbol under the cursor, then generates a workspace edit that avoids unrelated symbols with the same name.

## Demo

Expand Down Expand Up @@ -41,7 +41,7 @@ Without `vide.toml`, Vide can use workspace scan results for reference search, b

### With Complete Configuration

Add the source files that should participate in rename to `sources` or related `libraries`, then run `Vide: Reload Project Configuration`. Vide reloads the project scope, and rename updates declarations and references in those editable files.
With complete configuration, rename can work accurately.

## Boundaries

Expand Down
Loading
Loading