blob: 887cfcbe477e08e6c634685b6a5b91ae5432d70d [file] [log] [blame]
------------------------------------------------------------------------
Release Notes for OVM-2.1.2
May 26, 2011
** Bug Fixes
- ovm_comparer was not regarding its verbosity setting.
- ovm_objection source object handle not set to ovm_top if not
supplied in raise/drop_objection.
- ovm_report_object is no longer declared virtual.
- allow phase_timeout and stop_timeout to be disabled (when set
to 0).
- ovm_do_callbacks macros - fixed case that cause null-pointer
- `ovm_field_sarray_* macros - fixed auto-config issue
- `ovm_field_object macro - fix memory leak with object copy
- produce error if the selected sequence for try_next_item
does not produce a sequence item during wait_for_sequences().
This can occur if time is consumed between calls to start_item()
and finish_item().
- call set_sequencer()/reseed() in start() method to remove
dependency on create_item()
- produce error if parent sequence finishes before releasing its
locks or before children are finished (can filter)
** Enhancements
- ovm_pool - Added get_global method.
- ovm_transaction/ovm_sequence_item - exposed event pool member
'events' to public API.
- move response queue handling to ovm_sequence_base to allow
polymorphic response handling
------------------------------------------------------------------------
Release Notes for OVM-2.1.1
March 18, 2010
** Bug Fixes
- ovm_report_enabled() method now also tests the configured action as well
as its verbosity when determining whether to process the report. If a
report's action is configured to OVM_NO_ACTION, or if its verbosity is
higher than the configured verbosity, ovm_report_enabled() returns 0.
Because the `ovm_* report macros use ovm_report_enabled(), they too
benefit from this performance improvement.
- Verbosity was not being ignored for fatals, errors, and warnings. This
is now fixed.
- Added is_locked() method to ovm_sequence_base.
- Fixed ovm_queue #(T) to not assume its parameter, T, was an object.
- A FATAL report is issued if an attempt is made to connect() ports at or
after the end_of_elaboration phase.
- Fixed multi-field configuration matching for ovm_field macros. In OVM 2.1
only the first matching field in a component was applied, now all matching
fields are applied.
- Sequence arbitration was broken when in strict_fifo or strict_random modes.
When used in conjunction with is_relevant() or is_blocked(), the priority
queue was incorrectly determined, resulting in blocked or irrelevant
sequences potentially being chosen. This has been fixed.
- Fixed bug in transaction recording that was resulting in nested objects
not being recorded.
- Fixed ovm_field_int_*_unsigned macros by removing unnecessary attempt to
cast to 'int unsigned'.
- Added force_stop() method to ovm_test_done_objection that forces a stop
despite outstanding objections. This effectively cancels an objection.
By default, the objection state is printed if there are outstanding
objections at the time of the call.
- Fixed ovm_sequence's kill() and ovm_sequencer's stop_sequences() behavior
whereby a killed/stopped sequence's post_body method was allowed to execute.
Now, calls to kill() or stop_sequences() will absolutely kill the affected
sequence(s) and leave the sequence in the STOPPED state.
** Documentation Fixes
- Corrected documentation for (un)pack_string.
- Fixed HTML documentation 'search' engine to include macros. It was not
properly handling the macros' leading backtick (`).
- Changed macro documentation to be consistent: The backtick is included,
whereas the arguments are not.
- Documented do_kill_all() method as a means of recursively killing the
processes forked during a component's run phase. The objection and stop
mechanisms remain the preferred way to end the run phase.
** Miscellaneous
- Turned off auto-config for all port objects.
- ovm_sequencer_base::get_seq_kind() was changed to issue a WARNING instead
of an FATAL if the named sequence is not found. This allows users to
check if a specifically named sequence is registered. A return value of
-1 indicates the sequence does not exist.
- Removed an old, unnecessary ifdef INCA in the ovm_component::find() code.
- Changed internal macros in ovm_object_defines.svh to use m_ to provide
visual indication that the macros are for internal use only.
- ovm_port_base::connect() and resolve_bindings() were made virtual
to allow their override in port derivatives.
- Made sequence registration methods protected and virtual to allow
internal tools to work with them.
------------------------------------------------------------------------
Release Notes for OVM-2.1
December 18, 2009
** New Features
- Added an objection mechanism for coordinating the end-of-test
condition, i.e. ending the run phase. Any number of objects,
components, and even module-based IP can participate in
the end-of-test decision.
- Added a typesafe callback facility as an alternatve means
of customizing component behavior without inheritance. The
documentation will show that providing hooks in the form of
both virtual methods and callback objects affords users the
most flexibility for customizing component behavior.
- Added a parameterized ovm_pool #(KEY, T) class. Both ovm_event_pool
and ovm_barrier_pool are now typedef'd to a specialization of
the parameterized pool.
- Added a parameterized ovm_queue #(T) class. Class-based versions
of the associative array and queue allow for conditional
allocation and efficient pass-by-reference and store-by-reference
capabilities.
- Added support for real fields via the new macro `ovm_field_real.
- Added support for associative arrays of integral types indexed
by enumerated types with the macro `ovm_field_aa_int_enumkey.
- Added the virtual function get_object_type() to the ovm_object
class to return the factory wrapper object that can be used to
construct the object type.
- Added the get_count() method to the ovm_random_sequence class to
provide a means of accessing the random count that the sequence
is using.
** API Changes
- Changed the interface methods (such as get_next_item()) in the sequencer
classes to be virtual.
- Changed ovm_report_server::id_count array from local to protected
to allow access in ovm_report_server subtypes.
- Documentation updated for ovm_report_* methods. Includes explanation
that verbosity is now ignored for warning, error, and fatal reports.
** Performance Optimizations
- The ovm_report_enabled method was enhanced to also check whether
the configured action for a given report severity and id is not
OVM_NO_ACTION. This, in addition to the verbosity check, enables
disabled reports to be efficiently filtered out before incurring
the overhead of message string processing.
** Compatibility changes
- AVM FILE Compatibility
Methods in AVM that take a file descriptor used FILE as the argument
type, whereas in OVM the argument type is OVM_FILE. Users
using the FILE type will need to typedef it
| typedef OVM_FILE FILE;
or
| typedef int FILE;
** Example Updates:
- The Xbus example was modified to use the objection mechanism.
- An simple objection example was added.
- An simple callback example was added.
** Notable bugs fixed
- A race condition existed in untimed simulations between the call
to stop_request and the process that is forked to monitor the
stop request. This has been fixed.
- In Questa 6.5x and prior, running vlog with -noopt could cause the
simulation to timeout after normal completiion of all OVM phasing.
This issue has been fixed.
------------------------------------------------------------------------
Release Notes for OVM-2.0.3
November 9, 2009
------------------------
** Performance Optimizations
- Added message macros, `ovm_info, `ovm_warning, `ovm_error and
`ovm_fatal to help with performance and to allow for file and line
information in messages.
- Fixed factory performance issue when a large number of instance
overrides are registered. The factory now keeps a seperate override
queue per requested type.
- Added configuration cache and other optimizations to
increase configuration performance.
** Bugs Fixed:
- convert2string was promoted from ovm_transaction to ovm_object.
Users can now return object information in the form of a string
without requiring use of the ovm_printer policy class.
Overrides of ovm_object::do_print are expected to use the
given ovm_printer policy class.
- All OVM library ovm_report_warning, ovm_report_error,
and ovm_report_fatal messages were changed to have OVM_NONE
verbosity to prevent user-configured verbosity settings from
inadvertantly suppressing them.
- Added macro OVM_PACKER_MAX_BYTES to allow for the internal packer
object to be increased in the case of overflow.
- Fixed deep copy for `ovm_field_array_object, `ovm_field_sarray_object,
and `ovm_field_queue_object. Deep copy was unconditionally creating
a new array instead of reusing the lhs array.
- Duplicate factory override WARNING changed to INFO.
- Overriding a factory override message demoted from WARNING to INFO
- Avoid compiler warnings by testing associative array entry for
existence before dereferencing.
- Create method in `ovm_object_utils and ovm_object_registry #()
will not set the object's name if the given name is the empty
string. This allows object designers to choose a non-empty
default name that will not be overwritten by factory.
- tlm_fifo::get_ap no longer emits transactions on peek operations
- Fixed corruption of last byte/word in ovm_packer::get_bytes and
get_ints, which affected ovm_object::pack_bytes and pack_ints.
- Added/corrected documentation for tlm_fifo methods: size, used,
is_full, is_empty.
- Added OVM_MAX_STREAMBITS define to allow users to set the maximum
number of bits in value arguments to ovm_component::set_config_int,
ovm_packer::pack/unpack_field, ovm_printer::print_field, and
ovm_comparer::compare_field. Default is 4096 bits.
- Added OVM_PACKER_MAX_BYTES define to allow users to set the
maximum capacity of the packer's internal bitstream, in bytes.
Default is 4096 bytes.
- wait_for_relevant calls are now run in parallel to allow the
first available is_relevant sequence to be chosen.
- A call to try_next_item could block if the chosen sequence
was locked.
- Return value of ovm_object::pack/unpack_bits/bytes not consistent
with documentation. In all cases now, the number of actual bits
packed or unpacked is returned.
- Changed the output of the CFGNTS message to be more clear.
- ovm_sequencer::has_do_available now works with virtual sequences
- Multiple deregistration of a sequence fixed.
- A sequencer ungrab() without a previous grab() is now caught.
** Deprecations
- The ovm_object::do_sprint method is now deprecated. Its default
implementation now calls convert2string.
** Documentation Changes:
- Added documentation for the ovm_*_imp_decl macros.
- Added documentation for the the declare_p_sequencer macro.
- Added documentation for the convert2string method, which
is now a member of the ovm_object class.
** Example Changes:
- All examples were changed to use the new reporting macros.
------------------------------------------------------------------------
Release Notes for OVM-2.0.2
June 3, 2009
------------------------
** API Changes:
- Added function for checking configuration usage:
function void check_config_usage (bit recurse = 1)
Checks that all settings in the configuration table have been used.
Additional detail is available by setting the actions for the
following report ids:
CFGOVR -- reports settings that have been overridden from above.
CFGSET -- reports all settings that have been applied.
- Changed ovm_report_server::summarize() to be virtual to allow
summaries to be changed in derivative server objects.
- Changed the RSP argument in the tlm_req_rsp channel to default to
the REQ type instead of to int.
** Documentation Changes:
- The Reference manual has been removed and replaced with Natural
Docs HTML code. All documentation for the reference is now
contained inside of the OVM source code. Natural Docs is used
to generate new documentation at release time. The intention is
to ensure that all of OVM is documented and the document stays
up to date with any code changes.
** Example Changes:
- Fixed xbus slave connect to properly handle the active/passive
setting.
- Changed xbus to use an import package methodology instead of an
included methodology. An ifdef is in place to allow previous IUS
versions to still work.
** Bugs Fixed:
- Added configuration checking to verify that all configuration
settings are used. The check is done during the check phase
(after the run phase), but can be manually done at any time.
- Fixed get_config() to search ovm_top. The global configuration
table was moved into ovm_top, so a set_config outside of a component
is now equivalent to ovm_top.set_config.
- Fixed issue with automatic configuration that was causing excessive
build times in particular situations.
- Fixed table printer to removed the column when a field is turned
off, without the need to explicitly set the field width to 0.
- Fixed printing of dynamic arrays to print all elements when the
begin_elements knob is set to -1.
- Fixed OVM_NOPRINT for fields of type `ovm_field_sarray_*.
- Fixed packing of `ovm_field_enum types to not pack when the
OVM_NOPACK is set.
- Removed all procedural assertions from the OVM code. The issue is
that many of the assertion expressions had side-effects, for
example, assert(foo.randomize()). If assertions are turned off
the expressions are never executed and the simulation fails.
- Changed printing of sequence items to print the sequence name in the
same way as was done in OVM 1.1.
- Fixed +OVM_VERBOSITY when `message is used in conjunction with
ovm_report_*.
- Fixed OVM_FATAL messages to terminate immediately. They were
forking a thread in order to terminate at the end of the
delta which resulted in unexpected behaviors.
- Fixed random instability caused by the recording_detail setting.
When the setting was OVM_NONE, the transaction event objects were
not being created, resulting in different random streams when the
setting was other than OVM_NONE.
- Fixed issue with ovm_create_random_seed (and by extension,
ovm_object::reseed), that was causing seeds to be recycled under
certain circumstances.
- Fixed issue with OVM hanging when a component's parent was set to itself.
- Fixed issue with start_item where a items were not properly initialized by
create_item and a fatal error was being reported. Now, create_item does
the appropriate initialization.
- Fixed issue with the sequencer grab() task calling the lock routines
instead of the grab routines.
- Fixed ovm_sequencer::stop_sequences() to properly terminate all of the
sequences and empty the response queue.
- Changed the ovm_sequencer_param_base::set_request() to honor the rerandomize
bit. When the rerandomize bit is set, the input item is randomized.
- Changed all integers in the sequence code to be ints (2-state) to avoid
unexpected randomization issues when the variables default to x.
- Fixed issue that caused sequences to get multiply registered.
- Fixed message for terminated sequence to provide more information.
- Made it illegal to specify a sequence priority of 0. In some cases a 0
priority was causing a crash.
- Fixed ovm_sequence::start() to check that the parent_sequence is non-null
before using it. This allows the parent sequence to have been set previously
without being overridden.
- Fixed ovm_sequence_item::get_full_name() to generate the correct name.
- Removed double allocation of sequence items in do macros. The double
allocation had previously been required for tool reasons.
- Added a warning to not start the default sequence for the case that no user
defined sequence exists (and no simple sequence exists).
- Fixed a number of linting errors in the OVM code.
- Added ifdef around %p usage in the ovm_builtin_converter class to allow the
default implementation to run on IUS.
- Fixed the ovm_*_utils macros to run on IUS with parameterized types.
Previously, IUS would issue an error about calling a built-in function
from a parameterized type.
------------------------------------------------------------------------
Release Notes for OVM-2.0.1
December 3, 2008
-------------------------
** Bugs Fixed:
- OVM factory registrations have been added for ovm_random_stimulus,
ovm_in_order_comparator, ovm_algorithmic_comparator, and
ovm_subscriber.
- Fixed bug where unpack_field returned an incorrect x before actual
value.
- Fixed inconsistent use of inst_path in ovm_factory.
- Fixed bug so that phases can now be inserted during build phase.
- Added deprecation warning messages for all deprecated features
(see deprecated.txt file for list of deprecated features).
Here is the list of deprecated features which will now emit warning
messages if they are used:
ovm_component::find_component
ovm_component::find_components
ovm_component::get_component
ovm_component::get_num_components
ovm_env::do_test
ovm_factory::auto_register
ovm_factory::set_type_override
ovm_factory::set_inst_override
ovm_factory::create_object
ovm_factory::create_component
ovm_factory::print_all_overrides
ovm_factory::print_override_info
ovm_find_component
ovm_print_topology
ovm_root::print_unit
ovm_root::print_units
ovm_root::print_unit_list
ovm_sequence::new (sequencer_ptr and parent_seq args)
ovm_sequencer_base::start_sequence
ovm_sequence_item::new (sequencer_ptr and parent_seq args)
ovm_sequence_item::set_parent_seq
ovm_sequence_item::get_parent_seq
- Added missing "static" keyword in ovm_component_registry_param macro.
- Added a check in ovm_sequencer.svh to check that sequence_id is not
-1, which indicates that set_id_info was not called.
- Added error report if a sequence calls send_request() without first
having called wait_for_grant().
- Fixed ovm_file and ovm_line macros for Questa and IUS.
- The +OVM_VERBOSITY command line option now properly sets the
verbosity threshold in the report server.
The command line syntax is: +<verbosity_flag>=<verbosity_value>
<verbosity_flag> = OVM_VERBOSITY | ovm_verbosity | VERBOSITY | verbosity
<verbosity_value = OVM_NONE | NONE | OVM_LOW | LOW | LO
| OVM_MEDIUM | OVM_MED | MEDIUM | MED
| OVM_HIGH | OVM_HI | HIGH | HI | OVM_FULL
| FULL | OVM_DEBUG | DEBUG
| <verbosity_level>
<verbosity_level> = integer >= 0
- The scenario compatibility layer default parameterization has been
fixed to match sequences.
- Some verbosity values in the urm compatibility were corrected.
- The verbosity values in ovm_comparer were fixed.
- Fixed `ovm_update_seq_and_lib so that it uses
create_inst_override_by_type.
- Moved all tlm defines to tlm_defines.svh file so that external use
of *_decl macros now works properly.
- fixed broken _decl macros
- Removed use of '-' in format specifiers in ovm_report_handler.
- Fixed user defined phases to allow use from different class
hierarchies.
- Fixed bug so that sequence kill now works properly.
- Constructor for component registry has been fixed to use positional
rather than named arguments for function calls.
- Fixed code in ovm_object and macros so that ABSTRACT flag now works
properly.
- Fixed bug so that wait_for_sequence_state() now wakes up during the
correct state.
- Made a performance optimization in ovm_report_server to not call
$swrite when not needed.
- Fixed the internal buffer within ovm_packer to allow more than 4096
total bits.
- Fixed ovm_version strings to be constant parameters.
- Fixed radix for comparison in field arrays.
- Fixed default verbosity in urm compatibility area to OVM_MEDIUM to
be consistent with previous default.
- Fixed binding defines in urm compatibility area.
- Added check to emit error in ovm_sequence_item::start_item when the
sequencer is null.
- Fixed bug so that grab followed by ungrab from a virtual sequence
will now properly process items.
- Improved error messages from the OVM library when doing a sequence
on the wrong type of sequencer.
- Fixed issue so that connect_if() can now be used for
sequencer.seq_item_cons_if for backwards compatibility (note that
connect_if() is deprecated still).
- Added get_arbitration() function to ovm_sequencer_base.svh.
- Fixed bug so that it is now possible to do items from virtual
sequences on driver sequencers.
- Fixed bug in which global timeout was printed in hex for questa
(instead of %t).
- Fixed bug in ovm_packer in which index error messages gave incorrect
"valid range".
- Fixed bug in ovm_object::pack_ints & unpack_ints in which they
corrupted data.
- Removed dead code in ovm_packer::put_bits.
- Fixed bug in ovm_object::pack_ints.
- Fixed bug in which parallel `ovm_do_on or wait_for_grant calls would
fail.
- Fixed bug were sequence priority was not passed correctly from
built-in sequences.
- Fixed bug so push_sequencer creates built-in sequences and starts
default sequence the same way as the pull sequencer.
- Fixed bug so that inheritance hierarchy of sequences all have access
to p_sequencer in sequences with multiple inheritances.
- Removed `ovm_sequence_param_utils macro. This macro did not function
correctly, and could give erroneous results.
To use parameterized sequences in sequence libraries, wrap them in
a non-parameterized class.
- Sequencer calls get_config in both new and build routines to allow
setting of default sequence in build phase to work.
- _global_reporter is now aliased to ovm_top. This is part of the
process of deprecating _global_reporter.
- modified the reporting interface in ovm_report_object by adding the
following functions:
function int get_report_verbosity_level();
function int get_report_action(ovm_severity severity, string id);
function int get_report_file_handle(ovm_severity severity, string id);
function int ovm_report_enabled(int verbosity);
- Added the global function ovm_report_enabled(int verbosity). This
function checks to see if, given the supplied verbosity, whether or
not a report will print. It will be used in future releases of OVM
to determine if a report will be issued before undertaking the
report processing.
------------------------------------------------------------------------
Release Notes for OVM-2.0
August 5, 2008
-------------------------
** Unified sequences
The new unified sequences facility unifies the ideas in the scenarios
and sequences facilities in OVM-1.1. The new facility draws from both
scenarios and sequences to provide a complete stimulus generation
capability.
>> sequences
- Sequences are parameterized with request and response types. The
response type defaults to that of the request.
>> sequence items
- Sequence items now contain id to enable routing of responses back to
the sequence from which the corresponding request originated.
>> sequencer
- Sequencers, like sequences are now parameterized request and
response types. The default type for the response is that of the
request.
- A sequencer can route a response back to it the sequence that
initiated the request.
- Sequences can be prioritized and executed based on their priority.
The sequencer manages the arbitration.
- Push-mode sequencers are available to connect sequences to push-mode
drivers.
>> sequencer/driver API
- The sequencer/driver API consists of the following tasks and
functions:
has_do_available()
wait_for_sequences()
get_next_item()
try_next_item()
item_done()
put()
get()
peek()
- The driver and sequencer are connected using a port and export. A
custom port interface provides the necessary tasks and functions
that drivers use to access the services provided by sequences and
sequencers. These are all accessible via the ovm_sqr_pull_if. This
interface is bound using the ovm_seq_item_pull_port and _export.
The sequencer supplies the export to which the driver with the
corresponding port connects. The sequencer and driver are bound
using the usual port connect() function.
>> sequence/sequencer API
The sequencer supplies the following set of tasks and functions for
sequences to interact with it:
wait_for_grant()
lock()
unlock()
grab()
ungrab()
is_grabbed()
send_request()
get_response()
This collection of tasks and functions provides for the complete
interaction with the sequencer to enable late randomization along
with all the other features of sequences. A collect of `ovm_do_-
macros is also availale as a convenience layer and also to enable
in-line constraints.
Lock differs only slightly from grab. Grab causes the grabbing
sequence to immediatly jump to the head of the queue to be serviced
next by the driver. Lock leaves the sequence in the same place in
the queue and the lock takes effect when the sequence reaches the
head of the queue.
** Factory
Support for parameterized classes. This is accomplished by allowing
object handles to be used as keys as well as strings.
** Reorganize ovm_port and related classes
The organization of the ovm_port_base class and associated helper
classes has been simplified. There are no implications for users
or existing user code.
We retain the dual-class nature of the OVM port for backward
compatibility reasons: both ovm_component and ovm_port_base define a
connect( ) method with conflicting prototypes and semantics. Having
ovm_port_base inherit from ovm_component was not an option. The new
port infrastructure is fully implemented in a single file,
ovm_port_base.svh. Additionally, the TLM port, export, and imp
specializations in the tlm/ directory were updated to reflect the
new port hierarchy and optimized for code reduction.
** Port connectivity API
Ovm_port has two functions, get_connected_to and get_provided_to,
each of which returns a list of ports. This enables users to write
code that traverses the connectivity of a design.
** Collapse ovm_threaded_component and ovm_component
The functionality previously in ovm_threaded_component has now been
moved to ovm_component. Ovm_threaded_component remains as a typedef
of ovm_component for backward compatibility.
** Added banners in run_test()
Run_test() now produces a banner when it starts and a message
summary when it completes.
** Bugs Fixed:
- avm_analysis_imp is now present in in AVM backward compatibility.
- typo in tlm_req_rsp.svh fixed
- segfault in Questa in ovm_factory::print_override_info() has been
fixed.
- Previously, back-to-back task phases did not operate correctly.
This has been fixed.
- URM command line processor has been `ifdef'ed so now it is only
present in IUS simulations.
------------------------------------------------------------------------
Release Notes for OVM-1.1
April 1, 2008
-------------------------
** Singleton top
Created a new class, ovm_root, with a singleton instance named
ovm_top. This object serves as common top-level for component
hierarchies rooted in different modules and it allows many items that
were in global space to be moved to non-static members of ovm_root.
Further, this serves as a centralized phase/process control; all phsae
control is done in a single place instead of distributed amongst
components in the hierachy.
** Phase changes
- Moved most functionality to ovm_root class. This results in a
simpler implemtation requiring less code which is more robust. Now
there is no local component state for phases other than current
phase handle and phase-related methods in ovm_component have been
reduced to two
- Phase objects are shared globally
- Phase comparison is done using object handles, not string names.
- The set of phases has changed, with new phases added and old ones
deprecated.
build
post_new (deprecated)
export_connections (deprecated)
connect
import_connections (deprecated)
configure (deprecated)
end_of_elaboration
start_of_simulation
pre_run (deprecated)
run
extract
check
report
** Code reorganization
The code has been reorgaized to support the singleton top as well as to
improve robustness and maintainability. Some methods have been added,
deleted, moved, and deprecated. Here is the full list:
base/ovm_component.sv*
Added do_func_phase
Added get_first_child
Added get_next_child
Added has_child
Added lookup (consolidate relative and absolute)
Added start_of_simulation (new phase, replaces pre_run)
Added local static bit m_phases_loaded = 0;
Changed add_child to m_add_child
Changed extract_name to m_extract_name
Changed get_child arg is string, not int
Changed protected int m_curr_phase changed type to ovm_phase
Changed set_full_name to m_set_full_name
Changed stop to no args
Deprecated absolute_lookup
Deprecated add_to_debug_list
Deprecated bit m_is_removed = 0;
Deprecated bit print_enabled = 1;
Deprecated build_debug_lists
Deprecated check_connection_size
Deprecated do_display
Deprecated export_connections
Deprecated import_connections
Deprecated post_new
Deprecated pre_run (added from ovm_threaded_component)
Deprecated protected ovm_component m_components[string];
Deprecated protected ovm_component m_exports[string];
Deprecated protected ovm_component m_implementations[string];
Deprecated protected ovm_component m_ports[string];
Deprecated relative_lookup
Deprecated static ovm_env m_env; (changed to static)
Moved do_print to urm_message_compatibility.svh (recording_detail)
Moved find_component to ovm_root.find
Moved find_components to ovm_root.find_all
Moved get_current_global_phase to ovm_top.get_current_phase,
returns ovm_phase object
Moved global_stop_request to ovm_top.stop_request
Moved insert_phase to ovm_top.insert_phase,
args are both ovm_phase objects
Moved local event m_stop_event; to ovm_root
Moved set_global_stop_timeout to ovm_top.stop_timeout var
Moved set_global_timeout to ovm_top.phase_timeout var
Moved set_int_local to urm_message_compatibility.svh (recording)
Moved static bit m_do_test_mode to ovm_root
Moved static local time m_global_stop_timeout
to ovm_root; non-static; renamed stop_timeout, def=MAX)
Moved static protected int m_global_curr_phase
to ovm_root, type change to ovm_phase
Moved static protected ovm_phase m_global_phase_q[$] to ovm_root
Moved static protected time m_global_timeout = 0;
to ovm_root, non-static, renamed to phase_timeout, def=MAX)
Moved stop_request to ovm_top.stop_request
Moved/Deprecated print_unit to ovm_top.print_unit
Moved/Deprecated print_unit_list to ovm_top.print_unit_list
Moved/Deprecated print_units to ovm_top.print_unit.print_units
Moved kill to ovm_threaded_component
Moved m_kill_request to ovm_threaded_component
Moved m_phase_process to ovm_threaded_component
Removed add_component
Removed bit top_dog;
Removed do_exit_action (ovm_top.stop_request)
Removed do_phase
Removed do_remove
Removed do_set_env
Removed execute
Removed get_component
Removed get_current_phase
Removed get_num_components
Removed is_removed
Removed m_do_current_phase
Removed m_do_task_phase
Removed m_get_global_phase_num
Removed m_get_phase_num
Removed m_global_stop_process
Removed m_phase_children
Removed m_phase_process_done
Removed m_stop_req
Removed ovm_find_component (global method)
Removed ovm_stop_enum (global space)
Removed protected ovm_phase m_phase_q[$]
Removed push_back_phase
Removed remove
Removed remove_child
Removed remove_children
Removed remove_component
Removed remove_component_by_name
Removed resolve_all_bindings
Removed static protected int m_global_phase_names[string]
Removed static protected ovm_component m_comp_list[$]
Removed static protected ovm_env s_current_env
Removed static protected ovm_event_pool m_global_epool
Removed static protected string m_global_curr_phase_name
Removed string m_leaf_name (use get_name() instead)
Removed trigger_stop_event
base/ovm_env.sv*
Deprecated do_test
Deprecated/Added m_do_test_mode
Deprecated/Added do_task_phase (override)
Deprecated run
Moved/Deprecated pre_run to ovm_component
Moved run_test (global task)
Moved run_global_phase to non-static ovm_root,
arg is ovm_phase object
Moved static bit finish_on_completion = 1;
to non-static in ovm_root
Removed m_do_task_phase(ovm_phase phase)
Removed m_do_global_phase(string ph_name)
Moved_GLOBAL_Deprecated run_test to ovm_root
Moved_GLOBAL_Deprecated ovm_print_topology to ovm_root
base/ovm_phases.sv
Changed call_task (added ovm_threaded_component or
ovm_component argument)
Changed call_func (added ovm_component argument)
Added local event m_start_event;
Added local bit m_is_started=0;
Added local event m_done_event;
Added local bit m_is_done=0;
Added wait_start
Added wait_done
Added is_in_progress
Added is_done
Added reset
Added m_set_in_progress
Added m_set_done
Removed local ovm_component m_parent;
Removed execute
Removed get_type_name
macros/ovm_phase_defines.sv
Removed macro execute
Removed macro m_parent
Added macro `define ovm_phase_func_topdown_decl(NAME)
Added macro `define ovm_phase_func_bottomup_decl(NAME)
Added macro `define ovm_phase_task_topdown_decl(NAME)
Added macro `define ovm_phase_task_bottomup_decl(NAME)
base/ovm_threaded_component.sv*
Deprecated/Moved pre_run to ovm_component
Changed - status (for INCA; impl for INCA is "not implemented")
Added - m_phase_process (from ovm_component)
Added - m_kill_request (from ovm_component)
Added - m_phases_loaded=0; to prevent unnecessary calls to ovm_top.insert_phase
Added - do_task_phase (for invoking task-based phases)
base/ovm_printer.sv
changed to use get_first_child/get_child/get_next_child interface
compatibility/urm_message_compatibility.svh
added do_print and set_int_local overrides from ovm_component;
these overrides support the URM's recording_detail variable
base/ovm_report_object.svh
changed call to do_exit_action to top.stop_request(); (do_exit_action removed)
base/ovm_connector_base.svh
Removed ovm_connection_phase_e enum
Removed s_port_type_article[]
Removed s_connection_phase_methods[]
Removed initialization of above arrays (for INCA)
Changed all references to phase strings to ovm_phase objects
methodology/layered_stimulus/ovm_scenario_controller.svh
Changed connect call to export_connections, but may want to keep
as 'connect'
methodology/sequences/ovm_sequencer_base.sv
Removed 'run_forever'; not needed any longer, as run task will no
longer be killed upon return. Only a kill or stop_request cann
kill processes forked from the run task.
** Miscellaneous Fixes
- Corrected problem where connect-time checks were not properly
identifying illegal connectionsin analysis port. The correction was
made by inserting a call to super.connect() in
ovm_analysis_port::connect().
- Fix ovm_component::get_name(). This function was returning the full
instance name instead of the leaf name.
- Add timeunit to phase timeouts so that the timeout is not dependent
on the user's timescale.
- Fix formatting for string values in table. When truncated, one too
few charcters were displayed.
- IUS does not support multiple format strings for $psprintf. Messages
using multiple format strings were changed to use a single format
string.
- Fix bug in URM message compatibility that caused `dut_error to
always exit (removed automatic OVM_EXIT action).
- Add command line option OVM_SEVERITY for consistency with other
command line options.
- Fix tlm_fifo bug around thread safety (multiple gets in same time
slice caused incorrect results).
- Add support of one-dimensional static arrays using
`ovm_field_sarray_*.
- Removed assertion from phase cast to allow mixing hierarchy.
- Provide a non_blocking option for ovm_scenario_driver
get_next_item() call.
- Macros `apply_with and `apply_send_with allow for randomize with
parameters.
- Optional no_randomize argument added to ovm_scenario apply calls.
------------------------------------------------------------------------