`ifndef scoreboard
`define scoreboard
import uvm_pkg::*;
`include"uvm_macros.svh"
`include "w_trans.sv"
`include"r_trans.sv"
`include"env_config.sv"
class scoreboard extends uvm_scoreboard;
`uvm_component_utils(scoreboard)
w_trans wtdata;
r_trans rtdata;
env_config ecfg;
uvm_tlm_analysis_fifo#(w_trans) fifo_wr;
uvm_tlm_analysis_fifo#(r_trans) fifo_rd;
//w_trans cov_data;
//covergroup sram_coverage;
//
//OE_N: coverpoint cov_data.oe_n{
// bins HIGH={1};
// bins LOW={0};
// }
//
//
//WE_N: coverpoint cov_data.we_n{
//
// bins HIGH={1};
// bins LOW={0};
// }
//CE_N: coverpoint cov_data.ce_n{
//
// bins HIGH={1};
// bins LOW={0};
// }
//
//LB_N:coverpoint cov_data.lb_n{
//
// bins HIGH={1};
// bins LOW={0};
// }
//
//UB_N:coverpoint cov_data.ub_n{
//
// bins HIGH={1};
// bins LOW={0};
// }
//
//
//ADDR:coverpoint cov_data.addr{
// bins LOW={[0:7]};
// bins HIGH={8:12]};
// bins HIGHEST={13:19]};
// }
//
//
//DATA:coverpoint cov_data.data_in{
//
// bins LOW={[0:8]};
// bins HIGH{[9:15]};
// }
//
//
//
// endgroup
extern function new(string name="scoreboard",uvm_component parent);
extern function void build_phase (uvm_phase phase);
//extern task run_phase(uvm_phase phase);
//extern function void check_data(w_trans wtdata, r_trans rtdata);
endclass
//New construct
function scoreboard::new(string name="scoreboard",uvm_component parent);
super.new(name,parent);
//cov_data=new();
//sram_coverage=new;
endfunction
// Build Phase
function void scoreboard::build_phase(uvm_phase phase);
super.build_phase(phase);
if(!uvm_config_db#(env_config)::get(this,"","env_config",ecfg))
`uvm_fatal("TB_CONFIG","can not get() ecfg from uvm_config")
fifo_wr=new[ecfg.no_wr_agent];
fifo_rd=new[ecfg.no_rd_agent];
foreach(fifo_wr[i])
fifo_wr[i]=new($sformatf("fifo_wr[%0d]",i)); ////////////// ERROR ERROR ERROR
foreach(fifo_rd[i])
fifo_rd[i]=new($sformatf("fifo_wr[%0d]",i));
endfunction
//RUN PHASE
//task scoreboard:run_phase(uvm_phase phase);
//fork
// forever
// begin
// foreach(fifo_wr[i])
// begin
// fifo_wr.get(wtdata);
// wtdata.print;
// //cov_data=wtdata;
// //cov_data.sample();
// end
// end
//
//
// forever
// begin
// fifo_rd[wtdata].get(rtdata)
// rtdata.print;
// check_data.(wtdata,rtdata);
// end
//join
//endtask
//
//
///// CHECK TASK
//
//function void scoreboard::check_data(w_trans wtdata, r_trans rtdata);
//
//
//if(wtdata.data_out != rtdata.data_out)
//
//begin
//
// `uvm_info("==================== DATA_OUT NOT MATCHED============","KKKKSSSS",UVM_LOW);
// $finish
//end
//
//else
//
// `uvm_info("==SCOREBOARD SUCESSFULLY_COMPARED============","KKKKSSSS",UVM_LOW);
// $finish
//endfunction
//
`endif
//////////////////////////////////////////// ERROR////////////////////////
** Error: C:/Users/BAVITH KUMAR/Desktop/SRAM_UVM/scoreboard.sv(108): Unsupported context for “new”; cannot determine object type
** Error: C:/Users/BAVITH KUMAR/Desktop/SRAM_UVM/scoreboard.sv(175): Verilog Compiler exiting