core/arp: Simplify FSM CHECK_TABLE state.

This commit is contained in:
Florent Kermarrec 2023-07-31 12:04:34 +02:00
parent f33d5b5959
commit 4327adcab4
1 changed files with 10 additions and 15 deletions

View File

@ -204,7 +204,9 @@ class LiteEthARPTable(LiteXModule):
NextState("SEND_REPLY") NextState("SEND_REPLY")
).Elif(sink.valid & sink.reply & request_pending, ).Elif(sink.valid & sink.reply & request_pending,
NextState("UPDATE_TABLE"), NextState("UPDATE_TABLE"),
).Elif(request.valid | self.request_timer.done, ).Elif(request.valid,
NextState("CHECK_TABLE")
).Elif(self.request_timer.done,
NextState("CHECK_REQUEST") NextState("CHECK_REQUEST")
) )
) )
@ -220,7 +222,7 @@ class LiteEthARPTable(LiteXModule):
fsm.act("UPDATE_TABLE", fsm.act("UPDATE_TABLE",
NextValue(request_pending, 0), NextValue(request_pending, 0),
cached_update.eq(1), cached_update.eq(1),
NextState("CHECK_REQUEST") NextState("CHECK_TABLE")
) )
fsm.act("CHECK_REQUEST", fsm.act("CHECK_REQUEST",
If(request_counter == (max_requests - 1), If(request_counter == (max_requests - 1),
@ -233,11 +235,10 @@ class LiteEthARPTable(LiteXModule):
) )
) )
fsm.act("CHECK_TABLE", fsm.act("CHECK_TABLE",
If(cached_valid, If(cached_valid & (request_ip_address == cached_ip_address),
If(request_ip_address == cached_ip_address,
NextValue(request_ip_address, 0), NextValue(request_ip_address, 0),
NextState("PRESENT_RESPONSE"), NextState("PRESENT_RESPONSE"),
).Elif(request.ip_address == cached_ip_address, ).Elif(cached_valid & (request.ip_address == cached_ip_address),
request.ready.eq(request.valid), request.ready.eq(request.valid),
NextState("PRESENT_RESPONSE"), NextState("PRESENT_RESPONSE"),
).Else( ).Else(
@ -246,12 +247,6 @@ class LiteEthARPTable(LiteXModule):
), ),
NextState("SEND_REQUEST") NextState("SEND_REQUEST")
) )
).Else(
If(request.valid,
NextValue(request_ip_address, request.ip_address),
),
NextState("SEND_REQUEST")
)
) )
fsm.act("SEND_REQUEST", fsm.act("SEND_REQUEST",
source.valid.eq(1), source.valid.eq(1),