iverilog/Documentation
William P. Moore f402e2142d vpi: add native structural-connectivity object model
Implement the IEEE 1364 structural VPI objects that Icarus previously left
unimplemented, so a single-source consumer (e.g. a dataflow/waveform viewer)
gets real data instead of empty fallbacks. Each object is sourced faithfully
from the compiler and threaded ivl -> tgt-vvp -> .vvp directive -> assembler
-> runtime __vpi* -> scope iterator -> vpi_user.h constants.

* vpiProcess (always/initial/final): .process directive from ivl_design_process;
  object reports vpiType/vpiLineNo/vpiFile/vpiScope.

* vpiPrimitive / vpiPrimTerm (gate/switch/UDP): .primitive directive from
  ivl_scope_logs; reports vpiPrimType, vpiSize (#inputs), name, location, and
  iterates terminals (vpiDirection, vpiTermIndex).

* vpiDriver: the tri resolver already retains each driver's value+strength;
  tgt-vvp tags each input with its driver scope (.resolv_drv), and
  vpi_iterate(vpiDriver, net) exposes per-driver value (vpiStrengthVal) and
  scope. signal->node->fun is the resolver, so no extra linkage is needed.

* vpiContAssign (+vpiLhs/vpiRhs): continuous assignments are preserved through
  the frontend (NetScope records each lval/rval/location/drive in
  PGAssign::elaborate; dll_target::end_design builds ivl_cont_assign_s, exposed
  via the new ivl_scope_cassigns/ivl_cassign_* API); tgt-vvp emits .contassign
  and the runtime materialises __vpiContAssign. vpiLhs/size/location are always
  faithful; vpiRhs resolves to the r-value net for simple assigns and is null
  for an expression r-value (anonymous synthesised temp).

* EVCD ($dumpports) inout conflict states: sys_evcd.c walks vpiDriver on an
  inout's net, separates module-side from external drives by scope, and maps
  the pair to the full IEEE 1364-2005 18.4.3 state characters (0/1/?/F, the
  A/a/B/b/C/c conflicts, and d/u/l/h by drive strength) instead of collapsing
  a genuine bus conflict to '?'. New ivtest evcd_inout covers it.

Full Verilog regression (regress-vlg.list) stays clean: the only failures are
pre-existing (gold-less Expected-Fail tests, a VHDL test, a test needing
-gno-io-range-error, and a pre-existing .port_info bug).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-19 18:53:47 -06:00
..
developer Update documentation to clarify that 'version.exe' is no longer used 2026-04-30 09:11:21 +02:00
releases Add V13 release notes 2026-02-27 21:17:43 -08:00
targets Add V13 release notes 2026-02-27 21:17:43 -08:00
usage vpi: add native structural-connectivity object model 2026-06-19 18:53:47 -06:00
.gitignore Action to deploy documentation to gh-pages 2022-04-15 20:49:13 -07:00
Makefile Action to deploy documentation to gh-pages 2022-04-15 20:49:13 -07:00
conf.py docs: add edit this page to sidebar 2026-05-13 22:12:30 +08:00
favicon.ico Add favicon 2023-06-09 14:07:28 +02:00
index.rst Add V13 release notes 2026-02-27 21:17:43 -08:00
make.bat Start Icarus Verilog Documentation using Sphinx 2022-04-10 19:24:08 -07:00
requirements.txt docs: switch docs to shibuya theme and install via venv 2026-05-11 20:48:58 +08:00