Expanded versions of source files are the output of the preprocessor. Lines subject to conditional compilation are not shown and all compiler pragmas have been stripped. Macros have been completely expanded.
std_lib/xvc_manager.sv unexpanded source
00001: // 00002: // ------------------------------------------------------------- 00003: // Copyright 2004-2008 Synopsys, 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: 00022: 00023: 00024: function xvc_manager::new(string inst); 00025: this.log = new("XVC Manager", inst); 00026: this.trace = new("XVC Manager Trace", inst); 00027: this.notify = new(this.log); 00028: endfunction: new 00029: 00030: 00031: function bit xvc_manager::add_xvc(xvc_xactor xvc); 00032: // Has it already been added? 00033: foreach (this.xvcQ[i]) begin 00034: if (this.xvcQ[i] == xvc) begin 00039: : do : if (this.log.start_msg(vmm_log::FAILURE_TYP, vmm_log::ERROR_SEV)) begin : void'(this.log.text($psprintf("XVC %s(%s) has already been added", : xvc.get_name(), : xvc.get_instance()))); : this.log.end_msg(); : end : while (0); 00040: return 0; 00041: end 00042: end 00043: 00044: this.xvcQ.push_back(xvc); 00045: add_xvc = 1; 00046: endfunction: add_xvc 00047: 00048: 00049: function bit xvc_manager::remove_xvc(xvc_xactor xvc); 00050: foreach (this.xvcQ[i]) begin 00051: if (this.xvcQ[i] == xvc) begin 00052: this.xvcQ.delete(i); 00053: return 1; 00054: end 00055: end 00056: 00061: : do : if (this.log.start_msg(vmm_log::FAILURE_TYP, vmm_log::ERROR_SEV)) begin : void'(this.log.text($psprintf("XVC %s(%s) is unknown", : xvc.get_name(), : xvc.get_instance()))); : this.log.end_msg(); : end : while (0); 00062: remove_xvc = 0; 00063: endfunction: remove_xvc 00064: 00065: 00066: function bit xvc_manager::split(string command, 00067: ref string argv[]); 00068: string pre; 00069: string post; 00070: string tok[$]; 00071: 00072: split = 1; 00073: 00074: //some basic checks on inputs 00075: if (command.len() == 0) begin 00076: argv.delete(); 00077: return 0; 00078: end 00079: 00080: post = command; 00081: forever begin 00082: if (vmm_str_match(post, "[ ]+")) begin 00083: pre = vmm_str_prematch(); 00084: post = vmm_str_postmatch(); 00085: if (pre.len() != 0) begin 00086: // Only add the token if non-empty to strip leading blanks 00087: tok.push_back(pre); 00088: end 00089: end else begin 00090: //if no further matches, put in the last match if it's non-zero len 00091: if (post.len() > 0) begin 00092: tok.push_back(post); 00093: end 00094: break; 00095: end 00096: end 00097: 00098: argv = new [tok.size()]; 00099: foreach (tok[i]) begin 00100: argv[i] = tok[i]; 00101: end 00102: endfunction: split