Commit 475ab6f8 authored by Michael Munch's avatar Michael Munch
Browse files

Fire data strobe when ADDR_ERR or TRANSFER_ERR

parent 214f5552
Pipeline #26422 failed with stage
in 38 seconds
......@@ -200,7 +200,7 @@ architecture rtl of vme_data_bus is
LATCH_DATA, -- 6
BLT_READ_WAIT, -- 7
BLT_WRITE_WAIT, -- 8
IDLE_DELAY, -- 9
FIRE_DATA_STROBE, -- 9
TIMEOUT, -- 10
TIMEOUT_WAIT, -- 11
BERR_HIGH_WAIT -- 12
......@@ -336,10 +336,10 @@ begin
if addr_mode = ADDR_ERR then
int_err_code <= c_ERR_ADDR_MODE;
state <= IDLE_DELAY;
state <= FIRE_DATA_STROBE;
elsif transfer_mode = TRANSFER_ERR then
int_err_code <= c_ERR_TRANSFER_MODE;
state <= IDLE_DELAY;
state <= FIRE_DATA_STROBE;
else
-- Table 2-4 and Table 2-29
-- A[0] = LWORD*
......@@ -659,10 +659,12 @@ begin
-- are not working on behalf of the client.
-- Delay return to IDLE.
when IDLE_DELAY =>
-- Delay firing of data strobe
when FIRE_DATA_STROBE =>
state <= IDLE;
int_data_strobe <= c_DATA_PRESENT;
busy <= '0';
-- Timeout! Something is preventing the state machine
-- from completing. Either an external error (e.g. a
......@@ -737,7 +739,6 @@ begin
if (last_ds_n /= vme_ds_n_i or --
state = IDLE or
state = IDLE_DELAY or
state = TIMEOUT or
state = TIMEOUT_WAIT or
state = BERR_HIGH_WAIT) then
......@@ -848,14 +849,14 @@ begin
-- psl when_unsupported_addr_mode_issue_error_code:
-- assert always {state = IDLE and int_vme_go = '1' and addr_mode = ADDR_ERR}
-- |=> int_err_code = c_ERR_ADDR_MODE
-- and state = IDLE_DELAY;
-- and state = FIRE_DATA_STROBE;
-- psl when_unsupported_transfer_mode_issue_error_code:
-- assert always {state = IDLE and int_vme_go = '1'
-- and transfer_mode = TRANSFER_ERR
-- and addr_mode /= ADDR_ERR}
-- |=> int_err_code = c_ERR_TRANSFER_MODE
-- and state = IDLE_DELAY;
-- and state = FIRE_DATA_STROBE;
-- -- If DTACK* is LOW after AS_DELAY,
-- -- then we must wait for data lines to clear.
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment