[otbn] Represent updates to PC more nicely in operation docs

Signed-off-by: Rupert Swarbrick <rswarbrick@lowrisc.org>
diff --git a/hw/ip/otbn/util/docs/get_impl.py b/hw/ip/otbn/util/docs/get_impl.py
index 3d96062..46f9698 100644
--- a/hw/ip/otbn/util/docs/get_impl.py
+++ b/hw/ip/otbn/util/docs/get_impl.py
@@ -267,6 +267,25 @@
 
         return NBAssign.make(reg_ref, rhs)
 
+    def leave_Assign(self,
+                     orig: cst.Assign,
+                     updated: cst.Assign) -> cst.BaseSmallStatement:
+        # Handle assignments to state.pc_next and replace them with delayed
+        # assignments to PC.
+
+        # We don't handle things like "(foo, state.pc_next) = some_fun()"
+        if len(updated.targets) != 1:
+            return updated
+
+        tgt = updated.targets[0].target
+        if ((isinstance(tgt, cst.Attribute) and
+             isinstance(tgt.value, cst.Name) and
+             tgt.value.value == 'state' and
+             tgt.attr.value == 'pc_next')):
+            return NBAssign.make(cst.Name(value='PC'), updated.value)
+
+        return updated
+
 
 def read_implementation(path: str) -> Dict[str, str]:
     '''Read the implementation at path (probably insn.py)