Entity: csrng_ctr_drbg_gen
- File: csrng_ctr_drbg_gen.sv
Diagram
Description
Copyright lowRISC contributors. Licensed under the Apache License, Version 2.0, see LICENSE for details. SPDX-License-Identifier: Apache-2.0
Description: csrng ctr_drbg generate module
This module will process the second half of the generate function. It takes in the key, v, and reseed counter values processed by the ctr_drbg cmd module.
Generics
Generic name | Type | Value | Description |
---|---|---|---|
Cmd | int | 3 | |
StateId | int | 4 | |
BlkLen | int | 128 | |
KeyLen | int | 256 | |
SeedLen | int | 384 | |
CtrLen | int | 32 |
Ports
Port name | Direction | Type | Description |
---|---|---|---|
clk_i | input | ||
rst_ni | input | ||
ctr_drbg_gen_enable_i | input | command interface | |
ctr_drbg_gen_req_i | input | ||
ctr_drbg_gen_rdy_o | output | ready to process the req above | |
ctr_drbg_gen_ccmd_i | input | [Cmd-1:0] | current command |
ctr_drbg_gen_inst_id_i | input | [StateId-1:0] | instantance id |
ctr_drbg_gen_glast_i | input | gen cmd last beat | |
ctr_drbg_gen_fips_i | input | fips | |
ctr_drbg_gen_adata_i | input | [SeedLen-1:0] | additional data |
ctr_drbg_gen_key_i | input | [KeyLen-1:0] | |
ctr_drbg_gen_v_i | input | [BlkLen-1:0] | |
ctr_drbg_gen_rc_i | input | [CtrLen-1:0] | |
ctr_drbg_gen_ack_o | output | final ack when update process has been completed | |
ctr_drbg_gen_sts_o | output | final ack status | |
ctr_drbg_gen_rdy_i | input | ready to process the ack above | |
ctr_drbg_gen_ccmd_o | output | [Cmd-1:0] | |
ctr_drbg_gen_inst_id_o | output | [StateId-1:0] | |
ctr_drbg_gen_key_o | output | [KeyLen-1:0] | |
ctr_drbg_gen_v_o | output | [BlkLen-1:0] | |
ctr_drbg_gen_rc_o | output | [CtrLen-1:0] | |
ctr_drbg_gen_bits_o | output | [BlkLen-1:0] | |
ctr_drbg_gen_fips_o | output | ||
ctr_drbg_gen_es_req_i | input | es_req/ack | |
ctr_drbg_gen_es_ack_o | output | ||
gen_upd_req_o | output | update interface | |
upd_gen_rdy_i | input | ||
gen_upd_ccmd_o | output | [Cmd-1:0] | |
gen_upd_inst_id_o | output | [StateId-1:0] | |
gen_upd_pdata_o | output | [SeedLen-1:0] | |
gen_upd_key_o | output | [KeyLen-1:0] | |
gen_upd_v_o | output | [BlkLen-1:0] | |
upd_gen_ack_i | input | ||
gen_upd_rdy_o | output | ||
upd_gen_ccmd_i | input | [Cmd-1:0] | |
upd_gen_inst_id_i | input | [StateId-1:0] | |
upd_gen_key_i | input | [KeyLen-1:0] | |
upd_gen_v_i | input | [BlkLen-1:0] | |
block_encrypt_req_o | output | block encrypt interface | |
block_encrypt_rdy_i | input | ||
block_encrypt_ccmd_o | output | [Cmd-1:0] | |
block_encrypt_inst_id_o | output | [StateId-1:0] | |
block_encrypt_key_o | output | [KeyLen-1:0] | |
block_encrypt_v_o | output | [BlkLen-1:0] | |
block_encrypt_ack_i | input | ||
block_encrypt_rdy_o | output | ||
block_encrypt_ccmd_i | input | [Cmd-1:0] | |
block_encrypt_inst_id_i | input | [StateId-1:0] | |
block_encrypt_v_i | input | [BlkLen-1:0] | |
ctr_drbg_gen_sfifo_gbencack_err_o | output | [2:0] | misc |
ctr_drbg_gen_sfifo_grcstage_err_o | output | [2:0] | |
ctr_drbg_gen_sfifo_ggenreq_err_o | output | [2:0] | |
ctr_drbg_gen_sfifo_gadstage_err_o | output | [2:0] | |
ctr_drbg_gen_sfifo_ggenbits_err_o | output | [2:0] | |
ctr_drbg_gen_sm_err_o | output |
Signals
Name | Type | Description |
---|---|---|
genreq_ccmd | logic [Cmd-1:0] | signals |
genreq_id | logic [StateId-1:0] | |
genreq_glast | logic | |
genreq_adata | logic [SeedLen-1:0] | |
genreq_fips | logic | |
genreq_key | logic [KeyLen-1:0] | |
genreq_v | logic [BlkLen-1:0] | |
genreq_rc | logic [CtrLen-1:0] | |
adstage_key | logic [KeyLen-1:0] | |
adstage_v | logic [BlkLen-1:0] | |
adstage_rc | logic [CtrLen-1:0] | |
adstage_fips | logic | |
adstage_glast | logic | |
adstage_adata | logic [SeedLen-1:0] | |
rcstage_key | logic [KeyLen-1:0] | |
rcstage_v | logic [BlkLen-1:0] | |
rcstage_bits | logic [BlkLen-1:0] | |
rcstage_rc | logic [CtrLen-1:0] | |
rcstage_glast | logic | |
rcstage_fips | logic | |
rcstage_rc_plus1 | logic [CtrLen-1:0] | |
rcstage_ccmd | logic [Cmd-1:0] | |
rcstage_inst_id | logic [StateId-1:0] | |
genreq_ccmd_modified | logic [Cmd-1:0] | |
bencack_ccmd_modified | logic [Cmd-1:0] | |
sfifo_genreq_rdata | logic [GenreqFifoWidth-1:0] | cmdreq fifo logic [$clog2(CmdreqFifoDepth):0] sfifo_cmdreq_depth; |
sfifo_genreq_push | logic | |
sfifo_genreq_wdata | logic [GenreqFifoWidth-1:0] | |
sfifo_genreq_pop | logic | |
sfifo_genreq_full | logic | |
sfifo_genreq_not_empty | logic | |
sfifo_adstage_rdata | logic [AdstageFifoWidth-1:0] | adstage fifo |
sfifo_adstage_push | logic | |
sfifo_adstage_wdata | logic [AdstageFifoWidth-1:0] | |
sfifo_adstage_pop | logic | |
sfifo_adstage_full | logic | |
sfifo_adstage_not_empty | logic | |
sfifo_bencack_rdata | logic [BlkEncAckFifoWidth-1:0] | blk_encrypt_ack fifo |
sfifo_bencack_push | logic | |
sfifo_bencack_wdata | logic [BlkEncAckFifoWidth-1:0] | |
sfifo_bencack_pop | logic | |
sfifo_bencack_full | logic | |
sfifo_bencack_not_empty | logic | |
sfifo_bencack_ccmd | logic [Cmd-1:0] | breakout |
sfifo_bencack_inst_id | logic [StateId-1:0] | |
sfifo_bencack_bits | logic [BlkLen-1:0] | |
sfifo_rcstage_rdata | logic [RCStageFifoWidth-1:0] | rcstage fifo |
sfifo_rcstage_push | logic | |
sfifo_rcstage_wdata | logic [RCStageFifoWidth-1:0] | |
sfifo_rcstage_pop | logic | |
sfifo_rcstage_full | logic | |
sfifo_rcstage_not_empty | logic | |
sfifo_genbits_rdata | logic [GenbitsFifoWidth-1:0] | genbits fifo |
sfifo_genbits_push | logic | |
sfifo_genbits_wdata | logic [GenbitsFifoWidth-1:0] | |
sfifo_genbits_pop | logic | |
sfifo_genbits_full | logic | |
sfifo_genbits_not_empty | logic | |
v_inc | logic [CtrLen-1:0] | |
v_first | logic [BlkLen-1:0] | |
v_sized | logic [BlkLen-1:0] | |
v_ctr_load | logic | |
v_ctr_inc | logic | |
interate_ctr_done | logic | |
interate_ctr_inc | logic | |
v_ctr_q | logic [CtrLen-1:0] | flops |
v_ctr_d | logic [CtrLen-1:0] | flops |
interate_ctr_q | logic [1:0] | |
interate_ctr_d | logic [1:0] | |
update_adata_q | logic [SeedLen-1:0] | |
update_adata_d | logic [SeedLen-1:0] | |
state_d | state_e | |
state_q | state_e | |
state_raw_q | logic [StateWidth-1:0] |
Constants
Name | Type | Value | Description |
---|---|---|---|
GenreqFifoDepth | int | 1 | |
GenreqFifoWidth | int | KeyLen+BlkLen+CtrLen+1+SeedLen+1+StateId+Cmd | |
BlkEncAckFifoDepth | int | 1 | |
BlkEncAckFifoWidth | int | BlkLen+StateId+Cmd | |
AdstageFifoDepth | int | 1 | |
AdstageFifoWidth | int | KeyLen+BlkLen+CtrLen+1+SeedLen+1 | |
RCStageFifoDepth | int | 1 | |
RCStageFifoWidth | int | KeyLen+BlkLen+BlkLen+CtrLen+1+1+StateId+Cmd | |
GenbitsFifoDepth | int | 1 | |
GenbitsFifoWidth | int | 1+BlkLen+KeyLen+BlkLen+CtrLen+StateId+Cmd | |
StateWidth | int | 5 | Encoding generated with: $ ./util/design/sparse-fsm-encode.py -d 3 -m 4 -n 5 \ -s 2651202796 --language=sv Hamming distance histogram: 0: -- 1: -- 2: -- 3: |
Types
Name | Type | Description |
---|---|---|
state_e | enum logic [StateWidth-1:0] { ReqIdle = 5'b01101, ReqSend = 5'b00011, ESHalt = 5'b11000, ReqError = 5'b10110 } |
Processes
- unnamed: ( @(posedge clk_i or negedge rst_ni) )
Type: always_ff
- unnamed: ( )
Type: always_comb
Instantiations
- u_state_regs: prim_flop
Description
This primitive is used to place a size-only constraint on the
flops in order to prevent FSM state encoding optimizations.
- u_prim_fifo_sync_genreq: prim_fifo_sync
Description
input request fifo for staging gen request
- u_prim_fifo_sync_adstage: prim_fifo_sync
Description
fifo to stage key, v, rc, and adata, waiting for update block to ack
- u_prim_fifo_sync_bencack: prim_fifo_sync
Description
block_encrypt response fifo from block encrypt
- u_prim_fifo_sync_rcstage: prim_fifo_sync
Description
fifo to stage rc, waiting for update block to ack
- u_prim_fifo_sync_genbits: prim_fifo_sync