| EDA Simulator Link™ DS | ![]() |
matlabcp <instance> [<time-specs>] [-socket <tcp-spec>] [-rising <port>[,<port>...]] [-falling <port> [,<port>,...]] [-sensitivity <port>[,<port>,...]] [-mfunc <name>] [-use_instance_obj] [-argument]
Specifies an instance of an HDL design that is associated with a MATLAB function. By default, matlabcp associates the instance to a MATLAB function that has the same name as the instance. For example, if the instance is myfirfilter, matlabcp associates the instance with the MATLAB function myfirfilter (note that hierarchy names are ignored; for example, if your instance name is top.myfirfilter, matlabcp would associate only myfirfilter with the MATLAB function). Alternatively, you can specify a different MATLAB function with -mfunc.
Note Do not specify an instance of an HDL module that has already been associated with a MATLAB link function (via matlabcp or matlabtb). If you do, the new association overwrites the existing one. |
Specifies a combination of time specifications consisting of any or all of the following:
| <timen>,... | Specifies one or more discrete time values at which the HDL simulator calls the specified MATLAB function. Each time value is relative to the current simulation time. The HDL simulator always calls the MATLAB function once at the start of the simulation, even if you do not specify a time. Separate multiple time values by a space, for example: matlabcp vlogtestbench_top 1e6 fs 3 2e3 ps -repeat 3 ns -cancel 7ns |
| -repeat <time> | Specifies that the HDL simulator calls the MATLAB function repeatedly based on the specified <timen>,... pattern. The time values are relative to the value of tnow at the time the HDL simulator first calls the MATLAB function. |
| -cancel <time> | Specifies a time at which the specified MATLAB function stops executing. The time value is relative to the value of tnow at the time the HDL simulator first calls the MATLAB function. If you do not specify a cancel time, the application calls the MATLAB function until you finish the simulation, quit the session, or issue a nomatlabtb call. |
Note Place time specifications after the matlabcp instance and before any additional command arguments; otherwise the time specifications are ignored. |
All time specifications for the matlabcp functions appear as a number and, optionally, a time unit:
fs (femtoseconds)
ps (picoseconds)
ns (nanoseconds)
us (microseconds)
ms (milliseconds)
sec (seconds)
no units (tick)
Specifies TCP/IP socket communication for the link between the HDL simulator and MATLAB. For TCP/IP socket communication on a single computer, the <tcp_spec> argument can consist of just a TCP/IP port number or service name (alias). If you are setting up communication between computers, you must also specify the name or Internet address of the remote host that is running the MATLAB server (hdldaemon). See Specifying TCP/IP Values for some valid tcp_spec examples.
For more information on choosing TCP/IP socket ports, see Choosing TCP/IP Socket Ports.
If you run the HDL simulator and MATLAB on the same computer, you have the option of using shared memory for communication. Shared memory is the default mode of communication and takes effect if you do not specify -socket <tcp_spec> on the command line.
Note The communication mode that you specify with the matlabcp command must match what you specify for the communication mode when you issue the hdldaemon command in MATLAB. |
For more information on modes of communication, see Communicating with MATLAB or Simulink and the HDL Simulator. For more information on establishing the MATLAB end of the communication link, see Starting the MATLAB Server.
Indicates that the application calls the specified MATLAB function on the rising edge (transition from '0' to '1') of any of the specified signals. For determining signal transition in:
Verilog: Z and X are read as 0
VHDL: Z and X will not create a rate transition
Rate transitions are only from 0 -> 1 and 1-> 0. Specify -rising with the path names of one or more signals defined as a logic type.
Indicates that the application calls the specified MATLAB function whenever any of the specified signals experiences a falling edge—changes from '1' to '0'. Specify -falling with the path names of one or more signals defined as a logic type.
Indicates that the application calls the specified MATLAB function whenever any of the specified signals changes state. Specify -sensitivity with the path names of one or more signals. Signals of any type can appear in the sensitivity list and can be positioned at any level in the HDL model hierarchy.
The name of the MATLAB function that is associated with the HDL module instance you specify for instance. If you omit this argument, matlabcp associates the HDL module instance to a MATLAB function that has the same name as the HDL instance. For example, if the HDL module instance is myfirfilter, matlabcp associates the HDL module instance with the MATLAB function myfirfilter. If you omit this argument and matlabcp does not find a MATLAB function with the same name, the command generates an error message.
Instructs the function specified with the argument -mfunc to use an HDL instance object passed by EDA Simulator Link DS to the m-function. You include the -use_instance_obj argument with matlabcp in the following format:
matlabcp modelname -mfunc funcname -use_instance_obj
When you call matlabcp with the use_instance_obj argument, the m-function has the following signature:
function MyFunctionName(hdl_instance_obj)
The HDL instance object (hdl_instance_obj) has the fields shown in the following table.
| Field | Read/Write Access | Description |
|---|---|---|
| tnext | Write only | Used to schedule a callback during the set time value. This field is equivalent to old tnext. For example: hdl_instance_obj.tnext = hdl_instance_obj.tnow + 5e-9 will schedule a callback at time equals 5 nanoseconds from tnow. |
| userdata | Read/Write | Stores state variables of the current matlabcp instance. You can retrieve the variables the next time the callback of this instance is scheduled. |
| simstatus | Read only | Stores the status of the HDL simulator. The EDA Simulator Link DS software sets this field to 'Init' during the first callback for this particular instance and to 'Running' thereafter. simstatus is a read-only property. >> hdl_instance_obj.simstatus
ans=
Init |
| instance | Read only | Stores the full path of the Verilog/VHDL instance associated with the callback. instance is a read-only property. The value of this field equals that of the module instance specified with the function call. For example: In the HDL simulator: hdlsim> matlabcp osc_top -mfunc oscfilter use_instance_obj In MATLAB: >> hdl_instance_obj.instance ans= osc_top |
| argument | Read only | Stores the argument set by the -argument option of matlabcp.
For example: matlabtb osc_top -mfunc oscfilter -use_instance_obj -argument fooThe link software supports the -argument option only when it is used with -use_instance_obj, otherwise the argument is ignored. argument is a read-only property. >> hdl_instance_obj.argument
ans=
foo
|
| portinfo | Read only | Stores information about the VHDL and Verilog ports associated
with this instance. portinfo is a read-only property, which has a
field structure that describes the ports defined for the associated
HDL module. For each port, the portinfo structure passes information
such as the port's type, direction, and size. For more information
on port data, see Gaining Access to and Applying Port Information. hdl_instance_obj.portinfo.field1.field2.field3
|
| tscale | Read only | Stores the resolution limit (tick) in seconds of the HDL simulator.
tscale is a read-only property.>> hdl_instance_obj.tscale ans= 1.0000e-009 |
| tnow | Read only | Stores the current time. tnow is a read-only property.hdl_instance_obj.tnext = hld_instance_obj.tnow + fastestrate; |
| portvalues | Read/Write | Stores the current values of and sets new values for the output
and input ports for a matlabcp instance. For
example:>> hdl_instance_obj.portvalues ans = Read Only Input ports: clk_enable: [] clk: [] reset: [] Read/Write Output ports: sine_out: [22x1 char] |
| linkmode | Read only | Stores the status of the callback. The EDA Simulator Link DS software
sets this field to 'testbench' if the callback is associated with matlabtb and
'component' if the callback is associated with matlabcp.
linkmode is a read-only property. >> hdl_instance_obj.linkmode ans= component |
Used to pass user-defined arguments from the matlabcp invocation on the HDL side to the M-function callbacks. Supported with -use_instance_obj only. See the field listing under the -use_instance_obj property.
The matlabcp command has the following characteristics:
Starts the HDL simulator client component of the EDA Simulator Link DS software.
Associates a specified instance of an HDL design created in the HDL simulator with a MATLAB function.
Creates a process that schedules invocations of the specified MATLAB function.
Cancels any pending events scheduled by a previous matlabcp command that specified the same instance. For example, if you issue the command matlabcp for instance foo, all previously scheduled events initiated by matlabcp on foo are canceled.
MATLAB component functions simulate the behavior of modules 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. See Coding an EDA Simulator Link DS MATLAB Application.
Note For the HDL simulator to establish a communication link with MATLAB, the MATLAB server, hdldaemon, must be running with the same communication mode and, if appropriate, the same TCP/IP socket port as you specify with the matlabcp command. |
The following examples demonstrate some ways you might use the matlabcp function.
This example explicitly associates the Verilog module vlogtestbench_top.u_matlab_component with the MATLAB function vlogmatlabc using the -mfunc option. The '-socket' option specifies using socket communication on port 4449.
matlabcp vlogtestbench_top.u_matlab_component -mfunc vlogmatlabc -socket 4449
This example implicitly associates the Verilog module, vtestbench_top, with the MATLAB function vlogtestbench_top, and includes explicit times with the -cancel option.
matlabcp vlogtestbench_top 1e6 fs 3 2e3 ps -repeat 3 ns -cancel 7ns
This example implicitly associates the Verilog module, vlogtestbench_top, with the MATLAB function vlogtestbench_top, and also uses rising and falling edges.
hldsim> matlabcp vlogtestbench_top 1 2 3 4 5 6 7 -rising outclk3 -falling u_matlab_component/inoutclk
In this example, the HDL simulator makes repeated calls to matlabcp to bind multiple HDL instances to the same M-function. Each call contains -argument as a constructor parameter to differentiate behavior.
hdlsim> matlabcp u1_filter1x -mfunc osc_filter -use_instance_obj -argument "oversample=1" hdlsim> matlabcp u1_filter8x -mfunc osc_filter -use_instance_obj -argument "oversample=8" hdlsim> matlabcp u2_filter8x -mfunc osc_filter -use_instance_obj -argument "oversample=8"
The M-function callback, osc_filter.m, sets up user instance-based state using obj.userdata, queries port and simulation context using other obj fields, and uses the passed in obj.argument to differentiate behavior.
function osc_filter(obj)
if (strcmp(obj.simstatus,'Init'))
ud = struct('Nbits', 22, 'Norder', 31, 'clockperiod', 80e-9, 'phase', 1));
eval(obj.argument);
if (~exist('oversample','var'))
error('HdlLinkDemo:UseInstanceObj:BadCtorArg', ...
'Bad constructor arg to osc_filter callback. Expecting ''oversample=value''.');
end
ud.oversample = oversample;
ud.oversampleperiod = ud.clockperiod/ud.oversample;
ud.InDelayLine = zeros(1,ud.Norder+1);
centerfreq = 70/256;
passband = [centerfreq-0.01, centerfreq+0.01];
b = fir1((ud.Norder+1)*ud.oversample-1, passband./ud.oversample);
ud.Hresp = ud.oversample .* b;
obj.userdata = ud;
end
...
![]() | HDL Simulator Command Extensions Reference | matlabtb | ![]() |
| © 1984-2008- The MathWorks, Inc. - Site Help - Patents - Trademarks - Privacy Policy - Preventing Piracy - RSS |