Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merge dev-msft --> dev-integrate #192

Merged
merged 19 commits into from
Aug 25, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
9aa732e
Merged PR 116787: Add Mailbox ECC Error injection to UVM tb
calebofearth Jul 27, 2023
3c8ae28
Merged PR 118346: added SVA and coverage for modular operations
mojtaba-bisheh Aug 2, 2023
896ef91
Merged PR 118379: More RDC clean up and fuse valid pauser fix
Nitsirks Aug 4, 2023
45149d1
Merged PR 118100: UVM protocol error testcases
calebofearth Aug 7, 2023
4fdf169
Merged PR 118807: 2:1 Mux bugfix and added current read pointer to mb…
Nitsirks Aug 8, 2023
64a9993
Merged PR 118985: fixed mont mult bug in last reduction found by FPV
mojtaba-bisheh Aug 8, 2023
1ce58e6
Merged PR 118720: WDT in top-level UVM
Aug 9, 2023
3c5058b
Updated timestamps for Release_notes.md and README.md
Aug 14, 2023
65c23bf
Updated integration spec and testplan
Aug 14, 2023
30da89b
Merged PR 119192: soc_ifc_tb fixes and debug unlock logic fix
Nitsirks Aug 14, 2023
2997c9d
Merged PR 119559: UVM fixes for RDC reset timing changes
calebofearth Aug 15, 2023
4f85139
Merged PR 120028: added pcr invalid command
mojtaba-bisheh Aug 15, 2023
071060b
Merged PR 120140: bringing noncore reset out after rdc clk dis delay …
Nitsirks Aug 19, 2023
b2c3439
Merged PR 119732: ROM regression timeout fix
calebofearth Aug 21, 2023
5cf193b
Merged PR 120849: UVM Regression fixes
calebofearth Aug 21, 2023
bfab1a5
Merged PR 120675: KV UVM updates for clear and debug mode changes
Aug 23, 2023
581213e
Merged PR 120994: Fix for bug 532683 - SHA Accel direct access doesn'…
Nitsirks Aug 23, 2023
719ca1e
Updated README and Release_Notes timestamps
Aug 24, 2023
d5b0ed4
Merge pull request #185 from chipsalliance/dev-msft-20230813
anjpar Aug 24, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and<BR>
limitations under the License.*_<BR>

# **Caliptra Hands-On Guide** #
_*Last Update: 2023/07/28*_
_*Last Update: 2023/08/24*_


## **Tools Used** ##
Expand Down
2 changes: 1 addition & 1 deletion Release_Notes.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and<BR>
limitations under the License.*_<BR>

# **Release Notes** #
_*Last Update: 2023/07/26*_
_*Last Update: 2023/08/24*_

## Rev 0p8 ##

