https://github.com/wyvernsemi/pcievhost
PCIe (1.0a to 2.0) Virtual Root Complex model for Verilog, with Endpoint capabilities
https://github.com/wyvernsemi/pcievhost
bfm c cosim modelling pcie pli verification verilog virtual
Last synced: 16 days ago
JSON representation
PCIe (1.0a to 2.0) Virtual Root Complex model for Verilog, with Endpoint capabilities
- Host: GitHub
- URL: https://github.com/wyvernsemi/pcievhost
- Owner: wyvernSemi
- License: gpl-3.0
- Created: 2016-10-07T14:50:15.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2025-03-18T09:50:24.000Z (about 1 month ago)
- Last Synced: 2025-03-30T16:13:36.636Z (23 days ago)
- Topics: bfm, c, cosim, modelling, pcie, pli, verification, verilog, virtual
- Language: C
- Homepage: http://www.anita-simulators.org.uk/wyvernsemi
- Size: 3.97 MB
- Stars: 93
- Watchers: 12
- Forks: 21
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# pcievhost
PCIe (1.0a to 2.0) Virtual host model for Verilog and SystemVerilog logic simulation environments.The _pcievhost_ model generates PCIe Physical, Data Link and Transaction Layer traffic for up to 16 lanes, controlled from a user C program, via a comprehensive API. It has configurable internal memory and configuration space models, and will auto-generate completions (configurably), with flow control, ACKs, and NAKS etc. The protocol itself is modelled in C and is integrated with a logic simulation using the [_VProc_](https://github.com/wyvernSemi/vproc) virtual processor. The diagram below shows the structure of the model which ultimately generates a stream of 8b10b encoded symbols, and processes the returned symbols.
![]()
_pcievhost_ is bundled with verilog pcie link traffic display modules and an example test harness. The model has been tested with ModelSim/Questa, Vivado xsim and Verilator at the present time, though easily adpated for other simulators. The _pcievhost_ model can also be configured to act as an _**endpoint**_ via a parameter and with simple running user code—the model itself automatically generating responses to transactions. The diagram below shows the example test bench structure.
![]()
More information can be found in the documentation
doc/pcieVHost.pdf