Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Hash engines

SHA-256 performance lane

One CompressionLane contains a 64-stage round pipeline. Each accepted token carries:

  • eight working words;
  • a sixteen-word rolling message-schedule window;
  • the original chaining value for feed-forward;
  • a 32-bit opaque task tag; and
  • a valid bit.

The original chaining value is aligned in synchronous memory while the round state moves through the pipeline. A valid result appears after exactly 64 cycles. Reset clears validity and due ownership; wide datapath registers are intentionally resetless where validity makes their contents unobservable.

ThreeLaneCompressionFarm is a standalone generation and equivalence target: it elaborates three independent lane instances from one repeated RHDL prototype and can exercise all three in parallel. It is not instantiated by the production signer.

The production signer instead has three autonomous four-context clusters. Each cluster owns one complete compression lane shared by its four contexts, for three independent lane instances in the authored hierarchy. A single textual lane-module definition does not establish mapped hardware. Only synthesis can report the physical resource implementation.

Legacy Keccak compatibility engine

The legacy profile uses Keccak-256 with a 136-byte rate and 0x01 domain byte. The area-oriented IterativeKeccak stores one 1,600-bit state and applies one of 24 rounds per cycle. Complete combinational round and permutation exports exist as correctness or lowering artifacts, not as the selected high-throughput architecture.

SHA3-256 uses a different domain encoding and produces unrelated digests. A refactor must never replace legacy Keccak with SHA3 under the same profile name.

DSP interpretation

Source annotations and arithmetic structure may encourage DSP inference, but a DSP count is a synthesis result. Generated Verilog simulation cannot establish whether Vivado maps additions, schedule arithmetic, or other operations into DSP48E2 blocks.