| // Copyright lowRISC contributors. |
| // Licensed under the Apache License, Version 2.0, see LICENSE for details. |
| // SPDX-License-Identifier: Apache-2.0 |
| |
| package csrng_env_pkg; |
| // dep packages |
| import uvm_pkg::*; |
| import top_pkg::*; |
| import dv_utils_pkg::*; |
| import push_pull_agent_pkg::*; |
| import csrng_agent_pkg::*; |
| import dv_lib_pkg::*; |
| import tl_agent_pkg::*; |
| import cip_base_pkg::*; |
| import csr_utils_pkg::*; |
| import csrng_ral_pkg::*; |
| import aes_model_dpi_pkg::*; |
| import prim_mubi_pkg::*; |
| import entropy_src_pkg::*; |
| import csrng_pkg::*; |
| import lc_ctrl_pkg::*; |
| |
| // macro includes |
| `include "uvm_macros.svh" |
| `include "dv_macros.svh" |
| |
| // parameters |
| parameter uint NUM_HW_APPS = 2; |
| parameter uint HW_APP0 = 0; |
| parameter uint HW_APP1 = 1; |
| parameter uint SW_APP = 2; |
| parameter string LIST_OF_ALERTS[] = {"recov_alert","fatal_alert"}; |
| parameter uint NUM_ALERTS = 2; |
| parameter uint KEY_LEN = 256; |
| parameter uint BLOCK_LEN = 128; |
| parameter uint CTR_LEN = 32; |
| parameter uint RSD_CTR_LEN = 32; |
| parameter uint LC_HW_DEBUG_EN_ON_DATA = 123456789; |
| parameter uint LC_HW_DEBUG_EN_OFF_DATA = 987654321; |
| |
| // types |
| typedef enum int { |
| CmdReqDone = 0, |
| EntropyReq = 1, |
| HwInstExc = 2, |
| FifoErr = 3 |
| } csrng_intr_e; |
| |
| typedef enum int { |
| invalid_enable = 0, |
| invalid_sw_app_enable = 1, |
| invalid_read_int_state = 2 |
| } invalid_mubi_e; |
| |
| typedef enum int { |
| sfifo_cmd_error = 0, |
| sfifo_genbits_error = 1, |
| sfifo_cmdreq_error = 2, |
| sfifo_rcstage_error = 3, |
| sfifo_keyvrc_error = 4, |
| sfifo_updreq_error = 5, |
| sfifo_bencreq_error = 6, |
| sfifo_bencack_error = 7, |
| sfifo_pdata_error = 8, |
| sfifo_final_error = 9, |
| sfifo_gbencack_error = 10, |
| sfifo_grcstage_error = 11, |
| sfifo_ggenreq_error = 12, |
| sfifo_gadstage_error = 13, |
| sfifo_ggenbits_error = 14, |
| sfifo_blkenc_error = 15, |
| cmd_stage_sm_error = 16, |
| main_sm_error = 17, |
| drbg_gen_sm_error = 18, |
| drbg_updbe_sm_error = 19, |
| drbg_updob_sm_error = 20, |
| aes_cipher_sm_error = 21, |
| cmd_gen_cnt_error = 22, |
| fifo_write_error = 23, |
| fifo_read_error = 24, |
| fifo_state_error = 25 |
| } fatal_err_e; |
| |
| typedef enum int { |
| sfifo_cmd_err = 0, |
| sfifo_genbits_err = 1, |
| sfifo_cmdreq_err = 2, |
| sfifo_rcstage_err = 3, |
| sfifo_keyvrc_err = 4, |
| sfifo_updreq_err = 5, |
| sfifo_bencreq_err = 6, |
| sfifo_bencack_err = 7, |
| sfifo_pdata_err = 8, |
| sfifo_final_err = 9, |
| sfifo_gbencack_err = 10, |
| sfifo_grcstage_err = 11, |
| sfifo_ggenreq_err = 12, |
| sfifo_gadstage_err = 13, |
| sfifo_ggenbits_err = 14, |
| sfifo_blkenc_err = 15, |
| cmd_stage_sm_err = 16, |
| main_sm_err = 17, |
| drbg_gen_sm_err = 18, |
| drbg_updbe_sm_err = 19, |
| drbg_updob_sm_err = 20, |
| aes_cipher_sm_err = 21, |
| cmd_gen_cnt_err = 22, |
| fifo_write_err = 23, |
| fifo_read_err = 24, |
| fifo_state_err = 25, |
| sfifo_cmd_err_test = 26, |
| sfifo_genbits_err_test = 27, |
| sfifo_cmdreq_err_test = 28, |
| sfifo_rcstage_err_test = 29, |
| sfifo_keyvrc_err_test = 30, |
| sfifo_updreq_err_test = 31, |
| sfifo_bencreq_err_test = 32, |
| sfifo_bencack_err_test = 33, |
| sfifo_pdata_err_test = 34, |
| sfifo_final_err_test = 35, |
| sfifo_gbencack_err_test = 36, |
| sfifo_grcstage_err_test = 37, |
| sfifo_ggenreq_err_test = 38, |
| sfifo_gadstage_err_test = 39, |
| sfifo_ggenbits_err_test = 40, |
| sfifo_blkenc_err_test = 41, |
| cmd_stage_sm_err_test = 42, |
| main_sm_err_test = 43, |
| drbg_gen_sm_err_test = 44, |
| drbg_updbe_sm_err_test = 45, |
| drbg_updob_sm_err_test = 46, |
| aes_cipher_sm_err_test = 47, |
| cmd_gen_cnt_err_test = 48, |
| fifo_write_err_test = 49, |
| fifo_read_err_test = 50, |
| fifo_state_err_test = 51 |
| } err_code_e; |
| |
| typedef enum int { |
| sfifo_blkenc = 0, |
| sfifo_ggenbits = 1, |
| sfifo_gadstage = 2, |
| sfifo_ggenreq = 3, |
| sfifo_grcstage = 4, |
| sfifo_gbencack = 5, |
| sfifo_final = 6, |
| sfifo_pdata = 7, |
| sfifo_bencack = 8, |
| sfifo_bencreq = 9, |
| sfifo_updreq = 10, |
| sfifo_keyvrc = 11, |
| sfifo_rcstage = 12, |
| sfifo_cmdreq = 13, |
| sfifo_genbits = 14, |
| sfifo_cmd = 15 |
| } which_fifo_e; |
| |
| typedef enum int { |
| fifo_write = 0, |
| fifo_read = 1, |
| fifo_state = 2 |
| } which_fifo_err_e; |
| |
| // functions |
| |
| // package sources |
| `include "csrng_env_cfg.sv" |
| `include "csrng_env_cov.sv" |
| `include "csrng_virtual_sequencer.sv" |
| `include "csrng_scoreboard.sv" |
| `include "csrng_env.sv" |
| `include "csrng_vseq_list.sv" |
| |
| endpackage |