Schedule MATLAB test bench session for instantiated HDL module
matlabtb <instance> [<time-specs>] [-socket <tcp-spec>] [-rising <port>[,<port>...]] [-falling <port> [,<port>,...]] [-sensitivity <port>[,<port>,...]] [-mfunc <name>] [-use_instance_obj] [-argument]
The matlabtb
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
matlabtb
command that specified the same instance.
For example, if you issue the command matlabtb
for
instance foo
, all previously scheduled events initiated
by matlabtb
on foo
are
canceled.
This command is issued in the HDL simulator.
MATLAB test bench functions mimic stimuli passed to entities
in the HDL model. You force stimulus from MATLAB or HDL scheduled
with matlabtb
.
Notes
The communication mode that you specify for matlabtb
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 matlabtb
command in the HDL simulator.
<instance>
Specifies the instance of an HDL module that the HDL Verifier software
associates with a MATLAB test bench function. By default, matlabtb
associates
the instance with a MATLAB function that has the same name as
the instance. For example, if the instance is myfirfilter
, matlabtb
associates
the instance with the MATLAB function myfirfilter
(note
that hierarchy names are ignored; for example, if your instance name
is top.myfirfilter
, matlabtb
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 For example: matlabtb vlogtestbench_top 5 ns -repeat 10 ns The MATLAB function executes at time equals 0 ns, 5 ns, 15 ns, 25 ns, and so on. |
-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 matlabtb
instance
and before any additional command arguments; otherwise the time specifications
are ignored.
All time specifications for the matlabtb
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 TCP/IP socket communication for the link between the
HDL simulator and MATLAB. When you provide TCP/IP information
for matlabtb
, you can choose a TCP/IP port number
or TCP/IP port alias or service name for the <tcp_spec>
parameter.
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
).
For more information on choosing TCP/IP socket ports, see 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 matlabtb
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 Communications for HDL Cosimulation.
For more information on establishing the MATLAB end of the communication
link, see Start the HDL Simulator from MATLAB.
-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 of the
HDL design.
If you specify the option with no signals, the interface is sensitive to value changes for all signals.
Note
Use of this option for INOUT
ports can result
in double calls.
For example:
-sensitivity /randnumgen/dout
The MATLAB function executes if the value of dout
changes.
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 associated MATLAB function. If you omit
this argument, matlabtb
associates the HDL module
instance to a MATLAB function that has the same name as the HDL
instance. If you omit this argument and matlabtb
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.
SeeWriting 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 matlabtb
instantiation
on the HDL side to the MATLAB function callbacks. Supported with -use_instance_obj
only.
See the field listing for argument under the -use_instance_obj
property.
The following examples demonstrate some ways you might use the matlabtb
function.
matlabtb
with the -socket
Argument and Time ParametersThe following command starts the HDL simulator client component
of HDL Verifier, associates an instance of the entity, myfirfilter
,
with the MATLAB function myfirfilter
, and
begins a local TCP/IP socket-based test bench session using TCP/IP
port 4449. Based on the specified test bench stimuli, myfirfilter.m
executes
5 nanoseconds from the current time, and then repeatedly every 10
nanoseconds:
hdlsim> matlabtb myfirfilter 5 ns -repeat 10 ns -socket 4449
matlabtb
The following command starts the HDL simulator client component
of HDL Verifier, and begins a remote TCP/IP socket-based
session using remote MATLAB host computer named computer123
and
TCP/IP port 4449. Based on the specified test bench stimuli, myfirfilter.m
executes
10 nanoseconds from the current time, each time the signal /top/fclk
experiences
a rising edge, and each time the signal /top/din
changes
state.
hdlsim> matlabtb /top/myfirfilter 10 ns -rising /top/fclk -sensitivity /top/din -socket 4449@computer123
matlabtb
The following command starts the HDL simulator client component
of the HDL Verifier software. The '-mfunc'
option
specifies the MATLAB function to connect to and the '-socket'
option
specifies the port number for socket connection mode. '-sensitivity'
indicates
that the test bench session is sensitized to the signal sine_out
.
hdlsim> matlabtb osc_top -sensitivity /osc_top/sine_out -socket 4448 -mfunc hosctb