ovm_scenario_controller.svh

Go to the documentation of this file.
00001 //----------------------------------------------------------------------
00002 //   Copyright 2007-2008 Mentor Graphics Corporation
00003 //   Copyright 2007-2008 Cadence Design Systems, Inc.
00004 //   All Rights Reserved Worldwide
00005 //
00006 //   Licensed under the Apache License, Version 2.0 (the
00007 //   "License"); you may not use this file except in
00008 //   compliance with the License.  You may obtain a copy of
00009 //   the License at
00010 //
00011 //       http://www.apache.org/licenses/LICENSE-2.0
00012 //
00013 //   Unless required by applicable law or agreed to in
00014 //   writing, software distributed under the License is
00015 //   distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
00016 //   CONDITIONS OF ANY KIND, either express or implied.  See
00017 //   the License for the specific language governing
00018 //   permissions and limitations under the License.
00019 //----------------------------------------------------------------------
00020 
00021 typedef enum {FIFO, WEIGHTED, RANDOM, STRICT_FIFO, STRICT_RANDOM, USER} ARBITRATION_TYPE;
00022 
00023 `ifndef INCA
00024 // INCA doesn't like this 
00025 typedef class ovm_scenario_base;
00026 `endif
00027 
00028   
00029 class ovm_scenario_controller #(type REQ = ovm_transaction,
00030                                 type RSP = ovm_transaction) extends ovm_sequencer #(REQ, RSP);
00031 
00032 ovm_seq_item_pull_imp #(REQ, RSP, this_type) get_req_export;
00033 ovm_sequence #(REQ, RSP) seq_ptr;
00034 
00035 function new (string name, ovm_component parent);
00036     super.new(name, parent);
00037     count = 0;
00038     get_req_export = seq_item_export;
00039 endfunction // new
00040 
00042 //
00043 // apply
00044 //   send a scenario_item to the driver, and get
00045 //   the response back
00047 
00048   virtual task apply_request(ovm_scenario_base scenario, input REQ data_req, input bit randomize = 1);
00049     wait_for_grant(scenario);
00050     scenario.pre_apply();
00051     if (randomize == 1) begin
00052       assert(data_req.randomize());
00053     end
00054     scenario.mid_apply();
00055   endtask
00056   
00057 virtual task apply_send(ovm_scenario_base scenario, input REQ data_req, input bit randomize = 1);
00058     
00059     apply_request(scenario, data_req, randomize);
00060     send_request(scenario, data_req);
00061     scenario.post_apply();
00062 endtask    
00063     
00064 virtual task apply(ovm_scenario_base scenario, input REQ data_req, output RSP data_rsp, input bit randomize = 1);
00065 
00066     apply_send(scenario, data_req, randomize);
00067     assert($cast(seq_ptr, scenario));
00068     seq_ptr.get_response(data_rsp);
00069     scenario.post_apply();
00070 endtask // apply
00071 
00072 endclass
00073 

Intelligent Design Verification
Intelligent Design Verification
Project: OVM, Revision: 1.1.0
Copyright (c) 2008 Intelligent Design Verification.
Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
A copy of the license is included here:
http://www.intelligentdv.com/licenses/fdl.txt
doxygen
Doxygen Version: 1.4.6
Mon Sep 29 14:23:30 2008
Find a documentation bug? Report bugs to: bugs.intelligentdv.com Project: DoxygenFilterSV