Skip to main content

Module hash_table

Module hash_table 

Source
Expand description

Transactional cuckoo table, nine true synchronous RAM banks of 64 entries. Transactions are serialized; responses hold until consumed. Reset discards all in-flight work and scrubs every RAM address before accepting another request.

The central invariant is that no request can observe an unfinished eviction. A successful insertion keeps its writes; an exhausted insertion restores every overwritten entry before publishing failure. Holding the response also holds off the next request, which makes the transaction boundary clear.

State encoding: 0 scrub, 1 idle/admit, 2 launch RAM addresses, 3 inspect RAM results, 4 undo one journal entry. New requests launch their RAM addresses on admission. Evicted victims still use state 2 to launch their new address. Reset clears the table; it does not restore a persistent pre-reset snapshot.

Transfers occur on rising edges with valid and ready asserted. Producers retain valid and payload until transfer. Simultaneous lookup/update requests alternate admission preference; a stalled response blocks further admission. Reset suppresses request and response handshakes.

Structs§

Entry
One physical RAM entry; key and value are meaningful only while valid.
HashTable
Nine 64-entry synchronous RAM banks with key64/value16 and bounded insertion. Reset scrubs all contents. Failed insertion rolls back before reporting failure.
HashTableIn
Requests and response-consumer readiness for the serialized table.
HashTableOut
Admission readiness, held responses, and reset/diagnostic status.
LookupReq
One lookup; hold its fields until valid && lookup_request_ready.
LookupResp
A held result. A miss always returns value zero; consult hit to distinguish that miss from a stored zero value.
Registers
Transaction controller state, including the twelve-entry undo journal.
Undo
The old contents of one physical location, recorded before overwriting it. Repeated locations remain separate records because rollback is ordered.
UpdateReq
op=0 upsert, op=1 delete. This is a semantic API, not HLS enum packing.
UpdateResp
Upsert success means the entry is installed. Delete success means an entry existed. Failed upsert means all eviction writes have already been undone.

Functions§

hash_table_kernel
Advance admission, synchronous RAM access, or one rollback step. Decisions read the registered snapshot; writes describe the next edge.