Entity: csrng_core
- File: csrng_core.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 core module
Generics
Generic name | Type | Value | Description |
---|---|---|---|
aes_pkg | aes_pkg::sbox_impl_e | aes_pkg::SBoxImplLut | |
NHwApps | int | 2 | |
RndCnstCsKeymgrDivNonProduction | cs_keymgr_div_t | CsKeymgrDivWidth'(0) | |
RndCnstCsKeymgrDivProduction | cs_keymgr_div_t | CsKeymgrDivWidth'(0) |
Ports
Port name | Direction | Type | Description |
---|---|---|---|
clk_i | input | ||
rst_ni | input | ||
reg2hw | input | ||
hw2reg | output | ||
efuse_sw_app_enable_i | input | Efuse Interface | |
lc_hw_debug_en_i | input | Lifecycle broadcast inputs | |
entropy_src_hw_if_o | output | Entropy Interface | |
entropy_src_hw_if_i | input | ||
cs_aes_halt_i | input | Entropy Interface | |
cs_aes_halt_o | output | ||
csrng_cmd_i | input | [NHwApps-1:0] | Application Interfaces |
csrng_cmd_o | output | [NHwApps-1:0] | |
recov_alert_test_o | output | Alerts | |
fatal_alert_test_o | output | ||
recov_alert_o | output | ||
fatal_alert_o | output | ||
intr_cs_cmd_req_done_o | output | ||
intr_cs_entropy_req_o | output | ||
intr_cs_hw_inst_exc_o | output | ||
intr_cs_fatal_err_o | output |
Signals
Name | Type | Description |
---|---|---|
event_cs_cmd_req_done | logic | signals interrupt signals |
event_cs_entropy_req | logic | |
event_cs_hw_inst_exc | logic | |
event_cs_fatal_err | logic | |
cs_enable | logic | |
cs_enable_pfe | logic | |
cs_enable_pfd | logic | |
cs_enable_pfa | logic | |
sw_app_enable | logic | |
sw_app_enable_pfe | logic | |
sw_app_enable_pfd | logic | |
sw_app_enable_pfa | logic | |
read_int_state | logic | |
read_int_state_pfe | logic | |
read_int_state_pfd | logic | |
read_int_state_pfa | logic | |
recov_alert_event | logic | |
acmd_avail | logic | |
acmd_sop | logic | |
acmd_mop | logic | |
acmd_eop | logic | |
cmd_blk_select | logic | |
gen_blk_select | logic | |
state_db_wr_req_rdy | logic | |
state_db_wr_req | logic | |
state_db_wr_inst_id | logic [StateId-1:0] | |
state_db_wr_key | logic [KeyLen-1:0] | |
state_db_wr_v | logic [BlkLen-1:0] | |
state_db_wr_rc | logic [CtrLen-1:0] | |
state_db_wr_sts | logic | |
state_db_wr_fips | logic | |
state_db_wr_ccmd | logic [Cmd-1:0] | |
acmd_bus | logic [AppCmdWidth-1:0] | |
packer_adata | logic [SeedLen-1:0] | |
packer_adata_depth | logic [ADataDepthClog-1:0] | |
packer_adata_pop | logic | |
packer_adata_clr | logic | |
seed_diversification | logic [SeedLen-1:0] | |
cmd_entropy_req | logic | |
cmd_entropy_avail | logic | |
cmd_entropy_fips | logic | |
cmd_entropy | logic [SeedLen-1:0] | |
cmd_result_wr_req | logic | |
cmd_result_ack | logic | |
cmd_result_ack_sts | logic | |
cmd_result_ccmd | logic [Cmd-1:0] | |
cmd_result_ack_rdy | logic | |
cmd_result_inst_id | logic [StateId-1:0] | |
cmd_result_glast | logic | |
cmd_result_fips | logic | |
cmd_result_adata | logic [SeedLen-1:0] | |
cmd_result_key | logic [KeyLen-1:0] | |
cmd_result_v | logic [BlkLen-1:0] | |
cmd_result_rc | logic [CtrLen-1:0] | |
state_db_sts_ack | logic | |
state_db_sts_sts | logic | |
state_db_sts_id | logic [StateId-1:0] | |
gen_result_wr_req | logic | |
gen_result_ack_sts | logic | |
gen_result_ack_rdy | logic | |
gen_result_ccmd | logic [Cmd-1:0] | |
gen_result_inst_id | logic [StateId-1:0] | |
gen_result_fips | logic | |
gen_result_key | logic [KeyLen-1:0] | |
gen_result_v | logic [BlkLen-1:0] | |
gen_result_rc | logic [CtrLen-1:0] | |
gen_result_bits | logic [BlkLen-1:0] | |
acmd_accept | logic | |
acmd_hdr_capt | logic | |
instant_req | logic | |
reseed_req | logic | |
generate_req | logic | |
update_req | logic | |
uninstant_req | logic | |
clr_adata_packer | logic | |
ctr_drbg_cmd_ccmd | logic [Cmd-1:0] | |
ctr_drbg_cmd_req | logic | |
ctr_drbg_gen_req | logic | |
ctr_drbg_gen_req_rdy | logic | |
ctr_drbg_cmd_req_rdy | logic | |
ctr_drbg_cmd_sfifo_cmdreq_err_sum | logic | |
ctr_drbg_cmd_sfifo_cmdreq_err | logic [2:0] | |
ctr_drbg_cmd_sfifo_rcstage_err_sum | logic | |
ctr_drbg_cmd_sfifo_rcstage_err | logic [2:0] | |
ctr_drbg_cmd_sfifo_keyvrc_err_sum | logic | |
ctr_drbg_cmd_sfifo_keyvrc_err | logic [2:0] | |
ctr_drbg_upd_sfifo_updreq_err_sum | logic | |
ctr_drbg_upd_sfifo_updreq_err | logic [2:0] | |
ctr_drbg_upd_sfifo_bencreq_err_sum | logic | |
ctr_drbg_upd_sfifo_bencreq_err | logic [2:0] | |
ctr_drbg_upd_sfifo_bencack_err_sum | logic | |
ctr_drbg_upd_sfifo_bencack_err | logic [2:0] | |
ctr_drbg_upd_sfifo_pdata_err_sum | logic | |
ctr_drbg_upd_sfifo_pdata_err | logic [2:0] | |
ctr_drbg_upd_sfifo_final_err_sum | logic | |
ctr_drbg_upd_sfifo_final_err | logic [2:0] | |
ctr_drbg_gen_sfifo_gbencack_err_sum | logic | |
ctr_drbg_gen_sfifo_gbencack_err | logic [2:0] | |
ctr_drbg_gen_sfifo_grcstage_err_sum | logic | |
ctr_drbg_gen_sfifo_grcstage_err | logic [2:0] | |
ctr_drbg_gen_sfifo_ggenreq_err_sum | logic | |
ctr_drbg_gen_sfifo_ggenreq_err | logic [2:0] | |
ctr_drbg_gen_sfifo_gadstage_err_sum | logic | |
ctr_drbg_gen_sfifo_gadstage_err | logic [2:0] | |
ctr_drbg_gen_sfifo_ggenbits_err_sum | logic | |
ctr_drbg_gen_sfifo_ggenbits_err | logic [2:0] | |
block_encrypt_sfifo_blkenc_err_sum | logic | |
block_encrypt_sfifo_blkenc_err | logic [2:0] | |
cmd_stage_sm_err_sum | logic | |
main_sm_err_sum | logic | |
main_sm_err | logic | |
drbg_gen_sm_err_sum | logic | |
drbg_gen_sm_err | logic | |
drbg_updbe_sm_err_sum | logic | |
drbg_updbe_sm_err | logic | |
drbg_updob_sm_err_sum | logic | |
drbg_updob_sm_err | logic | |
aes_cipher_sm_err_sum | logic | |
aes_cipher_sm_err | logic | |
fifo_write_err_sum | logic | |
fifo_read_err_sum | logic | |
fifo_status_err_sum | logic | |
state_db_rd_key | logic [KeyLen-1:0] | |
state_db_rd_v | logic [BlkLen-1:0] | |
state_db_rd_rc | logic [CtrLen-1:0] | |
state_db_rd_fips | logic | |
acmd_hold | logic [2:0] | |
shid | logic [3:0] | |
gen_last | logic | |
flag0 | logic | |
updblk_benblk_cmd_arb_din | logic [Cmd-1:0] | blk encrypt arbiter |
updblk_benblk_id_arb_din | logic [StateId-1:0] | |
updblk_benblk_v_arb_din | logic [BlkLen-1:0] | |
updblk_benblk_key_arb_din | logic [KeyLen-1:0] | |
updblk_benblk_arb_req | logic | |
updblk_benblk_arb_req_rdy | logic | |
benblk_updblk_ack | logic | |
updblk_benblk_ack_rdy | logic | |
genblk_benblk_cmd_arb_din | logic [Cmd-1:0] | |
genblk_benblk_id_arb_din | logic [StateId-1:0] | |
genblk_benblk_v_arb_din | logic [BlkLen-1:0] | |
genblk_benblk_key_arb_din | logic [KeyLen-1:0] | |
genblk_benblk_arb_req | logic | |
genblk_benblk_arb_req_rdy | logic | |
benblk_genblk_ack | logic | |
genblk_benblk_ack_rdy | logic | |
benblk_arb_din | logic [BlkEncArbWidth-1:0] | |
benblk_arb_data | logic [BlkEncArbWidth-1:0] | |
benblk_arb_key | logic [KeyLen-1:0] | |
benblk_arb_v | logic [BlkLen-1:0] | |
benblk_arb_inst_id | logic [StateId-1:0] | |
benblk_arb_cmd | logic [Cmd-1:0] | |
benblk_arb_vld | logic | |
benblk_ack | logic | |
benblk_ack_rdy | logic | |
benblk_arb_rdy | logic | |
benblk_cmd | logic [Cmd-1:0] | |
benblk_inst_id | logic [StateId-1:0] | |
benblk_v | logic [BlkLen-1:0] | |
cmdblk_updblk_ccmd_arb_din | logic [Cmd-1:0] | update arbiter |
cmdblk_updblk_id_arb_din | logic [StateId-1:0] | |
cmdblk_updblk_v_arb_din | logic [BlkLen-1:0] | |
cmdblk_updblk_key_arb_din | logic [KeyLen-1:0] | |
cmdblk_updblk_pdata_arb_din | logic [SeedLen-1:0] | |
cmdblk_updblk_arb_req | logic | |
updblk_cmdblk_arb_req_rdy | logic | |
updblk_cmdblk_ack | logic | |
cmdblk_updblk_ack_rdy | logic | |
genblk_updblk_ccmd_arb_din | logic [Cmd-1:0] | |
genblk_updblk_id_arb_din | logic [StateId-1:0] | |
genblk_updblk_v_arb_din | logic [BlkLen-1:0] | |
genblk_updblk_key_arb_din | logic [KeyLen-1:0] | |
genblk_updblk_pdata_arb_din | logic [SeedLen-1:0] | |
genblk_updblk_arb_req | logic | |
updblk_genblk_arb_req_rdy | logic | |
updblk_genblk_ack | logic | |
genblk_updblk_ack_rdy | logic | |
updblk_arb_din | logic [UpdateArbWidth-1:0] | |
updblk_arb_data | logic [UpdateArbWidth-1:0] | |
updblk_arb_key | logic [KeyLen-1:0] | |
updblk_arb_v | logic [BlkLen-1:0] | |
updblk_arb_pdata | logic [SeedLen-1:0] | |
updblk_arb_inst_id | logic [StateId-1:0] | |
updblk_arb_ccmd | logic [Cmd-1:0] | |
updblk_arb_vld | logic | |
updblk_ack | logic | |
updblk_ack_rdy | logic | |
updblk_arb_rdy | logic | |
updblk_ccmd | logic [Cmd-1:0] | |
updblk_inst_id | logic [StateId-1:0] | |
updblk_key | logic [KeyLen-1:0] | |
updblk_v | logic [BlkLen-1:0] | |
cmd_stage_sfifo_cmd_err | logic [2:0] | |
cmd_stage_sfifo_cmd_err_sum | logic [NApps-1:0] | |
cmd_stage_sfifo_cmd_err_wr | logic [NApps-1:0] | |
cmd_stage_sfifo_cmd_err_rd | logic [NApps-1:0] | |
cmd_stage_sfifo_cmd_err_st | logic [NApps-1:0] | |
cmd_stage_sfifo_genbits_err | logic [2:0] | |
cmd_stage_sfifo_genbits_err_sum | logic [NApps-1:0] | |
cmd_stage_sfifo_genbits_err_wr | logic [NApps-1:0] | |
cmd_stage_sfifo_genbits_err_rd | logic [NApps-1:0] | |
cmd_stage_sfifo_genbits_err_st | logic [NApps-1:0] | |
cmd_stage_sm_err | logic [NApps-1:0] | |
cmd_stage_vld | logic [NApps-1:0] | |
cmd_stage_shid | logic [StateId-1:0] | |
cmd_stage_bus | logic [AppCmdWidth-1:0] | |
cmd_stage_rdy | logic [NApps-1:0] | |
cmd_arb_req | logic [NApps-1:0] | |
cmd_arb_gnt | logic [NApps-1:0] | |
cmd_arb_idx | logic [$clog2(NApps)-1:0] | |
cmd_arb_sop | logic [NApps-1:0] | |
cmd_arb_mop | logic [NApps-1:0] | |
cmd_arb_eop | logic [NApps-1:0] | |
cmd_arb_bus | logic [AppCmdWidth-1:0] | |
cmd_core_ack | logic [NApps-1:0] | |
cmd_core_ack_sts | logic [NApps-1:0] | |
cmd_stage_ack | logic [NApps-1:0] | |
cmd_stage_ack_sts | logic [NApps-1:0] | |
genbits_core_vld | logic [NApps-1:0] | |
genbits_core_bus | logic [GenBitsWidth-1:0] | |
genbits_core_fips | logic [NApps-1:0] | |
genbits_stage_vld | logic [NApps-1:0] | |
genbits_stage_fips | logic [NApps-1:0] | |
genbits_stage_bus | logic [GenBitsWidth-1:0] | |
genbits_stage_rdy | logic [NApps-1:0] | |
genbits_stage_vldo_sw | logic | |
genbits_stage_bus_rd_sw | logic | |
genbits_stage_bus_sw | logic [31:0] | |
genbits_stage_fips_sw | logic | |
hw_exception_sts | logic [14:0] | |
lc_hw_debug_on | logic | |
state_db_is_dump_en | logic | |
state_db_reg_rd_sel | logic | |
state_db_reg_rd_id_pulse | logic | |
state_db_reg_rd_id | logic [StateId-1:0] | |
state_db_reg_rd_val | logic [31:0] | |
err_code_test_bit | logic [30:0] | |
ctr_drbg_upd_es_ack | logic | |
ctr_drbg_gen_es_ack | logic | |
block_encrypt_quiet | logic | |
track_inst_id | logic [StateId-1:0] | |
track_sm | logic [7:0] | |
sel_track_sm_grp | logic [1:0] | |
unused_err_code_test_bit | logic | |
unused_reg2hw_genbits | logic | |
unused_int_state_val | logic | |
acmd_q | logic [2:0] | flops |
acmd_d | logic [2:0] | flops |
shid_q | logic [3:0] | |
shid_d | logic [3:0] | |
gen_last_q | logic | |
gen_last_d | logic | |
flag0_q | logic | |
flag0_d | logic | |
cmd_arb_idx_q | logic [$clog2(NApps)-1:0] | |
cmd_arb_idx_d | logic [$clog2(NApps)-1:0] | |
statedb_wr_select_q | logic | |
statedb_wr_select_d | logic | |
genbits_stage_fips_sw_q | logic | |
genbits_stage_fips_sw_d | logic | |
cmd_req_dly_q | logic | |
cmd_req_dly_d | logic | |
cmd_req_ccmd_dly_q | logic [Cmd-1:0] | |
cmd_req_ccmd_dly_d | logic [Cmd-1:0] | |
cs_aes_halt_q | logic | |
cs_aes_halt_d | logic | |
entropy_src_seed_q | logic [SeedLen-1:0] | |
entropy_src_seed_d | logic [SeedLen-1:0] | |
entropy_src_fips_q | logic | |
entropy_src_fips_d | logic | |
lc_hw_debug_en_out | lc_ctrl_pkg::lc_tx_t | ------------------------------------- life cycle logic ------------------------------------- The chip level life cycle control provide control logic to determine how certain debug features are controlled. |
Constants
Name | Type | Value | Description |
---|---|---|---|
NApps | int | NHwApps + 1 | |
AppCmdWidth | int | 32 | |
AppCmdFifoDepth | int | 2 | |
GenBitsWidth | int | 128 | |
Cmd | int | 3 | |
StateId | int | 4 | |
KeyLen | int | 256 | |
BlkLen | int | 128 | |
SeedLen | int | 384 | |
CtrLen | int | 32 | |
NBlkEncArbReqs | int | 2 | |
BlkEncArbWidth | int | KeyLen+BlkLen+StateId+Cmd | |
NUpdateArbReqs | int | 2 | |
UpdateArbWidth | int | KeyLen+BlkLen+SeedLen+StateId+Cmd | |
MaxClen | int | 12 | |
ADataDepthWidth | int | SeedLen/AppCmdWidth | |
ADataDepthClog | unsigned | $clog2(ADataDepthWidth)+1 |
Processes
- unnamed: ( @(posedge clk_i or negedge rst_ni) )
Type: always_ff
Instantiations
- u_intr_hw_cs_cmd_req_done: prim_intr_hw
Description
instantiate interrupt hardware primitives
All TLUL interrupts are collect in the section.
- u_intr_hw_cs_entropy_req: prim_intr_hw
- u_intr_hw_cs_hw_inst_exc: prim_intr_hw
- u_intr_hw_cs_fatal_err: prim_intr_hw
- u_prim_packer_fifo_sw_genbits: prim_packer_fifo
Description
pack the gen bits into a 32 bit register sized word
- u_prim_arbiter_ppc_acmd: prim_arbiter_ppc
- u_csrng_main_sm: csrng_main_sm
Description
sm to process all instantiation requests
- u_prim_packer_fifo_adata: prim_packer_fifo
- u_csrng_state_db: csrng_state_db
- u_csrng_ctr_drbg_cmd: csrng_ctr_drbg_cmd
- u_csrng_ctr_drbg_upd: csrng_ctr_drbg_upd
Description
csrng_ctr_drbg_upd instantiation
The csrng_ctr_drbg_upd is shared
between the csrng_ctr_drbg_cmd block
and the csrng_ctr_drbg_gen block.
The arbiter in this section will
route requests and responses between
these two blocks.
- u_prim_arbiter_ppc_updblk_arb: prim_arbiter_ppc
Description
update block arbiter
- u_prim_lc_sync: prim_lc_sync
- u_csrng_block_encrypt: csrng_block_encrypt
Description
csrng_block_encrypt instantiation
The csrng_block_encrypt is shared
between the csrng_ctr_drbg_cmd block
and the csrng_ctr_drbg_gen block.
The arbiter in this section will
route requests and responses between
these two blocks.
- u_prim_arbiter_ppc_benblk_arb: prim_arbiter_ppc
- u_csrng_ctr_drbg_gen: csrng_ctr_drbg_gen