UHDM
Universal Hardware Data Model
Interface in between parsers (Surelog…) and tools
For every SystemVerilog Object in the IEEE 1800-2017 Object Model, this tool automatically creates:
How?
UHDM
module.yaml
….
gen_model.tcl
module.h
moduleFactory
vpi_user.cpp
vpi_iterate(vpiModule,NULL)
UHDM.capnp
CAPNP
UHDM serial.cpp
….
GCC
libuhdm.a
UHDM
Verible
SystemVerilog Design
libuhdm.a
...
Surelog
On disk- �Serialized Design expressed with�the full SystemVerilog Object Model
Yosys
...
libuhdm.a
- Simulation results
- Gate level netlist
...
Parsers
Tools
Verilator
First parser supporting UHDM database: Surelog
UHDM
SystemVerilog Parser + Preprocessor
github.com/alainmarcel/Surelog
Written in C++
ANTLR with multithreaded + incremental
Semantic checks, Datatype binding, Design & UVM Elaboration, Python API, UHDM on-disk compiled output
Future?
U
H
D
M
Verible
SystemVerilog Design
Surelog
Yosys
Parsers
Frontend
“Language Support”
Backend
Synthesizable
VHDL
Chisel
Backend
Simulatable
Verilator
Icarus
Synthesizable
Bridge
New distributed
Simulator 1
UVM
Feature
Extraction
Common Functionality
Counters / Muxes / etc
New distributed
Simulator 2
New distributed
Simulator 3