Expand Down
Binary file modified docs/Caliptra_Integration_Specification.pdf
Binary file not shown.
Binary file modified docs/Caliptra_TestPlan.xlsx
Binary file not shown.
1 change: 1 addition & 0 deletions src/aes/config/aes.vf
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ ${CALIPTRA_ROOT}/src/libs/rtl/apb_slv_sif.sv
${CALIPTRA_ROOT}/src/libs/rtl/ahb_slv_sif.sv
${CALIPTRA_ROOT}/src/libs/rtl/caliptra_icg.sv
${CALIPTRA_ROOT}/src/libs/rtl/clk_gate.sv
${CALIPTRA_ROOT}/src/libs/rtl/caliptra_2ff_sync.sv
${CALIPTRA_ROOT}/src/caliptra_prim/rtl/caliptra_prim_util_pkg.sv
${CALIPTRA_ROOT}/src/caliptra_prim/rtl/caliptra_prim_alert_pkg.sv
${CALIPTRA_ROOT}/src/caliptra_prim/rtl/caliptra_prim_subreg_pkg.sv
Expand Down
1 change: 1 addition & 0 deletions src/aes/config/aes_pkg.vf
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ ${CALIPTRA_ROOT}/src/libs/rtl/apb_slv_sif.sv
${CALIPTRA_ROOT}/src/libs/rtl/ahb_slv_sif.sv
${CALIPTRA_ROOT}/src/libs/rtl/caliptra_icg.sv
${CALIPTRA_ROOT}/src/libs/rtl/clk_gate.sv
${CALIPTRA_ROOT}/src/libs/rtl/caliptra_2ff_sync.sv
${CALIPTRA_ROOT}/src/caliptra_prim/rtl/caliptra_prim_util_pkg.sv
${CALIPTRA_ROOT}/src/caliptra_prim/rtl/caliptra_prim_alert_pkg.sv
${CALIPTRA_ROOT}/src/caliptra_prim/rtl/caliptra_prim_subreg_pkg.sv
Expand Down
1 change: 1 addition & 0 deletions src/ahb_lite_bus/config/ahb_lite_bus.vf
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ ${CALIPTRA_ROOT}/src/libs/rtl/apb_slv_sif.sv
${CALIPTRA_ROOT}/src/libs/rtl/ahb_slv_sif.sv
${CALIPTRA_ROOT}/src/libs/rtl/caliptra_icg.sv
${CALIPTRA_ROOT}/src/libs/rtl/clk_gate.sv
${CALIPTRA_ROOT}/src/libs/rtl/caliptra_2ff_sync.sv
${CALIPTRA_ROOT}/src/libs/rtl/ahb_to_reg_adapter.sv
${CALIPTRA_ROOT}/src/ahb_lite_bus/rtl/ahb_lite_bus_inf.sv
${CALIPTRA_ROOT}/src/ahb_lite_bus/rtl/ahb_lite_address_decoder.sv
Expand Down
36 changes: 22 additions & 14 deletions src/ahb_lite_bus/rtl/ahb_lite_2to1_mux.sv
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ module ahb_lite_2to1_mux #(
// ---------------------------------------
input logic hclk,
input logic hreset_n,
input logic force_bus_idle,

// ---------------------------------------
// From Initiator 0
Expand Down Expand Up @@ -81,7 +82,9 @@ module ahb_lite_2to1_mux #(
//Initiator 0 always takes priority

logic initiator0_address_ph, initiator1_address_ph;
logic initiator0_data_ph_nq, initiator1_data_ph_nq;
logic initiator0_data_ph, initiator1_data_ph;
logic initiator0_pend_addr_ph_nq, initiator1_pend_addr_ph_nq;
logic initiator0_pend_addr_ph, initiator1_pend_addr_ph;
logic initiator0_gnt, initiator1_gnt;
logic [AHB_LITE_ADDR_WIDTH-1:0] initiator0_pend_haddr, initiator1_pend_haddr;
Expand All @@ -94,8 +97,8 @@ logic initiator0_pend_hwrite, initiator1_pend_hwrite;
logic initiator0_hwrite, initiator1_hwrite;

//Detect address phase
always_comb initiator0_address_ph = hsel_i_0 & hready_i_0 & htrans_i_0 inside {2'b10, 2'b11};
always_comb initiator1_address_ph = hsel_i_1 & hready_i_1 & htrans_i_1 inside {2'b10, 2'b11};
always_comb initiator0_address_ph = hsel_i_0 & hready_i_0 & htrans_i_0 inside {2'b10, 2'b11} & ~force_bus_idle;
always_comb initiator1_address_ph = hsel_i_1 & hready_i_1 & htrans_i_1 inside {2'b10, 2'b11} & ~force_bus_idle;

always_ff @(posedge hclk or negedge hreset_n) begin
if (~hreset_n) begin
Expand All @@ -107,10 +110,10 @@ always_ff @(posedge hclk or negedge hreset_n) begin
initiator1_pend_hsize <= '0;
initiator0_pend_hwrite <= '0;
initiator1_pend_hwrite <= '0;
initiator0_pend_addr_ph <= '0;
initiator1_pend_addr_ph <= '0;
initiator0_data_ph <= '0;
initiator1_data_ph <= '0;
initiator0_pend_addr_ph_nq <= '0;
initiator1_pend_addr_ph_nq <= '0;
initiator0_data_ph_nq <= '0;
initiator1_data_ph_nq <= '0;
end
else begin
//Capture the address during the address phase for each initiator
Expand All @@ -124,15 +127,20 @@ always_ff @(posedge hclk or negedge hreset_n) begin
initiator1_pend_hwrite <= initiator1_address_ph & ~initiator1_pend_addr_ph ? hwrite_i_1 : initiator1_pend_hwrite;

