Неустранимый: (SIGSEGV) Плохая ручка или ссылка, Ошибка - PullRequest
0 голосов
/ 30 апреля 2020

во время выполнения моего кода у меня есть фатальная ошибка в коде элемента последовательности:

Fatal: (SIGSEGV) Плохая ручка или ссылка. Время: 7 нс. Итерация: 1 Процесс: / uvm_pkg :: uvm_task_phase :: execute / # FORK # 137 (# ublk # 215181159 # 137) _4f630787 Файл: SB.sv
Фатальная ошибка в функции top_sv_unit / _seq_item :: отобразить в SEQ_ITEM.sv строка 61

Код позиции последовательности указан ниже:

typedef enum{
    aw_phase,
    w_phase,
    b_phase,
    ar_phase,
    r_phase
} phases;

class _seq_item extends uvm_sequence_item;
`uvm_object_utils(_seq_item)

    phases phase1; 
    rand logic [3:0]awid;
    rand logic [31:0]awaddr;
    rand logic [7:0]awlen;
    rand logic [2:0]awsize;
    rand logic [1:0]awburst;
    rand logic [1:0]awlock;
    rand logic [3:0]awcache;
    rand logic [2:0]awprot;

    //write_data_phase
    rand logic [3:0]wid;
    randc logic [31:0]wdata[15:0];
    rand logic [3:0]wstrb[15:0];
    rand logic wlast;

    //write_resp_phase
    rand logic [3:0] bid;
    rand logic [1:0] bresp;

    //read_address_phase
    rand logic [3:0]arid;
    rand logic [31:0]araddr;
    rand logic [7:0]arlen;
    rand logic [2:0]arsize;
    rand logic [1:0]arburst;
    rand logic [1:0]arlock;
    rand logic [3:0]arcache;
    rand logic [2:0]arprot;


    //read_data_phase
     rand logic [3:0]rid;
     logic [31:0]rdata[15:0];
    rand logic [1:0]rresp;
     logic rlast;

function void display();
    string s="asd";
$display("____________%s__________",s);
if(phase1 == aw_phase)begin //line 61

    $display("phase=awphase");
    $display("awid = %d",awid);
    $display("awaddr = %d",awaddr);
    $display("awlen = %h",awlen);
    $display("awsize = %h",awsize);
    $display("awburst = %h",awburst);
    $display("awlock = %h",awlock);
    $display("awcache = %h",awcache);
    $display("awprot = %h",awprot);
    end
    else if(phase1 == w_phase)begin

    $display("phase=wphase");
    $display("wid = %h",wid);
    $display("wdata = %p",wdata);
    $display("wstrb = %p",wstrb);
    $display("wlast = %h",wlast);
    end
    else if(phase1 == b_phase)begin
    $display("phase=bphase");
    $display("bid = %h",bid);
    $display("bresp = %h",bresp);
    end
    if(phase1 == ar_phase)begin
    $display("phase=arphase");
    $display("arid = %h",arid);
    $display("araddr = %d",araddr);
    $display("arlen = %h",arlen);
    $display("arsize = %h",arsize);
    $display("arburst = %h",arburst);
    $display("arlock = %h",arlock);
    $display("arcache = %h",arcache);
    $display("arprot = %h",arprot);
    end
    else if(phase1 == r_phase)begin
    $display("phase=rphase");
    $display("rid = %h",rid);
    $display("rdata = %p",rdata);
    $display("rresp = %p",rresp);
    $display("rlast = %h",rlast);
    end
endfunction

endclass
...