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 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 Version: 1.4.6 Mon Sep 29 14:23:30 2008 |