------------------------------------------------------------------------ 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: += = OVM_VERBOSITY | ovm_verbosity | VERBOSITY | verbosity = 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. ------------------------------------------------------------------------