The HDL Verifier™ software provides a means for visualizing HDL components within the MATLAB® environment. You do so by coding an HDL model and a MATLAB function that can share data with the HDL model. This chapter discusses the programming, interfacing, and scheduling conventions for MATLAB component functions that communicate with the HDL simulator.
MATLAB component functions simulate the behavior of components in the HDL model. A stub module (providing port definitions only) in the HDL model passes its input signals to the MATLAB component function. The MATLAB component processes this data and returns the results to the outputs of the stub module. A MATLAB component typically provides some functionality (such as a filter) that is not yet implemented in the HDL code.
The following figure shows how an HDL simulator wraps around a MATLAB component function and how MATLAB communicates with the HDL simulator during a component simulation session.
When linked with MATLAB, the HDL simulator functions as the client, with MATLAB as the server. The following figure shows a multiple-client scenario connecting to the server at TCP/IP socket port 4449.
The MATLAB server can service multiple simultaneous HDL
simulator sessions and HDL modules. However, you should follow recommended
guidelines to help the server track the I/O associated with each module
and session. The MATLAB server, which you start with the supplied MATLAB function
hdldaemon, waits for connection requests
from instances of the HDL simulator running on the same or different
computers. When the server receives a request, it executes the specified MATLAB function
you have coded to perform tasks on behalf of a module in your HDL
design. Parameters that you specify when you start the server indicate
whether the server establishes shared memory or TCP/IP socket communication
Refer to Machine Configuration Requirements for valid machine configurations.
Note: The programming, interfacing, and scheduling conventions for test bench functions and component functions are virtually identical. For the most part, the same procedures apply to both types of functions.