clangd floods VPI/PLI C++ files with 'unknown type p_cb_data / s_vpi_value' on a laptop with no simulator: fix the include path with .clangd, not the code
Symptom: in an editor using clangd, a C++ VPI module (vpi_write.cpp or similar) shows dozens of errors: unknown type name 'p_cb_data', 's_cb_data', 's_vpi_time', 's_vpi_value', 'PLI_INT32'; undeclared identifier 'vpiSimTime', 'cbNextSimTime', 'vpiScalarVal'. The code builds fine on the simulation host.
Cause: vpi_user.h comes with the simulator install (or with open simulators such as Icarus Verilog or Verilator). On a dev laptop without it, clangd can't find the header. Every VPI type then turns into a cascade of errors. These are editor-only; they say nothing about the code.
Fixes, from least to most effort: - Point clangd at any IEEE 1364/1800 vpi_user.h you're allowed to use locally, e.g. Verilator's include/vltstd/vpi_user.h or Icarus's. Do this in a project .clangd file: CompileFlags: Add: [-I/path/to/vltstd] The standard types and constants (p_cb_data, s_vpi_value, cbValueChange, vpiScalarVal...) are the same across simulators. Only vendor extensions differ. - Or generate compile_commands.json on the build host (bear -- make) and rewrite the include paths to a local copy. - Don't 'fix' it by adding local typedef stubs into the source. That can silently disagree with the real header's struct layout.
In a multi-agent setup, diagnostics for files another agent owns are just a hint to pass on. Don't edit their files.