From 7a499fab7f3c8d3a1c4ad88c3abfdfbe9f4715be Mon Sep 17 00:00:00 2001 From: Kiran Upadhyayula Date: Fri, 10 Nov 2023 12:11:17 -0800 Subject: [PATCH 1/4] Spec update with synthesis warnings and jtag tck requirement --- docs/CaliptraIntegrationSpecification.md | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/docs/CaliptraIntegrationSpecification.md b/docs/CaliptraIntegrationSpecification.md index 2663e73a3..c15e29f7d 100644 --- a/docs/CaliptraIntegrationSpecification.md +++ b/docs/CaliptraIntegrationSpecification.md @@ -649,6 +649,17 @@ The following table describes SoC integration requirements. | FUSE PAUSER programming rules | 1 PAUSER attribute register is implemented at SoC interface: CPTRA_FUSE_VALID_PAUSER. | | | | FUSE PAUSER programming rules | CPTRA_FUSE_PAUSER_LOCK locks the programmable valid pauser register, and marks the programmed value as valid. | | | | FUSE PAUSER programming rules | Integrators can choose to harden the valid pauser for fuse access by setting the integration parameter, CPTRA_FUSE_VALID_PAUSER, to the desired value in RTL, and by setting CPTRA_SET_FUSE_PAUSER_INTEG to 1. | | | +| GLS FEV | GLS FEV must be run to make sure netlist and RTL match and none of the countermeasures are optimized away. Check table 18 for example warnings from synthesis runs to resolve through FEV | GLS simulations pass | Functional requirement | + +*Table 18: Caliptra synthesis warnings for FEV evaluation* + +| Module | Warning | Line No. | +| :--------- | :--------- | :--------- | +| sha512_acc_top | Empty netlist for always_comb | 417 | +| ecc_scalar_blinding | Netlist for always_ff block does not contain flip flop | 301 | +| sha512_masked_core | "masked_carry" is read before being assigned. Synthesized result may not match simulation | 295, 312 | +| ecc_montgomerymultiplier | Netlist for always_ff block does not contain flip flop | 274, 326 | +| Multiple modules | Signed to unsigned conversion occurs | | # CDC analysis and constraints @@ -679,6 +690,7 @@ The following code snippet and schematic diagram illustrate JTAG originating CDC * Pseudo-static: wr\_data, wr\_addr * cdc signal reg\_wr\_data -module dmi\_wrapper -stable * cdc signal reg\_wr\_addr -module dmi\_wrapper -stable +* The core clock frequency must be at least twice the TCK clock frequency for the JTAG data to pass correctly through the synchronizers. ## CDC constraints * cdc report scheme two\_dff -severity violation @@ -701,7 +713,7 @@ The area is expressed in units of square microns. The target foundry technology node is an industry standard, moderately advanced technology node as of 2023 September. -*Table 18: Netlist synthesis data* +*Table 19: Netlist synthesis data* | **IP Name** | **Date** | **Path Group** | **Target Freq** | **QoR WNS** | **QoR Achieveable Freq** | | :--------- | :--------- | :--------- | :--------- | :--------- | :--------- | @@ -868,7 +880,7 @@ Fatal: The 'default' or 'others' must be last case in a case statement The following terminology is used in this document. -*Table 19: Terminology* +*Table 20: Terminology* | Abbreviation | Description | From 869c44fa1516449d7e40267138efcdd4e8edc8e1 Mon Sep 17 00:00:00 2001 From: Kiran Upadhyayula Date: Mon, 13 Nov 2023 10:56:53 -0800 Subject: [PATCH 2/4] Added some more description --- docs/CaliptraIntegrationSpecification.md | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/docs/CaliptraIntegrationSpecification.md b/docs/CaliptraIntegrationSpecification.md index c15e29f7d..538c1215d 100644 --- a/docs/CaliptraIntegrationSpecification.md +++ b/docs/CaliptraIntegrationSpecification.md @@ -608,9 +608,6 @@ The following table describes SoC integration requirements. | Deobfuscation Key | Rotation of the deobfuscation key (if not driven through PUF) between silicon steppings of a given product (for example, A0 vs. B0 vs. PRQ stepping) is dependent on company-specific policies. | Statement of conformance | Required by UDS and Field Entropy threat model | | Deobfuscation Key | SoC backend flows should not insert deobfuscation key flops into the scan chain. | Synthesis report | Required by UDS and Field Entropy threat model | | Deobfuscation Key | For defense in depth, it is strongly recommended that debofuscation key flops are not on the scan chain.
Remove the following signals from the scan chain:
cptra_scan_mode_Latched_d
cptra_scan_mode_Latched_f
field_storage.internal_obf_key | Statement of conformance | Caliptra HW threat model | -| CSR Signing Key | SoC backend flows shall generate CSR signing key with appropriate NIST compliance as dictated in the Caliptra RoT specification. | Statement of conformance | Required by IDevID threat model | -| CSR Signing Key | Rotation of the CSR private key between silicon steppings of a given product (for example, A0 vs. B0 vs. PRQ stepping) is dependent on company-specific policies. | Statement of conformance | | -| CSR Signing Key | SoC backend flows should not insert CSR signing key flops into the scan chain. | Synthesis report | Required by IDevID threat model | | DFT | Before scan is enabled (separate signal that SoC implements on scan insertion), SoC shall set Caliptra's scan_mode indication to '1 to allow secrets/assets to be flushed. | Statement of conformance | Required by Caliptra threat model | | DFT | Caliptra’s TAP should be a TAP endpoint. | Statement of conformance | Functional requirement | | Mailbox | SoC shall provide an access path between the mailbox and the application CPU complex on SoCs with such complexes (for example, Host CPUs and Smart NICs). See the [Sender Protocol](#sender-protocol) section for details about error conditions. | Statement of conformance | Required for Project Kirkland and TDISP TSM | @@ -653,13 +650,13 @@ The following table describes SoC integration requirements. *Table 18: Caliptra synthesis warnings for FEV evaluation* -| Module | Warning | Line No. | -| :--------- | :--------- | :--------- | -| sha512_acc_top | Empty netlist for always_comb | 417 | -| ecc_scalar_blinding | Netlist for always_ff block does not contain flip flop | 301 | -| sha512_masked_core | "masked_carry" is read before being assigned. Synthesized result may not match simulation | 295, 312 | -| ecc_montgomerymultiplier | Netlist for always_ff block does not contain flip flop | 274, 326 | -| Multiple modules | Signed to unsigned conversion occurs | | +| Module | Warning | Line No. | Description | +| :--------- | :--------- | :--------- | :--------- | +| sha512_acc_top | Empty netlist for always_comb | 417 |Unused logic (no load)| +| ecc_scalar_blinding | Netlist for always_ff block does not contain flip flop | 301 |Output width is smaller than internal signals, synthesis optimizes away the extra internal flops with no loads| +| sha512_masked_core | "masked_carry" is read before being assigned. Synthesized result may not match simulation | 295, 312 || +| ecc_montgomerymultiplier | Netlist for always_ff block does not contain flip flop | 274, 326 |Output width is smaller than internal signals, synthesis optimizes away the extra internal flops with no loads| +| Multiple modules | Signed to unsigned conversion occurs | || # CDC analysis and constraints @@ -703,6 +700,8 @@ Synthesis experiments have so far found the following: * Design converges at 400MHz 0.72V using a cutting edge TSMC process. * Design converges at 100MHz using TSMC 40nm process. +Note: Any synthesis warnings of logic optimization must be reviewed and accounted for. + # Netlist synthesis data The following table illustrates representative netlist synthesis results using industry standard EDA synthesis tools and tool configurations. From 5bbdd260ea349478c6136fe2ce4ba795ec5af1da Mon Sep 17 00:00:00 2001 From: Kiran Upadhyayula Date: Mon, 13 Nov 2023 12:56:47 -0800 Subject: [PATCH 3/4] Apply suggestion from review --- docs/CaliptraIntegrationSpecification.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/CaliptraIntegrationSpecification.md b/docs/CaliptraIntegrationSpecification.md index 538c1215d..a60bc18af 100644 --- a/docs/CaliptraIntegrationSpecification.md +++ b/docs/CaliptraIntegrationSpecification.md @@ -646,7 +646,7 @@ The following table describes SoC integration requirements. | FUSE PAUSER programming rules | 1 PAUSER attribute register is implemented at SoC interface: CPTRA_FUSE_VALID_PAUSER. | | | | FUSE PAUSER programming rules | CPTRA_FUSE_PAUSER_LOCK locks the programmable valid pauser register, and marks the programmed value as valid. | | | | FUSE PAUSER programming rules | Integrators can choose to harden the valid pauser for fuse access by setting the integration parameter, CPTRA_FUSE_VALID_PAUSER, to the desired value in RTL, and by setting CPTRA_SET_FUSE_PAUSER_INTEG to 1. | | | -| GLS FEV | GLS FEV must be run to make sure netlist and RTL match and none of the countermeasures are optimized away. Check table 18 for example warnings from synthesis runs to resolve through FEV | GLS simulations pass | Functional requirement | +| GLS FEV | GLS FEV must be run to make sure netlist and RTL match and none of the countermeasures are optimized away. See the following table for example warnings from synthesis runs to resolve through FEV | GLS simulations pass | Functional requirement | *Table 18: Caliptra synthesis warnings for FEV evaluation* @@ -654,7 +654,7 @@ The following table describes SoC integration requirements. | :--------- | :--------- | :--------- | :--------- | | sha512_acc_top | Empty netlist for always_comb | 417 |Unused logic (no load)| | ecc_scalar_blinding | Netlist for always_ff block does not contain flip flop | 301 |Output width is smaller than internal signals, synthesis optimizes away the extra internal flops with no loads| -| sha512_masked_core | "masked_carry" is read before being assigned. Synthesized result may not match simulation | 295, 312 || +| sha512_masked_core | "masked_carry" is read before being assigned. Synthesized result may not match simulation | 295, 312 |Output width is smaller than internal signals, synthesis optimizes away the extra internal flops with no loads| | ecc_montgomerymultiplier | Netlist for always_ff block does not contain flip flop | 274, 326 |Output width is smaller than internal signals, synthesis optimizes away the extra internal flops with no loads| | Multiple modules | Signed to unsigned conversion occurs | || From fd928d25a3daf4ba909fb8d39dfdb3ad6437b1ea Mon Sep 17 00:00:00 2001 From: Kiran Upadhyayula Date: Mon, 13 Nov 2023 13:04:16 -0800 Subject: [PATCH 4/4] Remove accidentally placed description --- docs/CaliptraIntegrationSpecification.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/CaliptraIntegrationSpecification.md b/docs/CaliptraIntegrationSpecification.md index a60bc18af..e270db4e3 100644 --- a/docs/CaliptraIntegrationSpecification.md +++ b/docs/CaliptraIntegrationSpecification.md @@ -654,7 +654,7 @@ The following table describes SoC integration requirements. | :--------- | :--------- | :--------- | :--------- | | sha512_acc_top | Empty netlist for always_comb | 417 |Unused logic (no load)| | ecc_scalar_blinding | Netlist for always_ff block does not contain flip flop | 301 |Output width is smaller than internal signals, synthesis optimizes away the extra internal flops with no loads| -| sha512_masked_core | "masked_carry" is read before being assigned. Synthesized result may not match simulation | 295, 312 |Output width is smaller than internal signals, synthesis optimizes away the extra internal flops with no loads| +| sha512_masked_core | "masked_carry" is read before being assigned. Synthesized result may not match simulation | 295, 312 || | ecc_montgomerymultiplier | Netlist for always_ff block does not contain flip flop | 274, 326 |Output width is smaller than internal signals, synthesis optimizes away the extra internal flops with no loads| | Multiple modules | Signed to unsigned conversion occurs | ||