Change latching behaviour of "last_word_in" latches
During testing a scenario arose, where a toggling in the last_word signal lane while the rest of the signals were not valid was falsely latched. All entities with "last_word_in" latches were modifies to only latch the signal when in valid state.
This commit is contained in:
parent
35baf341c7
commit
d2c0b37c27
@ -135,7 +135,7 @@ begin
|
|||||||
-- ###GENERATED END###
|
-- ###GENERATED END###
|
||||||
|
|
||||||
-- Last Word Latch Setter
|
-- Last Word Latch Setter
|
||||||
if (last_word_in = '1') then
|
if (last_word_in = '1' and valid_in = '1') then
|
||||||
last_word_in_latch_next <= '1';
|
last_word_in_latch_next <= '1';
|
||||||
end if;
|
end if;
|
||||||
|
|
||||||
|
|||||||
@ -161,7 +161,7 @@ begin
|
|||||||
-- ###GENERATED END###
|
-- ###GENERATED END###
|
||||||
|
|
||||||
-- Last Word Latch Setter
|
-- Last Word Latch Setter
|
||||||
if (last_word_in_dds = '1') then
|
if (last_word_in_dds = '1' and valid_in_dds = '1') then
|
||||||
last_word_in_latch_next <= '1';
|
last_word_in_latch_next <= '1';
|
||||||
end if;
|
end if;
|
||||||
|
|
||||||
|
|||||||
@ -131,7 +131,7 @@ begin
|
|||||||
-- ###GENERATED END###
|
-- ###GENERATED END###
|
||||||
|
|
||||||
-- Last Word Latch Setter
|
-- Last Word Latch Setter
|
||||||
if (last_word_in = '1') then
|
if (last_word_in = '1' and valid_in = '1') then
|
||||||
last_word_in_latch_next <= '1';
|
last_word_in_latch_next <= '1';
|
||||||
end if;
|
end if;
|
||||||
|
|
||||||
|
|||||||
@ -161,7 +161,7 @@ begin
|
|||||||
-- ###GENERATED END###
|
-- ###GENERATED END###
|
||||||
|
|
||||||
-- Last Word Latch Setter
|
-- Last Word Latch Setter
|
||||||
if (last_word_in_dds = '1') then
|
if (last_word_in_dds = '1' and valid_in_dds = '1') then
|
||||||
last_word_in_latch_next <= '1';
|
last_word_in_latch_next <= '1';
|
||||||
end if;
|
end if;
|
||||||
|
|
||||||
|
|||||||
@ -173,7 +173,7 @@ begin
|
|||||||
-- ###GENERATED END###
|
-- ###GENERATED END###
|
||||||
|
|
||||||
-- Last Word Latch Setter
|
-- Last Word Latch Setter
|
||||||
if (last_word_in = '1') then
|
if (last_word_in = '1' and valid_in = '1') then
|
||||||
last_word_in_latch_next <= '1';
|
last_word_in_latch_next <= '1';
|
||||||
end if;
|
end if;
|
||||||
|
|
||||||
|
|||||||
@ -490,7 +490,7 @@ begin
|
|||||||
-- ###GENERATED END###
|
-- ###GENERATED END###
|
||||||
|
|
||||||
-- Last Word Latch Setter
|
-- Last Word Latch Setter
|
||||||
if (last_word_in_dds = '1') then
|
if (last_word_in_dds = '1' and valid_in_dds = '1') then
|
||||||
last_word_in_latch_next <= '1';
|
last_word_in_latch_next <= '1';
|
||||||
end if;
|
end if;
|
||||||
|
|
||||||
|
|||||||
@ -201,7 +201,7 @@ begin
|
|||||||
-- ###GENERATED END###
|
-- ###GENERATED END###
|
||||||
|
|
||||||
-- Last Word Latch Setter
|
-- Last Word Latch Setter
|
||||||
if (last_word_in_r = '1') then
|
if (last_word_in_r = '1' and valid_in_r = '1') then
|
||||||
last_word_in_latch_next <= '1';
|
last_word_in_latch_next <= '1';
|
||||||
end if;
|
end if;
|
||||||
-- Data Available Setter
|
-- Data Available Setter
|
||||||
|
|||||||
@ -197,7 +197,7 @@ begin
|
|||||||
-- ###GENERATED END###
|
-- ###GENERATED END###
|
||||||
|
|
||||||
-- Last Word Latch Setter
|
-- Last Word Latch Setter
|
||||||
if (last_word_in_r = '1') then
|
if (last_word_in_r = '1' and valid_in_r = '1') then
|
||||||
last_word_in_latch_next <= '1';
|
last_word_in_latch_next <= '1';
|
||||||
end if;
|
end if;
|
||||||
-- Data Available Setter
|
-- Data Available Setter
|
||||||
|
|||||||
@ -197,7 +197,7 @@ begin
|
|||||||
-- ###GENERATED END###
|
-- ###GENERATED END###
|
||||||
|
|
||||||
-- Last Word Latch Setter
|
-- Last Word Latch Setter
|
||||||
if (last_word_in_r = '1') then
|
if (last_word_in_r = '1' and valid_in_r = '1') then
|
||||||
last_word_in_latch_next <= '1';
|
last_word_in_latch_next <= '1';
|
||||||
end if;
|
end if;
|
||||||
-- Data Available Setter
|
-- Data Available Setter
|
||||||
|
|||||||
@ -194,7 +194,7 @@ begin
|
|||||||
-- ###GENERATED END###
|
-- ###GENERATED END###
|
||||||
|
|
||||||
-- Last Word Latch Setter
|
-- Last Word Latch Setter
|
||||||
if (last_word_in_r = '1') then
|
if (last_word_in_r = '1' and valid_in_r = '1') then
|
||||||
last_word_in_latch_next <= '1';
|
last_word_in_latch_next <= '1';
|
||||||
end if;
|
end if;
|
||||||
-- Data Available Setter
|
-- Data Available Setter
|
||||||
|
|||||||
@ -193,7 +193,7 @@ begin
|
|||||||
-- ###GENERATED END###
|
-- ###GENERATED END###
|
||||||
|
|
||||||
-- Last Word Latch Setter
|
-- Last Word Latch Setter
|
||||||
if (last_word_in_r = '1') then
|
if (last_word_in_r = '1' and valid_in_r = '1') then
|
||||||
last_word_in_latch_next <= '1';
|
last_word_in_latch_next <= '1';
|
||||||
end if;
|
end if;
|
||||||
-- Data Available Setter
|
-- Data Available Setter
|
||||||
|
|||||||
@ -190,7 +190,7 @@ begin
|
|||||||
-- ###GENERATED END###
|
-- ###GENERATED END###
|
||||||
|
|
||||||
-- Last Word Latch Setter
|
-- Last Word Latch Setter
|
||||||
if (last_word_in_r = '1') then
|
if (last_word_in_r = '1' and valid_in_r = '1') then
|
||||||
last_word_in_latch_next <= '1';
|
last_word_in_latch_next <= '1';
|
||||||
end if;
|
end if;
|
||||||
-- Data Available Setter
|
-- Data Available Setter
|
||||||
|
|||||||
@ -147,7 +147,7 @@ begin
|
|||||||
-- ###GENERATED END###
|
-- ###GENERATED END###
|
||||||
|
|
||||||
-- Last Word Latch Setter
|
-- Last Word Latch Setter
|
||||||
if (last_word_in_dds = '1') then
|
if (last_word_in_dds = '1' and valid_in_dds = '1') then
|
||||||
last_word_in_latch_next <= '1';
|
last_word_in_latch_next <= '1';
|
||||||
end if;
|
end if;
|
||||||
-- Data Available Setter
|
-- Data Available Setter
|
||||||
|
|||||||
@ -190,7 +190,7 @@ begin
|
|||||||
-- ###GENERATED END###
|
-- ###GENERATED END###
|
||||||
|
|
||||||
-- Last Word Latch Setter
|
-- Last Word Latch Setter
|
||||||
if (last_word_in_r = '1') then
|
if (last_word_in_r = '1' and valid_in_r = '1') then
|
||||||
last_word_in_latch_next <= '1';
|
last_word_in_latch_next <= '1';
|
||||||
end if;
|
end if;
|
||||||
-- Data Available Setter
|
-- Data Available Setter
|
||||||
|
|||||||
@ -190,7 +190,7 @@ begin
|
|||||||
-- ###GENERATED END###
|
-- ###GENERATED END###
|
||||||
|
|
||||||
-- Last Word Latch Setter
|
-- Last Word Latch Setter
|
||||||
if (last_word_in_r = '1') then
|
if (last_word_in_r = '1' and valid_in_r = '1') then
|
||||||
last_word_in_latch_next <= '1';
|
last_word_in_latch_next <= '1';
|
||||||
end if;
|
end if;
|
||||||
-- Data Available Setter
|
-- Data Available Setter
|
||||||
|
|||||||
@ -192,7 +192,7 @@ begin
|
|||||||
-- ###GENERATED END###
|
-- ###GENERATED END###
|
||||||
|
|
||||||
-- Last Word Latch Setter
|
-- Last Word Latch Setter
|
||||||
if (last_word_in_dds = '1') then
|
if (last_word_in_dds = '1' and valid_in_dds = '1') then
|
||||||
last_word_in_latch_next <= '1';
|
last_word_in_latch_next <= '1';
|
||||||
end if;
|
end if;
|
||||||
-- Data Available Setter
|
-- Data Available Setter
|
||||||
|
|||||||
@ -199,7 +199,7 @@ begin
|
|||||||
-- ###GENERATED END###
|
-- ###GENERATED END###
|
||||||
|
|
||||||
-- Last Word Latch Setter
|
-- Last Word Latch Setter
|
||||||
if (last_word_in_r = '1') then
|
if (last_word_in_r = '1' and valid_in_r = '1') then
|
||||||
last_word_in_latch_next <= '1';
|
last_word_in_latch_next <= '1';
|
||||||
end if;
|
end if;
|
||||||
-- Data Available Setter
|
-- Data Available Setter
|
||||||
|
|||||||
@ -197,7 +197,7 @@ begin
|
|||||||
-- ###GENERATED END###
|
-- ###GENERATED END###
|
||||||
|
|
||||||
-- Last Word Latch Setter
|
-- Last Word Latch Setter
|
||||||
if (last_word_in_r = '1') then
|
if (last_word_in_r = '1' and valid_in_r = '1') then
|
||||||
last_word_in_latch_next <= '1';
|
last_word_in_latch_next <= '1';
|
||||||
end if;
|
end if;
|
||||||
-- Data Available Setter
|
-- Data Available Setter
|
||||||
|
|||||||
@ -236,7 +236,7 @@ begin
|
|||||||
-- ###GENERATED END###
|
-- ###GENERATED END###
|
||||||
|
|
||||||
-- Last Word Latch Setter
|
-- Last Word Latch Setter
|
||||||
if (last_word_in_r = '1') then
|
if (last_word_in_r = '1' and valid_in_r = '1') then
|
||||||
last_word_in_latch_next <= '1';
|
last_word_in_latch_next <= '1';
|
||||||
end if;
|
end if;
|
||||||
-- Data Available Setter
|
-- Data Available Setter
|
||||||
|
|||||||
@ -232,7 +232,7 @@ begin
|
|||||||
-- ###GENERATED END###
|
-- ###GENERATED END###
|
||||||
|
|
||||||
-- Last Word Latch Setter
|
-- Last Word Latch Setter
|
||||||
if (last_word_in_r = '1') then
|
if (last_word_in_r = '1' and valid_in_r = '1') then
|
||||||
last_word_in_latch_next <= '1';
|
last_word_in_latch_next <= '1';
|
||||||
end if;
|
end if;
|
||||||
-- Data Available Setter
|
-- Data Available Setter
|
||||||
|
|||||||
@ -271,7 +271,7 @@ begin
|
|||||||
-- ###GENERATED END###
|
-- ###GENERATED END###
|
||||||
|
|
||||||
-- Last Word Latch Setter
|
-- Last Word Latch Setter
|
||||||
if (last_word_in_r = '1') then
|
if (last_word_in_r = '1' and valid_in_r = '1') then
|
||||||
last_word_in_latch_next <= '1';
|
last_word_in_latch_next <= '1';
|
||||||
end if;
|
end if;
|
||||||
-- Data Available Setter
|
-- Data Available Setter
|
||||||
|
|||||||
@ -270,7 +270,7 @@ begin
|
|||||||
-- ###GENERATED END###
|
-- ###GENERATED END###
|
||||||
|
|
||||||
-- Last Word Latch Setter
|
-- Last Word Latch Setter
|
||||||
if (last_word_in_r = '1') then
|
if (last_word_in_r = '1' and valid_in_r = '1') then
|
||||||
last_word_in_latch_next <= '1';
|
last_word_in_latch_next <= '1';
|
||||||
end if;
|
end if;
|
||||||
-- Data Available Setter
|
-- Data Available Setter
|
||||||
|
|||||||
@ -254,7 +254,7 @@ begin
|
|||||||
-- ###GENERATED END###
|
-- ###GENERATED END###
|
||||||
|
|
||||||
-- Last Word Latch Setter
|
-- Last Word Latch Setter
|
||||||
if (last_word_in_dds = '1') then
|
if (last_word_in_dds = '1' and valid_in_dds = '1') then
|
||||||
last_word_in_latch_next <= '1';
|
last_word_in_latch_next <= '1';
|
||||||
end if;
|
end if;
|
||||||
-- Data Available Setter
|
-- Data Available Setter
|
||||||
|
|||||||
@ -852,7 +852,7 @@ begin
|
|||||||
data_out_sig <= (others => '0');
|
data_out_sig <= (others => '0');
|
||||||
|
|
||||||
-- Last Word Latch Setter
|
-- Last Word Latch Setter
|
||||||
if (last_word_in = '1') then
|
if (last_word_in = '1' and empty = '0') then
|
||||||
last_word_in_latch_next <= '1';
|
last_word_in_latch_next <= '1';
|
||||||
end if;
|
end if;
|
||||||
|
|
||||||
|
|||||||
@ -629,7 +629,7 @@ begin
|
|||||||
|
|
||||||
-- Last Word Latch Setter
|
-- Last Word Latch Setter
|
||||||
-- NOTE: Assumes meta and user traffic are not consumed concurrently
|
-- NOTE: Assumes meta and user traffic are not consumed concurrently
|
||||||
if (last_word_in_user = '1' or last_word_in_meta = '1') then
|
if ((last_word_in_user = '1' and empty_user /= (empty_user'range => '1')) or (last_word_in_meta = '1' and empty_meta /= (empty_meta'range => '1'))) then
|
||||||
last_word_in_latch_next <= '1';
|
last_word_in_latch_next <= '1';
|
||||||
end if;
|
end if;
|
||||||
|
|
||||||
|
|||||||
@ -671,7 +671,7 @@ begin
|
|||||||
|
|
||||||
-- Last Word Latch Setter
|
-- Last Word Latch Setter
|
||||||
-- NOTE: Assumes meta and user traffic are not consumed concurrently
|
-- NOTE: Assumes meta and user traffic are not consumed concurrently
|
||||||
if (last_word_in_user = '1' or last_word_in_meta = '1') then
|
if ((last_word_in_user = '1' and empty_user /= (empty_user'range => '1')) or (last_word_in_meta = '1' and empty_meta /= (empty_meta'range => '1'))) then
|
||||||
last_word_in_latch_next <= '1';
|
last_word_in_latch_next <= '1';
|
||||||
end if;
|
end if;
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user