00001 class cl_syoscb_cfg extends uvm_object; 00002 //--------------------------------- 00003 // non randomizable member variables 00004 //--------------------------------- 00005 cl_syoscb_queue queues[string]; 00006 cl_syoscb_cfg_pl producers[string]; 00007 string primary_queue; 00008 // TBD bit full_scb_dump; 00009 // TBD int unsigned max_queue_size[string]; 00010 // TBD int unsigned full_max_queue_size[string]; 00011 // TBD string full_scb_type[]; 00012 // TBD int unsigned item_time_out_queue[string]; 00013 // TBD int unsigned item_time_out_producer[string]; 00014 00015 `uvm_object_utils_begin(cl_syoscb_cfg) 00016 `uvm_field_aa_object_string(queues, UVM_DEFAULT) 00017 `uvm_field_aa_object_string(producers, UVM_DEFAULT) 00018 `uvm_field_string(primary_queue, UVM_DEFAULT) 00019 `uvm_object_utils_end 00020 00021 extern function new(string name = "cl_syoscb_cfg"); 00022 extern function void set_queues(string queue_names[]); 00023 extern function void get_queues(output string queue_names[]); 00024 extern function bit set_producer(string producer, queue_names[]); 00025 extern function bit set_primary_queue(string primary_queue_name); 00026 00027 endclass : cl_syoscb_cfg 00028 00029 00030 function cl_syoscb_cfg::new(string name = "cl_syoscb_cfg"); 00031 super.new(name); 00032 endfunction : new 00033 00034 function void cl_syoscb_cfg::set_queues(string queue_names[]); 00035 foreach(queue_names[i]) begin 00036 this.queues[queue_names[i]] = null; 00037 end 00038 endfunction : set_queues 00039 00040 // TBD: Can be fixed as a return type by using a typedef 00041 // TBD: The implementation is a bit clumsy... 00042 function void cl_syoscb_cfg::get_queues(output string queue_names[]); 00043 string queue_name; 00044 int unsigned idx = 0; 00045 queue_names = new[this.queues.size()]; 00046 while(this.queues.next(queue_name)) begin 00047 //$display("get_queues: %s", queue_name); 00048 queue_names[idx++] = queue_name; 00049 end 00050 endfunction : get_queues 00051 00052 function bit cl_syoscb_cfg::set_producer(string producer, queue_names[]); 00053 cl_syoscb_cfg_pl prod_list = new(); 00054 // TBD: Here there should be a check on the queue names 00055 prod_list.set_list(queue_names); 00056 this.producers[producer] = prod_list; 00057 // TBD: Shall be changed 00058 return(1'b1); 00059 endfunction: set_producer 00060 00061 function bit cl_syoscb_cfg::set_primary_queue(string primary_queue_name); 00062 // TBD: Here the should be an existence check on the queue 00063 this.primary_queue = primary_queue_name; 00064 // TBD: Shall be changed 00065 return(1'b1); 00066 endfunction: set_primary_queue
|
Project: SyoSil ApS UVM Scoreboard, Revision: 1.0.0.2 |
Copyright 2014 SyoSil ApS 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. |
![]() Doxygen Version: 1.6.1 IDV SV Filter Version: 2.6.2 Wed Feb 25 04:01:40 2015 |