//Capture pending address phase when initiators collide
initiator0_pend_addr_ph <= (initiator0_address_ph | initiator0_pend_addr_ph) & ~(hreadyout_i & initiator0_gnt);
initiator1_pend_addr_ph <= (initiator1_address_ph | initiator1_pend_addr_ph) & ~(hreadyout_i & initiator1_gnt);
initiator0_pend_addr_ph_nq <= (initiator0_address_ph | initiator0_pend_addr_ph) & ~(hreadyout_i & initiator0_gnt);
initiator1_pend_addr_ph_nq <= (initiator1_address_ph | initiator1_pend_addr_ph) & ~(hreadyout_i & initiator1_gnt);

//Transition to data phase when endpoint accepts address phase, hold when not ready
initiator0_data_ph <= (initiator0_gnt) | (initiator0_data_ph & ~hreadyout_i);
initiator1_data_ph <= (initiator1_gnt) | (initiator1_data_ph & ~hreadyout_i);
initiator0_data_ph_nq <= (initiator0_gnt) | (initiator0_data_ph & ~hreadyout_i);
initiator1_data_ph_nq <= (initiator1_gnt) | (initiator1_data_ph & ~hreadyout_i);
end
end

always_comb initiator0_data_ph = initiator0_data_ph_nq & ~force_bus_idle;
always_comb initiator1_data_ph = initiator1_data_ph_nq & ~force_bus_idle;
always_comb initiator0_pend_addr_ph = initiator0_pend_addr_ph_nq & ~force_bus_idle;
always_comb initiator1_pend_addr_ph = initiator1_pend_addr_ph_nq & ~force_bus_idle;

always_comb initiator0_haddr = initiator0_pend_addr_ph ? initiator0_pend_haddr : haddr_i_0;
always_comb initiator0_htrans = initiator0_pend_addr_ph ? initiator0_pend_htrans : htrans_i_0;
always_comb initiator0_hsize = initiator0_pend_addr_ph ? initiator0_pend_hsize : hsize_i_0;
Expand Down Expand Up @@ -183,13 +191,13 @@ always_comb hready_o = initiator1_gnt | (initiator1_data_ph & ~initiator0_gnt) ?
//Send the data coming from responder when selected
always_comb hresp_o_0 = initiator0_data_ph ? hresp_i : '0;
always_comb hrdata_o_0 = initiator0_data_ph ? hrdata_i : '0;
always_comb hready_o_0 = initiator0_pend_addr_ph ? '0 :
initiator0_data_ph ? hreadyout_i : '1;
always_comb hready_o_0 = initiator0_data_ph ? hreadyout_i :
initiator0_pend_addr_ph ? '0 : '1;

always_comb hresp_o_1 = initiator1_data_ph? hresp_i: '0;
always_comb hrdata_o_1 = initiator1_data_ph ? hrdata_i: '0;
always_comb hready_o_1 = initiator1_pend_addr_ph ? '0 :
initiator1_data_ph ? hreadyout_i : '1;
always_comb hready_o_1 = initiator1_data_ph ? hreadyout_i :
initiator1_pend_addr_ph ? '0 : '1;

