drbg_csrng_seed_adapter
Pack 32-bit entropy words into queued 384-bit CSRNG seeds.
Uses prim_packer_fifo to accumulate twelve 32-bit words into one 384-bit seed with the required lane mapping, then stores complete {es_fips, es_bits} entries in a small same-clock FIFO. The wrapped CSRNG consumes queued entries through the native entropy_src_hw_if_req_t / entropy_src_hw_if_rsp_t interface.
Parameters
| Name | Type | Default | Description |
|---|---|---|---|
SEED_FIFO_DEPTH | int unsigned | DrbgDefaultSeedFifoDepth | Number of complete seeds that can be queued. |
Ports
| Name | Direction | Type | Description |
|---|---|---|---|
clk_i | input | logic | System clock. |
rst_ni | input | logic | Async reset, active-low. |
csrng_word_valid_i | input | logic | Incoming entropy-word valid. |
csrng_word_data_i | input | logic [31:0] | Incoming 32-bit entropy word. |
csrng_word_ready_o | output | logic | Packer ready for a word; low while the packer holds a complete seed that the seed FIFO has not accepted. |
entropy_src_hw_if_req_i | input | entropy_src_pkg::entropy_src_hw_if_req_t | CSRNG seed-request handshake. |
entropy_src_hw_if_rsp_o | output | entropy_src_pkg::entropy_src_hw_if_rsp_t | CSRNG seed response with bits and fips; es_ack is combinational, high when es_req is high and a seed is queued. |
seed_queue_valid_o | output | logic | Seed FIFO not empty. |
seed_queue_bits_o | output | logic [383:0] | Next queued 384-bit seed; zero when the FIFO is empty. |
seed_queue_fips_o | output | logic | FIPS flag for the next seed, the provisional policy constant DrbgCsrngSeedFipsProvisional; zero when the FIFO is empty. |
seed_push_o | output | logic | Pulse when a seed is pushed. |
packer_word_count_o | output | logic [4:0] | Words accumulated in the packer, 0 to 12. |
seed_queue_depth_o | output | logic [$clog2(SEED_FIFO_DEPTH + 1)-1:0] | Current seed-FIFO fill. |