Specman - Ошибка: невозможно получить доступ к нулевому выражению порта

У меня есть монитор со следующими полями/событиями: uart_env.e:

unit uart_monitor_u like uvm_monitor{
   smp : uart_signal_map_u; //ptr to smp
   keep smp  == get_enclosing_unit(uart_env_u).smp;
   kind : uart_monitor_u_kind_t; 

};

uart_monitor.e:

extend uart_monitor_u{
   !port_data_b : inout simple_port of bit; -- pointer to the data-bit port
   event clk_e is rise (smp.port_uart_clk$) @sim;
   event data_deassert is fall (port_data_b$) @uart_clk_e;
   .......
   .......
};

uart_rx_monitor.e:

extend RX uart_monitor_u{
   keep soft port_data_b == smp.port_rxdi;
   .....
   .....
};

uart_types.e:

type uart_monitor_u_kind_t: [ RX, TX ];

uart_signal_map.e:

extend uart_signal_map_u {

    p_def port_uart_clk           bit;
    p_def port_uart_clk_period    real;
    p_def port_resetn             bit;

    p_def port_br_clk_period      real;
    p_def port_uart_int           bit;  
    p_def port_txdo               bit;   

    p_def port_rxdi               bit;
    ......
    ...... 
};

Порядок компиляции соответствующего файла:

import uart_types;
import uart_env;
import uart_monitor;
import uart_rx_monitor;

По какой-то причине я получил следующую ошибку при попытке компиляции: *** Ошибка: невозможно получить доступ к нулевому выражению порта. в строке 22 в @uart_monitor событие data_deassert — это падение (port_data_b$) @uart_clk_e;


person Sara p    schedule 26.02.2018    source источник


Ответы (1)


указатель port_data_b помечен как не генерируемый. поэтому он остается NULL. попробуй убрать "!" от него

person user3467290    schedule 27.02.2018