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 ...@@ -200,7 +200,7 @@ architecture rtl of vme_data_bus is
LATCH_DATA, -- 6 LATCH_DATA, -- 6
BLT_READ_WAIT, -- 7 BLT_READ_WAIT, -- 7
BLT_WRITE_WAIT, -- 8 BLT_WRITE_WAIT, -- 8
IDLE_DELAY, -- 9 FIRE_DATA_STROBE, -- 9
TIMEOUT, -- 10 TIMEOUT, -- 10
TIMEOUT_WAIT, -- 11 TIMEOUT_WAIT, -- 11
BERR_HIGH_WAIT -- 12 BERR_HIGH_WAIT -- 12
...@@ -336,10 +336,10 @@ begin ...@@ -336,10 +336,10 @@ begin
if addr_mode = ADDR_ERR then if addr_mode = ADDR_ERR then
int_err_code <= c_ERR_ADDR_MODE; int_err_code <= c_ERR_ADDR_MODE;
state <= IDLE_DELAY; state <= FIRE_DATA_STROBE;
elsif transfer_mode = TRANSFER_ERR then elsif transfer_mode = TRANSFER_ERR then
int_err_code <= c_ERR_TRANSFER_MODE; int_err_code <= c_ERR_TRANSFER_MODE;
state <= IDLE_DELAY; state <= FIRE_DATA_STROBE;
else else
-- Table 2-4 and Table 2-29 -- Table 2-4 and Table 2-29
-- A[0] = LWORD* -- A[0] = LWORD*
...@@ -659,10 +659,12 @@ begin ...@@ -659,10 +659,12 @@ begin
-- are not working on behalf of the client. -- are not working on behalf of the client.
-- Delay return to IDLE. -- Delay firing of data strobe
when IDLE_DELAY => when FIRE_DATA_STROBE =>
state <= IDLE; state <= IDLE;
int_data_strobe <= c_DATA_PRESENT;
busy <= '0'; busy <= '0';
-- Timeout! Something is preventing the state machine -- Timeout! Something is preventing the state machine
-- from completing. Either an external error (e.g. a -- from completing. Either an external error (e.g. a
...@@ -737,7 +739,6 @@ begin ...@@ -737,7 +739,6 @@ begin
if (last_ds_n /= vme_ds_n_i or -- if (last_ds_n /= vme_ds_n_i or --
state = IDLE or state = IDLE or
state = IDLE_DELAY or
state = TIMEOUT or state = TIMEOUT or
state = TIMEOUT_WAIT or state = TIMEOUT_WAIT or
state = BERR_HIGH_WAIT) then state = BERR_HIGH_WAIT) then
...@@ -848,14 +849,14 @@ begin ...@@ -848,14 +849,14 @@ begin
-- psl when_unsupported_addr_mode_issue_error_code: -- psl when_unsupported_addr_mode_issue_error_code:
-- assert always {state = IDLE and int_vme_go = '1' and addr_mode = ADDR_ERR} -- assert always {state = IDLE and int_vme_go = '1' and addr_mode = ADDR_ERR}
-- |=> int_err_code = c_ERR_ADDR_MODE -- |=> int_err_code = c_ERR_ADDR_MODE
-- and state = IDLE_DELAY; -- and state = FIRE_DATA_STROBE;
-- psl when_unsupported_transfer_mode_issue_error_code: -- psl when_unsupported_transfer_mode_issue_error_code:
-- assert always {state = IDLE and int_vme_go = '1' -- assert always {state = IDLE and int_vme_go = '1'
-- and transfer_mode = TRANSFER_ERR -- and transfer_mode = TRANSFER_ERR
-- and addr_mode /= ADDR_ERR} -- and addr_mode /= ADDR_ERR}
-- |=> int_err_code = c_ERR_TRANSFER_MODE -- |=> int_err_code = c_ERR_TRANSFER_MODE
-- and state = IDLE_DELAY; -- and state = FIRE_DATA_STROBE;
-- -- If DTACK* is LOW after AS_DELAY, -- -- If DTACK* is LOW after AS_DELAY,
-- -- then we must wait for data lines to clear. -- -- then we must wait for data lines to clear.
......
Supports Markdown
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