Skip to content

Commit

Permalink
Merge pull request #153 from chipsalliance/dev-msft-20230713
Browse files Browse the repository at this point in the history
Dev msft 20230713
  • Loading branch information
anjpar authored Jul 13, 2023
2 parents 3391887 + 5e1923a commit ce10589
Show file tree
Hide file tree
Showing 22 changed files with 793 additions and 275 deletions.
2 changes: 1 addition & 1 deletion coverage/config/caliptra_cov_cfg.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

variables:
COV_DISK: ${PRJ_COV_DISK}/integration_lib
NIGHTLY_SAMPLE_CNT: 7
NIGHTLY_SAMPLE_CNT: 14
#24x7_SAMPLE_CNT: 14
NIGHTLY_SAMPLE_RETAIN_CNT: 30
#24x7_SAMPLE_RETAIN_CNT: 30
Expand Down
33 changes: 12 additions & 21 deletions coverage/config/caliptra_merge_bench_cov_cfg.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,9 @@
#

variables:
COV_DISK: ${PRJ_COV_DISK}/dbgwrap
MERGE_DIR_NAME: dbgwrap_tb_merge_bench_cov_cfg
MERGE_SAMPLE_CNT: 7
COV_DISK: ${PRJ_COV_DISK}/integration_lib
MERGE_DIR_NAME: caliptra_merge_bench_cov_cfg
MERGE_SAMPLE_CNT: 1
MERGE_SAMPLE_RETAIN_CNT: 30
MERGE_PIPELINE_ID: ${SYSTEM_DEFINITIONID}

Expand All @@ -20,26 +20,17 @@ merge:
merge_opts: -flex_merge reference -flex_merge tgl -merge_across_libs

search_dir:
${COV_DISK}/${SYSTEM_DEFINITIONID}/aes_caliptra_tb: ${MERGE_SAMPLE_CNT}
${COV_DISK}/${SYSTEM_DEFINITIONID}/csrng_caliptra_tb: ${MERGE_SAMPLE_CNT}
${COV_DISK}/${SYSTEM_DEFINITIONID}/datavault_caliptra_tb: ${MERGE_SAMPLE_CNT}
${COV_DISK}/${SYSTEM_DEFINITIONID}/doe_caliptra_tb: ${MERGE_SAMPLE_CNT}
${COV_DISK}/${SYSTEM_DEFINITIONID}/ecc_caliptra_tb: ${MERGE_SAMPLE_CNT}
${COV_DISK}/${SYSTEM_DEFINITIONID}/edn_caliptra_tb: ${MERGE_SAMPLE_CNT}
${COV_DISK}/${SYSTEM_DEFINITIONID}/entropy_src_caliptra_tb: ${MERGE_SAMPLE_CNT}
${COV_DISK}/${SYSTEM_DEFINITIONID}/hmac_caliptra_tb: ${MERGE_SAMPLE_CNT}
${COV_DISK}/${SYSTEM_DEFINITIONID}/hmac_drbg_caliptra_tb: ${MERGE_SAMPLE_CNT}
${COV_DISK}/${SYSTEM_DEFINITIONID}/keyvault_caliptra_tb: ${MERGE_SAMPLE_CNT}
${COV_DISK}/${SYSTEM_DEFINITIONID}/kmac_caliptra_tb: ${MERGE_SAMPLE_CNT}
${COV_DISK}/${SYSTEM_DEFINITIONID}/lc_ctrl_caliptra_tb: ${MERGE_SAMPLE_CNT}
${COV_DISK}/${SYSTEM_DEFINITIONID}/pcrvault_caliptra_tb: ${MERGE_SAMPLE_CNT}
${COV_DISK}/${SYSTEM_DEFINITIONID}/prim_caliptra_tb: ${MERGE_SAMPLE_CNT}
${COV_DISK}/${SYSTEM_DEFINITIONID}/prim_generic_caliptra_tb: ${MERGE_SAMPLE_CNT}
${COV_DISK}/${SYSTEM_DEFINITIONID}/sha256_caliptra_tb: ${MERGE_SAMPLE_CNT}
${COV_DISK}/${SYSTEM_DEFINITIONID}/caliptra_top_tb: ${MERGE_SAMPLE_CNT}
${COV_DISK}/${SYSTEM_DEFINITIONID}/sha512_caliptra_tb: ${MERGE_SAMPLE_CNT}
${COV_DISK}/${SYSTEM_DEFINITIONID}/sha512_masked_caliptra_tb: ${MERGE_SAMPLE_CNT}
${COV_DISK}/${SYSTEM_DEFINITIONID}/soc_ifc_caliptra_tb: ${MERGE_SAMPLE_CNT}
${COV_DISK}/${SYSTEM_DEFINITIONID}/uart_caliptra_tb: ${MERGE_SAMPLE_CNT}
${COV_DISK}/${SYSTEM_DEFINITIONID}/uvmf_2022: ${MERGE_SAMPLE_CNT}
${COV_DISK}/${SYSTEM_DEFINITIONID}/uvmf_caliptra_top: ${MERGE_SAMPLE_CNT}
${COV_DISK}/${SYSTEM_DEFINITIONID}/uvmf_ecc: ${MERGE_SAMPLE_CNT}
${COV_DISK}/${SYSTEM_DEFINITIONID}/uvmf_hmac: ${MERGE_SAMPLE_CNT}
${COV_DISK}/${SYSTEM_DEFINITIONID}/uvmf_kv: ${MERGE_SAMPLE_CNT}
${COV_DISK}/${SYSTEM_DEFINITIONID}/uvmf_pv: ${MERGE_SAMPLE_CNT}
${COV_DISK}/${SYSTEM_DEFINITIONID}/uvmf_sha512: ${MERGE_SAMPLE_CNT}
${COV_DISK}/${SYSTEM_DEFINITIONID}/uvmf_soc_ifc: ${MERGE_SAMPLE_CNT}

target_dir: ${COV_DISK}/${SYSTEM_DEFINITIONID}/${MERGE_DIR_NAME}/nightly_merge_${BUILD_BUILDID}_${PIPELINE_START_TIME}

Expand Down
86 changes: 47 additions & 39 deletions src/integration/asserts/caliptra_top_sva.sv

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -53,8 +53,18 @@ class caliptra_top_rand_sequence extends caliptra_top_bench_sequence_base;
IDX_SOC_IFC_ENV_MBOX_MAX,
IDX_SOC_IFC_ENV_MBOX_RAND_PAUSER_SMALL,
IDX_SOC_IFC_ENV_MBOX_RAND_PAUSER_MEDIUM,
IDX_SOC_IFC_ENV_MBOX_RAND_PAUSER_LARGE,
IDX_SOC_IFC_ENV_MBOX_RAND_DELAY_SMALL,
IDX_SOC_IFC_ENV_MBOX_RAND_DELAY_MEDIUM,
IDX_SOC_IFC_ENV_MBOX_RAND_DELAY_LARGE,
IDX_SOC_IFC_ENV_MBOX_RAND_MEDIUM_INTERFERENCE,
IDX_SOC_IFC_ENV_MBOX_DLEN_INVALID,
IDX_SOC_IFC_ENV_MBOX_DLEN_OVERFLOW_SMALL,
IDX_SOC_IFC_ENV_MBOX_DLEN_OVERFLOW_MEDIUM,
IDX_SOC_IFC_ENV_MBOX_DLEN_OVERFLOW_LARGE,
IDX_SOC_IFC_ENV_MBOX_DLEN_UNDERFLOW_SMALL,
IDX_SOC_IFC_ENV_MBOX_DLEN_UNDERFLOW_MEDIUM,
IDX_SOC_IFC_ENV_MBOX_DLEN_UNDERFLOW_LARGE,
IDX_SOC_IFC_ENV_MBOX_MULTI_AGENT,
IDX_SOC_IFC_ENV_RST_WARM,
IDX_SOC_IFC_ENV_RST_COLD,
Expand All @@ -72,25 +82,35 @@ class caliptra_top_rand_sequence extends caliptra_top_bench_sequence_base;
// Choose rand weights for each sequence to determine run frequency
constraint avail_env_seqs_c {
rand_seq_idx dist {
//IDX_SOC_IFC_ENV_MBOX_RAND_FW := 0,
IDX_SOC_IFC_ENV_MBOX_RAND_SMALL := 125,
IDX_SOC_IFC_ENV_MBOX_RAND_MEDIUM := 100,
IDX_SOC_IFC_ENV_MBOX_RAND_LARGE := 1,
IDX_SOC_IFC_ENV_MBOX_MIN := 100,
IDX_SOC_IFC_ENV_MBOX_MAX := 10,
IDX_SOC_IFC_ENV_MBOX_RAND_PAUSER_SMALL := 125,
IDX_SOC_IFC_ENV_MBOX_RAND_PAUSER_MEDIUM := 100,
IDX_SOC_IFC_ENV_MBOX_RAND_DELAY_SMALL := 100,
IDX_SOC_IFC_ENV_MBOX_RAND_DELAY_MEDIUM := 100,
IDX_SOC_IFC_ENV_MBOX_MULTI_AGENT := 100,
IDX_SOC_IFC_ENV_RST_WARM := 100,
IDX_SOC_IFC_ENV_RST_COLD := 100,
IDX_SOC_IFC_ENV_MBOX_RST_WARM_RAND_MEDIUM := 100,
IDX_SOC_IFC_ENV_MBOX_RST_COLD_RAND_MEDIUM := 100,
IDX_SOC_IFC_ENV_MBOX_SHA_ACCEL := 100,
IDX_SOC_IFC_ENV_SHA_ACCEL := 100,
IDX_SOC_IFC_ENV_FW_UPD := 10,
IDX_SOC_IFC_ENV_MBOX_UC_REG_ACCESS := 100
//IDX_SOC_IFC_ENV_MBOX_RAND_FW := 0,
IDX_SOC_IFC_ENV_MBOX_RAND_SMALL := 100,
IDX_SOC_IFC_ENV_MBOX_RAND_MEDIUM := 100,
IDX_SOC_IFC_ENV_MBOX_RAND_LARGE := 10,
IDX_SOC_IFC_ENV_MBOX_MIN := 100,
IDX_SOC_IFC_ENV_MBOX_MAX := 10,
IDX_SOC_IFC_ENV_MBOX_RAND_PAUSER_SMALL := 100,
IDX_SOC_IFC_ENV_MBOX_RAND_PAUSER_MEDIUM := 100,
IDX_SOC_IFC_ENV_MBOX_RAND_PAUSER_LARGE := 10,
IDX_SOC_IFC_ENV_MBOX_RAND_DELAY_SMALL := 100,
IDX_SOC_IFC_ENV_MBOX_RAND_DELAY_MEDIUM := 100,
IDX_SOC_IFC_ENV_MBOX_RAND_DELAY_LARGE := 10,
IDX_SOC_IFC_ENV_MBOX_RAND_MEDIUM_INTERFERENCE := 100,
IDX_SOC_IFC_ENV_MBOX_DLEN_INVALID := 10,
IDX_SOC_IFC_ENV_MBOX_DLEN_OVERFLOW_SMALL := 100,
IDX_SOC_IFC_ENV_MBOX_DLEN_OVERFLOW_MEDIUM := 100,
IDX_SOC_IFC_ENV_MBOX_DLEN_OVERFLOW_LARGE := 10,
IDX_SOC_IFC_ENV_MBOX_DLEN_UNDERFLOW_SMALL := 100,
IDX_SOC_IFC_ENV_MBOX_DLEN_UNDERFLOW_MEDIUM := 100,
IDX_SOC_IFC_ENV_MBOX_DLEN_UNDERFLOW_LARGE := 10,
IDX_SOC_IFC_ENV_MBOX_MULTI_AGENT := 200,
IDX_SOC_IFC_ENV_RST_WARM := 100,
IDX_SOC_IFC_ENV_RST_COLD := 100,
IDX_SOC_IFC_ENV_MBOX_RST_WARM_RAND_MEDIUM := 100,
IDX_SOC_IFC_ENV_MBOX_RST_COLD_RAND_MEDIUM := 100,
IDX_SOC_IFC_ENV_MBOX_SHA_ACCEL := 100,
IDX_SOC_IFC_ENV_SHA_ACCEL := 100,
IDX_SOC_IFC_ENV_FW_UPD := 10,
IDX_SOC_IFC_ENV_MBOX_UC_REG_ACCESS := 100
};
}
constraint iter_count_c {
Expand Down Expand Up @@ -231,12 +251,42 @@ class caliptra_top_rand_sequence extends caliptra_top_bench_sequence_base;
end
obj = soc_ifc_env_mbox_rand_pauser_medium_sequence_t::get_type().create_object($sformatf("soc_ifc_env_seq_ii[%0d]",ii));
end
IDX_SOC_IFC_ENV_MBOX_RAND_PAUSER_LARGE: begin
if (!pauser_valid_initialized) begin
if(!soc_ifc_env_pauser_init_seq.randomize())
`uvm_fatal("CALIPTRA_TOP_RAND_TEST", "caliptra_top_rand_sequence::body() - soc_ifc_env_pauser_init_seq randomization failed")
soc_ifc_env_pauser_init_seq.start(top_configuration.soc_ifc_subenv_config.vsqr);

`uvm_info("CALIPTRA_TOP_RAND_TEST", "SoC completed PAUSER VALID initialization", UVM_LOW)
pauser_valid_initialized = 1'b1;
end
obj = soc_ifc_env_mbox_rand_pauser_large_sequence_t::get_type().create_object($sformatf("soc_ifc_env_seq_ii[%0d]",ii));
end
IDX_SOC_IFC_ENV_MBOX_RAND_DELAY_SMALL: begin
obj = soc_ifc_env_mbox_rand_delay_small_sequence_t::get_type().create_object($sformatf("soc_ifc_env_seq_ii[%0d]",ii));
end
IDX_SOC_IFC_ENV_MBOX_RAND_DELAY_MEDIUM: begin
obj = soc_ifc_env_mbox_rand_delay_medium_sequence_t::get_type().create_object($sformatf("soc_ifc_env_seq_ii[%0d]",ii));
end
IDX_SOC_IFC_ENV_MBOX_RAND_DELAY_LARGE: begin
obj = soc_ifc_env_mbox_rand_delay_large_sequence_t::get_type().create_object($sformatf("soc_ifc_env_seq_ii[%0d]",ii));
end
IDX_SOC_IFC_ENV_MBOX_RAND_MEDIUM_INTERFERENCE:
obj = soc_ifc_env_mbox_rand_medium_interference_sequence_t::get_type().create_object($sformatf("soc_ifc_env_seq_ii[%0d]",ii));
IDX_SOC_IFC_ENV_MBOX_DLEN_INVALID:
obj = soc_ifc_env_mbox_dlen_invalid_sequence_t::get_type().create_object($sformatf("soc_ifc_env_seq_ii[%0d]",ii));
IDX_SOC_IFC_ENV_MBOX_DLEN_OVERFLOW_SMALL:
obj = soc_ifc_env_mbox_dlen_overflow_small_sequence_t::get_type().create_object($sformatf("soc_ifc_env_seq_ii[%0d]",ii));
IDX_SOC_IFC_ENV_MBOX_DLEN_OVERFLOW_MEDIUM:
obj = soc_ifc_env_mbox_dlen_overflow_medium_sequence_t::get_type().create_object($sformatf("soc_ifc_env_seq_ii[%0d]",ii));
IDX_SOC_IFC_ENV_MBOX_DLEN_OVERFLOW_LARGE:
obj = soc_ifc_env_mbox_dlen_overflow_large_sequence_t::get_type().create_object($sformatf("soc_ifc_env_seq_ii[%0d]",ii));
IDX_SOC_IFC_ENV_MBOX_DLEN_UNDERFLOW_SMALL:
obj = soc_ifc_env_mbox_dlen_underflow_small_sequence_t::get_type().create_object($sformatf("soc_ifc_env_seq_ii[%0d]",ii));
IDX_SOC_IFC_ENV_MBOX_DLEN_UNDERFLOW_MEDIUM:
obj = soc_ifc_env_mbox_dlen_underflow_medium_sequence_t::get_type().create_object($sformatf("soc_ifc_env_seq_ii[%0d]",ii));
IDX_SOC_IFC_ENV_MBOX_DLEN_UNDERFLOW_LARGE:
obj = soc_ifc_env_mbox_dlen_underflow_large_sequence_t::get_type().create_object($sformatf("soc_ifc_env_seq_ii[%0d]",ii));
IDX_SOC_IFC_ENV_MBOX_MULTI_AGENT:
// TODO PAUSER init first?
obj = soc_ifc_env_mbox_rand_multi_agent_sequence_t::get_type().create_object($sformatf("soc_ifc_env_seq_ii[%0d]",ii));
Expand Down
4 changes: 4 additions & 0 deletions src/keyvault/uvmf_kv/coverage/uvmf_kv_cm_hier.cfg
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
begin line+tgl+fsm+cond+branch
+tree hdl_top.dut 0
end

7 changes: 3 additions & 4 deletions src/libs/rtl/apb_slv_sif.sv
Original file line number Diff line number Diff line change
Expand Up @@ -77,12 +77,11 @@ end
always_comb access_phase = PSEL & PENABLE;

//drive ready if no hold from component
always_comb PREADY = (dv & access_phase) ? ~req_hold : '1;
always_comb PREADY = dv ? ~req_hold : '1;
//drive read data from component
always_comb PRDATA = (dv & access_phase) ? rdata : '0;
always_comb PRDATA = rdata;
//drive error from component for valid access, drive error for invalid access phase
always_comb PSLVERR = (dv & access_phase) ? slverr :
access_phase ? '1 : '0;
always_comb PSLVERR = slverr;



Expand Down
1 change: 0 additions & 1 deletion src/soc_ifc/.gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,3 @@
docs

tb/EXP
# stimulus/testsuites/commit_regress.yml
7 changes: 4 additions & 3 deletions src/soc_ifc/rtl/mbox.sv
Original file line number Diff line number Diff line change
Expand Up @@ -60,8 +60,9 @@ module mbox

);

