⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 test_lib.sv

📁 Open Verification Methodology
💻 SV
字号:
// $Id: //dvt/vtech/dev/main/ovm/examples/xbus/examples/test_lib.sv#4 $//----------------------------------------------------------------------//   Copyright 2007-2008 Mentor Graphics Corporation//   Copyright 2007-2008 Cadence Design Systems, 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.//----------------------------------------------------------------------`include "xbus_demo_sve.sv"// Base Testclass xbus_demo_base_test extends ovm_test;  `ovm_component_utils(xbus_demo_base_test)  xbus_demo_sve xbus_demo_sve0;  ovm_table_printer printer;  function new(string name = "xbus_demo_base_test",     ovm_component parent=null);    super.new(name,parent);    printer = new();  endfunction : new  virtual function void build();    super.build();    // Create the sve    $cast(xbus_demo_sve0, create_component("xbus_demo_sve", "xbus_demo_sve0"));    xbus_demo_sve0.build();    // Set verbosity for the bus monitor    xbus_demo_sve0.xbus0.bus_monitor.set_report_verbosity_level(OVM_FULL);  endfunction : build  task run();    printer.knobs.depth = 3;    ovm_print_topology(printer);    #2000;    `message(OVM_LOW,("User activated end of simulation"))    global_stop_request();  endtask : runendclass : xbus_demo_base_test// Read Modify Write Read Testclass test_read_modify_write extends xbus_demo_base_test;  `ovm_component_utils(test_read_modify_write)  function new(string name = "test_read_modify_write", ovm_component parent=null);    super.new(name,parent);  endfunction : new  virtual function void build();    // Set the default sequence for the master and slave    set_config_string("xbus_demo_sve0.xbus0.masters[0].sequencer",      "default_sequence", "read_modify_write_seq");    set_config_string("xbus_demo_sve0.xbus0.slaves[0].sequencer",       "default_sequence", "slave_memory_seq");    // Create the sve    super.build();  endfunction : buildendclass : test_read_modify_write// Large word read/write testclass test_r8_w8_r4_w4 extends xbus_demo_base_test;  `ovm_component_utils(test_r8_w8_r4_w4)  function new(string name = "test_r8_w8_r4_w4", ovm_component parent=null);    super.new(name,parent);  endfunction : new  virtual function void build();    // Set the default sequence for the master and slave    set_config_string("xbus_demo_sve0.xbus0.masters[0].sequencer",       "default_sequence", "r8_w8_r4_w4_seq");    set_config_string("xbus_demo_sve0.xbus0.slaves[0].sequencer",       "default_sequence", "slave_memory_seq");    // Create the sve    super.build();  endfunction : buildendclass// 2 Master, 4 Slave testclass test_2m_4s extends xbus_demo_base_test;  `ovm_component_utils(test_2m_4s)  function new(string name = "test_2m_4s", ovm_component parent=null);    super.new(name,parent);  endfunction : new  virtual function void build();    // Set the topology to 2 masters, 4 slaves    set_config_int("xbus_demo_sve0.xbus0", "num_masters", 2);    set_config_int("xbus_demo_sve0.xbus0", "num_slaves", 4);    // Set the default sequence for the master and slave    set_config_string("xbus_demo_sve0.xbus0.m*.sequencer",       "default_sequence", "loop_read_modify_write_seq");    set_config_string("xbus_demo_sve0.xbus0.s*.sequencer",       "default_sequence", "slave_memory_seq");    // Control the number of RMW loops    set_config_int("xbus_demo_sve0.xbus0.masters[0].sequencer",      "loop_read_modify_write_seq.itr", 4);    set_config_int("xbus_demo_sve0.xbus0.masters[1].sequencer",      "loop_read_modify_write_seq.itr", 3);    // Create the sve    super.build();    // Set up slave address map for xbus0    xbus_demo_sve0.xbus0.set_slave_address_map("slaves[0]", 16'h0000, 16'h3fff);    xbus_demo_sve0.xbus0.set_slave_address_map("slaves[1]", 16'h4000, 16'h7fff);    xbus_demo_sve0.xbus0.set_slave_address_map("slaves[2]", 16'h8000, 16'hBfff);    xbus_demo_sve0.xbus0.set_slave_address_map("slaves[3]", 16'hC000, 16'hFfff);    // Connect other slaves monitor to scoreboard    xbus_demo_sve0.xbus0.slaves[1].monitor.item_collected_port.connect(      xbus_demo_sve0.scoreboard0.item_collected_imp);    xbus_demo_sve0.xbus0.slaves[2].monitor.item_collected_port.connect(      xbus_demo_sve0.scoreboard0.item_collected_imp);    xbus_demo_sve0.xbus0.slaves[3].monitor.item_collected_port.connect(      xbus_demo_sve0.scoreboard0.item_collected_imp);  endfunction : buildendclass

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -