[otbn] Fix logic for detecting branch/jumps at end of loop

The previous code wouldn't trigger if there was a branch that wasn't
taken.

Signed-off-by: Rupert Swarbrick <rswarbrick@lowrisc.org>
diff --git a/hw/ip/otbn/rtl/otbn_controller.sv b/hw/ip/otbn/rtl/otbn_controller.sv
index 400765c..a1dafb7 100644
--- a/hw/ip/otbn/rtl/otbn_controller.sv
+++ b/hw/ip/otbn/rtl/otbn_controller.sv
@@ -136,6 +136,7 @@
   logic stall;
   logic ispr_stall;
   logic mem_stall;
+  logic jump_or_branch;
   logic branch_taken;
   logic insn_executing;
   logic [ImemAddrWidth-1:0] branch_target;
@@ -224,6 +225,9 @@
   assign done_complete = (insn_valid_i && insn_dec_shared_i.ecall_insn);
   assign done_o = done_complete | err;
 
+  assign jump_or_branch = (insn_valid_i &
+                           (insn_dec_shared_i.branch_insn | insn_dec_shared_i.jump_insn));
+
   // Branch taken when there is a valid branch instruction and comparison passes or a valid jump
   // instruction (which is always taken)
   assign branch_taken = insn_valid_i &
@@ -384,7 +388,7 @@
     .loop_jump_addr_o    (loop_jump_addr),
     .loop_err_o          (loop_err),
 
-    .branch_taken_i      (branch_taken),
+    .jump_or_branch_i    (jump_or_branch),
     .otbn_stall_i        (stall)
   );
 
diff --git a/hw/ip/otbn/rtl/otbn_loop_controller.sv b/hw/ip/otbn/rtl/otbn_loop_controller.sv
index 0ea8363..49d2beb 100644
--- a/hw/ip/otbn/rtl/otbn_loop_controller.sv
+++ b/hw/ip/otbn/rtl/otbn_loop_controller.sv
@@ -25,7 +25,7 @@
   output [ImemAddrWidth-1:0] loop_jump_addr_o,
   output                     loop_err_o,
 
-  input                      branch_taken_i,
+  input                      jump_or_branch_i,
   input                      otbn_stall_i
 );
   // The loop controller has a current loop and then a stack of outer loops, this sets the size of
@@ -118,7 +118,7 @@
   assign loop_jump_addr_o = current_loop_q.loop_start;
 
   assign loop_iteration_err      = (loop_iterations_i == '0) & loop_start_req_i;
-  assign loop_branch_err         = at_current_loop_end_insn & branch_taken_i;
+  assign loop_branch_err         = at_current_loop_end_insn & jump_or_branch_i;
   assign loop_stack_overflow_err = loop_stack_push_req & loop_stack_full;
   assign loop_at_end_err         = at_current_loop_end_insn & loop_start_req_i;