Go
back
76 always_ff @(posedge clk_i or negedge rst_ni) begin
77 1/1 if (!rst_ni) begin
Tests: T1 T2 T3
78 1/1 err_q <= '0;
Tests: T1 T2 T3
79 1/1 end else if (intg_err || reg_we_err) begin
Tests: T1 T2 T3
80 1/1 err_q <= 1'b1;
Tests: T17 T39 T40
81 end
MISSING_ELSE
82 end
83
84 // integrity error output is permanent and should be used for alert generation
85 // register errors are transactional
86 1/1 assign intg_err_o = err_q | intg_err | reg_we_err;
Tests: T1 T2 T3
87
88 // outgoing integrity generation
89 tlul_pkg::tl_d2h_t tl_o_pre;
90 tlul_rsp_intg_gen #(
91 .EnableRspIntgGen(1),
92 .EnableDataIntgGen(1)
93 ) u_rsp_intg_gen (
94 .tl_i(tl_o_pre),
95 .tl_o(tl_o)
96 );
97
98 tlul_pkg::tl_h2d_t tl_socket_h2d [3];
99 tlul_pkg::tl_d2h_t tl_socket_d2h [3];
100
101 logic [1:0] reg_steer;
102
103 // socket_1n connection
104 1/1 assign tl_reg_h2d = tl_socket_h2d[2];
Tests: T1 T2 T3
105 1/1 assign tl_socket_d2h[2] = tl_reg_d2h;
Tests: T1 T2 T3
106
107 1/1 assign tl_win_o[0] = tl_socket_h2d[0];
Tests: T1 T2 T3
108 1/1 assign tl_socket_d2h[0] = tl_win_i[0];
Tests: T1 T2 T3
109 1/1 assign tl_win_o[1] = tl_socket_h2d[1];
Tests: T1 T2 T3
110 1/1 assign tl_socket_d2h[1] = tl_win_i[1];
Tests: T1 T2 T3
111
112 // Create Socket_1n
113 tlul_socket_1n #(
114 .N (3),
115 .HReqPass (1'b1),
116 .HRspPass (1'b1),
117 .DReqPass ({3{1'b1}}),
118 .DRspPass ({3{1'b1}}),
119 .HReqDepth (4'h0),
120 .HRspDepth (4'h0),
121 .DReqDepth ({3{4'h0}}),
122 .DRspDepth ({3{4'h0}}),
123 .ExplicitErrs (1'b0)
124 ) u_socket (
125 .clk_i (clk_i),
126 .rst_ni (rst_ni),
127 .tl_h_i (tl_i),
128 .tl_h_o (tl_o_pre),
129 .tl_d_o (tl_socket_h2d),
130 .tl_d_i (tl_socket_d2h),
131 .dev_select_i (reg_steer)
132 );
133
134 // Create steering logic
135 always_comb begin
136 1/1 reg_steer =
Tests: T1 T2 T3
137 tl_i.a_address[AW-1:0] inside {[1024:1535]} ? 2'd0 :
138 tl_i.a_address[AW-1:0] inside {[2048:4095]} ? 2'd1 :
139 // Default set to register
140 2'd2;
141
142 // Override this in case of an integrity error
143 1/1 if (intg_err) begin
Tests: T1 T2 T3
144 1/1 reg_steer = 2'd2;
Tests: T105 T106 T107
145 end
MISSING_ELSE
146 end
147
148 tlul_adapter_reg #(
149 .RegAw(AW),
150 .RegDw(DW),
151 .EnableDataIntgGen(0)
152 ) u_reg_if (
153 .clk_i (clk_i),
154 .rst_ni (rst_ni),
155
156 .tl_i (tl_reg_h2d),
157 .tl_o (tl_reg_d2h),
158
159 .en_ifetch_i(prim_mubi_pkg::MuBi4False),
160 .intg_error_o(),
161
162 .we_o (reg_we),
163 .re_o (reg_re),
164 .addr_o (reg_addr),
165 .wdata_o (reg_wdata),
166 .be_o (reg_be),
167 .busy_i (reg_busy),
168 .rdata_i (reg_rdata),
169 .error_i (reg_error)
170 );
171
172 // cdc oversampling signals
173
174 1/1 assign reg_rdata = reg_rdata_next ;
Tests: T1 T2 T3
175 1/1 assign reg_error = addrmiss | wr_err | intg_err;
Tests: T2 T3 T30
176
177 // Define SW related signals
178 // Format: <reg>_<field>_{wd|we|qs}
179 // or <reg>_{wd|we|qs} if field == 1 or 0
180 logic intr_state_we;
181 logic intr_state_kmac_done_qs;
182 logic intr_state_kmac_done_wd;
183 logic intr_state_fifo_empty_qs;
184 logic intr_state_kmac_err_qs;
185 logic intr_state_kmac_err_wd;
186 logic intr_enable_we;
187 logic intr_enable_kmac_done_qs;
188 logic intr_enable_kmac_done_wd;
189 logic intr_enable_fifo_empty_qs;
190 logic intr_enable_fifo_empty_wd;
191 logic intr_enable_kmac_err_qs;
192 logic intr_enable_kmac_err_wd;
193 logic intr_test_we;
194 logic intr_test_kmac_done_wd;
195 logic intr_test_fifo_empty_wd;
196 logic intr_test_kmac_err_wd;
197 logic alert_test_we;
198 logic alert_test_recov_operation_err_wd;
199 logic alert_test_fatal_fault_err_wd;
200 logic cfg_regwen_re;
201 logic cfg_regwen_qs;
202 logic cfg_shadowed_re;
203 logic cfg_shadowed_we;
204 logic cfg_shadowed_kmac_en_qs;
205 logic cfg_shadowed_kmac_en_wd;
206 logic cfg_shadowed_kmac_en_storage_err;
207 logic cfg_shadowed_kmac_en_update_err;
208 logic [2:0] cfg_shadowed_kstrength_qs;
209 logic [2:0] cfg_shadowed_kstrength_wd;
210 logic cfg_shadowed_kstrength_storage_err;
211 logic cfg_shadowed_kstrength_update_err;
212 logic [1:0] cfg_shadowed_mode_qs;
213 logic [1:0] cfg_shadowed_mode_wd;
214 logic cfg_shadowed_mode_storage_err;
215 logic cfg_shadowed_mode_update_err;
216 logic cfg_shadowed_msg_endianness_qs;
217 logic cfg_shadowed_msg_endianness_wd;
218 logic cfg_shadowed_msg_endianness_storage_err;
219 logic cfg_shadowed_msg_endianness_update_err;
220 logic cfg_shadowed_state_endianness_qs;
221 logic cfg_shadowed_state_endianness_wd;
222 logic cfg_shadowed_state_endianness_storage_err;
223 logic cfg_shadowed_state_endianness_update_err;
224 logic cfg_shadowed_sideload_qs;
225 logic cfg_shadowed_sideload_wd;
226 logic cfg_shadowed_sideload_storage_err;
227 logic cfg_shadowed_sideload_update_err;
228 logic [1:0] cfg_shadowed_entropy_mode_qs;
229 logic [1:0] cfg_shadowed_entropy_mode_wd;
230 logic cfg_shadowed_entropy_mode_storage_err;
231 logic cfg_shadowed_entropy_mode_update_err;
232 logic cfg_shadowed_entropy_fast_process_qs;
233 logic cfg_shadowed_entropy_fast_process_wd;
234 logic cfg_shadowed_entropy_fast_process_storage_err;
235 logic cfg_shadowed_entropy_fast_process_update_err;
236 logic cfg_shadowed_msg_mask_qs;
237 logic cfg_shadowed_msg_mask_wd;
238 logic cfg_shadowed_msg_mask_storage_err;
239 logic cfg_shadowed_msg_mask_update_err;
240 logic cfg_shadowed_entropy_ready_qs;
241 logic cfg_shadowed_entropy_ready_wd;
242 logic cfg_shadowed_entropy_ready_storage_err;
243 logic cfg_shadowed_entropy_ready_update_err;
244 logic cfg_shadowed_en_unsupported_modestrength_qs;
245 logic cfg_shadowed_en_unsupported_modestrength_wd;
246 logic cfg_shadowed_en_unsupported_modestrength_storage_err;
247 logic cfg_shadowed_en_unsupported_modestrength_update_err;
248 logic cmd_we;
249 logic [5:0] cmd_cmd_wd;
250 logic cmd_entropy_req_wd;
251 logic cmd_hash_cnt_clr_wd;
252 logic cmd_err_processed_wd;
253 logic status_re;
254 logic status_sha3_idle_qs;
255 logic status_sha3_absorb_qs;
256 logic status_sha3_squeeze_qs;
257 logic [4:0] status_fifo_depth_qs;
258 logic status_fifo_empty_qs;
259 logic status_fifo_full_qs;
260 logic status_alert_fatal_fault_qs;
261 logic status_alert_recov_ctrl_update_err_qs;
262 logic entropy_period_we;
263 logic [9:0] entropy_period_prescaler_qs;
264 logic [9:0] entropy_period_prescaler_wd;
265 logic [15:0] entropy_period_wait_timer_qs;
266 logic [15:0] entropy_period_wait_timer_wd;
267 logic [9:0] entropy_refresh_hash_cnt_qs;
268 logic entropy_refresh_threshold_shadowed_re;
269 logic entropy_refresh_threshold_shadowed_we;
270 logic [9:0] entropy_refresh_threshold_shadowed_qs;
271 logic [9:0] entropy_refresh_threshold_shadowed_wd;
272 logic entropy_refresh_threshold_shadowed_storage_err;
273 logic entropy_refresh_threshold_shadowed_update_err;
274 logic entropy_seed_we;
275 logic [31:0] entropy_seed_wd;
276 logic key_share0_0_we;
277 logic [31:0] key_share0_0_wd;
278 logic key_share0_1_we;
279 logic [31:0] key_share0_1_wd;
280 logic key_share0_2_we;
281 logic [31:0] key_share0_2_wd;
282 logic key_share0_3_we;
283 logic [31:0] key_share0_3_wd;
284 logic key_share0_4_we;
285 logic [31:0] key_share0_4_wd;
286 logic key_share0_5_we;
287 logic [31:0] key_share0_5_wd;
288 logic key_share0_6_we;
289 logic [31:0] key_share0_6_wd;
290 logic key_share0_7_we;
291 logic [31:0] key_share0_7_wd;
292 logic key_share0_8_we;
293 logic [31:0] key_share0_8_wd;
294 logic key_share0_9_we;
295 logic [31:0] key_share0_9_wd;
296 logic key_share0_10_we;
297 logic [31:0] key_share0_10_wd;
298 logic key_share0_11_we;
299 logic [31:0] key_share0_11_wd;
300 logic key_share0_12_we;
301 logic [31:0] key_share0_12_wd;
302 logic key_share0_13_we;
303 logic [31:0] key_share0_13_wd;
304 logic key_share0_14_we;
305 logic [31:0] key_share0_14_wd;
306 logic key_share0_15_we;
307 logic [31:0] key_share0_15_wd;
308 logic key_share1_0_we;
309 logic [31:0] key_share1_0_wd;
310 logic key_share1_1_we;
311 logic [31:0] key_share1_1_wd;
312 logic key_share1_2_we;
313 logic [31:0] key_share1_2_wd;
314 logic key_share1_3_we;
315 logic [31:0] key_share1_3_wd;
316 logic key_share1_4_we;
317 logic [31:0] key_share1_4_wd;
318 logic key_share1_5_we;
319 logic [31:0] key_share1_5_wd;
320 logic key_share1_6_we;
321 logic [31:0] key_share1_6_wd;
322 logic key_share1_7_we;
323 logic [31:0] key_share1_7_wd;
324 logic key_share1_8_we;
325 logic [31:0] key_share1_8_wd;
326 logic key_share1_9_we;
327 logic [31:0] key_share1_9_wd;
328 logic key_share1_10_we;
329 logic [31:0] key_share1_10_wd;
330 logic key_share1_11_we;
331 logic [31:0] key_share1_11_wd;
332 logic key_share1_12_we;
333 logic [31:0] key_share1_12_wd;
334 logic key_share1_13_we;
335 logic [31:0] key_share1_13_wd;
336 logic key_share1_14_we;
337 logic [31:0] key_share1_14_wd;
338 logic key_share1_15_we;
339 logic [31:0] key_share1_15_wd;
340 logic key_len_we;
341 logic [2:0] key_len_wd;
342 logic prefix_0_we;
343 logic [31:0] prefix_0_qs;
344 logic [31:0] prefix_0_wd;
345 logic prefix_1_we;
346 logic [31:0] prefix_1_qs;
347 logic [31:0] prefix_1_wd;
348 logic prefix_2_we;
349 logic [31:0] prefix_2_qs;
350 logic [31:0] prefix_2_wd;
351 logic prefix_3_we;
352 logic [31:0] prefix_3_qs;
353 logic [31:0] prefix_3_wd;
354 logic prefix_4_we;
355 logic [31:0] prefix_4_qs;
356 logic [31:0] prefix_4_wd;
357 logic prefix_5_we;
358 logic [31:0] prefix_5_qs;
359 logic [31:0] prefix_5_wd;
360 logic prefix_6_we;
361 logic [31:0] prefix_6_qs;
362 logic [31:0] prefix_6_wd;
363 logic prefix_7_we;
364 logic [31:0] prefix_7_qs;
365 logic [31:0] prefix_7_wd;
366 logic prefix_8_we;
367 logic [31:0] prefix_8_qs;
368 logic [31:0] prefix_8_wd;
369 logic prefix_9_we;
370 logic [31:0] prefix_9_qs;
371 logic [31:0] prefix_9_wd;
372 logic prefix_10_we;
373 logic [31:0] prefix_10_qs;
374 logic [31:0] prefix_10_wd;
375 logic [31:0] err_code_qs;
376
377 // Register instances
378 // R[intr_state]: V(False)
379 // F[kmac_done]: 0:0
380 prim_subreg #(
381 .DW (1),
382 .SwAccess(prim_subreg_pkg::SwAccessW1C),
383 .RESVAL (1'h0),
384 .Mubi (1'b0)
385 ) u_intr_state_kmac_done (
386 .clk_i (clk_i),
387 .rst_ni (rst_ni),
388
389 // from register interface
390 .we (intr_state_we),
391 .wd (intr_state_kmac_done_wd),
392
393 // from internal hardware
394 .de (hw2reg.intr_state.kmac_done.de),
395 .d (hw2reg.intr_state.kmac_done.d),
396
397 // to internal hardware
398 .qe (),
399 .q (reg2hw.intr_state.kmac_done.q),
400 .ds (),
401
402 // to register interface (read)
403 .qs (intr_state_kmac_done_qs)
404 );
405
406 // F[fifo_empty]: 1:1
407 prim_subreg #(
408 .DW (1),
409 .SwAccess(prim_subreg_pkg::SwAccessRO),
410 .RESVAL (1'h0),
411 .Mubi (1'b0)
412 ) u_intr_state_fifo_empty (
413 .clk_i (clk_i),
414 .rst_ni (rst_ni),
415
416 // from register interface
417 .we (1'b0),
418 .wd ('0),
419
420 // from internal hardware
421 .de (hw2reg.intr_state.fifo_empty.de),
422 .d (hw2reg.intr_state.fifo_empty.d),
423
424 // to internal hardware
425 .qe (),
426 .q (reg2hw.intr_state.fifo_empty.q),
427 .ds (),
428
429 // to register interface (read)
430 .qs (intr_state_fifo_empty_qs)
431 );
432
433 // F[kmac_err]: 2:2
434 prim_subreg #(
435 .DW (1),
436 .SwAccess(prim_subreg_pkg::SwAccessW1C),
437 .RESVAL (1'h0),
438 .Mubi (1'b0)
439 ) u_intr_state_kmac_err (
440 .clk_i (clk_i),
441 .rst_ni (rst_ni),
442
443 // from register interface
444 .we (intr_state_we),
445 .wd (intr_state_kmac_err_wd),
446
447 // from internal hardware
448 .de (hw2reg.intr_state.kmac_err.de),
449 .d (hw2reg.intr_state.kmac_err.d),
450
451 // to internal hardware
452 .qe (),
453 .q (reg2hw.intr_state.kmac_err.q),
454 .ds (),
455
456 // to register interface (read)
457 .qs (intr_state_kmac_err_qs)
458 );
459
460
461 // R[intr_enable]: V(False)
462 // F[kmac_done]: 0:0
463 prim_subreg #(
464 .DW (1),
465 .SwAccess(prim_subreg_pkg::SwAccessRW),
466 .RESVAL (1'h0),
467 .Mubi (1'b0)
468 ) u_intr_enable_kmac_done (
469 .clk_i (clk_i),
470 .rst_ni (rst_ni),
471
472 // from register interface
473 .we (intr_enable_we),
474 .wd (intr_enable_kmac_done_wd),
475
476 // from internal hardware
477 .de (1'b0),
478 .d ('0),
479
480 // to internal hardware
481 .qe (),
482 .q (reg2hw.intr_enable.kmac_done.q),
483 .ds (),
484
485 // to register interface (read)
486 .qs (intr_enable_kmac_done_qs)
487 );
488
489 // F[fifo_empty]: 1:1
490 prim_subreg #(
491 .DW (1),
492 .SwAccess(prim_subreg_pkg::SwAccessRW),
493 .RESVAL (1'h0),
494 .Mubi (1'b0)
495 ) u_intr_enable_fifo_empty (
496 .clk_i (clk_i),
497 .rst_ni (rst_ni),
498
499 // from register interface
500 .we (intr_enable_we),
501 .wd (intr_enable_fifo_empty_wd),
502
503 // from internal hardware
504 .de (1'b0),
505 .d ('0),
506
507 // to internal hardware
508 .qe (),
509 .q (reg2hw.intr_enable.fifo_empty.q),
510 .ds (),
511
512 // to register interface (read)
513 .qs (intr_enable_fifo_empty_qs)
514 );
515
516 // F[kmac_err]: 2:2
517 prim_subreg #(
518 .DW (1),
519 .SwAccess(prim_subreg_pkg::SwAccessRW),
520 .RESVAL (1'h0),
521 .Mubi (1'b0)
522 ) u_intr_enable_kmac_err (
523 .clk_i (clk_i),
524 .rst_ni (rst_ni),
525
526 // from register interface
527 .we (intr_enable_we),
528 .wd (intr_enable_kmac_err_wd),
529
530 // from internal hardware
531 .de (1'b0),
532 .d ('0),
533
534 // to internal hardware
535 .qe (),
536 .q (reg2hw.intr_enable.kmac_err.q),
537 .ds (),
538
539 // to register interface (read)
540 .qs (intr_enable_kmac_err_qs)
541 );
542
543
544 // R[intr_test]: V(True)
545 logic intr_test_qe;
546 logic [2:0] intr_test_flds_we;
547 1/1 assign intr_test_qe = &intr_test_flds_we;
Tests: T14 T15 T36
548 // F[kmac_done]: 0:0
549 prim_subreg_ext #(
550 .DW (1)
551 ) u_intr_test_kmac_done (
552 .re (1'b0),
553 .we (intr_test_we),
554 .wd (intr_test_kmac_done_wd),
555 .d ('0),
556 .qre (),
557 .qe (intr_test_flds_we[0]),
558 .q (reg2hw.intr_test.kmac_done.q),
559 .ds (),
560 .qs ()
561 );
562 1/1 assign reg2hw.intr_test.kmac_done.qe = intr_test_qe;
Tests: T14 T15 T36
563
564 // F[fifo_empty]: 1:1
565 prim_subreg_ext #(
566 .DW (1)
567 ) u_intr_test_fifo_empty (
568 .re (1'b0),
569 .we (intr_test_we),
570 .wd (intr_test_fifo_empty_wd),
571 .d ('0),
572 .qre (),
573 .qe (intr_test_flds_we[1]),
574 .q (reg2hw.intr_test.fifo_empty.q),
575 .ds (),
576 .qs ()
577 );
578 1/1 assign reg2hw.intr_test.fifo_empty.qe = intr_test_qe;
Tests: T14 T15 T36
579
580 // F[kmac_err]: 2:2
581 prim_subreg_ext #(
582 .DW (1)
583 ) u_intr_test_kmac_err (
584 .re (1'b0),
585 .we (intr_test_we),
586 .wd (intr_test_kmac_err_wd),
587 .d ('0),
588 .qre (),
589 .qe (intr_test_flds_we[2]),
590 .q (reg2hw.intr_test.kmac_err.q),
591 .ds (),
592 .qs ()
593 );
594 1/1 assign reg2hw.intr_test.kmac_err.qe = intr_test_qe;
Tests: T14 T15 T36
595
596
597 // R[alert_test]: V(True)
598 logic alert_test_qe;
599 logic [1:0] alert_test_flds_we;
600 1/1 assign alert_test_qe = &alert_test_flds_we;
Tests: T44 T83 T14
601 // F[recov_operation_err]: 0:0
602 prim_subreg_ext #(
603 .DW (1)
604 ) u_alert_test_recov_operation_err (
605 .re (1'b0),
606 .we (alert_test_we),
607 .wd (alert_test_recov_operation_err_wd),
608 .d ('0),
609 .qre (),
610 .qe (alert_test_flds_we[0]),
611 .q (reg2hw.alert_test.recov_operation_err.q),
612 .ds (),
613 .qs ()
614 );
615 1/1 assign reg2hw.alert_test.recov_operation_err.qe = alert_test_qe;
Tests: T44 T83 T14
616
617 // F[fatal_fault_err]: 1:1
618 prim_subreg_ext #(
619 .DW (1)
620 ) u_alert_test_fatal_fault_err (
621 .re (1'b0),
622 .we (alert_test_we),
623 .wd (alert_test_fatal_fault_err_wd),
624 .d ('0),
625 .qre (),
626 .qe (alert_test_flds_we[1]),
627 .q (reg2hw.alert_test.fatal_fault_err.q),
628 .ds (),
629 .qs ()
630 );
631 1/1 assign reg2hw.alert_test.fatal_fault_err.qe = alert_test_qe;
Tests: T44 T83 T14
632
633
634 // R[cfg_regwen]: V(True)
635 prim_subreg_ext #(
636 .DW (1)
637 ) u_cfg_regwen (
638 .re (cfg_regwen_re),
639 .we (1'b0),
640 .wd ('0),
641 .d (hw2reg.cfg_regwen.d),
642 .qre (),
643 .qe (),
644 .q (),
645 .ds (),
646 .qs (cfg_regwen_qs)
647 );
648
649
650 // R[cfg_shadowed]: V(False)
651 logic cfg_shadowed_qe;
652 logic [10:0] cfg_shadowed_flds_we;
653 prim_flop #(
654 .Width(1),
655 .ResetValue(0)
656 ) u_cfg_shadowed0_qe (
657 .clk_i(clk_i),
658 .rst_ni(rst_ni),
659 .d_i(&cfg_shadowed_flds_we),
660 .q_o(cfg_shadowed_qe)
661 );
662 // Create REGWEN-gated WE signal
663 logic cfg_shadowed_gated_we;
664 1/1 assign cfg_shadowed_gated_we = cfg_shadowed_we & cfg_regwen_qs;
Tests: T1 T2 T3
665 // F[kmac_en]: 0:0
666 prim_subreg_shadow #(
667 .DW (1),
668 .SwAccess(prim_subreg_pkg::SwAccessRW),
669 .RESVAL (1'h0),
670 .Mubi (1'b0)
671 ) u_cfg_shadowed_kmac_en (
672 .clk_i (clk_i),
673 .rst_ni (rst_ni),
674 .rst_shadowed_ni (rst_shadowed_ni),
675
676 // from register interface
677 .re (cfg_shadowed_re),
678 .we (cfg_shadowed_gated_we),
679 .wd (cfg_shadowed_kmac_en_wd),
680
681 // from internal hardware
682 .de (1'b0),
683 .d ('0),
684
685 // to internal hardware
686 .qe (cfg_shadowed_flds_we[0]),
687 .q (reg2hw.cfg_shadowed.kmac_en.q),
688 .ds (),
689
690 // to register interface (read)
691 .qs (cfg_shadowed_kmac_en_qs),
692
693 // Shadow register phase. Relevant for hwext only.
694 .phase (),
695
696 // Shadow register error conditions
697 .err_update (cfg_shadowed_kmac_en_update_err),
698 .err_storage (cfg_shadowed_kmac_en_storage_err)
699 );
700 1/1 assign reg2hw.cfg_shadowed.kmac_en.qe = cfg_shadowed_qe;
Tests: T1 T2 T3
701
702 // F[kstrength]: 3:1
703 prim_subreg_shadow #(
704 .DW (3),
705 .SwAccess(prim_subreg_pkg::SwAccessRW),
706 .RESVAL (3'h0),
707 .Mubi (1'b0)
708 ) u_cfg_shadowed_kstrength (
709 .clk_i (clk_i),
710 .rst_ni (rst_ni),
711 .rst_shadowed_ni (rst_shadowed_ni),
712
713 // from register interface
714 .re (cfg_shadowed_re),
715 .we (cfg_shadowed_gated_we),
716 .wd (cfg_shadowed_kstrength_wd),
717
718 // from internal hardware
719 .de (1'b0),
720 .d ('0),
721
722 // to internal hardware
723 .qe (cfg_shadowed_flds_we[1]),
724 .q (reg2hw.cfg_shadowed.kstrength.q),
725 .ds (),
726
727 // to register interface (read)
728 .qs (cfg_shadowed_kstrength_qs),
729
730 // Shadow register phase. Relevant for hwext only.
731 .phase (),
732
733 // Shadow register error conditions
734 .err_update (cfg_shadowed_kstrength_update_err),
735 .err_storage (cfg_shadowed_kstrength_storage_err)
736 );
737 1/1 assign reg2hw.cfg_shadowed.kstrength.qe = cfg_shadowed_qe;
Tests: T1 T2 T3
738
739 // F[mode]: 5:4
740 prim_subreg_shadow #(
741 .DW (2),
742 .SwAccess(prim_subreg_pkg::SwAccessRW),
743 .RESVAL (2'h0),
744 .Mubi (1'b0)
745 ) u_cfg_shadowed_mode (
746 .clk_i (clk_i),
747 .rst_ni (rst_ni),
748 .rst_shadowed_ni (rst_shadowed_ni),
749
750 // from register interface
751 .re (cfg_shadowed_re),
752 .we (cfg_shadowed_gated_we),
753 .wd (cfg_shadowed_mode_wd),
754
755 // from internal hardware
756 .de (1'b0),
757 .d ('0),
758
759 // to internal hardware
760 .qe (cfg_shadowed_flds_we[2]),
761 .q (reg2hw.cfg_shadowed.mode.q),
762 .ds (),
763
764 // to register interface (read)
765 .qs (cfg_shadowed_mode_qs),
766
767 // Shadow register phase. Relevant for hwext only.
768 .phase (),
769
770 // Shadow register error conditions
771 .err_update (cfg_shadowed_mode_update_err),
772 .err_storage (cfg_shadowed_mode_storage_err)
773 );
774 1/1 assign reg2hw.cfg_shadowed.mode.qe = cfg_shadowed_qe;
Tests: T1 T2 T3
775
776 // F[msg_endianness]: 8:8
777 prim_subreg_shadow #(
778 .DW (1),
779 .SwAccess(prim_subreg_pkg::SwAccessRW),
780 .RESVAL (1'h0),
781 .Mubi (1'b0)
782 ) u_cfg_shadowed_msg_endianness (
783 .clk_i (clk_i),
784 .rst_ni (rst_ni),
785 .rst_shadowed_ni (rst_shadowed_ni),
786
787 // from register interface
788 .re (cfg_shadowed_re),
789 .we (cfg_shadowed_gated_we),
790 .wd (cfg_shadowed_msg_endianness_wd),
791
792 // from internal hardware
793 .de (1'b0),
794 .d ('0),
795
796 // to internal hardware
797 .qe (cfg_shadowed_flds_we[3]),
798 .q (reg2hw.cfg_shadowed.msg_endianness.q),
799 .ds (),
800
801 // to register interface (read)
802 .qs (cfg_shadowed_msg_endianness_qs),
803
804 // Shadow register phase. Relevant for hwext only.
805 .phase (),
806
807 // Shadow register error conditions
808 .err_update (cfg_shadowed_msg_endianness_update_err),
809 .err_storage (cfg_shadowed_msg_endianness_storage_err)
810 );
811 1/1 assign reg2hw.cfg_shadowed.msg_endianness.qe = cfg_shadowed_qe;
Tests: T1 T2 T3
812
813 // F[state_endianness]: 9:9
814 prim_subreg_shadow #(
815 .DW (1),
816 .SwAccess(prim_subreg_pkg::SwAccessRW),
817 .RESVAL (1'h0),
818 .Mubi (1'b0)
819 ) u_cfg_shadowed_state_endianness (
820 .clk_i (clk_i),
821 .rst_ni (rst_ni),
822 .rst_shadowed_ni (rst_shadowed_ni),
823
824 // from register interface
825 .re (cfg_shadowed_re),
826 .we (cfg_shadowed_gated_we),
827 .wd (cfg_shadowed_state_endianness_wd),
828
829 // from internal hardware
830 .de (1'b0),
831 .d ('0),
832
833 // to internal hardware
834 .qe (cfg_shadowed_flds_we[4]),
835 .q (reg2hw.cfg_shadowed.state_endianness.q),
836 .ds (),
837
838 // to register interface (read)
839 .qs (cfg_shadowed_state_endianness_qs),
840
841 // Shadow register phase. Relevant for hwext only.
842 .phase (),
843
844 // Shadow register error conditions
845 .err_update (cfg_shadowed_state_endianness_update_err),
846 .err_storage (cfg_shadowed_state_endianness_storage_err)
847 );
848 1/1 assign reg2hw.cfg_shadowed.state_endianness.qe = cfg_shadowed_qe;
Tests: T1 T2 T3
849
850 // F[sideload]: 12:12
851 prim_subreg_shadow #(
852 .DW (1),
853 .SwAccess(prim_subreg_pkg::SwAccessRW),
854 .RESVAL (1'h0),
855 .Mubi (1'b0)
856 ) u_cfg_shadowed_sideload (
857 .clk_i (clk_i),
858 .rst_ni (rst_ni),
859 .rst_shadowed_ni (rst_shadowed_ni),
860
861 // from register interface
862 .re (cfg_shadowed_re),
863 .we (cfg_shadowed_gated_we),
864 .wd (cfg_shadowed_sideload_wd),
865
866 // from internal hardware
867 .de (1'b0),
868 .d ('0),
869
870 // to internal hardware
871 .qe (cfg_shadowed_flds_we[5]),
872 .q (reg2hw.cfg_shadowed.sideload.q),
873 .ds (),
874
875 // to register interface (read)
876 .qs (cfg_shadowed_sideload_qs),
877
878 // Shadow register phase. Relevant for hwext only.
879 .phase (),
880
881 // Shadow register error conditions
882 .err_update (cfg_shadowed_sideload_update_err),
883 .err_storage (cfg_shadowed_sideload_storage_err)
884 );
885 1/1 assign reg2hw.cfg_shadowed.sideload.qe = cfg_shadowed_qe;
Tests: T1 T2 T3
886
887 // F[entropy_mode]: 17:16
888 prim_subreg_shadow #(
889 .DW (2),
890 .SwAccess(prim_subreg_pkg::SwAccessRW),
891 .RESVAL (2'h0),
892 .Mubi (1'b0)
893 ) u_cfg_shadowed_entropy_mode (
894 .clk_i (clk_i),
895 .rst_ni (rst_ni),
896 .rst_shadowed_ni (rst_shadowed_ni),
897
898 // from register interface
899 .re (cfg_shadowed_re),
900 .we (cfg_shadowed_gated_we),
901 .wd (cfg_shadowed_entropy_mode_wd),
902
903 // from internal hardware
904 .de (1'b0),
905 .d ('0),
906
907 // to internal hardware
908 .qe (cfg_shadowed_flds_we[6]),
909 .q (reg2hw.cfg_shadowed.entropy_mode.q),
910 .ds (),
911
912 // to register interface (read)
913 .qs (cfg_shadowed_entropy_mode_qs),
914
915 // Shadow register phase. Relevant for hwext only.
916 .phase (),
917
918 // Shadow register error conditions
919 .err_update (cfg_shadowed_entropy_mode_update_err),
920 .err_storage (cfg_shadowed_entropy_mode_storage_err)
921 );
922 1/1 assign reg2hw.cfg_shadowed.entropy_mode.qe = cfg_shadowed_qe;
Tests: T1 T2 T3
923
924 // F[entropy_fast_process]: 19:19
925 prim_subreg_shadow #(
926 .DW (1),
927 .SwAccess(prim_subreg_pkg::SwAccessRW),
928 .RESVAL (1'h0),
929 .Mubi (1'b0)
930 ) u_cfg_shadowed_entropy_fast_process (
931 .clk_i (clk_i),
932 .rst_ni (rst_ni),
933 .rst_shadowed_ni (rst_shadowed_ni),
934
935 // from register interface
936 .re (cfg_shadowed_re),
937 .we (cfg_shadowed_gated_we),
938 .wd (cfg_shadowed_entropy_fast_process_wd),
939
940 // from internal hardware
941 .de (1'b0),
942 .d ('0),
943
944 // to internal hardware
945 .qe (cfg_shadowed_flds_we[7]),
946 .q (reg2hw.cfg_shadowed.entropy_fast_process.q),
947 .ds (),
948
949 // to register interface (read)
950 .qs (cfg_shadowed_entropy_fast_process_qs),
951
952 // Shadow register phase. Relevant for hwext only.
953 .phase (),
954
955 // Shadow register error conditions
956 .err_update (cfg_shadowed_entropy_fast_process_update_err),
957 .err_storage (cfg_shadowed_entropy_fast_process_storage_err)
958 );
959 1/1 assign reg2hw.cfg_shadowed.entropy_fast_process.qe = cfg_shadowed_qe;
Tests: T1 T2 T3
960
961 // F[msg_mask]: 20:20
962 prim_subreg_shadow #(
963 .DW (1),
964 .SwAccess(prim_subreg_pkg::SwAccessRW),
965 .RESVAL (1'h0),
966 .Mubi (1'b0)
967 ) u_cfg_shadowed_msg_mask (
968 .clk_i (clk_i),
969 .rst_ni (rst_ni),
970 .rst_shadowed_ni (rst_shadowed_ni),
971
972 // from register interface
973 .re (cfg_shadowed_re),
974 .we (cfg_shadowed_gated_we),
975 .wd (cfg_shadowed_msg_mask_wd),
976
977 // from internal hardware
978 .de (1'b0),
979 .d ('0),
980
981 // to internal hardware
982 .qe (cfg_shadowed_flds_we[8]),
983 .q (reg2hw.cfg_shadowed.msg_mask.q),
984 .ds (),
985
986 // to register interface (read)
987 .qs (cfg_shadowed_msg_mask_qs),
988
989 // Shadow register phase. Relevant for hwext only.
990 .phase (),
991
992 // Shadow register error conditions
993 .err_update (cfg_shadowed_msg_mask_update_err),
994 .err_storage (cfg_shadowed_msg_mask_storage_err)
995 );
996 1/1 assign reg2hw.cfg_shadowed.msg_mask.qe = cfg_shadowed_qe;
Tests: T1 T2 T3
997
998 // F[entropy_ready]: 24:24
999 prim_subreg_shadow #(
1000 .DW (1),
1001 .SwAccess(prim_subreg_pkg::SwAccessRW),
1002 .RESVAL (1'h0),
1003 .Mubi (1'b0)
1004 ) u_cfg_shadowed_entropy_ready (
1005 .clk_i (clk_i),
1006 .rst_ni (rst_ni),
1007 .rst_shadowed_ni (rst_shadowed_ni),
1008
1009 // from register interface
1010 .re (cfg_shadowed_re),
1011 .we (cfg_shadowed_gated_we),
1012 .wd (cfg_shadowed_entropy_ready_wd),
1013
1014 // from internal hardware
1015 .de (1'b0),
1016 .d ('0),
1017
1018 // to internal hardware
1019 .qe (cfg_shadowed_flds_we[9]),
1020 .q (reg2hw.cfg_shadowed.entropy_ready.q),
1021 .ds (),
1022
1023 // to register interface (read)
1024 .qs (cfg_shadowed_entropy_ready_qs),
1025
1026 // Shadow register phase. Relevant for hwext only.
1027 .phase (),
1028
1029 // Shadow register error conditions
1030 .err_update (cfg_shadowed_entropy_ready_update_err),
1031 .err_storage (cfg_shadowed_entropy_ready_storage_err)
1032 );
1033 1/1 assign reg2hw.cfg_shadowed.entropy_ready.qe = cfg_shadowed_qe;
Tests: T1 T2 T3
1034
1035 // F[en_unsupported_modestrength]: 26:26
1036 prim_subreg_shadow #(
1037 .DW (1),
1038 .SwAccess(prim_subreg_pkg::SwAccessRW),
1039 .RESVAL (1'h0),
1040 .Mubi (1'b0)
1041 ) u_cfg_shadowed_en_unsupported_modestrength (
1042 .clk_i (clk_i),
1043 .rst_ni (rst_ni),
1044 .rst_shadowed_ni (rst_shadowed_ni),
1045
1046 // from register interface
1047 .re (cfg_shadowed_re),
1048 .we (cfg_shadowed_gated_we),
1049 .wd (cfg_shadowed_en_unsupported_modestrength_wd),
1050
1051 // from internal hardware
1052 .de (1'b0),
1053 .d ('0),
1054
1055 // to internal hardware
1056 .qe (cfg_shadowed_flds_we[10]),
1057 .q (reg2hw.cfg_shadowed.en_unsupported_modestrength.q),
1058 .ds (),
1059
1060 // to register interface (read)
1061 .qs (cfg_shadowed_en_unsupported_modestrength_qs),
1062
1063 // Shadow register phase. Relevant for hwext only.
1064 .phase (),
1065
1066 // Shadow register error conditions
1067 .err_update (cfg_shadowed_en_unsupported_modestrength_update_err),
1068 .err_storage (cfg_shadowed_en_unsupported_modestrength_storage_err)
1069 );
1070 1/1 assign reg2hw.cfg_shadowed.en_unsupported_modestrength.qe = cfg_shadowed_qe;
Tests: T1 T2 T3
1071
1072
1073 // R[cmd]: V(True)
1074 logic cmd_qe;
1075 logic [3:0] cmd_flds_we;
1076 1/1 assign cmd_qe = &cmd_flds_we;
Tests: T1 T2 T3
1077 // F[cmd]: 5:0
1078 prim_subreg_ext #(
1079 .DW (6)
1080 ) u_cmd_cmd (
1081 .re (1'b0),
1082 .we (cmd_we),
1083 .wd (cmd_cmd_wd),
1084 .d ('0),
1085 .qre (),
1086 .qe (cmd_flds_we[0]),
1087 .q (reg2hw.cmd.cmd.q),
1088 .ds (),
1089 .qs ()
1090 );
1091 1/1 assign reg2hw.cmd.cmd.qe = cmd_qe;
Tests: T1 T2 T3
1092
1093 // F[entropy_req]: 8:8
1094 prim_subreg_ext #(
1095 .DW (1)
1096 ) u_cmd_entropy_req (
1097 .re (1'b0),
1098 .we (cmd_we),
1099 .wd (cmd_entropy_req_wd),
1100 .d ('0),
1101 .qre (),
1102 .qe (cmd_flds_we[1]),
1103 .q (reg2hw.cmd.entropy_req.q),
1104 .ds (),
1105 .qs ()
1106 );
1107 1/1 assign reg2hw.cmd.entropy_req.qe = cmd_qe;
Tests: T1 T2 T3
1108
1109 // F[hash_cnt_clr]: 9:9
1110 prim_subreg_ext #(
1111 .DW (1)
1112 ) u_cmd_hash_cnt_clr (
1113 .re (1'b0),
1114 .we (cmd_we),
1115 .wd (cmd_hash_cnt_clr_wd),
1116 .d ('0),
1117 .qre (),
1118 .qe (cmd_flds_we[2]),
1119 .q (reg2hw.cmd.hash_cnt_clr.q),
1120 .ds (),
1121 .qs ()
1122 );
1123 1/1 assign reg2hw.cmd.hash_cnt_clr.qe = cmd_qe;
Tests: T1 T2 T3
1124
1125 // F[err_processed]: 10:10
1126 prim_subreg_ext #(
1127 .DW (1)
1128 ) u_cmd_err_processed (
1129 .re (1'b0),
1130 .we (cmd_we),
1131 .wd (cmd_err_processed_wd),
1132 .d ('0),
1133 .qre (),
1134 .qe (cmd_flds_we[3]),
1135 .q (reg2hw.cmd.err_processed.q),
1136 .ds (),
1137 .qs ()
1138 );
1139 1/1 assign reg2hw.cmd.err_processed.qe = cmd_qe;
Tests: T1 T2 T3
1140
1141
1142 // R[status]: V(True)
1143 // F[sha3_idle]: 0:0
1144 prim_subreg_ext #(
1145 .DW (1)
1146 ) u_status_sha3_idle (
1147 .re (status_re),
1148 .we (1'b0),
1149 .wd ('0),
1150 .d (hw2reg.status.sha3_idle.d),
1151 .qre (),
1152 .qe (),
1153 .q (),
1154 .ds (),
1155 .qs (status_sha3_idle_qs)
1156 );
1157
1158 // F[sha3_absorb]: 1:1
1159 prim_subreg_ext #(
1160 .DW (1)
1161 ) u_status_sha3_absorb (
1162 .re (status_re),
1163 .we (1'b0),
1164 .wd ('0),
1165 .d (hw2reg.status.sha3_absorb.d),
1166 .qre (),
1167 .qe (),
1168 .q (),
1169 .ds (),
1170 .qs (status_sha3_absorb_qs)
1171 );
1172
1173 // F[sha3_squeeze]: 2:2
1174 prim_subreg_ext #(
1175 .DW (1)
1176 ) u_status_sha3_squeeze (
1177 .re (status_re),
1178 .we (1'b0),
1179 .wd ('0),
1180 .d (hw2reg.status.sha3_squeeze.d),
1181 .qre (),
1182 .qe (),
1183 .q (),
1184 .ds (),
1185 .qs (status_sha3_squeeze_qs)
1186 );
1187
1188 // F[fifo_depth]: 12:8
1189 prim_subreg_ext #(
1190 .DW (5)
1191 ) u_status_fifo_depth (
1192 .re (status_re),
1193 .we (1'b0),
1194 .wd ('0),
1195 .d (hw2reg.status.fifo_depth.d),
1196 .qre (),
1197 .qe (),
1198 .q (),
1199 .ds (),
1200 .qs (status_fifo_depth_qs)
1201 );
1202
1203 // F[fifo_empty]: 14:14
1204 prim_subreg_ext #(
1205 .DW (1)
1206 ) u_status_fifo_empty (
1207 .re (status_re),
1208 .we (1'b0),
1209 .wd ('0),
1210 .d (hw2reg.status.fifo_empty.d),
1211 .qre (),
1212 .qe (),
1213 .q (),
1214 .ds (),
1215 .qs (status_fifo_empty_qs)
1216 );
1217
1218 // F[fifo_full]: 15:15
1219 prim_subreg_ext #(
1220 .DW (1)
1221 ) u_status_fifo_full (
1222 .re (status_re),
1223 .we (1'b0),
1224 .wd ('0),
1225 .d (hw2reg.status.fifo_full.d),
1226 .qre (),
1227 .qe (),
1228 .q (),
1229 .ds (),
1230 .qs (status_fifo_full_qs)
1231 );
1232
1233 // F[alert_fatal_fault]: 16:16
1234 prim_subreg_ext #(
1235 .DW (1)
1236 ) u_status_alert_fatal_fault (
1237 .re (status_re),
1238 .we (1'b0),
1239 .wd ('0),
1240 .d (hw2reg.status.alert_fatal_fault.d),
1241 .qre (),
1242 .qe (),
1243 .q (),
1244 .ds (),
1245 .qs (status_alert_fatal_fault_qs)
1246 );
1247
1248 // F[alert_recov_ctrl_update_err]: 17:17
1249 prim_subreg_ext #(
1250 .DW (1)
1251 ) u_status_alert_recov_ctrl_update_err (
1252 .re (status_re),
1253 .we (1'b0),
1254 .wd ('0),
1255 .d (hw2reg.status.alert_recov_ctrl_update_err.d),
1256 .qre (),
1257 .qe (),
1258 .q (),
1259 .ds (),
1260 .qs (status_alert_recov_ctrl_update_err_qs)
1261 );
1262
1263
1264 // R[entropy_period]: V(False)
1265 // Create REGWEN-gated WE signal
1266 logic entropy_period_gated_we;
1267 1/1 assign entropy_period_gated_we = entropy_period_we & cfg_regwen_qs;
Tests: T1 T2 T3
1268 // F[prescaler]: 9:0
1269 prim_subreg #(
1270 .DW (10),
1271 .SwAccess(prim_subreg_pkg::SwAccessRW),
1272 .RESVAL (10'h0),
1273 .Mubi (1'b0)
1274 ) u_entropy_period_prescaler (
1275 .clk_i (clk_i),
1276 .rst_ni (rst_ni),
1277
1278 // from register interface
1279 .we (entropy_period_gated_we),
1280 .wd (entropy_period_prescaler_wd),
1281
1282 // from internal hardware
1283 .de (1'b0),
1284 .d ('0),
1285
1286 // to internal hardware
1287 .qe (),
1288 .q (reg2hw.entropy_period.prescaler.q),
1289 .ds (),
1290
1291 // to register interface (read)
1292 .qs (entropy_period_prescaler_qs)
1293 );
1294
1295 // F[wait_timer]: 31:16
1296 prim_subreg #(
1297 .DW (16),
1298 .SwAccess(prim_subreg_pkg::SwAccessRW),
1299 .RESVAL (16'h0),
1300 .Mubi (1'b0)
1301 ) u_entropy_period_wait_timer (
1302 .clk_i (clk_i),
1303 .rst_ni (rst_ni),
1304
1305 // from register interface
1306 .we (entropy_period_gated_we),
1307 .wd (entropy_period_wait_timer_wd),
1308
1309 // from internal hardware
1310 .de (1'b0),
1311 .d ('0),
1312
1313 // to internal hardware
1314 .qe (),
1315 .q (reg2hw.entropy_period.wait_timer.q),
1316 .ds (),
1317
1318 // to register interface (read)
1319 .qs (entropy_period_wait_timer_qs)
1320 );
1321
1322
1323 // R[entropy_refresh_hash_cnt]: V(False)
1324 prim_subreg #(
1325 .DW (10),
1326 .SwAccess(prim_subreg_pkg::SwAccessRO),
1327 .RESVAL (10'h0),
1328 .Mubi (1'b0)
1329 ) u_entropy_refresh_hash_cnt (
1330 .clk_i (clk_i),
1331 .rst_ni (rst_ni),
1332
1333 // from register interface
1334 .we (1'b0),
1335 .wd ('0),
1336
1337 // from internal hardware
1338 .de (hw2reg.entropy_refresh_hash_cnt.de),
1339 .d (hw2reg.entropy_refresh_hash_cnt.d),
1340
1341 // to internal hardware
1342 .qe (),
1343 .q (),
1344 .ds (),
1345
1346 // to register interface (read)
1347 .qs (entropy_refresh_hash_cnt_qs)
1348 );
1349
1350
1351 // R[entropy_refresh_threshold_shadowed]: V(False)
1352 // Create REGWEN-gated WE signal
1353 logic entropy_refresh_threshold_shadowed_gated_we;
1354 1/1 assign entropy_refresh_threshold_shadowed_gated_we =
Tests: T1 T2 T3
1355 entropy_refresh_threshold_shadowed_we & cfg_regwen_qs;
1356 prim_subreg_shadow #(
1357 .DW (10),
1358 .SwAccess(prim_subreg_pkg::SwAccessRW),
1359 .RESVAL (10'h0),
1360 .Mubi (1'b0)
1361 ) u_entropy_refresh_threshold_shadowed (
1362 .clk_i (clk_i),
1363 .rst_ni (rst_ni),
1364 .rst_shadowed_ni (rst_shadowed_ni),
1365
1366 // from register interface
1367 .re (entropy_refresh_threshold_shadowed_re),
1368 .we (entropy_refresh_threshold_shadowed_gated_we),
1369 .wd (entropy_refresh_threshold_shadowed_wd),
1370
1371 // from internal hardware
1372 .de (1'b0),
1373 .d ('0),
1374
1375 // to internal hardware
1376 .qe (),
1377 .q (reg2hw.entropy_refresh_threshold_shadowed.q),
1378 .ds (),
1379
1380 // to register interface (read)
1381 .qs (entropy_refresh_threshold_shadowed_qs),
1382
1383 // Shadow register phase. Relevant for hwext only.
1384 .phase (),
1385
1386 // Shadow register error conditions
1387 .err_update (entropy_refresh_threshold_shadowed_update_err),
1388 .err_storage (entropy_refresh_threshold_shadowed_storage_err)
1389 );
1390
1391
1392 // R[entropy_seed]: V(True)
1393 logic entropy_seed_qe;
1394 logic [0:0] entropy_seed_flds_we;
1395 1/1 assign entropy_seed_qe = &entropy_seed_flds_we;
Tests: T1 T30 T7
1396 prim_subreg_ext #(
1397 .DW (32)
1398 ) u_entropy_seed (
1399 .re (1'b0),
1400 .we (entropy_seed_we),
1401 .wd (entropy_seed_wd),
1402 .d ('0),
1403 .qre (),
1404 .qe (entropy_seed_flds_we[0]),
1405 .q (reg2hw.entropy_seed.q),
1406 .ds (),
1407 .qs ()
1408 );
1409 1/1 assign reg2hw.entropy_seed.qe = entropy_seed_qe;
Tests: T1 T30 T7
1410
1411
1412 // Subregister 0 of Multireg key_share0
1413 // R[key_share0_0]: V(True)
1414 logic key_share0_0_qe;
1415 logic [0:0] key_share0_0_flds_we;
1416 1/1 assign key_share0_0_qe = &key_share0_0_flds_we;
Tests: T1 T29 T30
1417 // Create REGWEN-gated WE signal
1418 logic key_share0_0_gated_we;
1419 1/1 assign key_share0_0_gated_we = key_share0_0_we & cfg_regwen_qs;
Tests: T1 T2 T3
1420 prim_subreg_ext #(
1421 .DW (32)
1422 ) u_key_share0_0 (
1423 .re (1'b0),
1424 .we (key_share0_0_gated_we),
1425 .wd (key_share0_0_wd),
1426 .d ('0),
1427 .qre (),
1428 .qe (key_share0_0_flds_we[0]),
1429 .q (reg2hw.key_share0[0].q),
1430 .ds (),
1431 .qs ()
1432 );
1433 1/1 assign reg2hw.key_share0[0].qe = key_share0_0_qe;
Tests: T1 T29 T30
1434
1435
1436 // Subregister 1 of Multireg key_share0
1437 // R[key_share0_1]: V(True)
1438 logic key_share0_1_qe;
1439 logic [0:0] key_share0_1_flds_we;
1440 1/1 assign key_share0_1_qe = &key_share0_1_flds_we;
Tests: T1 T29 T30
1441 // Create REGWEN-gated WE signal
1442 logic key_share0_1_gated_we;
1443 1/1 assign key_share0_1_gated_we = key_share0_1_we & cfg_regwen_qs;
Tests: T1 T2 T3
1444 prim_subreg_ext #(
1445 .DW (32)
1446 ) u_key_share0_1 (
1447 .re (1'b0),
1448 .we (key_share0_1_gated_we),
1449 .wd (key_share0_1_wd),
1450 .d ('0),
1451 .qre (),
1452 .qe (key_share0_1_flds_we[0]),
1453 .q (reg2hw.key_share0[1].q),
1454 .ds (),
1455 .qs ()
1456 );
1457 1/1 assign reg2hw.key_share0[1].qe = key_share0_1_qe;
Tests: T1 T29 T30
1458
1459
1460 // Subregister 2 of Multireg key_share0
1461 // R[key_share0_2]: V(True)
1462 logic key_share0_2_qe;
1463 logic [0:0] key_share0_2_flds_we;
1464 1/1 assign key_share0_2_qe = &key_share0_2_flds_we;
Tests: T1 T29 T30
1465 // Create REGWEN-gated WE signal
1466 logic key_share0_2_gated_we;
1467 1/1 assign key_share0_2_gated_we = key_share0_2_we & cfg_regwen_qs;
Tests: T1 T2 T3
1468 prim_subreg_ext #(
1469 .DW (32)
1470 ) u_key_share0_2 (
1471 .re (1'b0),
1472 .we (key_share0_2_gated_we),
1473 .wd (key_share0_2_wd),
1474 .d ('0),
1475 .qre (),
1476 .qe (key_share0_2_flds_we[0]),
1477 .q (reg2hw.key_share0[2].q),
1478 .ds (),
1479 .qs ()
1480 );
1481 1/1 assign reg2hw.key_share0[2].qe = key_share0_2_qe;
Tests: T1 T29 T30
1482
1483
1484 // Subregister 3 of Multireg key_share0
1485 // R[key_share0_3]: V(True)
1486 logic key_share0_3_qe;
1487 logic [0:0] key_share0_3_flds_we;
1488 1/1 assign key_share0_3_qe = &key_share0_3_flds_we;
Tests: T1 T29 T30
1489 // Create REGWEN-gated WE signal
1490 logic key_share0_3_gated_we;
1491 1/1 assign key_share0_3_gated_we = key_share0_3_we & cfg_regwen_qs;
Tests: T1 T2 T3
1492 prim_subreg_ext #(
1493 .DW (32)
1494 ) u_key_share0_3 (
1495 .re (1'b0),
1496 .we (key_share0_3_gated_we),
1497 .wd (key_share0_3_wd),
1498 .d ('0),
1499 .qre (),
1500 .qe (key_share0_3_flds_we[0]),
1501 .q (reg2hw.key_share0[3].q),
1502 .ds (),
1503 .qs ()
1504 );
1505 1/1 assign reg2hw.key_share0[3].qe = key_share0_3_qe;
Tests: T1 T29 T30
1506
1507
1508 // Subregister 4 of Multireg key_share0
1509 // R[key_share0_4]: V(True)
1510 logic key_share0_4_qe;
1511 logic [0:0] key_share0_4_flds_we;
1512 1/1 assign key_share0_4_qe = &key_share0_4_flds_we;
Tests: T1 T29 T30
1513 // Create REGWEN-gated WE signal
1514 logic key_share0_4_gated_we;
1515 1/1 assign key_share0_4_gated_we = key_share0_4_we & cfg_regwen_qs;
Tests: T1 T2 T3
1516 prim_subreg_ext #(
1517 .DW (32)
1518 ) u_key_share0_4 (
1519 .re (1'b0),
1520 .we (key_share0_4_gated_we),
1521 .wd (key_share0_4_wd),
1522 .d ('0),
1523 .qre (),
1524 .qe (key_share0_4_flds_we[0]),
1525 .q (reg2hw.key_share0[4].q),
1526 .ds (),
1527 .qs ()
1528 );
1529 1/1 assign reg2hw.key_share0[4].qe = key_share0_4_qe;
Tests: T1 T29 T30
1530
1531
1532 // Subregister 5 of Multireg key_share0
1533 // R[key_share0_5]: V(True)
1534 logic key_share0_5_qe;
1535 logic [0:0] key_share0_5_flds_we;
1536 1/1 assign key_share0_5_qe = &key_share0_5_flds_we;
Tests: T1 T29 T30
1537 // Create REGWEN-gated WE signal
1538 logic key_share0_5_gated_we;
1539 1/1 assign key_share0_5_gated_we = key_share0_5_we & cfg_regwen_qs;
Tests: T1 T2 T3
1540 prim_subreg_ext #(
1541 .DW (32)
1542 ) u_key_share0_5 (
1543 .re (1'b0),
1544 .we (key_share0_5_gated_we),
1545 .wd (key_share0_5_wd),
1546 .d ('0),
1547 .qre (),
1548 .qe (key_share0_5_flds_we[0]),
1549 .q (reg2hw.key_share0[5].q),
1550 .ds (),
1551 .qs ()
1552 );
1553 1/1 assign reg2hw.key_share0[5].qe = key_share0_5_qe;
Tests: T1 T29 T30
1554
1555
1556 // Subregister 6 of Multireg key_share0
1557 // R[key_share0_6]: V(True)
1558 logic key_share0_6_qe;
1559 logic [0:0] key_share0_6_flds_we;
1560 1/1 assign key_share0_6_qe = &key_share0_6_flds_we;
Tests: T1 T29 T30
1561 // Create REGWEN-gated WE signal
1562 logic key_share0_6_gated_we;
1563 1/1 assign key_share0_6_gated_we = key_share0_6_we & cfg_regwen_qs;
Tests: T1 T2 T3
1564 prim_subreg_ext #(
1565 .DW (32)
1566 ) u_key_share0_6 (
1567 .re (1'b0),
1568 .we (key_share0_6_gated_we),
1569 .wd (key_share0_6_wd),
1570 .d ('0),
1571 .qre (),
1572 .qe (key_share0_6_flds_we[0]),
1573 .q (reg2hw.key_share0[6].q),
1574 .ds (),
1575 .qs ()
1576 );
1577 1/1 assign reg2hw.key_share0[6].qe = key_share0_6_qe;
Tests: T1 T29 T30
1578
1579
1580 // Subregister 7 of Multireg key_share0
1581 // R[key_share0_7]: V(True)
1582 logic key_share0_7_qe;
1583 logic [0:0] key_share0_7_flds_we;
1584 1/1 assign key_share0_7_qe = &key_share0_7_flds_we;
Tests: T1 T29 T30
1585 // Create REGWEN-gated WE signal
1586 logic key_share0_7_gated_we;
1587 1/1 assign key_share0_7_gated_we = key_share0_7_we & cfg_regwen_qs;
Tests: T1 T2 T3
1588 prim_subreg_ext #(
1589 .DW (32)
1590 ) u_key_share0_7 (
1591 .re (1'b0),
1592 .we (key_share0_7_gated_we),
1593 .wd (key_share0_7_wd),
1594 .d ('0),
1595 .qre (),
1596 .qe (key_share0_7_flds_we[0]),
1597 .q (reg2hw.key_share0[7].q),
1598 .ds (),
1599 .qs ()
1600 );
1601 1/1 assign reg2hw.key_share0[7].qe = key_share0_7_qe;
Tests: T1 T29 T30
1602
1603
1604 // Subregister 8 of Multireg key_share0
1605 // R[key_share0_8]: V(True)
1606 logic key_share0_8_qe;
1607 logic [0:0] key_share0_8_flds_we;
1608 1/1 assign key_share0_8_qe = &key_share0_8_flds_we;
Tests: T1 T29 T30
1609 // Create REGWEN-gated WE signal
1610 logic key_share0_8_gated_we;
1611 1/1 assign key_share0_8_gated_we = key_share0_8_we & cfg_regwen_qs;
Tests: T1 T2 T3
1612 prim_subreg_ext #(
1613 .DW (32)
1614 ) u_key_share0_8 (
1615 .re (1'b0),
1616 .we (key_share0_8_gated_we),
1617 .wd (key_share0_8_wd),
1618 .d ('0),
1619 .qre (),
1620 .qe (key_share0_8_flds_we[0]),
1621 .q (reg2hw.key_share0[8].q),
1622 .ds (),
1623 .qs ()
1624 );
1625 1/1 assign reg2hw.key_share0[8].qe = key_share0_8_qe;
Tests: T1 T29 T30
1626
1627
1628 // Subregister 9 of Multireg key_share0
1629 // R[key_share0_9]: V(True)
1630 logic key_share0_9_qe;
1631 logic [0:0] key_share0_9_flds_we;
1632 1/1 assign key_share0_9_qe = &key_share0_9_flds_we;
Tests: T1 T29 T30
1633 // Create REGWEN-gated WE signal
1634 logic key_share0_9_gated_we;
1635 1/1 assign key_share0_9_gated_we = key_share0_9_we & cfg_regwen_qs;
Tests: T1 T2 T3
1636 prim_subreg_ext #(
1637 .DW (32)
1638 ) u_key_share0_9 (
1639 .re (1'b0),
1640 .we (key_share0_9_gated_we),
1641 .wd (key_share0_9_wd),
1642 .d ('0),
1643 .qre (),
1644 .qe (key_share0_9_flds_we[0]),
1645 .q (reg2hw.key_share0[9].q),
1646 .ds (),
1647 .qs ()
1648 );
1649 1/1 assign reg2hw.key_share0[9].qe = key_share0_9_qe;
Tests: T1 T29 T30
1650
1651
1652 // Subregister 10 of Multireg key_share0
1653 // R[key_share0_10]: V(True)
1654 logic key_share0_10_qe;
1655 logic [0:0] key_share0_10_flds_we;
1656 1/1 assign key_share0_10_qe = &key_share0_10_flds_we;
Tests: T1 T29 T30
1657 // Create REGWEN-gated WE signal
1658 logic key_share0_10_gated_we;
1659 1/1 assign key_share0_10_gated_we = key_share0_10_we & cfg_regwen_qs;
Tests: T1 T2 T3
1660 prim_subreg_ext #(
1661 .DW (32)
1662 ) u_key_share0_10 (
1663 .re (1'b0),
1664 .we (key_share0_10_gated_we),
1665 .wd (key_share0_10_wd),
1666 .d ('0),
1667 .qre (),
1668 .qe (key_share0_10_flds_we[0]),
1669 .q (reg2hw.key_share0[10].q),
1670 .ds (),
1671 .qs ()
1672 );
1673 1/1 assign reg2hw.key_share0[10].qe = key_share0_10_qe;
Tests: T1 T29 T30
1674
1675
1676 // Subregister 11 of Multireg key_share0
1677 // R[key_share0_11]: V(True)
1678 logic key_share0_11_qe;
1679 logic [0:0] key_share0_11_flds_we;
1680 1/1 assign key_share0_11_qe = &key_share0_11_flds_we;
Tests: T1 T29 T30
1681 // Create REGWEN-gated WE signal
1682 logic key_share0_11_gated_we;
1683 1/1 assign key_share0_11_gated_we = key_share0_11_we & cfg_regwen_qs;
Tests: T1 T2 T3
1684 prim_subreg_ext #(
1685 .DW (32)
1686 ) u_key_share0_11 (
1687 .re (1'b0),
1688 .we (key_share0_11_gated_we),
1689 .wd (key_share0_11_wd),
1690 .d ('0),
1691 .qre (),
1692 .qe (key_share0_11_flds_we[0]),
1693 .q (reg2hw.key_share0[11].q),
1694 .ds (),
1695 .qs ()
1696 );
1697 1/1 assign reg2hw.key_share0[11].qe = key_share0_11_qe;
Tests: T1 T29 T30
1698
1699
1700 // Subregister 12 of Multireg key_share0
1701 // R[key_share0_12]: V(True)
1702 logic key_share0_12_qe;
1703 logic [0:0] key_share0_12_flds_we;
1704 1/1 assign key_share0_12_qe = &key_share0_12_flds_we;
Tests: T1 T29 T30
1705 // Create REGWEN-gated WE signal
1706 logic key_share0_12_gated_we;
1707 1/1 assign key_share0_12_gated_we = key_share0_12_we & cfg_regwen_qs;
Tests: T1 T2 T3
1708 prim_subreg_ext #(
1709 .DW (32)
1710 ) u_key_share0_12 (
1711 .re (1'b0),
1712 .we (key_share0_12_gated_we),
1713 .wd (key_share0_12_wd),
1714 .d ('0),
1715 .qre (),
1716 .qe (key_share0_12_flds_we[0]),
1717 .q (reg2hw.key_share0[12].q),
1718 .ds (),
1719 .qs ()
1720 );
1721 1/1 assign reg2hw.key_share0[12].qe = key_share0_12_qe;
Tests: T1 T29 T30
1722
1723
1724 // Subregister 13 of Multireg key_share0
1725 // R[key_share0_13]: V(True)
1726 logic key_share0_13_qe;
1727 logic [0:0] key_share0_13_flds_we;
1728 1/1 assign key_share0_13_qe = &key_share0_13_flds_we;
Tests: T1 T29 T30
1729 // Create REGWEN-gated WE signal
1730 logic key_share0_13_gated_we;
1731 1/1 assign key_share0_13_gated_we = key_share0_13_we & cfg_regwen_qs;
Tests: T1 T2 T3
1732 prim_subreg_ext #(
1733 .DW (32)
1734 ) u_key_share0_13 (
1735 .re (1'b0),
1736 .we (key_share0_13_gated_we),
1737 .wd (key_share0_13_wd),
1738 .d ('0),
1739 .qre (),
1740 .qe (key_share0_13_flds_we[0]),
1741 .q (reg2hw.key_share0[13].q),
1742 .ds (),
1743 .qs ()
1744 );
1745 1/1 assign reg2hw.key_share0[13].qe = key_share0_13_qe;
Tests: T1 T29 T30
1746
1747
1748 // Subregister 14 of Multireg key_share0
1749 // R[key_share0_14]: V(True)
1750 logic key_share0_14_qe;
1751 logic [0:0] key_share0_14_flds_we;
1752 1/1 assign key_share0_14_qe = &key_share0_14_flds_we;
Tests: T1 T29 T30
1753 // Create REGWEN-gated WE signal
1754 logic key_share0_14_gated_we;
1755 1/1 assign key_share0_14_gated_we = key_share0_14_we & cfg_regwen_qs;
Tests: T1 T2 T3
1756 prim_subreg_ext #(
1757 .DW (32)
1758 ) u_key_share0_14 (
1759 .re (1'b0),
1760 .we (key_share0_14_gated_we),
1761 .wd (key_share0_14_wd),
1762 .d ('0),
1763 .qre (),
1764 .qe (key_share0_14_flds_we[0]),
1765 .q (reg2hw.key_share0[14].q),
1766 .ds (),
1767 .qs ()
1768 );
1769 1/1 assign reg2hw.key_share0[14].qe = key_share0_14_qe;
Tests: T1 T29 T30
1770
1771
1772 // Subregister 15 of Multireg key_share0
1773 // R[key_share0_15]: V(True)
1774 logic key_share0_15_qe;
1775 logic [0:0] key_share0_15_flds_we;
1776 1/1 assign key_share0_15_qe = &key_share0_15_flds_we;
Tests: T1 T29 T30
1777 // Create REGWEN-gated WE signal
1778 logic key_share0_15_gated_we;
1779 1/1 assign key_share0_15_gated_we = key_share0_15_we & cfg_regwen_qs;
Tests: T1 T2 T3
1780 prim_subreg_ext #(
1781 .DW (32)
1782 ) u_key_share0_15 (
1783 .re (1'b0),
1784 .we (key_share0_15_gated_we),
1785 .wd (key_share0_15_wd),
1786 .d ('0),
1787 .qre (),
1788 .qe (key_share0_15_flds_we[0]),
1789 .q (reg2hw.key_share0[15].q),
1790 .ds (),
1791 .qs ()
1792 );
1793 1/1 assign reg2hw.key_share0[15].qe = key_share0_15_qe;
Tests: T1 T29 T30
1794
1795
1796 // Subregister 0 of Multireg key_share1
1797 // R[key_share1_0]: V(True)
1798 logic key_share1_0_qe;
1799 logic [0:0] key_share1_0_flds_we;
1800 1/1 assign key_share1_0_qe = &key_share1_0_flds_we;
Tests: T1 T29 T30
1801 // Create REGWEN-gated WE signal
1802 logic key_share1_0_gated_we;
1803 1/1 assign key_share1_0_gated_we = key_share1_0_we & cfg_regwen_qs;
Tests: T1 T2 T3
1804 prim_subreg_ext #(
1805 .DW (32)
1806 ) u_key_share1_0 (
1807 .re (1'b0),
1808 .we (key_share1_0_gated_we),
1809 .wd (key_share1_0_wd),
1810 .d ('0),
1811 .qre (),
1812 .qe (key_share1_0_flds_we[0]),
1813 .q (reg2hw.key_share1[0].q),
1814 .ds (),
1815 .qs ()
1816 );
1817 1/1 assign reg2hw.key_share1[0].qe = key_share1_0_qe;
Tests: T1 T29 T30
1818
1819
1820 // Subregister 1 of Multireg key_share1
1821 // R[key_share1_1]: V(True)
1822 logic key_share1_1_qe;
1823 logic [0:0] key_share1_1_flds_we;
1824 1/1 assign key_share1_1_qe = &key_share1_1_flds_we;
Tests: T1 T29 T30
1825 // Create REGWEN-gated WE signal
1826 logic key_share1_1_gated_we;
1827 1/1 assign key_share1_1_gated_we = key_share1_1_we & cfg_regwen_qs;
Tests: T1 T2 T3
1828 prim_subreg_ext #(
1829 .DW (32)
1830 ) u_key_share1_1 (
1831 .re (1'b0),
1832 .we (key_share1_1_gated_we),
1833 .wd (key_share1_1_wd),
1834 .d ('0),
1835 .qre (),
1836 .qe (key_share1_1_flds_we[0]),
1837 .q (reg2hw.key_share1[1].q),
1838 .ds (),
1839 .qs ()
1840 );
1841 1/1 assign reg2hw.key_share1[1].qe = key_share1_1_qe;
Tests: T1 T29 T30
1842
1843
1844 // Subregister 2 of Multireg key_share1
1845 // R[key_share1_2]: V(True)
1846 logic key_share1_2_qe;
1847 logic [0:0] key_share1_2_flds_we;
1848 1/1 assign key_share1_2_qe = &key_share1_2_flds_we;
Tests: T1 T29 T30
1849 // Create REGWEN-gated WE signal
1850 logic key_share1_2_gated_we;
1851 1/1 assign key_share1_2_gated_we = key_share1_2_we & cfg_regwen_qs;
Tests: T1 T2 T3
1852 prim_subreg_ext #(
1853 .DW (32)
1854 ) u_key_share1_2 (
1855 .re (1'b0),
1856 .we (key_share1_2_gated_we),
1857 .wd (key_share1_2_wd),
1858 .d ('0),
1859 .qre (),
1860 .qe (key_share1_2_flds_we[0]),
1861 .q (reg2hw.key_share1[2].q),
1862 .ds (),
1863 .qs ()
1864 );
1865 1/1 assign reg2hw.key_share1[2].qe = key_share1_2_qe;
Tests: T1 T29 T30
1866
1867
1868 // Subregister 3 of Multireg key_share1
1869 // R[key_share1_3]: V(True)
1870 logic key_share1_3_qe;
1871 logic [0:0] key_share1_3_flds_we;
1872 1/1 assign key_share1_3_qe = &key_share1_3_flds_we;
Tests: T1 T29 T30
1873 // Create REGWEN-gated WE signal
1874 logic key_share1_3_gated_we;
1875 1/1 assign key_share1_3_gated_we = key_share1_3_we & cfg_regwen_qs;
Tests: T1 T2 T3
1876 prim_subreg_ext #(
1877 .DW (32)
1878 ) u_key_share1_3 (
1879 .re (1'b0),
1880 .we (key_share1_3_gated_we),
1881 .wd (key_share1_3_wd),
1882 .d ('0),
1883 .qre (),
1884 .qe (key_share1_3_flds_we[0]),
1885 .q (reg2hw.key_share1[3].q),
1886 .ds (),
1887 .qs ()
1888 );
1889 1/1 assign reg2hw.key_share1[3].qe = key_share1_3_qe;
Tests: T1 T29 T30
1890
1891
1892 // Subregister 4 of Multireg key_share1
1893 // R[key_share1_4]: V(True)
1894 logic key_share1_4_qe;
1895 logic [0:0] key_share1_4_flds_we;
1896 1/1 assign key_share1_4_qe = &key_share1_4_flds_we;
Tests: T1 T29 T30
1897 // Create REGWEN-gated WE signal
1898 logic key_share1_4_gated_we;
1899 1/1 assign key_share1_4_gated_we = key_share1_4_we & cfg_regwen_qs;
Tests: T1 T2 T3
1900 prim_subreg_ext #(
1901 .DW (32)
1902 ) u_key_share1_4 (
1903 .re (1'b0),
1904 .we (key_share1_4_gated_we),
1905 .wd (key_share1_4_wd),
1906 .d ('0),
1907 .qre (),
1908 .qe (key_share1_4_flds_we[0]),
1909 .q (reg2hw.key_share1[4].q),
1910 .ds (),
1911 .qs ()
1912 );
1913 1/1 assign reg2hw.key_share1[4].qe = key_share1_4_qe;
Tests: T1 T29 T30
1914
1915
1916 // Subregister 5 of Multireg key_share1
1917 // R[key_share1_5]: V(True)
1918 logic key_share1_5_qe;
1919 logic [0:0] key_share1_5_flds_we;
1920 1/1 assign key_share1_5_qe = &key_share1_5_flds_we;
Tests: T1 T29 T30
1921 // Create REGWEN-gated WE signal
1922 logic key_share1_5_gated_we;
1923 1/1 assign key_share1_5_gated_we = key_share1_5_we & cfg_regwen_qs;
Tests: T1 T2 T3
1924 prim_subreg_ext #(
1925 .DW (32)
1926 ) u_key_share1_5 (
1927 .re (1'b0),
1928 .we (key_share1_5_gated_we),
1929 .wd (key_share1_5_wd),
1930 .d ('0),
1931 .qre (),
1932 .qe (key_share1_5_flds_we[0]),
1933 .q (reg2hw.key_share1[5].q),
1934 .ds (),
1935 .qs ()
1936 );
1937 1/1 assign reg2hw.key_share1[5].qe = key_share1_5_qe;
Tests: T1 T29 T30
1938
1939
1940 // Subregister 6 of Multireg key_share1
1941 // R[key_share1_6]: V(True)
1942 logic key_share1_6_qe;
1943 logic [0:0] key_share1_6_flds_we;
1944 1/1 assign key_share1_6_qe = &key_share1_6_flds_we;
Tests: T1 T29 T30
1945 // Create REGWEN-gated WE signal
1946 logic key_share1_6_gated_we;
1947 1/1 assign key_share1_6_gated_we = key_share1_6_we & cfg_regwen_qs;
Tests: T1 T2 T3
1948 prim_subreg_ext #(
1949 .DW (32)
1950 ) u_key_share1_6 (
1951 .re (1'b0),
1952 .we (key_share1_6_gated_we),
1953 .wd (key_share1_6_wd),
1954 .d ('0),
1955 .qre (),
1956 .qe (key_share1_6_flds_we[0]),
1957 .q (reg2hw.key_share1[6].q),
1958 .ds (),
1959 .qs ()
1960 );
1961 1/1 assign reg2hw.key_share1[6].qe = key_share1_6_qe;
Tests: T1 T29 T30
1962
1963
1964 // Subregister 7 of Multireg key_share1
1965 // R[key_share1_7]: V(True)
1966 logic key_share1_7_qe;
1967 logic [0:0] key_share1_7_flds_we;
1968 1/1 assign key_share1_7_qe = &key_share1_7_flds_we;
Tests: T1 T29 T30
1969 // Create REGWEN-gated WE signal
1970 logic key_share1_7_gated_we;
1971 1/1 assign key_share1_7_gated_we = key_share1_7_we & cfg_regwen_qs;
Tests: T1 T2 T3
1972 prim_subreg_ext #(
1973 .DW (32)
1974 ) u_key_share1_7 (
1975 .re (1'b0),
1976 .we (key_share1_7_gated_we),
1977 .wd (key_share1_7_wd),
1978 .d ('0),
1979 .qre (),
1980 .qe (key_share1_7_flds_we[0]),
1981 .q (reg2hw.key_share1[7].q),
1982 .ds (),
1983 .qs ()
1984 );
1985 1/1 assign reg2hw.key_share1[7].qe = key_share1_7_qe;
Tests: T1 T29 T30
1986
1987
1988 // Subregister 8 of Multireg key_share1
1989 // R[key_share1_8]: V(True)
1990 logic key_share1_8_qe;
1991 logic [0:0] key_share1_8_flds_we;
1992 1/1 assign key_share1_8_qe = &key_share1_8_flds_we;
Tests: T1 T29 T30
1993 // Create REGWEN-gated WE signal
1994 logic key_share1_8_gated_we;
1995 1/1 assign key_share1_8_gated_we = key_share1_8_we & cfg_regwen_qs;
Tests: T1 T2 T3
1996 prim_subreg_ext #(
1997 .DW (32)
1998 ) u_key_share1_8 (
1999 .re (1'b0),
2000 .we (key_share1_8_gated_we),
2001 .wd (key_share1_8_wd),
2002 .d ('0),
2003 .qre (),
2004 .qe (key_share1_8_flds_we[0]),
2005 .q (reg2hw.key_share1[8].q),
2006 .ds (),
2007 .qs ()
2008 );
2009 1/1 assign reg2hw.key_share1[8].qe = key_share1_8_qe;
Tests: T1 T29 T30
2010
2011
2012 // Subregister 9 of Multireg key_share1
2013 // R[key_share1_9]: V(True)
2014 logic key_share1_9_qe;
2015 logic [0:0] key_share1_9_flds_we;
2016 1/1 assign key_share1_9_qe = &key_share1_9_flds_we;
Tests: T1 T29 T30
2017 // Create REGWEN-gated WE signal
2018 logic key_share1_9_gated_we;
2019 1/1 assign key_share1_9_gated_we = key_share1_9_we & cfg_regwen_qs;
Tests: T1 T2 T3
2020 prim_subreg_ext #(
2021 .DW (32)
2022 ) u_key_share1_9 (
2023 .re (1'b0),
2024 .we (key_share1_9_gated_we),
2025 .wd (key_share1_9_wd),
2026 .d ('0),
2027 .qre (),
2028 .qe (key_share1_9_flds_we[0]),
2029 .q (reg2hw.key_share1[9].q),
2030 .ds (),
2031 .qs ()
2032 );
2033 1/1 assign reg2hw.key_share1[9].qe = key_share1_9_qe;
Tests: T1 T29 T30
2034
2035
2036 // Subregister 10 of Multireg key_share1
2037 // R[key_share1_10]: V(True)
2038 logic key_share1_10_qe;
2039 logic [0:0] key_share1_10_flds_we;
2040 1/1 assign key_share1_10_qe = &key_share1_10_flds_we;
Tests: T1 T29 T30
2041 // Create REGWEN-gated WE signal
2042 logic key_share1_10_gated_we;
2043 1/1 assign key_share1_10_gated_we = key_share1_10_we & cfg_regwen_qs;
Tests: T1 T2 T3
2044 prim_subreg_ext #(
2045 .DW (32)
2046 ) u_key_share1_10 (
2047 .re (1'b0),
2048 .we (key_share1_10_gated_we),
2049 .wd (key_share1_10_wd),
2050 .d ('0),
2051 .qre (),
2052 .qe (key_share1_10_flds_we[0]),
2053 .q (reg2hw.key_share1[10].q),
2054 .ds (),
2055 .qs ()
2056 );
2057 1/1 assign reg2hw.key_share1[10].qe = key_share1_10_qe;
Tests: T1 T29 T30
2058
2059
2060 // Subregister 11 of Multireg key_share1
2061 // R[key_share1_11]: V(True)
2062 logic key_share1_11_qe;
2063 logic [0:0] key_share1_11_flds_we;
2064 1/1 assign key_share1_11_qe = &key_share1_11_flds_we;
Tests: T1 T29 T30
2065 // Create REGWEN-gated WE signal
2066 logic key_share1_11_gated_we;
2067 1/1 assign key_share1_11_gated_we = key_share1_11_we & cfg_regwen_qs;
Tests: T1 T2 T3
2068 prim_subreg_ext #(
2069 .DW (32)
2070 ) u_key_share1_11 (
2071 .re (1'b0),
2072 .we (key_share1_11_gated_we),
2073 .wd (key_share1_11_wd),
2074 .d ('0),
2075 .qre (),
2076 .qe (key_share1_11_flds_we[0]),
2077 .q (reg2hw.key_share1[11].q),
2078 .ds (),
2079 .qs ()
2080 );
2081 1/1 assign reg2hw.key_share1[11].qe = key_share1_11_qe;
Tests: T1 T29 T30
2082
2083
2084 // Subregister 12 of Multireg key_share1
2085 // R[key_share1_12]: V(True)
2086 logic key_share1_12_qe;
2087 logic [0:0] key_share1_12_flds_we;
2088 1/1 assign key_share1_12_qe = &key_share1_12_flds_we;
Tests: T1 T29 T30
2089 // Create REGWEN-gated WE signal
2090 logic key_share1_12_gated_we;
2091 1/1 assign key_share1_12_gated_we = key_share1_12_we & cfg_regwen_qs;
Tests: T1 T2 T3
2092 prim_subreg_ext #(
2093 .DW (32)
2094 ) u_key_share1_12 (
2095 .re (1'b0),
2096 .we (key_share1_12_gated_we),
2097 .wd (key_share1_12_wd),
2098 .d ('0),
2099 .qre (),
2100 .qe (key_share1_12_flds_we[0]),
2101 .q (reg2hw.key_share1[12].q),
2102 .ds (),
2103 .qs ()
2104 );
2105 1/1 assign reg2hw.key_share1[12].qe = key_share1_12_qe;
Tests: T1 T29 T30
2106
2107
2108 // Subregister 13 of Multireg key_share1
2109 // R[key_share1_13]: V(True)
2110 logic key_share1_13_qe;
2111 logic [0:0] key_share1_13_flds_we;
2112 1/1 assign key_share1_13_qe = &key_share1_13_flds_we;
Tests: T1 T29 T30
2113 // Create REGWEN-gated WE signal
2114 logic key_share1_13_gated_we;
2115 1/1 assign key_share1_13_gated_we = key_share1_13_we & cfg_regwen_qs;
Tests: T1 T2 T3
2116 prim_subreg_ext #(
2117 .DW (32)
2118 ) u_key_share1_13 (
2119 .re (1'b0),
2120 .we (key_share1_13_gated_we),
2121 .wd (key_share1_13_wd),
2122 .d ('0),
2123 .qre (),
2124 .qe (key_share1_13_flds_we[0]),
2125 .q (reg2hw.key_share1[13].q),
2126 .ds (),
2127 .qs ()
2128 );
2129 1/1 assign reg2hw.key_share1[13].qe = key_share1_13_qe;
Tests: T1 T29 T30
2130
2131
2132 // Subregister 14 of Multireg key_share1
2133 // R[key_share1_14]: V(True)
2134 logic key_share1_14_qe;
2135 logic [0:0] key_share1_14_flds_we;
2136 1/1 assign key_share1_14_qe = &key_share1_14_flds_we;
Tests: T1 T29 T30
2137 // Create REGWEN-gated WE signal
2138 logic key_share1_14_gated_we;
2139 1/1 assign key_share1_14_gated_we = key_share1_14_we & cfg_regwen_qs;
Tests: T1 T2 T3
2140 prim_subreg_ext #(
2141 .DW (32)
2142 ) u_key_share1_14 (
2143 .re (1'b0),
2144 .we (key_share1_14_gated_we),
2145 .wd (key_share1_14_wd),
2146 .d ('0),
2147 .qre (),
2148 .qe (key_share1_14_flds_we[0]),
2149 .q (reg2hw.key_share1[14].q),
2150 .ds (),
2151 .qs ()
2152 );
2153 1/1 assign reg2hw.key_share1[14].qe = key_share1_14_qe;
Tests: T1 T29 T30
2154
2155
2156 // Subregister 15 of Multireg key_share1
2157 // R[key_share1_15]: V(True)
2158 logic key_share1_15_qe;
2159 logic [0:0] key_share1_15_flds_we;
2160 1/1 assign key_share1_15_qe = &key_share1_15_flds_we;
Tests: T1 T29 T30
2161 // Create REGWEN-gated WE signal
2162 logic key_share1_15_gated_we;
2163 1/1 assign key_share1_15_gated_we = key_share1_15_we & cfg_regwen_qs;
Tests: T1 T2 T3
2164 prim_subreg_ext #(
2165 .DW (32)
2166 ) u_key_share1_15 (
2167 .re (1'b0),
2168 .we (key_share1_15_gated_we),
2169 .wd (key_share1_15_wd),
2170 .d ('0),
2171 .qre (),
2172 .qe (key_share1_15_flds_we[0]),
2173 .q (reg2hw.key_share1[15].q),
2174 .ds (),
2175 .qs ()
2176 );
2177 1/1 assign reg2hw.key_share1[15].qe = key_share1_15_qe;
Tests: T1 T29 T30
2178
2179
2180 // R[key_len]: V(False)
2181 // Create REGWEN-gated WE signal
2182 logic key_len_gated_we;
2183 1/1 assign key_len_gated_we = key_len_we & cfg_regwen_qs;
Tests: T1 T2 T3
2184 prim_subreg #(
2185 .DW (3),
2186 .SwAccess(prim_subreg_pkg::SwAccessWO),
2187 .RESVAL (3'h0),
2188 .Mubi (1'b0)
2189 ) u_key_len (
2190 .clk_i (clk_i),
2191 .rst_ni (rst_ni),
2192
2193 // from register interface
2194 .we (key_len_gated_we),
2195 .wd (key_len_wd),
2196
2197 // from internal hardware
2198 .de (1'b0),
2199 .d ('0),
2200
2201 // to internal hardware
2202 .qe (),
2203 .q (reg2hw.key_len.q),
2204 .ds (),
2205
2206 // to register interface (read)
2207 .qs ()
2208 );
2209
2210
2211 // Subregister 0 of Multireg prefix
2212 // R[prefix_0]: V(False)
2213 // Create REGWEN-gated WE signal
2214 logic prefix_0_gated_we;
2215 1/1 assign prefix_0_gated_we = prefix_0_we & cfg_regwen_qs;
Tests: T1 T2 T3
2216 prim_subreg #(
2217 .DW (32),
2218 .SwAccess(prim_subreg_pkg::SwAccessRW),
2219 .RESVAL (32'h0),
2220 .Mubi (1'b0)
2221 ) u_prefix_0 (
2222 .clk_i (clk_i),
2223 .rst_ni (rst_ni),
2224
2225 // from register interface
2226 .we (prefix_0_gated_we),
2227 .wd (prefix_0_wd),
2228
2229 // from internal hardware
2230 .de (1'b0),
2231 .d ('0),
2232
2233 // to internal hardware
2234 .qe (),
2235 .q (reg2hw.prefix[0].q),
2236 .ds (),
2237
2238 // to register interface (read)
2239 .qs (prefix_0_qs)
2240 );
2241
2242
2243 // Subregister 1 of Multireg prefix
2244 // R[prefix_1]: V(False)
2245 // Create REGWEN-gated WE signal
2246 logic prefix_1_gated_we;
2247 1/1 assign prefix_1_gated_we = prefix_1_we & cfg_regwen_qs;
Tests: T1 T2 T3
2248 prim_subreg #(
2249 .DW (32),
2250 .SwAccess(prim_subreg_pkg::SwAccessRW),
2251 .RESVAL (32'h0),
2252 .Mubi (1'b0)
2253 ) u_prefix_1 (
2254 .clk_i (clk_i),
2255 .rst_ni (rst_ni),
2256
2257 // from register interface
2258 .we (prefix_1_gated_we),
2259 .wd (prefix_1_wd),
2260
2261 // from internal hardware
2262 .de (1'b0),
2263 .d ('0),
2264
2265 // to internal hardware
2266 .qe (),
2267 .q (reg2hw.prefix[1].q),
2268 .ds (),
2269
2270 // to register interface (read)
2271 .qs (prefix_1_qs)
2272 );
2273
2274
2275 // Subregister 2 of Multireg prefix
2276 // R[prefix_2]: V(False)
2277 // Create REGWEN-gated WE signal
2278 logic prefix_2_gated_we;
2279 1/1 assign prefix_2_gated_we = prefix_2_we & cfg_regwen_qs;
Tests: T1 T2 T3
2280 prim_subreg #(
2281 .DW (32),
2282 .SwAccess(prim_subreg_pkg::SwAccessRW),
2283 .RESVAL (32'h0),
2284 .Mubi (1'b0)
2285 ) u_prefix_2 (
2286 .clk_i (clk_i),
2287 .rst_ni (rst_ni),
2288
2289 // from register interface
2290 .we (prefix_2_gated_we),
2291 .wd (prefix_2_wd),
2292
2293 // from internal hardware
2294 .de (1'b0),
2295 .d ('0),
2296
2297 // to internal hardware
2298 .qe (),
2299 .q (reg2hw.prefix[2].q),
2300 .ds (),
2301
2302 // to register interface (read)
2303 .qs (prefix_2_qs)
2304 );
2305
2306
2307 // Subregister 3 of Multireg prefix
2308 // R[prefix_3]: V(False)
2309 // Create REGWEN-gated WE signal
2310 logic prefix_3_gated_we;
2311 1/1 assign prefix_3_gated_we = prefix_3_we & cfg_regwen_qs;
Tests: T1 T2 T3
2312 prim_subreg #(
2313 .DW (32),
2314 .SwAccess(prim_subreg_pkg::SwAccessRW),
2315 .RESVAL (32'h0),
2316 .Mubi (1'b0)
2317 ) u_prefix_3 (
2318 .clk_i (clk_i),
2319 .rst_ni (rst_ni),
2320
2321 // from register interface
2322 .we (prefix_3_gated_we),
2323 .wd (prefix_3_wd),
2324
2325 // from internal hardware
2326 .de (1'b0),
2327 .d ('0),
2328
2329 // to internal hardware
2330 .qe (),
2331 .q (reg2hw.prefix[3].q),
2332 .ds (),
2333
2334 // to register interface (read)
2335 .qs (prefix_3_qs)
2336 );
2337
2338
2339 // Subregister 4 of Multireg prefix
2340 // R[prefix_4]: V(False)
2341 // Create REGWEN-gated WE signal
2342 logic prefix_4_gated_we;
2343 1/1 assign prefix_4_gated_we = prefix_4_we & cfg_regwen_qs;
Tests: T1 T2 T3
2344 prim_subreg #(
2345 .DW (32),
2346 .SwAccess(prim_subreg_pkg::SwAccessRW),
2347 .RESVAL (32'h0),
2348 .Mubi (1'b0)
2349 ) u_prefix_4 (
2350 .clk_i (clk_i),
2351 .rst_ni (rst_ni),
2352
2353 // from register interface
2354 .we (prefix_4_gated_we),
2355 .wd (prefix_4_wd),
2356
2357 // from internal hardware
2358 .de (1'b0),
2359 .d ('0),
2360
2361 // to internal hardware
2362 .qe (),
2363 .q (reg2hw.prefix[4].q),
2364 .ds (),
2365
2366 // to register interface (read)
2367 .qs (prefix_4_qs)
2368 );
2369
2370
2371 // Subregister 5 of Multireg prefix
2372 // R[prefix_5]: V(False)
2373 // Create REGWEN-gated WE signal
2374 logic prefix_5_gated_we;
2375 1/1 assign prefix_5_gated_we = prefix_5_we & cfg_regwen_qs;
Tests: T1 T2 T3
2376 prim_subreg #(
2377 .DW (32),
2378 .SwAccess(prim_subreg_pkg::SwAccessRW),
2379 .RESVAL (32'h0),
2380 .Mubi (1'b0)
2381 ) u_prefix_5 (
2382 .clk_i (clk_i),
2383 .rst_ni (rst_ni),
2384
2385 // from register interface
2386 .we (prefix_5_gated_we),
2387 .wd (prefix_5_wd),
2388
2389 // from internal hardware
2390 .de (1'b0),
2391 .d ('0),
2392
2393 // to internal hardware
2394 .qe (),
2395 .q (reg2hw.prefix[5].q),
2396 .ds (),
2397
2398 // to register interface (read)
2399 .qs (prefix_5_qs)
2400 );
2401
2402
2403 // Subregister 6 of Multireg prefix
2404 // R[prefix_6]: V(False)
2405 // Create REGWEN-gated WE signal
2406 logic prefix_6_gated_we;
2407 1/1 assign prefix_6_gated_we = prefix_6_we & cfg_regwen_qs;
Tests: T1 T2 T3
2408 prim_subreg #(
2409 .DW (32),
2410 .SwAccess(prim_subreg_pkg::SwAccessRW),
2411 .RESVAL (32'h0),
2412 .Mubi (1'b0)
2413 ) u_prefix_6 (
2414 .clk_i (clk_i),
2415 .rst_ni (rst_ni),
2416
2417 // from register interface
2418 .we (prefix_6_gated_we),
2419 .wd (prefix_6_wd),
2420
2421 // from internal hardware
2422 .de (1'b0),
2423 .d ('0),
2424
2425 // to internal hardware
2426 .qe (),
2427 .q (reg2hw.prefix[6].q),
2428 .ds (),
2429
2430 // to register interface (read)
2431 .qs (prefix_6_qs)
2432 );
2433
2434
2435 // Subregister 7 of Multireg prefix
2436 // R[prefix_7]: V(False)
2437 // Create REGWEN-gated WE signal
2438 logic prefix_7_gated_we;
2439 1/1 assign prefix_7_gated_we = prefix_7_we & cfg_regwen_qs;
Tests: T1 T2 T3
2440 prim_subreg #(
2441 .DW (32),
2442 .SwAccess(prim_subreg_pkg::SwAccessRW),
2443 .RESVAL (32'h0),
2444 .Mubi (1'b0)
2445 ) u_prefix_7 (
2446 .clk_i (clk_i),
2447 .rst_ni (rst_ni),
2448
2449 // from register interface
2450 .we (prefix_7_gated_we),
2451 .wd (prefix_7_wd),
2452
2453 // from internal hardware
2454 .de (1'b0),
2455 .d ('0),
2456
2457 // to internal hardware
2458 .qe (),
2459 .q (reg2hw.prefix[7].q),
2460 .ds (),
2461
2462 // to register interface (read)
2463 .qs (prefix_7_qs)
2464 );
2465
2466
2467 // Subregister 8 of Multireg prefix
2468 // R[prefix_8]: V(False)
2469 // Create REGWEN-gated WE signal
2470 logic prefix_8_gated_we;
2471 1/1 assign prefix_8_gated_we = prefix_8_we & cfg_regwen_qs;
Tests: T1 T2 T3
2472 prim_subreg #(
2473 .DW (32),
2474 .SwAccess(prim_subreg_pkg::SwAccessRW),
2475 .RESVAL (32'h0),
2476 .Mubi (1'b0)
2477 ) u_prefix_8 (
2478 .clk_i (clk_i),
2479 .rst_ni (rst_ni),
2480
2481 // from register interface
2482 .we (prefix_8_gated_we),
2483 .wd (prefix_8_wd),
2484
2485 // from internal hardware
2486 .de (1'b0),
2487 .d ('0),
2488
2489 // to internal hardware
2490 .qe (),
2491 .q (reg2hw.prefix[8].q),
2492 .ds (),
2493
2494 // to register interface (read)
2495 .qs (prefix_8_qs)
2496 );
2497
2498
2499 // Subregister 9 of Multireg prefix
2500 // R[prefix_9]: V(False)
2501 // Create REGWEN-gated WE signal
2502 logic prefix_9_gated_we;
2503 1/1 assign prefix_9_gated_we = prefix_9_we & cfg_regwen_qs;
Tests: T1 T2 T3
2504 prim_subreg #(
2505 .DW (32),
2506 .SwAccess(prim_subreg_pkg::SwAccessRW),
2507 .RESVAL (32'h0),
2508 .Mubi (1'b0)
2509 ) u_prefix_9 (
2510 .clk_i (clk_i),
2511 .rst_ni (rst_ni),
2512
2513 // from register interface
2514 .we (prefix_9_gated_we),
2515 .wd (prefix_9_wd),
2516
2517 // from internal hardware
2518 .de (1'b0),
2519 .d ('0),
2520
2521 // to internal hardware
2522 .qe (),
2523 .q (reg2hw.prefix[9].q),
2524 .ds (),
2525
2526 // to register interface (read)
2527 .qs (prefix_9_qs)
2528 );
2529
2530
2531 // Subregister 10 of Multireg prefix
2532 // R[prefix_10]: V(False)
2533 // Create REGWEN-gated WE signal
2534 logic prefix_10_gated_we;
2535 1/1 assign prefix_10_gated_we = prefix_10_we & cfg_regwen_qs;
Tests: T1 T2 T3
2536 prim_subreg #(
2537 .DW (32),
2538 .SwAccess(prim_subreg_pkg::SwAccessRW),
2539 .RESVAL (32'h0),
2540 .Mubi (1'b0)
2541 ) u_prefix_10 (
2542 .clk_i (clk_i),
2543 .rst_ni (rst_ni),
2544
2545 // from register interface
2546 .we (prefix_10_gated_we),
2547 .wd (prefix_10_wd),
2548
2549 // from internal hardware
2550 .de (1'b0),
2551 .d ('0),
2552
2553 // to internal hardware
2554 .qe (),
2555 .q (reg2hw.prefix[10].q),
2556 .ds (),
2557
2558 // to register interface (read)
2559 .qs (prefix_10_qs)
2560 );
2561
2562
2563 // R[err_code]: V(False)
2564 prim_subreg #(
2565 .DW (32),
2566 .SwAccess(prim_subreg_pkg::SwAccessRO),
2567 .RESVAL (32'h0),
2568 .Mubi (1'b0)
2569 ) u_err_code (
2570 .clk_i (clk_i),
2571 .rst_ni (rst_ni),
2572
2573 // from register interface
2574 .we (1'b0),
2575 .wd ('0),
2576
2577 // from internal hardware
2578 .de (hw2reg.err_code.de),
2579 .d (hw2reg.err_code.d),
2580
2581 // to internal hardware
2582 .qe (),
2583 .q (),
2584 .ds (),
2585
2586 // to register interface (read)
2587 .qs (err_code_qs)
2588 );
2589
2590
2591
2592 logic [56:0] addr_hit;
2593 always_comb begin
2594 1/1 addr_hit = '0;
Tests: T1 T2 T3
2595 1/1 addr_hit[ 0] = (reg_addr == KMAC_INTR_STATE_OFFSET);
Tests: T1 T2 T3
2596 1/1 addr_hit[ 1] = (reg_addr == KMAC_INTR_ENABLE_OFFSET);
Tests: T1 T2 T3
2597 1/1 addr_hit[ 2] = (reg_addr == KMAC_INTR_TEST_OFFSET);
Tests: T1 T2 T3
2598 1/1 addr_hit[ 3] = (reg_addr == KMAC_ALERT_TEST_OFFSET);
Tests: T1 T2 T3
2599 1/1 addr_hit[ 4] = (reg_addr == KMAC_CFG_REGWEN_OFFSET);
Tests: T1 T2 T3
2600 1/1 addr_hit[ 5] = (reg_addr == KMAC_CFG_SHADOWED_OFFSET);
Tests: T1 T2 T3
2601 1/1 addr_hit[ 6] = (reg_addr == KMAC_CMD_OFFSET);
Tests: T1 T2 T3
2602 1/1 addr_hit[ 7] = (reg_addr == KMAC_STATUS_OFFSET);
Tests: T1 T2 T3
2603 1/1 addr_hit[ 8] = (reg_addr == KMAC_ENTROPY_PERIOD_OFFSET);
Tests: T1 T2 T3
2604 1/1 addr_hit[ 9] = (reg_addr == KMAC_ENTROPY_REFRESH_HASH_CNT_OFFSET);
Tests: T1 T2 T3
2605 1/1 addr_hit[10] = (reg_addr == KMAC_ENTROPY_REFRESH_THRESHOLD_SHADOWED_OFFSET);
Tests: T1 T2 T3
2606 1/1 addr_hit[11] = (reg_addr == KMAC_ENTROPY_SEED_OFFSET);
Tests: T1 T2 T3
2607 1/1 addr_hit[12] = (reg_addr == KMAC_KEY_SHARE0_0_OFFSET);
Tests: T1 T2 T3
2608 1/1 addr_hit[13] = (reg_addr == KMAC_KEY_SHARE0_1_OFFSET);
Tests: T1 T2 T3
2609 1/1 addr_hit[14] = (reg_addr == KMAC_KEY_SHARE0_2_OFFSET);
Tests: T1 T2 T3
2610 1/1 addr_hit[15] = (reg_addr == KMAC_KEY_SHARE0_3_OFFSET);
Tests: T1 T2 T3
2611 1/1 addr_hit[16] = (reg_addr == KMAC_KEY_SHARE0_4_OFFSET);
Tests: T1 T2 T3
2612 1/1 addr_hit[17] = (reg_addr == KMAC_KEY_SHARE0_5_OFFSET);
Tests: T1 T2 T3
2613 1/1 addr_hit[18] = (reg_addr == KMAC_KEY_SHARE0_6_OFFSET);
Tests: T1 T2 T3
2614 1/1 addr_hit[19] = (reg_addr == KMAC_KEY_SHARE0_7_OFFSET);
Tests: T1 T2 T3
2615 1/1 addr_hit[20] = (reg_addr == KMAC_KEY_SHARE0_8_OFFSET);
Tests: T1 T2 T3
2616 1/1 addr_hit[21] = (reg_addr == KMAC_KEY_SHARE0_9_OFFSET);
Tests: T1 T2 T3
2617 1/1 addr_hit[22] = (reg_addr == KMAC_KEY_SHARE0_10_OFFSET);
Tests: T1 T2 T3
2618 1/1 addr_hit[23] = (reg_addr == KMAC_KEY_SHARE0_11_OFFSET);
Tests: T1 T2 T3
2619 1/1 addr_hit[24] = (reg_addr == KMAC_KEY_SHARE0_12_OFFSET);
Tests: T1 T2 T3
2620 1/1 addr_hit[25] = (reg_addr == KMAC_KEY_SHARE0_13_OFFSET);
Tests: T1 T2 T3
2621 1/1 addr_hit[26] = (reg_addr == KMAC_KEY_SHARE0_14_OFFSET);
Tests: T1 T2 T3
2622 1/1 addr_hit[27] = (reg_addr == KMAC_KEY_SHARE0_15_OFFSET);
Tests: T1 T2 T3
2623 1/1 addr_hit[28] = (reg_addr == KMAC_KEY_SHARE1_0_OFFSET);
Tests: T1 T2 T3
2624 1/1 addr_hit[29] = (reg_addr == KMAC_KEY_SHARE1_1_OFFSET);
Tests: T1 T2 T3
2625 1/1 addr_hit[30] = (reg_addr == KMAC_KEY_SHARE1_2_OFFSET);
Tests: T1 T2 T3
2626 1/1 addr_hit[31] = (reg_addr == KMAC_KEY_SHARE1_3_OFFSET);
Tests: T1 T2 T3
2627 1/1 addr_hit[32] = (reg_addr == KMAC_KEY_SHARE1_4_OFFSET);
Tests: T1 T2 T3
2628 1/1 addr_hit[33] = (reg_addr == KMAC_KEY_SHARE1_5_OFFSET);
Tests: T1 T2 T3
2629 1/1 addr_hit[34] = (reg_addr == KMAC_KEY_SHARE1_6_OFFSET);
Tests: T1 T2 T3
2630 1/1 addr_hit[35] = (reg_addr == KMAC_KEY_SHARE1_7_OFFSET);
Tests: T1 T2 T3
2631 1/1 addr_hit[36] = (reg_addr == KMAC_KEY_SHARE1_8_OFFSET);
Tests: T1 T2 T3
2632 1/1 addr_hit[37] = (reg_addr == KMAC_KEY_SHARE1_9_OFFSET);
Tests: T1 T2 T3
2633 1/1 addr_hit[38] = (reg_addr == KMAC_KEY_SHARE1_10_OFFSET);
Tests: T1 T2 T3
2634 1/1 addr_hit[39] = (reg_addr == KMAC_KEY_SHARE1_11_OFFSET);
Tests: T1 T2 T3
2635 1/1 addr_hit[40] = (reg_addr == KMAC_KEY_SHARE1_12_OFFSET);
Tests: T1 T2 T3
2636 1/1 addr_hit[41] = (reg_addr == KMAC_KEY_SHARE1_13_OFFSET);
Tests: T1 T2 T3
2637 1/1 addr_hit[42] = (reg_addr == KMAC_KEY_SHARE1_14_OFFSET);
Tests: T1 T2 T3
2638 1/1 addr_hit[43] = (reg_addr == KMAC_KEY_SHARE1_15_OFFSET);
Tests: T1 T2 T3
2639 1/1 addr_hit[44] = (reg_addr == KMAC_KEY_LEN_OFFSET);
Tests: T1 T2 T3
2640 1/1 addr_hit[45] = (reg_addr == KMAC_PREFIX_0_OFFSET);
Tests: T1 T2 T3
2641 1/1 addr_hit[46] = (reg_addr == KMAC_PREFIX_1_OFFSET);
Tests: T1 T2 T3
2642 1/1 addr_hit[47] = (reg_addr == KMAC_PREFIX_2_OFFSET);
Tests: T1 T2 T3
2643 1/1 addr_hit[48] = (reg_addr == KMAC_PREFIX_3_OFFSET);
Tests: T1 T2 T3
2644 1/1 addr_hit[49] = (reg_addr == KMAC_PREFIX_4_OFFSET);
Tests: T1 T2 T3
2645 1/1 addr_hit[50] = (reg_addr == KMAC_PREFIX_5_OFFSET);
Tests: T1 T2 T3
2646 1/1 addr_hit[51] = (reg_addr == KMAC_PREFIX_6_OFFSET);
Tests: T1 T2 T3
2647 1/1 addr_hit[52] = (reg_addr == KMAC_PREFIX_7_OFFSET);
Tests: T1 T2 T3
2648 1/1 addr_hit[53] = (reg_addr == KMAC_PREFIX_8_OFFSET);
Tests: T1 T2 T3
2649 1/1 addr_hit[54] = (reg_addr == KMAC_PREFIX_9_OFFSET);
Tests: T1 T2 T3
2650 1/1 addr_hit[55] = (reg_addr == KMAC_PREFIX_10_OFFSET);
Tests: T1 T2 T3
2651 1/1 addr_hit[56] = (reg_addr == KMAC_ERR_CODE_OFFSET);
Tests: T1 T2 T3
2652 end
2653
2654 1/1 assign addrmiss = (reg_re || reg_we) ? ~|addr_hit : 1'b0 ;
Tests: T1 T2 T3
2655
2656 // Check sub-word write is permitted
2657 always_comb begin
2658 1/1 wr_err = (reg_we &
Tests: T1 T2 T3
2659 ((addr_hit[ 0] & (|(KMAC_PERMIT[ 0] & ~reg_be))) |
2660 (addr_hit[ 1] & (|(KMAC_PERMIT[ 1] & ~reg_be))) |
2661 (addr_hit[ 2] & (|(KMAC_PERMIT[ 2] & ~reg_be))) |
2662 (addr_hit[ 3] & (|(KMAC_PERMIT[ 3] & ~reg_be))) |
2663 (addr_hit[ 4] & (|(KMAC_PERMIT[ 4] & ~reg_be))) |
2664 (addr_hit[ 5] & (|(KMAC_PERMIT[ 5] & ~reg_be))) |
2665 (addr_hit[ 6] & (|(KMAC_PERMIT[ 6] & ~reg_be))) |
2666 (addr_hit[ 7] & (|(KMAC_PERMIT[ 7] & ~reg_be))) |
2667 (addr_hit[ 8] & (|(KMAC_PERMIT[ 8] & ~reg_be))) |
2668 (addr_hit[ 9] & (|(KMAC_PERMIT[ 9] & ~reg_be))) |
2669 (addr_hit[10] & (|(KMAC_PERMIT[10] & ~reg_be))) |
2670 (addr_hit[11] & (|(KMAC_PERMIT[11] & ~reg_be))) |
2671 (addr_hit[12] & (|(KMAC_PERMIT[12] & ~reg_be))) |
2672 (addr_hit[13] & (|(KMAC_PERMIT[13] & ~reg_be))) |
2673 (addr_hit[14] & (|(KMAC_PERMIT[14] & ~reg_be))) |
2674 (addr_hit[15] & (|(KMAC_PERMIT[15] & ~reg_be))) |
2675 (addr_hit[16] & (|(KMAC_PERMIT[16] & ~reg_be))) |
2676 (addr_hit[17] & (|(KMAC_PERMIT[17] & ~reg_be))) |
2677 (addr_hit[18] & (|(KMAC_PERMIT[18] & ~reg_be))) |
2678 (addr_hit[19] & (|(KMAC_PERMIT[19] & ~reg_be))) |
2679 (addr_hit[20] & (|(KMAC_PERMIT[20] & ~reg_be))) |
2680 (addr_hit[21] & (|(KMAC_PERMIT[21] & ~reg_be))) |
2681 (addr_hit[22] & (|(KMAC_PERMIT[22] & ~reg_be))) |
2682 (addr_hit[23] & (|(KMAC_PERMIT[23] & ~reg_be))) |
2683 (addr_hit[24] & (|(KMAC_PERMIT[24] & ~reg_be))) |
2684 (addr_hit[25] & (|(KMAC_PERMIT[25] & ~reg_be))) |
2685 (addr_hit[26] & (|(KMAC_PERMIT[26] & ~reg_be))) |
2686 (addr_hit[27] & (|(KMAC_PERMIT[27] & ~reg_be))) |
2687 (addr_hit[28] & (|(KMAC_PERMIT[28] & ~reg_be))) |
2688 (addr_hit[29] & (|(KMAC_PERMIT[29] & ~reg_be))) |
2689 (addr_hit[30] & (|(KMAC_PERMIT[30] & ~reg_be))) |
2690 (addr_hit[31] & (|(KMAC_PERMIT[31] & ~reg_be))) |
2691 (addr_hit[32] & (|(KMAC_PERMIT[32] & ~reg_be))) |
2692 (addr_hit[33] & (|(KMAC_PERMIT[33] & ~reg_be))) |
2693 (addr_hit[34] & (|(KMAC_PERMIT[34] & ~reg_be))) |
2694 (addr_hit[35] & (|(KMAC_PERMIT[35] & ~reg_be))) |
2695 (addr_hit[36] & (|(KMAC_PERMIT[36] & ~reg_be))) |
2696 (addr_hit[37] & (|(KMAC_PERMIT[37] & ~reg_be))) |
2697 (addr_hit[38] & (|(KMAC_PERMIT[38] & ~reg_be))) |
2698 (addr_hit[39] & (|(KMAC_PERMIT[39] & ~reg_be))) |
2699 (addr_hit[40] & (|(KMAC_PERMIT[40] & ~reg_be))) |
2700 (addr_hit[41] & (|(KMAC_PERMIT[41] & ~reg_be))) |
2701 (addr_hit[42] & (|(KMAC_PERMIT[42] & ~reg_be))) |
2702 (addr_hit[43] & (|(KMAC_PERMIT[43] & ~reg_be))) |
2703 (addr_hit[44] & (|(KMAC_PERMIT[44] & ~reg_be))) |
2704 (addr_hit[45] & (|(KMAC_PERMIT[45] & ~reg_be))) |
2705 (addr_hit[46] & (|(KMAC_PERMIT[46] & ~reg_be))) |
2706 (addr_hit[47] & (|(KMAC_PERMIT[47] & ~reg_be))) |
2707 (addr_hit[48] & (|(KMAC_PERMIT[48] & ~reg_be))) |
2708 (addr_hit[49] & (|(KMAC_PERMIT[49] & ~reg_be))) |
2709 (addr_hit[50] & (|(KMAC_PERMIT[50] & ~reg_be))) |
2710 (addr_hit[51] & (|(KMAC_PERMIT[51] & ~reg_be))) |
2711 (addr_hit[52] & (|(KMAC_PERMIT[52] & ~reg_be))) |
2712 (addr_hit[53] & (|(KMAC_PERMIT[53] & ~reg_be))) |
2713 (addr_hit[54] & (|(KMAC_PERMIT[54] & ~reg_be))) |
2714 (addr_hit[55] & (|(KMAC_PERMIT[55] & ~reg_be))) |
2715 (addr_hit[56] & (|(KMAC_PERMIT[56] & ~reg_be)))));
2716 end
2717
2718 // Generate write-enables
2719 1/1 assign intr_state_we = addr_hit[0] & reg_we & !reg_error;
Tests: T1 T2 T3
2720
2721 1/1 assign intr_state_kmac_done_wd = reg_wdata[0];
Tests: T1 T2 T3
2722
2723 1/1 assign intr_state_kmac_err_wd = reg_wdata[2];
Tests: T1 T2 T3
2724 1/1 assign intr_enable_we = addr_hit[1] & reg_we & !reg_error;
Tests: T1 T2 T3
2725
2726 1/1 assign intr_enable_kmac_done_wd = reg_wdata[0];
Tests: T1 T2 T3
2727
2728 1/1 assign intr_enable_fifo_empty_wd = reg_wdata[1];
Tests: T1 T2 T3
2729
2730 1/1 assign intr_enable_kmac_err_wd = reg_wdata[2];
Tests: T1 T2 T3
2731 1/1 assign intr_test_we = addr_hit[2] & reg_we & !reg_error;
Tests: T1 T2 T3
2732
2733 1/1 assign intr_test_kmac_done_wd = reg_wdata[0];
Tests: T1 T2 T3
2734
2735 1/1 assign intr_test_fifo_empty_wd = reg_wdata[1];
Tests: T1 T2 T3
2736
2737 1/1 assign intr_test_kmac_err_wd = reg_wdata[2];
Tests: T1 T2 T3
2738 1/1 assign alert_test_we = addr_hit[3] & reg_we & !reg_error;
Tests: T1 T2 T3
2739
2740 1/1 assign alert_test_recov_operation_err_wd = reg_wdata[0];
Tests: T1 T2 T3
2741
2742 1/1 assign alert_test_fatal_fault_err_wd = reg_wdata[1];
Tests: T1 T2 T3
2743 1/1 assign cfg_regwen_re = addr_hit[4] & reg_re & !reg_error;
Tests: T1 T2 T3
2744 1/1 assign cfg_shadowed_re = addr_hit[5] & reg_re & !reg_error;
Tests: T1 T2 T3
2745 1/1 assign cfg_shadowed_we = addr_hit[5] & reg_we & !reg_error;
Tests: T1 T2 T3
2746
2747 1/1 assign cfg_shadowed_kmac_en_wd = reg_wdata[0];
Tests: T1 T2 T3
2748
2749 1/1 assign cfg_shadowed_kstrength_wd = reg_wdata[3:1];
Tests: T1 T2 T3
2750
2751 1/1 assign cfg_shadowed_mode_wd = reg_wdata[5:4];
Tests: T1 T2 T3
2752
2753 1/1 assign cfg_shadowed_msg_endianness_wd = reg_wdata[8];
Tests: T1 T2 T3
2754
2755 1/1 assign cfg_shadowed_state_endianness_wd = reg_wdata[9];
Tests: T1 T2 T3
2756
2757 1/1 assign cfg_shadowed_sideload_wd = reg_wdata[12];
Tests: T1 T2 T3
2758
2759 1/1 assign cfg_shadowed_entropy_mode_wd = reg_wdata[17:16];
Tests: T1 T2 T3
2760
2761 1/1 assign cfg_shadowed_entropy_fast_process_wd = reg_wdata[19];
Tests: T1 T2 T3
2762
2763 1/1 assign cfg_shadowed_msg_mask_wd = reg_wdata[20];
Tests: T1 T2 T3
2764
2765 1/1 assign cfg_shadowed_entropy_ready_wd = reg_wdata[24];
Tests: T1 T2 T3
2766
2767 1/1 assign cfg_shadowed_en_unsupported_modestrength_wd = reg_wdata[26];
Tests: T1 T2 T3
2768 1/1 assign cmd_we = addr_hit[6] & reg_we & !reg_error;
Tests: T1 T2 T3
2769
2770 1/1 assign cmd_cmd_wd = reg_wdata[5:0];
Tests: T1 T2 T3
2771
2772 1/1 assign cmd_entropy_req_wd = reg_wdata[8];
Tests: T1 T2 T3
2773
2774 1/1 assign cmd_hash_cnt_clr_wd = reg_wdata[9];
Tests: T1 T2 T3
2775
2776 1/1 assign cmd_err_processed_wd = reg_wdata[10];
Tests: T1 T2 T3
2777 1/1 assign status_re = addr_hit[7] & reg_re & !reg_error;
Tests: T1 T2 T3
2778 1/1 assign entropy_period_we = addr_hit[8] & reg_we & !reg_error;
Tests: T1 T2 T3
2779
2780 1/1 assign entropy_period_prescaler_wd = reg_wdata[9:0];
Tests: T1 T2 T3
2781
2782 1/1 assign entropy_period_wait_timer_wd = reg_wdata[31:16];
Tests: T1 T2 T3
2783 1/1 assign entropy_refresh_threshold_shadowed_re = addr_hit[10] & reg_re & !reg_error;
Tests: T1 T2 T3
2784 1/1 assign entropy_refresh_threshold_shadowed_we = addr_hit[10] & reg_we & !reg_error;
Tests: T1 T2 T3
2785
2786 1/1 assign entropy_refresh_threshold_shadowed_wd = reg_wdata[9:0];
Tests: T1 T2 T3
2787 1/1 assign entropy_seed_we = addr_hit[11] & reg_we & !reg_error;
Tests: T1 T2 T3
2788
2789 1/1 assign entropy_seed_wd = reg_wdata[31:0];
Tests: T1 T2 T3
2790 1/1 assign key_share0_0_we = addr_hit[12] & reg_we & !reg_error;
Tests: T1 T2 T3
2791
2792 1/1 assign key_share0_0_wd = reg_wdata[31:0];
Tests: T1 T2 T3
2793 1/1 assign key_share0_1_we = addr_hit[13] & reg_we & !reg_error;
Tests: T1 T2 T3
2794
2795 1/1 assign key_share0_1_wd = reg_wdata[31:0];
Tests: T1 T2 T3
2796 1/1 assign key_share0_2_we = addr_hit[14] & reg_we & !reg_error;
Tests: T1 T2 T3
2797
2798 1/1 assign key_share0_2_wd = reg_wdata[31:0];
Tests: T1 T2 T3
2799 1/1 assign key_share0_3_we = addr_hit[15] & reg_we & !reg_error;
Tests: T1 T2 T3
2800
2801 1/1 assign key_share0_3_wd = reg_wdata[31:0];
Tests: T1 T2 T3
2802 1/1 assign key_share0_4_we = addr_hit[16] & reg_we & !reg_error;
Tests: T1 T2 T3
2803
2804 1/1 assign key_share0_4_wd = reg_wdata[31:0];
Tests: T1 T2 T3
2805 1/1 assign key_share0_5_we = addr_hit[17] & reg_we & !reg_error;
Tests: T1 T2 T3
2806
2807 1/1 assign key_share0_5_wd = reg_wdata[31:0];
Tests: T1 T2 T3
2808 1/1 assign key_share0_6_we = addr_hit[18] & reg_we & !reg_error;
Tests: T1 T2 T3
2809
2810 1/1 assign key_share0_6_wd = reg_wdata[31:0];
Tests: T1 T2 T3
2811 1/1 assign key_share0_7_we = addr_hit[19] & reg_we & !reg_error;
Tests: T1 T2 T3
2812
2813 1/1 assign key_share0_7_wd = reg_wdata[31:0];
Tests: T1 T2 T3
2814 1/1 assign key_share0_8_we = addr_hit[20] & reg_we & !reg_error;
Tests: T1 T2 T3
2815
2816 1/1 assign key_share0_8_wd = reg_wdata[31:0];
Tests: T1 T2 T3
2817 1/1 assign key_share0_9_we = addr_hit[21] & reg_we & !reg_error;
Tests: T1 T2 T3
2818
2819 1/1 assign key_share0_9_wd = reg_wdata[31:0];
Tests: T1 T2 T3
2820 1/1 assign key_share0_10_we = addr_hit[22] & reg_we & !reg_error;
Tests: T1 T2 T3
2821
2822 1/1 assign key_share0_10_wd = reg_wdata[31:0];
Tests: T1 T2 T3
2823 1/1 assign key_share0_11_we = addr_hit[23] & reg_we & !reg_error;
Tests: T1 T2 T3
2824
2825 1/1 assign key_share0_11_wd = reg_wdata[31:0];
Tests: T1 T2 T3
2826 1/1 assign key_share0_12_we = addr_hit[24] & reg_we & !reg_error;
Tests: T1 T2 T3
2827
2828 1/1 assign key_share0_12_wd = reg_wdata[31:0];
Tests: T1 T2 T3
2829 1/1 assign key_share0_13_we = addr_hit[25] & reg_we & !reg_error;
Tests: T1 T2 T3
2830
2831 1/1 assign key_share0_13_wd = reg_wdata[31:0];
Tests: T1 T2 T3
2832 1/1 assign key_share0_14_we = addr_hit[26] & reg_we & !reg_error;
Tests: T1 T2 T3
2833
2834 1/1 assign key_share0_14_wd = reg_wdata[31:0];
Tests: T1 T2 T3
2835 1/1 assign key_share0_15_we = addr_hit[27] & reg_we & !reg_error;
Tests: T1 T2 T3
2836
2837 1/1 assign key_share0_15_wd = reg_wdata[31:0];
Tests: T1 T2 T3
2838 1/1 assign key_share1_0_we = addr_hit[28] & reg_we & !reg_error;
Tests: T1 T2 T3
2839
2840 1/1 assign key_share1_0_wd = reg_wdata[31:0];
Tests: T1 T2 T3
2841 1/1 assign key_share1_1_we = addr_hit[29] & reg_we & !reg_error;
Tests: T1 T2 T3
2842
2843 1/1 assign key_share1_1_wd = reg_wdata[31:0];
Tests: T1 T2 T3
2844 1/1 assign key_share1_2_we = addr_hit[30] & reg_we & !reg_error;
Tests: T1 T2 T3
2845
2846 1/1 assign key_share1_2_wd = reg_wdata[31:0];
Tests: T1 T2 T3
2847 1/1 assign key_share1_3_we = addr_hit[31] & reg_we & !reg_error;
Tests: T1 T2 T3
2848
2849 1/1 assign key_share1_3_wd = reg_wdata[31:0];
Tests: T1 T2 T3
2850 1/1 assign key_share1_4_we = addr_hit[32] & reg_we & !reg_error;
Tests: T1 T2 T3
2851
2852 1/1 assign key_share1_4_wd = reg_wdata[31:0];
Tests: T1 T2 T3
2853 1/1 assign key_share1_5_we = addr_hit[33] & reg_we & !reg_error;
Tests: T1 T2 T3
2854
2855 1/1 assign key_share1_5_wd = reg_wdata[31:0];
Tests: T1 T2 T3
2856 1/1 assign key_share1_6_we = addr_hit[34] & reg_we & !reg_error;
Tests: T1 T2 T3
2857
2858 1/1 assign key_share1_6_wd = reg_wdata[31:0];
Tests: T1 T2 T3
2859 1/1 assign key_share1_7_we = addr_hit[35] & reg_we & !reg_error;
Tests: T1 T2 T3
2860
2861 1/1 assign key_share1_7_wd = reg_wdata[31:0];
Tests: T1 T2 T3
2862 1/1 assign key_share1_8_we = addr_hit[36] & reg_we & !reg_error;
Tests: T1 T2 T3
2863
2864 1/1 assign key_share1_8_wd = reg_wdata[31:0];
Tests: T1 T2 T3
2865 1/1 assign key_share1_9_we = addr_hit[37] & reg_we & !reg_error;
Tests: T1 T2 T3
2866
2867 1/1 assign key_share1_9_wd = reg_wdata[31:0];
Tests: T1 T2 T3
2868 1/1 assign key_share1_10_we = addr_hit[38] & reg_we & !reg_error;
Tests: T1 T2 T3
2869
2870 1/1 assign key_share1_10_wd = reg_wdata[31:0];
Tests: T1 T2 T3
2871 1/1 assign key_share1_11_we = addr_hit[39] & reg_we & !reg_error;
Tests: T1 T2 T3
2872
2873 1/1 assign key_share1_11_wd = reg_wdata[31:0];
Tests: T1 T2 T3
2874 1/1 assign key_share1_12_we = addr_hit[40] & reg_we & !reg_error;
Tests: T1 T2 T3
2875
2876 1/1 assign key_share1_12_wd = reg_wdata[31:0];
Tests: T1 T2 T3
2877 1/1 assign key_share1_13_we = addr_hit[41] & reg_we & !reg_error;
Tests: T1 T2 T3
2878
2879 1/1 assign key_share1_13_wd = reg_wdata[31:0];
Tests: T1 T2 T3
2880 1/1 assign key_share1_14_we = addr_hit[42] & reg_we & !reg_error;
Tests: T1 T2 T3
2881
2882 1/1 assign key_share1_14_wd = reg_wdata[31:0];
Tests: T1 T2 T3
2883 1/1 assign key_share1_15_we = addr_hit[43] & reg_we & !reg_error;
Tests: T1 T2 T3
2884
2885 1/1 assign key_share1_15_wd = reg_wdata[31:0];
Tests: T1 T2 T3
2886 1/1 assign key_len_we = addr_hit[44] & reg_we & !reg_error;
Tests: T1 T2 T3
2887
2888 1/1 assign key_len_wd = reg_wdata[2:0];
Tests: T1 T2 T3
2889 1/1 assign prefix_0_we = addr_hit[45] & reg_we & !reg_error;
Tests: T1 T2 T3
2890
2891 1/1 assign prefix_0_wd = reg_wdata[31:0];
Tests: T1 T2 T3
2892 1/1 assign prefix_1_we = addr_hit[46] & reg_we & !reg_error;
Tests: T1 T2 T3
2893
2894 1/1 assign prefix_1_wd = reg_wdata[31:0];
Tests: T1 T2 T3
2895 1/1 assign prefix_2_we = addr_hit[47] & reg_we & !reg_error;
Tests: T1 T2 T3
2896
2897 1/1 assign prefix_2_wd = reg_wdata[31:0];
Tests: T1 T2 T3
2898 1/1 assign prefix_3_we = addr_hit[48] & reg_we & !reg_error;
Tests: T1 T2 T3
2899
2900 1/1 assign prefix_3_wd = reg_wdata[31:0];
Tests: T1 T2 T3
2901 1/1 assign prefix_4_we = addr_hit[49] & reg_we & !reg_error;
Tests: T1 T2 T3
2902
2903 1/1 assign prefix_4_wd = reg_wdata[31:0];
Tests: T1 T2 T3
2904 1/1 assign prefix_5_we = addr_hit[50] & reg_we & !reg_error;
Tests: T1 T2 T3
2905
2906 1/1 assign prefix_5_wd = reg_wdata[31:0];
Tests: T1 T2 T3
2907 1/1 assign prefix_6_we = addr_hit[51] & reg_we & !reg_error;
Tests: T1 T2 T3
2908
2909 1/1 assign prefix_6_wd = reg_wdata[31:0];
Tests: T1 T2 T3
2910 1/1 assign prefix_7_we = addr_hit[52] & reg_we & !reg_error;
Tests: T1 T2 T3
2911
2912 1/1 assign prefix_7_wd = reg_wdata[31:0];
Tests: T1 T2 T3
2913 1/1 assign prefix_8_we = addr_hit[53] & reg_we & !reg_error;
Tests: T1 T2 T3
2914
2915 1/1 assign prefix_8_wd = reg_wdata[31:0];
Tests: T1 T2 T3
2916 1/1 assign prefix_9_we = addr_hit[54] & reg_we & !reg_error;
Tests: T1 T2 T3
2917
2918 1/1 assign prefix_9_wd = reg_wdata[31:0];
Tests: T1 T2 T3
2919 1/1 assign prefix_10_we = addr_hit[55] & reg_we & !reg_error;
Tests: T1 T2 T3
2920
2921 1/1 assign prefix_10_wd = reg_wdata[31:0];
Tests: T1 T2 T3
2922
2923 // Assign write-enables to checker logic vector.
2924 always_comb begin
2925 1/1 reg_we_check = '0;
Tests: T1 T2 T3
2926 1/1 reg_we_check[0] = intr_state_we;
Tests: T1 T2 T3
2927 1/1 reg_we_check[1] = intr_enable_we;
Tests: T1 T2 T3
2928 1/1 reg_we_check[2] = intr_test_we;
Tests: T1 T2 T3
2929 1/1 reg_we_check[3] = alert_test_we;
Tests: T1 T2 T3
2930 1/1 reg_we_check[4] = 1'b0;
Tests: T1 T2 T3
2931 1/1 reg_we_check[5] = cfg_shadowed_gated_we;
Tests: T1 T2 T3
2932 1/1 reg_we_check[6] = cmd_we;
Tests: T1 T2 T3
2933 1/1 reg_we_check[7] = 1'b0;
Tests: T1 T2 T3
2934 1/1 reg_we_check[8] = entropy_period_gated_we;
Tests: T1 T2 T3
2935 1/1 reg_we_check[9] = 1'b0;
Tests: T1 T2 T3
2936 1/1 reg_we_check[10] = entropy_refresh_threshold_shadowed_gated_we;
Tests: T1 T2 T3
2937 1/1 reg_we_check[11] = entropy_seed_we;
Tests: T1 T2 T3
2938 1/1 reg_we_check[12] = key_share0_0_gated_we;
Tests: T1 T2 T3
2939 1/1 reg_we_check[13] = key_share0_1_gated_we;
Tests: T1 T2 T3
2940 1/1 reg_we_check[14] = key_share0_2_gated_we;
Tests: T1 T2 T3
2941 1/1 reg_we_check[15] = key_share0_3_gated_we;
Tests: T1 T2 T3
2942 1/1 reg_we_check[16] = key_share0_4_gated_we;
Tests: T1 T2 T3
2943 1/1 reg_we_check[17] = key_share0_5_gated_we;
Tests: T1 T2 T3
2944 1/1 reg_we_check[18] = key_share0_6_gated_we;
Tests: T1 T2 T3
2945 1/1 reg_we_check[19] = key_share0_7_gated_we;
Tests: T1 T2 T3
2946 1/1 reg_we_check[20] = key_share0_8_gated_we;
Tests: T1 T2 T3
2947 1/1 reg_we_check[21] = key_share0_9_gated_we;
Tests: T1 T2 T3
2948 1/1 reg_we_check[22] = key_share0_10_gated_we;
Tests: T1 T2 T3
2949 1/1 reg_we_check[23] = key_share0_11_gated_we;
Tests: T1 T2 T3
2950 1/1 reg_we_check[24] = key_share0_12_gated_we;
Tests: T1 T2 T3
2951 1/1 reg_we_check[25] = key_share0_13_gated_we;
Tests: T1 T2 T3
2952 1/1 reg_we_check[26] = key_share0_14_gated_we;
Tests: T1 T2 T3
2953 1/1 reg_we_check[27] = key_share0_15_gated_we;
Tests: T1 T2 T3
2954 1/1 reg_we_check[28] = key_share1_0_gated_we;
Tests: T1 T2 T3
2955 1/1 reg_we_check[29] = key_share1_1_gated_we;
Tests: T1 T2 T3
2956 1/1 reg_we_check[30] = key_share1_2_gated_we;
Tests: T1 T2 T3
2957 1/1 reg_we_check[31] = key_share1_3_gated_we;
Tests: T1 T2 T3
2958 1/1 reg_we_check[32] = key_share1_4_gated_we;
Tests: T1 T2 T3
2959 1/1 reg_we_check[33] = key_share1_5_gated_we;
Tests: T1 T2 T3
2960 1/1 reg_we_check[34] = key_share1_6_gated_we;
Tests: T1 T2 T3
2961 1/1 reg_we_check[35] = key_share1_7_gated_we;
Tests: T1 T2 T3
2962 1/1 reg_we_check[36] = key_share1_8_gated_we;
Tests: T1 T2 T3
2963 1/1 reg_we_check[37] = key_share1_9_gated_we;
Tests: T1 T2 T3
2964 1/1 reg_we_check[38] = key_share1_10_gated_we;
Tests: T1 T2 T3
2965 1/1 reg_we_check[39] = key_share1_11_gated_we;
Tests: T1 T2 T3
2966 1/1 reg_we_check[40] = key_share1_12_gated_we;
Tests: T1 T2 T3
2967 1/1 reg_we_check[41] = key_share1_13_gated_we;
Tests: T1 T2 T3
2968 1/1 reg_we_check[42] = key_share1_14_gated_we;
Tests: T1 T2 T3
2969 1/1 reg_we_check[43] = key_share1_15_gated_we;
Tests: T1 T2 T3
2970 1/1 reg_we_check[44] = key_len_gated_we;
Tests: T1 T2 T3
2971 1/1 reg_we_check[45] = prefix_0_gated_we;
Tests: T1 T2 T3
2972 1/1 reg_we_check[46] = prefix_1_gated_we;
Tests: T1 T2 T3
2973 1/1 reg_we_check[47] = prefix_2_gated_we;
Tests: T1 T2 T3
2974 1/1 reg_we_check[48] = prefix_3_gated_we;
Tests: T1 T2 T3
2975 1/1 reg_we_check[49] = prefix_4_gated_we;
Tests: T1 T2 T3
2976 1/1 reg_we_check[50] = prefix_5_gated_we;
Tests: T1 T2 T3
2977 1/1 reg_we_check[51] = prefix_6_gated_we;
Tests: T1 T2 T3
2978 1/1 reg_we_check[52] = prefix_7_gated_we;
Tests: T1 T2 T3
2979 1/1 reg_we_check[53] = prefix_8_gated_we;
Tests: T1 T2 T3
2980 1/1 reg_we_check[54] = prefix_9_gated_we;
Tests: T1 T2 T3
2981 1/1 reg_we_check[55] = prefix_10_gated_we;
Tests: T1 T2 T3
2982 1/1 reg_we_check[56] = 1'b0;
Tests: T1 T2 T3
2983 end
2984
2985 // Read data return
2986 always_comb begin
2987 1/1 reg_rdata_next = '0;
Tests: T1 T2 T3
2988 1/1 unique case (1'b1)
Tests: T1 T2 T3
2989 addr_hit[0]: begin
2990 1/1 reg_rdata_next[0] = intr_state_kmac_done_qs;
Tests: T1 T2 T3
2991 1/1 reg_rdata_next[1] = intr_state_fifo_empty_qs;
Tests: T1 T2 T3
2992 1/1 reg_rdata_next[2] = intr_state_kmac_err_qs;
Tests: T1 T2 T3
2993 end
2994
2995 addr_hit[1]: begin
2996 1/1 reg_rdata_next[0] = intr_enable_kmac_done_qs;
Tests: T1 T2 T3
2997 1/1 reg_rdata_next[1] = intr_enable_fifo_empty_qs;
Tests: T1 T2 T3
2998 1/1 reg_rdata_next[2] = intr_enable_kmac_err_qs;
Tests: T1 T2 T3
2999 end
3000
3001 addr_hit[2]: begin
3002 1/1 reg_rdata_next[0] = '0;
Tests: T1 T2 T3
3003 1/1 reg_rdata_next[1] = '0;
Tests: T1 T2 T3
3004 1/1 reg_rdata_next[2] = '0;
Tests: T1 T2 T3
3005 end
3006
3007 addr_hit[3]: begin
3008 1/1 reg_rdata_next[0] = '0;
Tests: T1 T2 T3
3009 1/1 reg_rdata_next[1] = '0;
Tests: T1 T2 T3
3010 end
3011
3012 addr_hit[4]: begin
3013 1/1 reg_rdata_next[0] = cfg_regwen_qs;
Tests: T1 T2 T3
3014 end
3015
3016 addr_hit[5]: begin
3017 1/1 reg_rdata_next[0] = cfg_shadowed_kmac_en_qs;
Tests: T1 T2 T3
3018 1/1 reg_rdata_next[3:1] = cfg_shadowed_kstrength_qs;
Tests: T1 T2 T3
3019 1/1 reg_rdata_next[5:4] = cfg_shadowed_mode_qs;
Tests: T1 T2 T3
3020 1/1 reg_rdata_next[8] = cfg_shadowed_msg_endianness_qs;
Tests: T1 T2 T3
3021 1/1 reg_rdata_next[9] = cfg_shadowed_state_endianness_qs;
Tests: T1 T2 T3
3022 1/1 reg_rdata_next[12] = cfg_shadowed_sideload_qs;
Tests: T1 T2 T3
3023 1/1 reg_rdata_next[17:16] = cfg_shadowed_entropy_mode_qs;
Tests: T1 T2 T3
3024 1/1 reg_rdata_next[19] = cfg_shadowed_entropy_fast_process_qs;
Tests: T1 T2 T3
3025 1/1 reg_rdata_next[20] = cfg_shadowed_msg_mask_qs;
Tests: T1 T2 T3
3026 1/1 reg_rdata_next[24] = cfg_shadowed_entropy_ready_qs;
Tests: T1 T2 T3
3027 1/1 reg_rdata_next[26] = cfg_shadowed_en_unsupported_modestrength_qs;
Tests: T1 T2 T3
3028 end
3029
3030 addr_hit[6]: begin
3031 1/1 reg_rdata_next[5:0] = '0;
Tests: T1 T2 T3
3032 1/1 reg_rdata_next[8] = '0;
Tests: T1 T2 T3
3033 1/1 reg_rdata_next[9] = '0;
Tests: T1 T2 T3
3034 1/1 reg_rdata_next[10] = '0;
Tests: T1 T2 T3
3035 end
3036
3037 addr_hit[7]: begin
3038 1/1 reg_rdata_next[0] = status_sha3_idle_qs;
Tests: T1 T2 T3
3039 1/1 reg_rdata_next[1] = status_sha3_absorb_qs;
Tests: T1 T2 T3
3040 1/1 reg_rdata_next[2] = status_sha3_squeeze_qs;
Tests: T1 T2 T3
3041 1/1 reg_rdata_next[12:8] = status_fifo_depth_qs;
Tests: T1 T2 T3
3042 1/1 reg_rdata_next[14] = status_fifo_empty_qs;
Tests: T1 T2 T3
3043 1/1 reg_rdata_next[15] = status_fifo_full_qs;
Tests: T1 T2 T3
3044 1/1 reg_rdata_next[16] = status_alert_fatal_fault_qs;
Tests: T1 T2 T3
3045 1/1 reg_rdata_next[17] = status_alert_recov_ctrl_update_err_qs;
Tests: T1 T2 T3
3046 end
3047
3048 addr_hit[8]: begin
3049 1/1 reg_rdata_next[9:0] = entropy_period_prescaler_qs;
Tests: T1 T2 T3
3050 1/1 reg_rdata_next[31:16] = entropy_period_wait_timer_qs;
Tests: T1 T2 T3
3051 end
3052
3053 addr_hit[9]: begin
3054 1/1 reg_rdata_next[9:0] = entropy_refresh_hash_cnt_qs;
Tests: T1 T2 T3
3055 end
3056
3057 addr_hit[10]: begin
3058 1/1 reg_rdata_next[9:0] = entropy_refresh_threshold_shadowed_qs;
Tests: T1 T2 T3
3059 end
3060
3061 addr_hit[11]: begin
3062 1/1 reg_rdata_next[31:0] = '0;
Tests: T1 T2 T3
3063 end
3064
3065 addr_hit[12]: begin
3066 1/1 reg_rdata_next[31:0] = '0;
Tests: T1 T2 T3
3067 end
3068
3069 addr_hit[13]: begin
3070 1/1 reg_rdata_next[31:0] = '0;
Tests: T1 T2 T3
3071 end
3072
3073 addr_hit[14]: begin
3074 1/1 reg_rdata_next[31:0] = '0;
Tests: T1 T2 T3
3075 end
3076
3077 addr_hit[15]: begin
3078 1/1 reg_rdata_next[31:0] = '0;
Tests: T1 T2 T3
3079 end
3080
3081 addr_hit[16]: begin
3082 1/1 reg_rdata_next[31:0] = '0;
Tests: T1 T2 T3
3083 end
3084
3085 addr_hit[17]: begin
3086 1/1 reg_rdata_next[31:0] = '0;
Tests: T1 T2 T3
3087 end
3088
3089 addr_hit[18]: begin
3090 1/1 reg_rdata_next[31:0] = '0;
Tests: T1 T2 T3
3091 end
3092
3093 addr_hit[19]: begin
3094 1/1 reg_rdata_next[31:0] = '0;
Tests: T1 T2 T3
3095 end
3096
3097 addr_hit[20]: begin
3098 1/1 reg_rdata_next[31:0] = '0;
Tests: T1 T2 T3
3099 end
3100
3101 addr_hit[21]: begin
3102 1/1 reg_rdata_next[31:0] = '0;
Tests: T1 T2 T3
3103 end
3104
3105 addr_hit[22]: begin
3106 1/1 reg_rdata_next[31:0] = '0;
Tests: T1 T2 T3
3107 end
3108
3109 addr_hit[23]: begin
3110 1/1 reg_rdata_next[31:0] = '0;
Tests: T1 T2 T3
3111 end
3112
3113 addr_hit[24]: begin
3114 1/1 reg_rdata_next[31:0] = '0;
Tests: T1 T2 T3
3115 end
3116
3117 addr_hit[25]: begin
3118 1/1 reg_rdata_next[31:0] = '0;
Tests: T1 T2 T3
3119 end
3120
3121 addr_hit[26]: begin
3122 1/1 reg_rdata_next[31:0] = '0;
Tests: T1 T2 T3
3123 end
3124
3125 addr_hit[27]: begin
3126 1/1 reg_rdata_next[31:0] = '0;
Tests: T1 T2 T3
3127 end
3128
3129 addr_hit[28]: begin
3130 1/1 reg_rdata_next[31:0] = '0;
Tests: T1 T2 T3
3131 end
3132
3133 addr_hit[29]: begin
3134 1/1 reg_rdata_next[31:0] = '0;
Tests: T1 T2 T3
3135 end
3136
3137 addr_hit[30]: begin
3138 1/1 reg_rdata_next[31:0] = '0;
Tests: T1 T2 T3
3139 end
3140
3141 addr_hit[31]: begin
3142 1/1 reg_rdata_next[31:0] = '0;
Tests: T1 T2 T3
3143 end
3144
3145 addr_hit[32]: begin
3146 1/1 reg_rdata_next[31:0] = '0;
Tests: T1 T2 T3
3147 end
3148
3149 addr_hit[33]: begin
3150 1/1 reg_rdata_next[31:0] = '0;
Tests: T1 T2 T3
3151 end
3152
3153 addr_hit[34]: begin
3154 1/1 reg_rdata_next[31:0] = '0;
Tests: T1 T2 T3
3155 end
3156
3157 addr_hit[35]: begin
3158 1/1 reg_rdata_next[31:0] = '0;
Tests: T1 T2 T3
3159 end
3160
3161 addr_hit[36]: begin
3162 1/1 reg_rdata_next[31:0] = '0;
Tests: T1 T2 T3
3163 end
3164
3165 addr_hit[37]: begin
3166 1/1 reg_rdata_next[31:0] = '0;
Tests: T1 T2 T3
3167 end
3168
3169 addr_hit[38]: begin
3170 1/1 reg_rdata_next[31:0] = '0;
Tests: T1 T2 T3
3171 end
3172
3173 addr_hit[39]: begin
3174 1/1 reg_rdata_next[31:0] = '0;
Tests: T1 T2 T3
3175 end
3176
3177 addr_hit[40]: begin
3178 1/1 reg_rdata_next[31:0] = '0;
Tests: T1 T2 T3
3179 end
3180
3181 addr_hit[41]: begin
3182 1/1 reg_rdata_next[31:0] = '0;
Tests: T1 T2 T3
3183 end
3184
3185 addr_hit[42]: begin
3186 1/1 reg_rdata_next[31:0] = '0;
Tests: T1 T2 T3
3187 end
3188
3189 addr_hit[43]: begin
3190 1/1 reg_rdata_next[31:0] = '0;
Tests: T1 T2 T3
3191 end
3192
3193 addr_hit[44]: begin
3194 1/1 reg_rdata_next[2:0] = '0;
Tests: T1 T2 T3
3195 end
3196
3197 addr_hit[45]: begin
3198 1/1 reg_rdata_next[31:0] = prefix_0_qs;
Tests: T1 T2 T3
3199 end
3200
3201 addr_hit[46]: begin
3202 1/1 reg_rdata_next[31:0] = prefix_1_qs;
Tests: T1 T2 T3
3203 end
3204
3205 addr_hit[47]: begin
3206 1/1 reg_rdata_next[31:0] = prefix_2_qs;
Tests: T1 T2 T3
3207 end
3208
3209 addr_hit[48]: begin
3210 1/1 reg_rdata_next[31:0] = prefix_3_qs;
Tests: T1 T2 T3
3211 end
3212
3213 addr_hit[49]: begin
3214 1/1 reg_rdata_next[31:0] = prefix_4_qs;
Tests: T1 T2 T3
3215 end
3216
3217 addr_hit[50]: begin
3218 1/1 reg_rdata_next[31:0] = prefix_5_qs;
Tests: T1 T2 T3
3219 end
3220
3221 addr_hit[51]: begin
3222 1/1 reg_rdata_next[31:0] = prefix_6_qs;
Tests: T1 T2 T3
3223 end
3224
3225 addr_hit[52]: begin
3226 1/1 reg_rdata_next[31:0] = prefix_7_qs;
Tests: T1 T2 T3
3227 end
3228
3229 addr_hit[53]: begin
3230 1/1 reg_rdata_next[31:0] = prefix_8_qs;
Tests: T1 T2 T3
3231 end
3232
3233 addr_hit[54]: begin
3234 1/1 reg_rdata_next[31:0] = prefix_9_qs;
Tests: T1 T2 T3
3235 end
3236
3237 addr_hit[55]: begin
3238 1/1 reg_rdata_next[31:0] = prefix_10_qs;
Tests: T1 T2 T3
3239 end
3240
3241 addr_hit[56]: begin
3242 1/1 reg_rdata_next[31:0] = err_code_qs;
Tests: T1 T2 T3
3243 end
3244
3245 default: begin
3246 reg_rdata_next = '1;
3247 end
3248 endcase
3249 end
3250
3251 // shadow busy
3252 logic shadow_busy;
3253 logic rst_done;
3254 logic shadow_rst_done;
3255 always_ff @(posedge clk_i or negedge rst_ni) begin
3256 1/1 if (!rst_ni) begin
Tests: T1 T2 T3
3257 1/1 rst_done <= '0;
Tests: T1 T2 T3
3258 end else begin
3259 1/1 rst_done <= 1'b1;
Tests: T1 T2 T3
3260 end
3261 end
3262
3263 always_ff @(posedge clk_i or negedge rst_shadowed_ni) begin
3264 1/1 if (!rst_shadowed_ni) begin
Tests: T1 T2 T3
3265 1/1 shadow_rst_done <= '0;
Tests: T1 T2 T3
3266 end else begin
3267 1/1 shadow_rst_done <= 1'b1;
Tests: T1 T2 T3
3268 end
3269 end
3270
3271 // both shadow and normal resets have been released
3272 1/1 assign shadow_busy = ~(rst_done & shadow_rst_done);
Tests: T1 T2 T3
3273
3274 // Collect up storage and update errors
3275 1/1 assign shadowed_storage_err_o = |{
Tests: T1 T2 T3
3276 cfg_shadowed_kmac_en_storage_err,
3277 cfg_shadowed_kstrength_storage_err,
3278 cfg_shadowed_mode_storage_err,
3279 cfg_shadowed_msg_endianness_storage_err,
3280 cfg_shadowed_state_endianness_storage_err,
3281 cfg_shadowed_sideload_storage_err,
3282 cfg_shadowed_entropy_mode_storage_err,
3283 cfg_shadowed_entropy_fast_process_storage_err,
3284 cfg_shadowed_msg_mask_storage_err,
3285 cfg_shadowed_entropy_ready_storage_err,
3286 cfg_shadowed_en_unsupported_modestrength_storage_err,
3287 entropy_refresh_threshold_shadowed_storage_err
3288 };
3289 1/1 assign shadowed_update_err_o = |{
Tests: T1 T2 T3
3290 cfg_shadowed_kmac_en_update_err,
3291 cfg_shadowed_kstrength_update_err,
3292 cfg_shadowed_mode_update_err,
3293 cfg_shadowed_msg_endianness_update_err,
3294 cfg_shadowed_state_endianness_update_err,
3295 cfg_shadowed_sideload_update_err,
3296 cfg_shadowed_entropy_mode_update_err,
3297 cfg_shadowed_entropy_fast_process_update_err,
3298 cfg_shadowed_msg_mask_update_err,
3299 cfg_shadowed_entropy_ready_update_err,
3300 cfg_shadowed_en_unsupported_modestrength_update_err,
3301 entropy_refresh_threshold_shadowed_update_err
3302 };
3303
3304 // register busy
3305 1/1 assign reg_busy = shadow_busy;
Tests: T1 T2 T3
3306
3307 // Unused signal tieoff
3308
3309 // wdata / byte enable are not always fully used
3310 // add a blanket unused statement to handle lint waivers
3311 logic unused_wdata;
3312 logic unused_be;
3313 1/1 assign unused_wdata = ^reg_wdata;
Tests: T1 T2 T3
3314 1/1 assign unused_be = ^reg_be;
Tests: T1 T2 T3