blob: 07dd4eb11be96be890914f198d7ff6182627506e [file] [log] [blame]
//
// -------------------------------------------------------------
// Copyright 2004-2008 Synopsys, Inc.
// All Rights Reserved Worldwide
//
// Licensed under the Apache License, Version 2.0 (the
// "License"); you may not use this file except in
// compliance with the License. You may obtain a copy of
// the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in
// writing, software distributed under the License is
// distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
// CONDITIONS OF ANY KIND, either express or implied. See
// the License for the specific language governing
// permissions and limitations under the License.
// -------------------------------------------------------------
//
function vmm_subenv::new(string name,
string inst,
`VMM_CONSENSUS end_test
`VMM_SUBENV_BASE_NEW_EXTERN_ARGS);
`ifdef VMM_SUBENV_BASE_NEW_CALL
super.new(`VMM_SUBENV_BASE_NEW_CALL);
`endif
this.log = new(name, inst);
this.end_test = end_test;
endfunction: new
function string vmm_subenv::psdisplay(string prefix = "");
$sformat(psdisplay, "%sSub-Environment %s(%s): ", prefix,
this.log.get_name(), this.log.get_instance());
return psdisplay;
endfunction
function vmm_consensus vmm_subenv::get_consensus();
return this.end_test;
endfunction
function void vmm_subenv:: configured();
this.state = CONFIGURED;
endfunction: configured
task vmm_subenv::start();
if (this.state == NEWED) begin
`vmm_error(this.log, "Sub-environment started before being configured");
end
this.state = STARTED;
endtask: start
task vmm_subenv::stop();
if (this.state != STARTED) begin
`vmm_warning(this.log, "Attempting to stop a sub-environment that has not been started");
end
this.state = STOPPED;
endtask: stop
task vmm_subenv::reset(vmm_env::restart_e kind = vmm_env::FIRM);
this.state = STOPPED;
endtask: reset
task vmm_subenv::cleanup();
if (this.state != STOPPED) begin
`vmm_warning(this.log, "Attempting to clean-up a sub-environment that has not been stopped");
end
this.state = CLEANED;
endtask: cleanup
function void vmm_subenv::report();
endfunction: report
function string vmm_subenv::do_psdisplay(string prefix = "");
this.__vmm_done_user = 0;
return "";
endfunction
task vmm_subenv::do_vote();
this.__vmm_done_user = 0;
endtask
task vmm_subenv::do_start();
this.__vmm_done_user = 0;
endtask
task vmm_subenv::do_stop();
this.__vmm_done_user = 0;
endtask
task vmm_subenv::do_reset(vmm_env::restart_e kind);
this.__vmm_done_user = 0;
endtask