@@ -368,10 +368,30 @@ interface otbn_trace_if
368368 end
369369 end
370370
371- assign internal_intg_err_i.rf_base_intg_err = rf_base_intg_err;
372- assign internal_intg_err_i.rf_bignum_intg_err = rf_bignum_intg_err;
373- assign internal_intg_err_i.mod_ispr_intg_err = alu_bignum_reg_intg_violation_err;
374- assign internal_intg_err_i.acc_ispr_intg_err = mac_bignum_reg_intg_violation_err;
371+ // Register integrity check signals to model the registering of the escalation signal.
372+ logic rf_base_intg_err_q;
373+ logic rf_bignum_intg_err_q;
374+ logic alu_bignum_reg_intg_violation_err_q;
375+ logic mac_bignum_reg_intg_violation_err_q;
376+
377+ always_ff @ (posedge clk_i or negedge rst_ni) begin
378+ if (! rst_ni) begin
379+ rf_base_intg_err_q <= '0 ;
380+ rf_bignum_intg_err_q <= '0 ;
381+ alu_bignum_reg_intg_violation_err_q <= '0 ;
382+ mac_bignum_reg_intg_violation_err_q <= '0 ;
383+ end else begin
384+ rf_base_intg_err_q <= rf_base_intg_err;
385+ rf_bignum_intg_err_q <= rf_bignum_intg_err;
386+ alu_bignum_reg_intg_violation_err_q <= alu_bignum_reg_intg_violation_err;
387+ mac_bignum_reg_intg_violation_err_q <= mac_bignum_reg_intg_violation_err;
388+ end
389+ end
390+
391+ assign internal_intg_err_i.rf_base_intg_err = rf_base_intg_err_q;
392+ assign internal_intg_err_i.rf_bignum_intg_err = rf_bignum_intg_err_q;
393+ assign internal_intg_err_i.mod_ispr_intg_err = alu_bignum_reg_intg_violation_err_q;
394+ assign internal_intg_err_i.acc_ispr_intg_err = mac_bignum_reg_intg_violation_err_q;
375395 assign internal_intg_err_i.loop_stack_addr_intg_err = controller_bad_int_i.loop_hw_intg_err;
376396 assign internal_intg_err_i.insn_fetch_intg_err = insn_fetch_err;
377397
0 commit comments