Hi,
can any one help me to run one uvm example in questa.
- already i installed questa 10.0b version.
- i downloaded packages from accelara and put it in directory
C:\questasim_10.0b\uvm_1.1d - the following files are also there in the same directory
C:\questasim_10.0b\uvm_1.0p1
\uvm_1.0-EA
4)the following example i want to run
// FILE NAME : sequence_item.sv
class instruction extends uvm_sequence_item;
typedef enum {PUSH_A,PUSH_B,ADD,SUB,MUL,DIV,POP_C} inst_t;
rand inst_t inst;
uvm_object_utils_begin(instruction)
uvm_field_enum(inst_t,inst, UVM_ALL_ON)
`uvm_object_utils_end
function new (string name = “instruction”);
super.new(name);
endfunction
endclass
// FILE NAME : producer
class producer extends uvm_component;
uvm_blocking_get_imp#(instruction,producer) get_port;
function new(string name, uvm_component p = null);
super.new(name,p);
get_port = new("get_port", this);
endfunction
task get(ref instruction inst);
inst = new();
if(inst.randomize()) begin
`uvm_info("producer", $sformatf("sending ",inst.inst.name()), UVM_MEDIUM)
end
endtask
endclass : producer
//FILE NAME: consumer.sv
class consumer extends uvm_component;
uvm_blocking_get_port#(instruction) get_port;
function new(string name, uvm_component p = null);
super.new(name,p);
get_port = new("get_port", this);
endfunction
task run();
for(int i = 0 ; i < 10; i++ )begin
instruction inst;
get_port.get(inst);
`uvm_info("consumer", $sformatf("receiving ",inst.inst.name()), UVM_MEDIUM)
//push the transaction into queue or array
//or drive the transaction to next levelt
//or drive to interface
end
endtask
endclass : consumer
//FILE NAME: ENV.SV
`include “uvm.svh”
import uvm_pkg::*;
include "sequence_item.sv"
include “consumer.sv”
`include “producer.sv”
class env extends uvm_env;
producer p;
consumer c;
function new(string name = "env");
super.new(name);
p = new("producer", this);
c = new("consumer", this);
endfunction
function void connect();
c.get_port.connect(p.get_port);
endfunction
task run();
#1000;
global_stop_request();
endtask
endclass
module test;
env e;
initial begin
e = new();
run_test();
end
endmodule