`CALIPTRA_ASSERT_MUTEX(ERR_2TO1MUX_MUTEX_DATA_PH, {initiator0_data_ph,initiator1_data_ph}, hclk, hreset_n)
`CALIPTRA_ASSERT_NEVER(ERR_2TO1MUX_BAD_HTRANS, (htrans_o == 2'b01), hclk, hreset_n)
Expand Down
4 changes: 1 addition & 3 deletions src/ahb_lite_bus/rtl/ahb_lite_address_decoder.sv
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ module ahb_lite_address_decoder #(
// ---------------------------------------
input logic hclk,
input logic hreset_n,

input logic force_bus_idle,
// ---------------------------------------
// From Initiator Interface Port
// ---------------------------------------
Expand Down Expand Up @@ -56,8 +56,6 @@ module ahb_lite_address_decoder #(
output logic [NUM_RESPONDERS-1:0][1:0] htrans_o,
output logic [NUM_RESPONDERS-1:0][2:0] hsize_o,

input logic force_bus_idle,

// ----------------------------------------------
// Responder Disable
// ----------------------------------------------
Expand Down
1 change: 1 addition & 0 deletions src/caliptra_prim/config/caliptra_prim.vf
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ ${CALIPTRA_ROOT}/src/libs/rtl/apb_slv_sif.sv
${CALIPTRA_ROOT}/src/libs/rtl/ahb_slv_sif.sv
${CALIPTRA_ROOT}/src/libs/rtl/caliptra_icg.sv
${CALIPTRA_ROOT}/src/libs/rtl/clk_gate.sv
${CALIPTRA_ROOT}/src/libs/rtl/caliptra_2ff_sync.sv
${CALIPTRA_ROOT}/src/caliptra_prim/rtl/caliptra_prim_util_pkg.sv
${CALIPTRA_ROOT}/src/caliptra_prim/rtl/caliptra_prim_alert_pkg.sv
${CALIPTRA_ROOT}/src/caliptra_prim/rtl/caliptra_prim_subreg_pkg.sv
Expand Down
1 change: 1 addition & 0 deletions src/csrng/config/csrng.vf
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ ${CALIPTRA_ROOT}/src/libs/rtl/apb_slv_sif.sv
${CALIPTRA_ROOT}/src/libs/rtl/ahb_slv_sif.sv
${CALIPTRA_ROOT}/src/libs/rtl/caliptra_icg.sv
${CALIPTRA_ROOT}/src/libs/rtl/clk_gate.sv
${CALIPTRA_ROOT}/src/libs/rtl/caliptra_2ff_sync.sv
${CALIPTRA_ROOT}/src/caliptra_prim/rtl/caliptra_prim_util_pkg.sv
${CALIPTRA_ROOT}/src/caliptra_prim/rtl/caliptra_prim_alert_pkg.sv
${CALIPTRA_ROOT}/src/caliptra_prim/rtl/caliptra_prim_subreg_pkg.sv
Expand Down
1 change: 1 addition & 0 deletions src/csrng/config/csrng_tb.vf
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ ${CALIPTRA_ROOT}/src/libs/rtl/apb_slv_sif.sv
${CALIPTRA_ROOT}/src/libs/rtl/ahb_slv_sif.sv
${CALIPTRA_ROOT}/src/libs/rtl/caliptra_icg.sv
${CALIPTRA_ROOT}/src/libs/rtl/clk_gate.sv
${CALIPTRA_ROOT}/src/libs/rtl/caliptra_2ff_sync.sv
${CALIPTRA_ROOT}/src/caliptra_prim/rtl/caliptra_prim_util_pkg.sv
${CALIPTRA_ROOT}/src/caliptra_prim/rtl/caliptra_prim_alert_pkg.sv
${CALIPTRA_ROOT}/src/caliptra_prim/rtl/caliptra_prim_subreg_pkg.sv
Expand Down
1 change: 1 addition & 0 deletions src/datavault/config/datavault.vf
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ ${CALIPTRA_ROOT}/src/libs/rtl/apb_slv_sif.sv
${CALIPTRA_ROOT}/src/libs/rtl/ahb_slv_sif.sv
${CALIPTRA_ROOT}/src/libs/rtl/caliptra_icg.sv
${CALIPTRA_ROOT}/src/libs/rtl/clk_gate.sv
${CALIPTRA_ROOT}/src/libs/rtl/caliptra_2ff_sync.sv
${CALIPTRA_ROOT}/src/datavault/rtl/dv_defines_pkg.sv
${CALIPTRA_ROOT}/src/libs/rtl/ahb_to_reg_adapter.sv
${CALIPTRA_ROOT}/src/datavault/rtl/dv_reg_pkg.sv
Expand Down
1 change: 1 addition & 0 deletions src/doe/config/doe_cbc_tb.vf
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ ${CALIPTRA_ROOT}/src/libs/rtl/apb_slv_sif.sv
${CALIPTRA_ROOT}/src/libs/rtl/ahb_slv_sif.sv
${CALIPTRA_ROOT}/src/libs/rtl/caliptra_icg.sv
${CALIPTRA_ROOT}/src/libs/rtl/clk_gate.sv
${CALIPTRA_ROOT}/src/libs/rtl/caliptra_2ff_sync.sv
${CALIPTRA_ROOT}/src/keyvault/rtl/kv_defines_pkg.sv
${CALIPTRA_ROOT}/src/keyvault/rtl/kv_macros.svh
${CALIPTRA_ROOT}/src/doe/rtl/doe_defines_pkg.sv
Expand Down
1 change: 1 addition & 0 deletions src/doe/config/doe_core_cbc_tb.vf
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ ${CALIPTRA_ROOT}/src/libs/rtl/apb_slv_sif.sv
${CALIPTRA_ROOT}/src/libs/rtl/ahb_slv_sif.sv
${CALIPTRA_ROOT}/src/libs/rtl/caliptra_icg.sv
${CALIPTRA_ROOT}/src/libs/rtl/clk_gate.sv
${CALIPTRA_ROOT}/src/libs/rtl/caliptra_2ff_sync.sv
${CALIPTRA_ROOT}/src/keyvault/rtl/kv_defines_pkg.sv
${CALIPTRA_ROOT}/src/keyvault/rtl/kv_macros.svh
${CALIPTRA_ROOT}/src/doe/rtl/doe_defines_pkg.sv
Expand Down
1 change: 1 addition & 0 deletions src/doe/config/doe_ctrl.vf
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ ${CALIPTRA_ROOT}/src/libs/rtl/apb_slv_sif.sv
${CALIPTRA_ROOT}/src/libs/rtl/ahb_slv_sif.sv
${CALIPTRA_ROOT}/src/libs/rtl/caliptra_icg.sv
${CALIPTRA_ROOT}/src/libs/rtl/clk_gate.sv
${CALIPTRA_ROOT}/src/libs/rtl/caliptra_2ff_sync.sv
${CALIPTRA_ROOT}/src/keyvault/rtl/kv_defines_pkg.sv
${CALIPTRA_ROOT}/src/keyvault/rtl/kv_macros.svh
${CALIPTRA_ROOT}/src/doe/rtl/doe_defines_pkg.sv
Expand Down
14 changes: 14 additions & 0 deletions src/ecc/config/compile.yml
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,20 @@ targets:
- $COMPILE_ROOT/tb/ecc_top_tb.sv
tops: [ecc_top_tb]
---
provides: [ecc_montgomerymultiplier_tb]
schema_version: 2.4.0
requires:
- ecc_top
targets:
tb:
directories:
- $COMPILE_ROOT/tb
files:
- $COMPILE_ROOT/tb/ecc_montgomerymultiplier_tb.sv
tops: [ecc_montgomerymultiplier_tb]
sim:
pre_exec: 'echo "[PRE-EXEC] Copying Mont multiplication test vector to $PWD" && cp $COMPILE_ROOT/tb/test_vectors/mm_test_vectors*.hex .'
---
provides: [ecc_coverage]
schema_version: 2.4.0
requires:
Expand Down
81 changes: 81 additions & 0 deletions src/ecc/config/ecc_montgomerymultiplier_tb.vf
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
+incdir+${CALIPTRA_ROOT}/src/integration/rtl
+incdir+${CALIPTRA_ROOT}/src/libs/rtl
+incdir+${CALIPTRA_ROOT}/src/keyvault/rtl
+incdir+${CALIPTRA_ROOT}/src/pcrvault/rtl
+incdir+${CALIPTRA_ROOT}/src/ecc/tb
+incdir+${CALIPTRA_ROOT}/src/sha512/rtl
+incdir+${CALIPTRA_ROOT}/src/sha512_masked/rtl
+incdir+${CALIPTRA_ROOT}/src/hmac/rtl
+incdir+${CALIPTRA_ROOT}/src/hmac_drbg/rtl
+incdir+${CALIPTRA_ROOT}/src/ecc/rtl
${CALIPTRA_ROOT}/src/integration/rtl/config_defines.svh
${CALIPTRA_ROOT}/src/integration/rtl/caliptra_reg_defines.svh
${CALIPTRA_ROOT}/src/libs/rtl/caliptra_sva.svh
${CALIPTRA_ROOT}/src/libs/rtl/caliptra_macros.svh
${CALIPTRA_ROOT}/src/libs/rtl/caliptra_sram.sv
${CALIPTRA_ROOT}/src/libs/rtl/ahb_defines_pkg.sv
${CALIPTRA_ROOT}/src/libs/rtl/caliptra_ahb_srom.sv
${CALIPTRA_ROOT}/src/libs/rtl/apb_slv_sif.sv
${CALIPTRA_ROOT}/src/libs/rtl/ahb_slv_sif.sv
${CALIPTRA_ROOT}/src/libs/rtl/caliptra_icg.sv
${CALIPTRA_ROOT}/src/libs/rtl/clk_gate.sv
${CALIPTRA_ROOT}/src/libs/rtl/caliptra_2ff_sync.sv
${CALIPTRA_ROOT}/src/keyvault/rtl/kv_defines_pkg.sv
${CALIPTRA_ROOT}/src/keyvault/rtl/kv_macros.svh
${CALIPTRA_ROOT}/src/pcrvault/rtl/pv_defines_pkg.sv
${CALIPTRA_ROOT}/src/pcrvault/rtl/pv_macros.svh
${CALIPTRA_ROOT}/src/pcrvault/rtl/pv_gen_hash.sv
${CALIPTRA_ROOT}/src/ecc/tb/ecc_montgomerymultiplier_tb.sv
${CALIPTRA_ROOT}/src/libs/rtl/ahb_to_reg_adapter.sv
${CALIPTRA_ROOT}/src/keyvault/rtl/kv_reg_pkg.sv
${CALIPTRA_ROOT}/src/keyvault/rtl/kv_reg.sv
${CALIPTRA_ROOT}/src/keyvault/rtl/kv.sv
${CALIPTRA_ROOT}/src/keyvault/rtl/kv_fsm.sv
${CALIPTRA_ROOT}/src/keyvault/rtl/kv_read_client.sv
${CALIPTRA_ROOT}/src/keyvault/rtl/kv_write_client.sv
${CALIPTRA_ROOT}/src/pcrvault/rtl/pv_reg_pkg.sv
${CALIPTRA_ROOT}/src/pcrvault/rtl/pv_reg.sv
${CALIPTRA_ROOT}/src/pcrvault/rtl/pv.sv
${CALIPTRA_ROOT}/src/sha512/rtl/sha512_reg_pkg.sv
${CALIPTRA_ROOT}/src/sha512/rtl/sha512_params_pkg.sv
${CALIPTRA_ROOT}/src/sha512/rtl/sha512_ctrl.sv
${CALIPTRA_ROOT}/src/sha512/rtl/sha512.sv
${CALIPTRA_ROOT}/src/sha512/rtl/sha512_core.v
${CALIPTRA_ROOT}/src/sha512/rtl/sha512_h_constants.v
${CALIPTRA_ROOT}/src/sha512/rtl/sha512_k_constants.v
${CALIPTRA_ROOT}/src/sha512/rtl/sha512_w_mem.v
${CALIPTRA_ROOT}/src/sha512/rtl/sha512_reg.sv
${CALIPTRA_ROOT}/src/sha512_masked/rtl/sha512_masked_defines_pkg.sv
${CALIPTRA_ROOT}/src/sha512_masked/rtl/sha512_masked_core.sv
${CALIPTRA_ROOT}/src/sha512_masked/rtl/sha512_masked_lfsr.sv
${CALIPTRA_ROOT}/src/hmac/rtl/hmac_param_pkg.sv
${CALIPTRA_ROOT}/src/hmac/rtl/hmac_reg_pkg.sv
${CALIPTRA_ROOT}/src/hmac/rtl/hmac_ctrl.sv
${CALIPTRA_ROOT}/src/hmac/rtl/hmac.sv
${CALIPTRA_ROOT}/src/hmac/rtl/hmac_core.v
${CALIPTRA_ROOT}/src/hmac/rtl/hmac_reg.sv
${CALIPTRA_ROOT}/src/hmac_drbg/rtl/hmac_drbg.sv
${CALIPTRA_ROOT}/src/hmac_drbg/rtl/hmac_drbg_lfsr.sv
${CALIPTRA_ROOT}/src/ecc/rtl/ecc_reg_pkg.sv
${CALIPTRA_ROOT}/src/ecc/rtl/ecc_defines_pkg.sv
${CALIPTRA_ROOT}/src/ecc/rtl/ecc_params_pkg.sv
${CALIPTRA_ROOT}/src/ecc/rtl/ecc_dsa_uop_pkg.sv
${CALIPTRA_ROOT}/src/ecc/rtl/ecc_pm_uop_pkg.sv
${CALIPTRA_ROOT}/src/ecc/rtl/ecc_top.sv
${CALIPTRA_ROOT}/src/ecc/rtl/ecc_reg.sv
${CALIPTRA_ROOT}/src/ecc/rtl/ecc_dsa_ctrl.sv
${CALIPTRA_ROOT}/src/ecc/rtl/ecc_dsa_sequencer.sv
${CALIPTRA_ROOT}/src/ecc/rtl/ecc_scalar_blinding.sv
${CALIPTRA_ROOT}/src/ecc/rtl/ecc_hmac_drbg_interface.sv
${CALIPTRA_ROOT}/src/ecc/rtl/ecc_arith_unit.sv
${CALIPTRA_ROOT}/src/ecc/rtl/ecc_pm_ctrl.sv
${CALIPTRA_ROOT}/src/ecc/rtl/ecc_pm_sequencer.sv
${CALIPTRA_ROOT}/src/ecc/rtl/ecc_ram_tdp_file.sv
${CALIPTRA_ROOT}/src/ecc/rtl/ecc_fau.sv
${CALIPTRA_ROOT}/src/ecc/rtl/ecc_montgomerymultiplier.sv
${CALIPTRA_ROOT}/src/ecc/rtl/ecc_pe_first.sv
${CALIPTRA_ROOT}/src/ecc/rtl/ecc_pe.sv
${CALIPTRA_ROOT}/src/ecc/rtl/ecc_pe_final.sv
${CALIPTRA_ROOT}/src/ecc/rtl/ecc_mult_dsp.sv
${CALIPTRA_ROOT}/src/ecc/rtl/ecc_add_sub_mod_alter.sv
${CALIPTRA_ROOT}/src/ecc/rtl/ecc_adder.sv
1 change: 1 addition & 0 deletions src/ecc/config/ecc_top.vf
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ ${CALIPTRA_ROOT}/src/libs/rtl/apb_slv_sif.sv
${CALIPTRA_ROOT}/src/libs/rtl/ahb_slv_sif.sv
${CALIPTRA_ROOT}/src/libs/rtl/caliptra_icg.sv
${CALIPTRA_ROOT}/src/libs/rtl/clk_gate.sv
${CALIPTRA_ROOT}/src/libs/rtl/caliptra_2ff_sync.sv
${CALIPTRA_ROOT}/src/keyvault/rtl/kv_defines_pkg.sv
${CALIPTRA_ROOT}/src/keyvault/rtl/kv_macros.svh
${CALIPTRA_ROOT}/src/pcrvault/rtl/pv_defines_pkg.sv
Expand Down
1 change: 1 addition & 0 deletions src/ecc/config/ecc_top_tb.vf
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ ${CALIPTRA_ROOT}/src/libs/rtl/apb_slv_sif.sv
${CALIPTRA_ROOT}/src/libs/rtl/ahb_slv_sif.sv
${CALIPTRA_ROOT}/src/libs/rtl/caliptra_icg.sv
${CALIPTRA_ROOT}/src/libs/rtl/clk_gate.sv
${CALIPTRA_ROOT}/src/libs/rtl/caliptra_2ff_sync.sv
${CALIPTRA_ROOT}/src/keyvault/rtl/kv_defines_pkg.sv
${CALIPTRA_ROOT}/src/keyvault/rtl/kv_macros.svh
${CALIPTRA_ROOT}/src/pcrvault/rtl/pv_defines_pkg.sv
Expand Down
44 changes: 44 additions & 0 deletions src/ecc/coverage/ecc_top_cov_if.sv
Original file line number Diff line number Diff line change
Expand Up @@ -39,8 +39,39 @@ interface ecc_top_cov_if
logic pubkeyx_input_outofrange;
logic pubkeyy_input_outofrange;
logic pubkey_input_invalid;
logic pcr_sign_input_invalid;
logic keygen_process;
logic signing_process;
logic verifying_process;


logic mod_p_q;
logic add_en;
logic add_sub_i;
logic [383 : 0] add_res0;
logic add_cout0;
logic add_cout1;
logic add_res_less_than_prime;
logic add_res_greater_than_prime;
logic add_res_greater_than_384_bit;

logic mult_ready;
logic mult_last_reduction;
logic mult_final_subtraction;

assign mod_p_q = ecc_top.ecc_dsa_ctrl_i.ecc_arith_unit_i.mod_p_q;
assign add_en = ecc_top.ecc_dsa_ctrl_i.ecc_arith_unit_i.ecc_fau_i.add_en_i;
assign add_sub_i = ecc_top.ecc_dsa_ctrl_i.ecc_arith_unit_i.ecc_fau_i.sub_i;
assign add_res0 = ecc_top.ecc_dsa_ctrl_i.ecc_arith_unit_i.ecc_fau_i.i_ADDER_SUBTRACTOR.r0_reg;
assign add_cout0 = ecc_top.ecc_dsa_ctrl_i.ecc_arith_unit_i.ecc_fau_i.i_ADDER_SUBTRACTOR.carry0_reg;
assign add_cout1 = ecc_top.ecc_dsa_ctrl_i.ecc_arith_unit_i.ecc_fau_i.i_ADDER_SUBTRACTOR.carry1;
assign add_res_less_than_prime = ((add_cout0 == 1'b0) & (add_res0 < ecc_top.ecc_dsa_ctrl_i.ecc_arith_unit_i.ecc_fau_i.prime_i));
assign add_res_greater_than_prime = ((add_cout0 == 1'b0) & (add_res0 >= ecc_top.ecc_dsa_ctrl_i.ecc_arith_unit_i.ecc_fau_i.prime_i));
assign add_res_greater_than_384_bit = (add_cout0 == 1'b1);

assign mult_ready = ecc_top.ecc_dsa_ctrl_i.ecc_arith_unit_i.ecc_fau_i.i_MULTIPLIER.ready_o;
assign mult_last_reduction = ecc_top.ecc_dsa_ctrl_i.ecc_arith_unit_i.ecc_fau_i.i_MULTIPLIER.last_reduction;
assign mult_final_subtraction = mult_ready & mult_last_reduction;

assign ecc_cmd = ecc_top.ecc_dsa_ctrl_i.cmd_reg;
assign pcr_sign_mode = ecc_top.ecc_dsa_ctrl_i.pcr_sign_mode;
Expand All @@ -67,6 +98,8 @@ interface ecc_top_cov_if
assign pubkeyx_input_outofrange = ecc_top.ecc_dsa_ctrl_i.pubkeyx_input_outofrange;
assign pubkeyy_input_outofrange = ecc_top.ecc_dsa_ctrl_i.pubkeyy_input_outofrange;
assign pubkey_input_invalid = ecc_top.ecc_dsa_ctrl_i.pubkey_input_invalid;
assign pcr_sign_input_invalid = ecc_top.ecc_dsa_ctrl_i.pcr_sign_input_invalid;
assign keygen_process = ecc_top.ecc_dsa_ctrl_i.keygen_process;
assign signing_process = ecc_top.ecc_dsa_ctrl_i.signing_process;
assign verifying_process = ecc_top.ecc_dsa_ctrl_i.verifying_process;

Expand All @@ -90,6 +123,7 @@ interface ecc_top_cov_if
pubkeyx_input_outofrange_cp: coverpoint pubkeyx_input_outofrange;
pubkeyy_input_outofrange_cp: coverpoint pubkeyy_input_outofrange;
pubkey_input_invalid_cp: coverpoint pubkey_input_invalid;
pcr_sign_input_invalid_cp: coverpoint pcr_sign_input_invalid;

cmd_ready_cp: cross ecc_sw_cmd, ready;
cmd_kv_cp: cross ecc_cmd, dest_keyvault;
Expand All @@ -99,9 +133,19 @@ interface ecc_top_cov_if
zeroize_cmd_cp: cross zeroize, ecc_cmd;
zeroize_error_cp: cross zeroize, error_flag;
zeroize_ready_cp: cross ready, zeroize;
pcr_sign_input_invalid_cmd_cp: cross error_flag, ecc_cmd;
error_keygen_cp: cross error_flag, keygen_process;
error_signing_cp: cross error_flag, signing_process;
error_verifying_cp: cross error_flag, verifying_process;

// modular operation
mult_final_subtraction_cp: coverpoint mult_final_subtraction;
add_carry_cp: cross mod_p_q, add_sub_i, add_cout0, add_cout1;
add_result_less_than_prime_cp: cross mod_p_q, add_sub_i, add_res_less_than_prime;
add_result_greater_than_prime_cp: cross mod_p_q, add_sub_i, add_res_greater_than_prime;
add_result_greater_than_384_bit_cp: cross mod_p_q, add_sub_i, add_res_greater_than_384_bit;


endgroup

ecc_top_cov_grp ecc_top_cov_grp1 = new();
Expand Down
Loading
Loading