Used by this adapter to send transactions to passive OVM consumers.
virtual task auto_blocking_master()
Used by this adapter to send transactions to passive OVM consumers.
virtual task auto_put()
When set, this bit enables calling an OVM stop_request after the VMM env’s wait_for_end task returns, thus ending OVM’s run phase coincident with VMM’s wait_for_end.
bit auto_stop_request = 0
Used by this adapter to send transactions to passive OVM consumers.
virtual task auto_transport()
The avt_analysis_channel is used to connect any OVM component with an analysis port or export to any VMM component via a vmm_channel.
class avt_analysis_channel #( type OVM = int, VMM = int, OVM2VMM = avt_converter #(OVM,VMM), VMM2OVM = avt_converter #(VMM,OVM) ) extends ovm_component
The avt_analysis2notify adapter receives OVM data from its analysis_export, converts it to VMM, then indicates the configured event notification, passing the converted data as vmm_data-based status.
class avt_analysis2notify #( type OVM = int, VMM = int, OVM2VMM = int ) extends ovm_component
Use this class to connect a VMM producer to an OVM consumer.
class avt_channel2tlm #( type VMM_REQ = int, OVM_REQ = int, VMM2OVM_REQ = int, OVM_RSP = OVM_REQ, VMM_RSP = VMM_REQ, OVM2VMM_RSP = avt_converter #(OVM_RSP,VMM_RSP), OVM_MATCH_REQ_RSP = avt_match_ovm_id ) extends ovm_component
This converter is a non-functional placeholder used as a default parameter value for any adapters’ unused converters.
class avt_converter #( type IN = int, OUT = int )
The avt_notify2analysis adapter receives VMM data supplied by a vmm_notify event notification, converts it to OVM, then broadcasts it to all components connected to its analysis_port
class avt_notify2analysis #( type VMM = int, OVM = int, VMM2OVM = int ) extends ovm_component
Use this class to wrap (contain) an existing VMM env whose constructor does not have a name argument.
class avt_ovm_vmm_env #( type ENV = vmm_env ) extends avt_ovm_vmm_env_base
The avt_ovm_vmm_env_base class is used to “wrap” an existing vmm_env subtype so that it may be reused as an ordinary OVM component in an OVM-on-top environment.
class avt_ovm_vmm_env_base extends ovm_component
Use this class to wrap (contain) an existing VMM env whose constructor must have a name argument.
class avt_ovm_vmm_env_named #( type ENV = vmm_env ) extends avt_ovm_vmm_env_base
Use this class to connect an OVM sequencer to a VMM driver via vmm_channel.
class avt_tlm2channel #( type OVM_REQ = int, VMM_REQ = int, OVM2VMM_REQ = int, VMM_RSP = VMM_REQ, OVM_RSP = OVM_REQ, VMM2OVM_RSP = avt_converter #(VMM_RSP,OVM_RSP) ) extends ovm_component
This class is used to automatically integrate OVM phasing with VMM phasing in a VMM-on-top environment.
class avt_vmm_ovm_env extends `AVT_VMM_OVM_ENV_BASE
Grabs any config settings for the number of transactions to generate and the particular extension of the transaction type to generate.
virtual function void build()
Called as part of a predefined test flow, this function will retrieve the configuration setting for the rsp_is_req that this component’s req_chan variable has been configured with a non-null
virtual function void build()
Calls the underlying VMM env’s build phase.
virtual function void build()
Called as part of a predefined test flow, this function will retrieve the configuration setting for the wait_for_req_ended flag.
virtual function void build()
Returns 1 if a transactions is available to get, 0 otherwise.
virtual function bit can_get()
Returns 1 if a response is available to get, 0 otherwise.
virtual function bit can_get()
Returns 1 if a transaction is available in the req_chan, 0 otherwise.
virtual function bit can_peek()
Returns 1 if a transaction is available in the rsp_chan, 0 otherwise.
virtual function bit can_peek()
Always returns 1 (true) because responses are sneaked into the channel.
virtual function bit can_put ()
Returns 1 if the req_chan can accept a new request.
virtual function bit can_put ()
The vmm_channel instance being adapted; if not supplied in its new constructor, the adapter will create one.
vmm_channel_typed #( VMM ) chan
Converts an OVM apb transaction to a VMM apb transaction, including the transaction/data and sequence/scenario ids.
static function vmm_apb_rw convert( ovm_apb_rw from, vmm_apb_rw to = null )
Normally implemented to convert IN transactions to OUT transactions, the convert function in this class does nothing.
static function OUT convert( IN in, OUT to = null )
Called as part of a predefined test flow, this function will check that this component’s req_chan variable has been configured with a non-null instance of a vmm_channel #(VMM).
virtual function void end_of_elaboration()
Called as part of a predefined test flow, this function will check that this component’s req_chan variable has been configured with a non-null instance of a vmm_channel #(VMM).
virtual function void end_of_elaboration()
This method resets the match and mismatch counts and flushes the internal transaction buffers.
virtual function void flush()
Gets and converts a request from the req_chan vmm_channel.
virtual task get( output OVM_REQ o_req )
Gets a response from the rsp_chan, converts, and returns in the o_rsp output argument.
virtual task get( output OVM_RSP o_rsp )
Peeks and converts a request from the req_chan vmm_channel.
virtual task get_next_item( output OVM_REQ t )
This task continually gets request transactions from the connected sequencer, converts them to an equivalent VMM transaction, and puts to the underlying req_chan vmm_channel.
virtual task get_requests()
Returns the type name, i.e.
virtual function string get_type_name()
Returns the type name, i.e.
virtual function string get_type_name()
Named for its association with OVM sequencer operation, this function will return 1 if there is a transaction available to get from the vmm_channel, req_chan.
virtual function bit has_do_available()
The vmm_channel from which new transasctions are obtained.
vmm_channel_typed #( T ) in_chan
The notification id upon which this component will wait for a transaction.
int INCOMING
When the INCOMING notification is indicated, the incoming transaction is passed to this function for processing.
virtual function void indicated( vmm_data status )
Called back when the RECEIVED notification in the notify object is indicated, this method converts the VMM data given in the status argument to its OVM counterpart, then send it out the analysis_port to any connected subscribers.
virtual function void indicated( vmm_data status )
A static function that registers the vmm_gen_cfg phase callback with the OVM.
local static function bit insert_vmm_phases()
A non-blocking function indicating an OVM driver is done with the transaction retrieved with a get_next_item or get.
virtual function void item_done( OVM_RSP o_rsp = null )
A process that continually peeks transactions from in_chan, prints it, waits a bit, then pops it off the channel to unblock the producer.
virtual protected task main()
Creates a new instance of ovm_producer.
function new ( string name, ovm_component parent )
Creates a new instance of the apb_scoreboard.
function new( string name = "apb_scoreboard", ovm_component parent = null, vmm_channel_typed #(vmm_apb_rw) vmm_fifo = null, bit always_pull = 0 )
Creates a new avt_analysis_channel with the given name and optional parent; the optional chan argument provides the handle to the vmm_channel being adapted.
function new ( string name, ovm_component parent = null, vmm_channel_typed #(VMM) chan = null )
Creates an instance of a avt_channel2tlm adaptor, with four optional arguments.
function new ( string name = "avt_channel2tlm", ovm_component parent = null, vmm_channel_typed #(VMM_REQ) req_chan = null, vmm_channel_typed #(VMM_RSP) rsp_chan = null, bit rsp_is_req = 1, int unsigned max_pending_req = 100 )
Creates a new notify-to-analysis adapter with the given name and optional parent; the notify and notification_id together specify the notification instance that this adapter will be sensitive to.
function new ( string name, ovm_component parent = null, vmm_notify notify = null, int notification_id = -1 )
Creates a VMM env container component with the given name and parent.
function new ( string name, ovm_component parent = null, ENV env = null )
Creates the vmm_env proxy class with the given name, parent, and optional vmm_env handle.
function new ( string name, ovm_component parent = null, vmm_env env = null )
Creates a VMM env container component with the given name and parent.
function new ( string name, ovm_component parent = null, ENV env = null )
Creates a new avt_tlm2channel adapter given four optional arguments.
function new ( string name = "avt_tlm2channel", ovm_component parent = null, vmm_channel_typed #(VMM_REQ) req_chan = null, vmm_channel_typed #(VMM_RSP) rsp_chan = null, bit wait_for_req_ended = 0 )
Creates a new instance of an avt_vmm_ovm_env.
function new( string name = "Verif Env" `VMM_ENV_BASE_NEW_EXTERN_ARGS )
The notify object that this adapter uses to indicate the RECEIVED event notification.
vmm_notify notify
The notify object that this adapter uses to register a callback on the RECEIVED event notification.
vmm_notify notify
When ok_to_stop is clear (default), the avt_ovm_vmm_env’s stop task will wait for the VMM env’s wait_for_end task to return before continuing.
bit ok_to_stop = 0
This class defines the OVM equivalent of the apb_rw VMM transaction type.
class ovm_apb_rw extends ovm_sequence_item
Calls into the OVM’s phasing mechanism to complete OVM’s build, connect, and any other user-defined phases up to end_of_elaboration.
virtual function void ovm_build()
Calls into the OVM’s phasing mechanism to complete OVM’s extract, check, and report phases.
virtual task ovm_report()
Peeks (does not consume) and converts a request from the req_chan vmm_channel.
virtual task peek( output OVM_REQ o_req )
Peeks (does not consume) and converts a response from the rsp_chan.
virtual task peek( output OVM_RSP o_rsp )
Called via the blocking_put_port or run process, this process “executes” the transaction by printing a message and waiting a bit of time.
task put ( T tr )
Converts and sneaks a response to the rsp_chan vmm_channel, if defined.
virtual task put ( OVM_RSP o_rsp )
Converts an OVM request to a VMM request and puts it into the req_chan vmm_channel.
virtual task put ( OVM_REQ o_req )
A non-blocking version of put, this function converts and sneaks the given response into the rsp_chan vmm_channel.
virtual function void put_response ( OVM_RSP o_rsp )
This task handles getting responses from the rsp_chan vmm_channel and putting them to the appropriate OVM response port.
virtual task put_responses()
The notification id that this adapter indicates upon receipt of OVM data from its analysis_export.
int RECEIVED
The notification id that, when indicated, will provide data to a callback registered by this adapter.
int RECEIVED
Reports the number of matches and mismatches seen.
virtual function void report()
Calls into the OVM’s phasing mechanism to execute user-defined OVM phases inserted after report_ph, if any.
virtual task report()
The vmm_channel from which new transasctions are obtained.
vmm_channel_typed #( T ) req_chan, rsp_chan
Handle to the request vmm_channel #(VMM) instance being adapted.
vmm_channel_typed #( VMM_REQ ) req_chan
Handle to the request vmm_channel #(VMM) instance being adapted.
vmm_channel_typed #( VMM_REQ ) req_chan
Syncs the start of VMM reset_dut with the start of OVM run phase, then forks OVM run phase to run in parallel with reset_dut, config_dut, start, and wait_for_end.
virtual task reset_dut()
Handle to the response vmm_channel #(VMM) instance being adapted.
vmm_channel_typed #( VMM_RSP ) rsp_chan
Handle to the response vmm_channel #(VMM) instance being adapted.
vmm_channel_typed #( VMM_RSP ) rsp_chan
Indicates whether a response is the same object as the request with the status and/or read data filled in.
protected bit rsp_is_req = 1
If the blocking_get_port is connected, a the run task will continually get from the port and put the transaction for immediate execution.
task run()
Continually fetches OVM-VMM transaction pairs and compares them.
virtual task run()
If the analysis_port is connected, the run task will continually get VMM transactions from the vmm_channel and end the converted transactions out the analysis_port.
virtual task run()
Called as part of a predefined test flow, the run task forks a process for getting requests from the request channel and sending them to the OVM consumer connection via the blocking put port.
virtual task run()
Calls the underlying VMM env’s reset_dut, cfg_dut, start, and wait_for_end phases, returning when the env’s end-of-test condition has been reached.
virtual task run()
Called as part of a predefined test flow, the run task forks a process for getting requests from the seq_item_port and sending them to the req_chan vmm_channel.
virtual task run()
A channel into which the received data is sneaked and from which the main method gets the data, so that the tee() call in the scoreboard will also see it.
vmm_channel_typed #( T ) sbd_chan
If the run phase is being stopped, this task waits for the underlying env’s wait_for_end phase to return, then calls the VMM env’s stop and cleanup tasks.
virtual task stop( string ph_name )
Requests the OVM run phase to stop if it is still running, then waits for the OVM run phase to finish.
virtual task stop()
Blocking transport is used to atomically execute the geiven request transaction, req, and return the response in rsp.
task transport ( OVM_REQ o_req, output OVM_RSP o_rsp )
If a transactions is available to get, returns the transaction in the o_req output argument, else returns 0.
virtual function bit try_get( output OVM_REQ o_req )
If a response is available in the rsp_chan, gets and returns the response in the o_rsp output argument and returns 1.
virtual function bit try_get( output OVM_RSP o_rsp )
Waits a number of delta cycles waiting for a request transaction to arrive in the req_chan vmm_channel.
virtual task try_next_item ( output OVM_REQ t )
If a request is available to peek from the req_chan, this function peeks (does not consume) the transaction from the channel, converts, and returns via the o_req output argument.
virtual function bit try_peek( output OVM_REQ o_req )
If a response is available to peek from the rsp_chan, this function peeks (does not consume) the transaction from the channel, converts, and returns via the o_req output argument.
virtual function bit try_peek( output OVM_RSP o_rsp )
Sneak the given response to the response channel, or copy the response to the corresponding request if rsp_is_req is set.
virtual function bit try_put ( OVM_RSP o_rsp )
If the req_chan can accept new requests, converts o_req to its VMM equivalent, injects it into the channel, and returns 1.
virtual function bit try_put ( OVM_REQ o_req )
Calls the underlying VMM env’s cfg_dut phase, provided this phase was enabled in the new constructor.
virtual task vmm_cfg_dut()
Calls the underlying VMM env’s gen_cfg phase.
virtual function void vmm_gen_cfg()
Calls the underlying VMM env’s report method, then stops the reportvmm phase.
virtual task vmm_report()
Calls the underlying VMM env’s reset_dut phase, provided this phase was enabled in the new constructor.
virtual task vmm_reset_dut()
Used to support VMM non-blocking completion models that indicate and return response status via each transaction’s ENDED notification.
virtual task wait_for_ended( VMM_REQ v_req )
When the VMM consumer does not use a separate response channel, this bit specifies whether the response, which is annotated into the original request, is available after a get from the request channel (wait_for_req_ended=0) or after the original request’s ENDED status is indicated (wait_for_req_ended=1).
protected bit wait_for_req_ended = 0
Used in the try_next_item method, this method waits a variable number of #0 delays.
virtual task wait_for_sequences()
The write method, called via the analysis_export, converts an incoming OVM transaction to its VMM counterpart, then sneaks the converted transaction to the vmm_channel.
function void write( OVM ovm_t )
The write method, called via the analysis_export, converts an incoming OVM transaction to its VMM counterpart, then indicates the configured RECEIVE notification, passing the converted data as status.
virtual function void write( OVM t )
Used by active OVM consumers to send back responses.
virtual function void write( OVM_RSP o_rsp )