Main Content

SystemVerilog DPI test bench

Enable or disable SystemVerilog DPI test bench generation

Model Configuration Pane: Test Bench


Enable or disable generation of SystemVerilog DPI test bench. Select your HDL simulator at Simulation tool. For SystemVerilog DPI test bench you can select Mentor Graphics® ModelSim®, Cadence Incisive®, Synopsys® VCS®, or Xilinx® Vivado®. Custom script settings are not supported with this test bench.

When you set this property, the code generator generates a direct programming interface (DPI) component for your entire Simulink® model, including your DUT and data sources. Your entire model must support C code generation with Simulink Coder™. The code generator generates a SystemVerilog test bench that compares the output of the DPI component with the output of the HDL implementation of your DUT. The coder also builds shared libraries and generates a simulation script for the simulator you select.

Consider using this option if the default HDL test bench takes a long time to generate or simulate. Generation of a DPI test bench is sometimes faster than the default version because it does not run a full Simulink simulation to create the test bench data. Simulation of a DPI test bench with a large data set is faster than the default version because it does not store the input or expected data in a separate file.

To use this capability, you must have HDL Verifier™ and Simulink Coder. To run the SystemVerilog test bench with generated VHDL code, you must have a mixed-language simulation license for your HDL simulator.


Make sure that the system selected is the DUT. This option is disabled if you select the entire model.


Off (default) | On

Disable generation of SystemVerilog DPI test bench


Enable generation of SystemVerilog DPI test bench


To set this property, use hdlset_param or makehdltb. To view the property value, use hdlget_param.

For example, you can enable the GenerateCoSimModel property when you generate a testbench for the symmetric_fir subsystem inside the sfir_fixed model using either of these methods.

  • Pass the property as an argument to the makehdltb function.

    makehdltb('sfir_fixed/symmetric_fir', ... 
  • When you use hdlset_param, you can set the parameter on the model and then generate HDL code using makehdltb.


Recommended Settings

No recommendations.

Programmatic Use

Parameter: GenerateSVDPITestBench
Type: character vector
Value: 'ModelSim' | 'Incisive'|'Custom'|'VCS'|'Vivado Simulator'
Default: 'ModelSim'


  • Your DUT subsystem must meet the following conditions:

    • Input and output data types of the DUT cannot be larger than 64 bits.

    • Input and output ports of the DUT cannot use enumerated data types.

    • Input and output ports cannot be single-precision or double-precision data types.

    • The DUT cannot have multiple clocks. You must set the Clock inputs code generation option to Single.

    • Use trigger signal as clock must not be selected.

    • If the DUT uses vector ports, you must use Scalarize vector ports to flatten the interface.

  • SystemVerilog DPI test bench is not supported when the target language is SystemVerilog.

Version History

Introduced in R2017a