The SystemVerilog Direct Programming Interface (DPI), at a high level, provides remote procedure calls in SystemVerilog. The entirety of the DPI’s definition can be read in the SystemVerilog IEEE standard (requires an account to access). Since SystemVerilog is quite a limiting language compared to general-purpose programming languages, being able to do remote procedure calls is an insanely powerful feature. However, it is commonly misunderstood that the DPI only allows users to call C functions.
While software development tools are better than ever, hardware development tools are still stuck in the 90’s. How can this be fixed? I am a pre-silicon validation engineer. What that means is that I write software to test, analyze, and stress hardware designs to ensure that they adhere to their architectural specifications. Aside from a Linux environment, The common tools that I use for my job are: SystemVerilog: An IEEE-standard language designed for defining hardware at the Register Transfer Level (RTL), as well as the test benches to test that hardware.