ATG expects the application interface to accept a command within a certain wait time. ATG also looks for the application interface to return data within a certain wait time after a read command is issued. If either case is violated, ATG flags a Watchdog Hang.
When WatchDogHang
is asserted, if
vio_tg_status_state
is in “*Wait” states, ATG is
waiting for read data return. If vio_tg_status_state
is in “Exe” state, ATG is waiting for the application interface to accept the next
command.
Example 3: The following example shows that ATG asserts WatchDogHang
. This example shares the same VIO control setting as
Example 2. In this example, ATG vio_tg_status_state
shows a
“DNWait” state. Hence, ATG is waiting for read data return.
To further debug, vio_tg_instr_data_mode
is updated to Linear data for better
understanding in data return sequence.
.vio_tg_err_chk_en (1'b0), // Powers on Error Type Check
.vio_tg_direct_instr_en (1'b1), // Powers on Direct Instruction Mode
.vio_tg_instr_num (5'b00000),
.vio_tg_instr_addr_mode (TG_PATTERN_MODE_LINEAR),
.vio_tg_instr_data_mode (TG_PATTERN_MODE_LINEAR),
.vio_tg_instr_rw_mode (TG_RW_MODE_WRITE_READ),
.vio_tg_instr_rw_submode (2'b00),
.vio_tg_instr_victim_mode (TG_VICTIM_MODE_NO_VICTIM),
.vio_tg_instr_victim_select (3'b000),
.vio_tg_instr_victim_aggr_delay (5'd0),
.vio_tg_instr_num_of_iter (32'd1000),
.vio_tg_instr_m_nops_btw_n_burst_m (10'd0),
.vio_tg_instr_m_nops_btw_n_burst_n (32'd10),
.vio_tg_instr_nxt_instr (6’d0),
With Linear data, the following figure shows that when an error is detected,
read data (vio_tg_status_read_bit
) is one request
ahead of expected data (vio_tg_status_exp_bit
). One
possibility is read command with address 0x1B0
is
dropped. Hence, the next returned data with read address 0x1B8
is being compared against the expected data of read address
0x1B0
.