Associate MATLAB component function with instantiated HDL design
matlabcp <instance> [<time-specs>] [-socket <tcp-spec>] [-rising <port>[,<port>...]] [-falling <port> [,<port>,...]] [-sensitivity <port>[,<port>,...]] [-mfunc <name>] [-use_instance_obj] [-argument]
The matlabcp
command has the following
characteristics:
Starts the HDL simulator client component of the HDL Verifier™ 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.
This command is issued in the HDL simulator.
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 Create a MATLAB Component Function.
Notes
The communication mode that you specify for matlabcp
must
match the communication mode you specified for hdldaemon
when
you established the server connection.
For socket communications, specify the port number you selected
for hdldaemon
when you issue a link request with
the matlabcp
command in the HDL simulator.
<instance>
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 function (via matlabcp
or matlabtb
).
If you do, the new association overwrites the existing one.
<time-specs>
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. Even if you do not specify a time, the HDL simulator calls the MATLAB function once at the start of the simulation. Separate multiple time values by a space. For example: matlabtb vlogtestbench_top 10 ns, 10 ms, 10 sec The MATLAB function executes when time equals 0 and then 10 nanoseconds, 10 milliseconds, and 10 seconds from time zero. Note For time-based parameters, you can specify any
standard time units ( |
-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
Note The |
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)
-socket <tcp_spec>
Specifies that HDL Verifier use TCP/IP sockets to communicate
between the HDL simulator and MATLAB. Shared memory is the default
mode of communication and takes effect if you do not specify -socket
<tcp_spec>
on the command line. The communication
mode that you specify with the matlabcp
command
must match the communication mode that you issued with the hdldaemon
command.
-rising <signal>[, <signal>...]
Indicates that the application calls the specified MATLAB function
on the rising edge (transition from '0'
to '1'
)
of any of the specified signals. Specify -rising
with
the path names of one or more signals defined as a logic type (STD_LOGIC
, BIT
, X01
,
and so on).
For determining signal transition in:
VHDL®: Rising edge is {0 or L} to {1 or H}.
Verilog®: Rising edge is the transition from 0 to x, z, or 1, and from x or z to 1.
Note
When specifying signals with the -rising
, -falling
,
and -sensitivity
options, specify them in full
path name format. If you do not specify a full path name, the command
applies the HDL simulator rules to resolve signal specifications.
-falling <signal>[, <signal>...]
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 (STD_LOGIC
, BIT
, X01
,
and so on).
For determining signal transition in:
VHDL: Falling edge is {1 or H} to {0 or L}.
Verilog: Falling edge is the transition from 1 to x, z, or 0, and from x or z to 0.
Note
When specifying signals with the -rising
, -falling
,
and -sensitivity
options, specify them in full
path name format. If you do not specify a full path name, the command
applies the HDL simulator rules to resolve signal specifications.
-sensitivity <signal>[, <signal>...]
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.
Note
When specifying signals with the -rising
, -falling
,
and -sensitivity
options, specify them in full
path name format. If you do not specify a full path name, the command
applies the HDL simulator rules to resolve signal specifications.
-mfunc <name>
The name of the MATLAB function that is associated with
the HDL module instance you specify for instance
.
By default, the HDL Verifier software invokes a MATLAB function
that has the same name as the specified HDL instance. Thus, if the
names are the same, you can omit the -mfunc
option.
If the names are not the same, use this argument when you call matlabcp
.
If you omit this argument and matlabcp
does not
find a MATLAB function with the same name, the command generates
an error message.
-use_instance_obj
Instructs the function specified with the argument -mfunc
to
use an HDL instance object passed by HDL Verifier to the
function. This argument has the fields shown in the following table.
See Writing Functions Using the HDL Instance Object for
examples.
Field | Read/Write Access | Description |
---|---|---|
tnext | Write only | Used to schedule a callback during the set time value.
This field is equivalent to old hdl_instance_obj.tnext = hdl_instance_obj.tnow + 5e-9 will
schedule a callback at time equals 5 nanoseconds from |
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 HDL Verifier software
sets this field to >> 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
matlabtb osc_top -mfunc oscfilter -use_instance_obj -argument foo -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.
hdl_instance_obj.portinfo.field1.field2.field3
Note When you use
|
tscale | Read only |
Stores the resolution limit (tick) in seconds of
the HDL simulator. >> hdl_instance_obj.tscale ans= 1.0000e-009 Note When you use
|
tnow | Read only |
Stores the current time. 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
>> 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 HDL Verifier software sets this field to
>> hdl_instance_obj.linkmode ans= component |
-argument
Used to pass user-defined arguments from the matlabcp
invocation
on the HDL side to the MATLAB function callbacks. Supported with -use_instance_obj
only.
See the field listing under the -use_instance_obj
property.
The following examples demonstrate some ways you might use the matlabcp
function.
matlabcp
with the -mfunc
option to Associate an HDL Component with a MATLAB Function of a Different
NameThis 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.
hdlsim>matlabcp vlogtestbench_top.u_matlab_component -mfunc vlogmatlabc -socket 4449
matlabcp
with Explicit Times and the -cancel
OptionThis example includes explicit times with the -cancel
option.
hdlsim>matlabcp vlogtestbench_top 1e6 fs 3 2e3 ps -repeat 3 ns -cancel 7ns
matlabcp
with Rising and Falling EdgesThis 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