Skip to content

Commit 389496e

Browse files
committed
[prim,rtl] use prim_const in various blocks
- otp_ctrl (constkeys, digests) - lc_ctrl (hw_rev) - keymgr (seeds) Signed-off-by: Michael Gautschi <[email protected]>
1 parent 0deceae commit 389496e

File tree

6 files changed

+82
-82
lines changed

6 files changed

+82
-82
lines changed

hw/ip/keymgr/rtl/keymgr.sv

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff 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,

hw/ip/keymgr_dpe/rtl/keymgr_dpe.sv

Lines changed: 19 additions & 21 deletions
Original file line numberDiff line numberDiff 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

hw/ip/lc_ctrl/rtl/lc_ctrl.sv

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff 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

hw/ip_templates/otp_ctrl/rtl/otp_ctrl_scrmbl.sv

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff 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

hw/top_darjeeling/ip_autogen/otp_ctrl/rtl/otp_ctrl_scrmbl.sv

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff 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

hw/top_earlgrey/ip_autogen/otp_ctrl/rtl/otp_ctrl_scrmbl.sv

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff 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

0 commit comments

Comments
 (0)