localparam DEPTH = (SIZE_KB * 1024 * 8) / DATA_W;
localparam MBOX_SIZE_IN_DW = (SIZE_KB*1024)/4;
localparam MBOX_SIZE_IN_BYTES = SIZE_KB*1024;
localparam MBOX_SIZE_IN_DW = (MBOX_SIZE_IN_BYTES)/4;
localparam DEPTH = (MBOX_SIZE_IN_DW * 32) / DATA_W;

//this module is used to instantiate a single mailbox instance
//requests within the address space of this mailbox are routed here from the top level
Expand Down Expand Up @@ -213,7 +214,7 @@ always_comb arc_MBOX_EXECUTE_SOC_MBOX_ERROR = req_dv && req_data.soc_req &&
//by the client filling the mailbox is used for masking the data
//Store the dlen as a ptr to the last entry
always_comb latch_dlen_in_dws = arc_MBOX_RDY_FOR_DATA_MBOX_EXECUTE_UC | arc_MBOX_RDY_FOR_DATA_MBOX_EXECUTE_SOC | arc_MBOX_EXECUTE_UC_MBOX_EXECUTE_SOC;
always_comb mbox_dlen_in_dws = (hwif_out.mbox_dlen.length.value >= MBOX_SIZE_IN_DW) ? MBOX_SIZE_IN_DW :
always_comb mbox_dlen_in_dws = (hwif_out.mbox_dlen.length.value >= MBOX_SIZE_IN_BYTES) ? MBOX_SIZE_IN_DW :
(hwif_out.mbox_dlen.length.value >> 2) + (hwif_out.mbox_dlen.length.value[0] | hwif_out.mbox_dlen.length.value[1]);
//latched dlen is the smaller of the programmed dlen or the current wrptr
//this avoids a case where a sender writes less than programmed and the receiver can read beyond that
Expand Down
Loading

0 comments on commit ce10589

Please sign in to comment.