File tree Expand file tree Collapse file tree 6 files changed +82
-82
lines changed
ip_templates/otp_ctrl/rtl
top_darjeeling/ip_autogen/otp_ctrl/rtl
top_earlgrey/ip_autogen/otp_ctrl/rtl Expand file tree Collapse file tree 6 files changed +82
-82
lines changed Original file line number Diff line number Diff line change @@ -107,19 +107,21 @@ module keymgr
107107 seed_t kmac_seed;
108108 seed_t none_seed;
109109
110- prim_sec_anchor_buf # (
111- .Width (TotalSeedWidth)
112- ) u_seed_anchor (
113- .in_i ({ RndCnstRevisionSeed,
114- RndCnstCreatorIdentitySeed,
115- RndCnstOwnerIntIdentitySeed,
116- RndCnstOwnerIdentitySeed,
117- RndCnstSoftOutputSeed,
118- RndCnstHardOutputSeed,
119- RndCnstAesSeed,
120- RndCnstOtbnSeed,
121- RndCnstKmacSeed,
122- RndCnstNoneSeed} ),
110+ localparam logic [TotalSeedWidth- 1 : 0 ] RndConstSeed = { RndCnstRevisionSeed,
111+ RndCnstCreatorIdentitySeed,
112+ RndCnstOwnerIntIdentitySeed,
113+ RndCnstOwnerIdentitySeed,
114+ RndCnstSoftOutputSeed,
115+ RndCnstHardOutputSeed,
116+ RndCnstAesSeed,
117+ RndCnstOtbnSeed,
118+ RndCnstKmacSeed,
119+ RndCnstNoneSeed} ;
120+
121+ prim_sec_anchor_const # (
122+ .Width (TotalSeedWidth),
123+ .ConstVal (RndConstSeed)
124+ ) u_seed_anchor_const (
123125 .out_o ({ revision_seed,
124126 creator_identity_seed,
125127 owner_int_identity_seed,
Original file line number Diff line number Diff line change @@ -94,27 +94,25 @@ module keymgr_dpe
9494 seed_t kmac_seed;
9595 seed_t none_seed;
9696
97- prim_sec_anchor_buf # (
98- .Width (TotalSeedWidth)
99- ) u_seed_anchor (
100- .in_i ({
101- RndCnstRevisionSeed,
102- RndCnstSoftOutputSeed,
103- RndCnstHardOutputSeed,
104- RndCnstAesSeed,
105- RndCnstOtbnSeed,
106- RndCnstKmacSeed,
107- RndCnstNoneSeed
108- } ),
109- .out_o ({
110- revision_seed,
111- soft_output_seed,
112- hard_output_seed,
113- aes_seed,
114- otbn_seed,
115- kmac_seed,
116- none_seed
117- } )
97+ localparam logic [TotalSeedWidth- 1 : 0 ] RndConstSeed = { RndCnstRevisionSeed,
98+ RndCnstSoftOutputSeed,
99+ RndCnstHardOutputSeed,
100+ RndCnstAesSeed,
101+ RndCnstOtbnSeed,
102+ RndCnstKmacSeed,
103+ RndCnstNoneSeed} ;
104+
105+ prim_sec_anchor_const # (
106+ .Width (TotalSeedWidth),
107+ .ConstVal (RndConstSeed)
108+ ) u_seed_anchor_const (
109+ .out_o ({ revision_seed,
110+ soft_output_seed,
111+ hard_output_seed,
112+ aes_seed,
113+ otbn_seed,
114+ kmac_seed,
115+ none_seed} )
118116 );
119117
120118 // Register module
Original file line number Diff line number Diff line change @@ -342,18 +342,18 @@ module lc_ctrl
342342
343343 logic lc_idle_d, lc_done_d;
344344
345- // Assign the hardware revision constant and feed it through an anchor buffer. This ensures the
346- // individual bits remain visible in the netlist, thereby enabling metal fixes to be reflected
347- // in the hardware revision.
348- lc_hw_rev_t hw_rev;
349- assign hw_rev = '{ silicon_creator_id : SiliconCreatorId ,
350- product_id : ProductId ,
351- revision_id : RevisionId,
352- reserved : '0 } ;
353- prim_sec_anchor_buf # (
354- .Width ($bits (lc_hw_rev_t))
355- ) u_hw_rev_anchor_buf (
356- . in_i (hw_rev),
345+ // Create the hardware revision with the anchor const that instantiates specific standard cells.
346+ // This ensures the individual bits are not combined through logic optimization and remain visible
347+ // in the netlist, thereby enabling metal fixes to be reflected in the hardware revision.
348+ localparam lc_hw_rev_t HwRev = '{ silicon_creator_id : SiliconCreatorId,
349+ product_id : ProductId ,
350+ revision_id : RevisionId ,
351+ reserved : '0 } ;
352+
353+ prim_sec_anchor_const # (
354+ .Width ($bits (lc_hw_rev_t)),
355+ . ConstVal (HwRev)
356+ ) u_hw_rev_anchor_const (
357357 .out_o (hw_rev_o)
358358 );
359359
Original file line number Diff line number Diff line change @@ -109,26 +109,26 @@ module otp_ctrl_scrmbl
109109 digest_iv_array_t rnd_cnst_digest_iv_anchor;
110110
111111 for (genvar i = 0 ; i < NumScrmblKeys; i++ ) begin : gen_anchor_keys
112- prim_sec_anchor_buf # (
113- .Width (ScrmblKeyWidth)
114- ) u_key_anchor_buf (
115- . in_i (RndCnstKey[i]),
112+ prim_sec_anchor_const # (
113+ .Width (ScrmblKeyWidth),
114+ . ConstVal (RndCnstKey[i])
115+ ) u_key_anchor_const (
116116 .out_o (rnd_cnst_key_anchor[i])
117117 );
118118 end
119119
120120 for (genvar i = 0 ; i < NumDigestSets; i++ ) begin : gen_anchor_digests
121- prim_sec_anchor_buf # (
122- .Width (ScrmblKeyWidth)
123- ) u_const_anchor_buf (
124- . in_i (RndCnstDigestConst[i]),
121+ prim_sec_anchor_const # (
122+ .Width (ScrmblKeyWidth),
123+ . ConstVal (RndCnstDigestConst[i])
124+ ) u_digest_anchor_const (
125125 .out_o (rnd_cnst_digest_anchor[i])
126126 );
127127
128- prim_sec_anchor_buf # (
129- .Width (ScrmblBlockWidth)
130- ) u_iv_anchor_buf (
131- . in_i (RndCnstDigestIV[i]),
128+ prim_sec_anchor_const # (
129+ .Width (ScrmblBlockWidth),
130+ . ConstVal (RndCnstDigestIV[i])
131+ ) u_iv_anchor_const (
132132 .out_o (rnd_cnst_digest_iv_anchor[i])
133133 );
134134 end
Original file line number Diff line number Diff line change @@ -109,26 +109,26 @@ module otp_ctrl_scrmbl
109109 digest_iv_array_t rnd_cnst_digest_iv_anchor;
110110
111111 for (genvar i = 0 ; i < NumScrmblKeys; i++ ) begin : gen_anchor_keys
112- prim_sec_anchor_buf # (
113- .Width (ScrmblKeyWidth)
114- ) u_key_anchor_buf (
115- . in_i (RndCnstKey[i]),
112+ prim_sec_anchor_const # (
113+ .Width (ScrmblKeyWidth),
114+ . ConstVal (RndCnstKey[i])
115+ ) u_key_anchor_const (
116116 .out_o (rnd_cnst_key_anchor[i])
117117 );
118118 end
119119
120120 for (genvar i = 0 ; i < NumDigestSets; i++ ) begin : gen_anchor_digests
121- prim_sec_anchor_buf # (
122- .Width (ScrmblKeyWidth)
123- ) u_const_anchor_buf (
124- . in_i (RndCnstDigestConst[i]),
121+ prim_sec_anchor_const # (
122+ .Width (ScrmblKeyWidth),
123+ . ConstVal (RndCnstDigestConst[i])
124+ ) u_digest_anchor_const (
125125 .out_o (rnd_cnst_digest_anchor[i])
126126 );
127127
128- prim_sec_anchor_buf # (
129- .Width (ScrmblBlockWidth)
130- ) u_iv_anchor_buf (
131- . in_i (RndCnstDigestIV[i]),
128+ prim_sec_anchor_const # (
129+ .Width (ScrmblBlockWidth),
130+ . ConstVal (RndCnstDigestIV[i])
131+ ) u_iv_anchor_const (
132132 .out_o (rnd_cnst_digest_iv_anchor[i])
133133 );
134134 end
Original file line number Diff line number Diff line change @@ -109,26 +109,26 @@ module otp_ctrl_scrmbl
109109 digest_iv_array_t rnd_cnst_digest_iv_anchor;
110110
111111 for (genvar i = 0 ; i < NumScrmblKeys; i++ ) begin : gen_anchor_keys
112- prim_sec_anchor_buf # (
113- .Width (ScrmblKeyWidth)
114- ) u_key_anchor_buf (
115- . in_i (RndCnstKey[i]),
112+ prim_sec_anchor_const # (
113+ .Width (ScrmblKeyWidth),
114+ . ConstVal (RndCnstKey[i])
115+ ) u_key_anchor_const (
116116 .out_o (rnd_cnst_key_anchor[i])
117117 );
118118 end
119119
120120 for (genvar i = 0 ; i < NumDigestSets; i++ ) begin : gen_anchor_digests
121- prim_sec_anchor_buf # (
122- .Width (ScrmblKeyWidth)
123- ) u_const_anchor_buf (
124- . in_i (RndCnstDigestConst[i]),
121+ prim_sec_anchor_const # (
122+ .Width (ScrmblKeyWidth),
123+ . ConstVal (RndCnstDigestConst[i])
124+ ) u_digest_anchor_const (
125125 .out_o (rnd_cnst_digest_anchor[i])
126126 );
127127
128- prim_sec_anchor_buf # (
129- .Width (ScrmblBlockWidth)
130- ) u_iv_anchor_buf (
131- . in_i (RndCnstDigestIV[i]),
128+ prim_sec_anchor_const # (
129+ .Width (ScrmblBlockWidth),
130+ . ConstVal (RndCnstDigestIV[i])
131+ ) u_iv_anchor_const (
132132 .out_o (rnd_cnst_digest_iv_anchor[i])
133133 );
134134 end
You can’t perform that action at this time.
0 commit comments