@@ -629,6 +629,32 @@ def get_pin_name(pin):
629629 cmds .append (f"# ---------- END REMOTE UPDATE ---------\n " )
630630 return "\n " .join (cmds )
631631
632+ def generate_seu (self , block , verbose = True ):
633+ name = block ["name" ]
634+ pins = block ["pins" ]
635+ enable = block ["enable" ]
636+ mode = block ["mode" ].upper ()
637+
638+ def get_pin_name (pin ):
639+ return pin .backtrace [- 1 ][0 ]
640+
641+ cmds = []
642+ cmds .append (f"# ---------- SINGLE-EVENT UPSET ---------" )
643+ cmds .append (f'design.set_device_property("seu", "ENA_DETECT", "{ enable } ", "SEU")' )
644+ if enable :
645+ cmds .append (f'design.set_device_property("seu", "CONFIG_PIN", "{ get_pin_name (pins .CONFIG )} ", "SEU")' )
646+ cmds .append (f'design.set_device_property("seu", "DONE_PIN", "{ get_pin_name (pins .DONE )} ", "SEU")' )
647+ cmds .append (f'design.set_device_property("seu", "ERROR_PIN", "{ get_pin_name (pins .ERROR )} ", "SEU")' )
648+ cmds .append (f'design.set_device_property("seu", "INJECT_ERROR_PIN", "{ get_pin_name (pins .INJECT_ERROR )} ", "SEU")' )
649+ cmds .append (f'design.set_device_property("seu", "RST_PIN", "{ get_pin_name (pins .RST )} ", "SEU")' )
650+ if mode == "MANUAL" :
651+ cmds .append (f'design.set_device_property("seu", "START_PIN", "{ get_pin_name (pins .START )} ", "SEU")' )
652+ cmds .append (f'design.set_device_property("seu", "MODE", "{ mode } ", "SEU")' )
653+ if mode == "AUTO" and hasattr (block , "wait_interval" ):
654+ cmds .append (f'design.set_device_property("seu", "WAIT_INTERVAL", "{ block ["wait_interval" ]} ", "SEU")' )
655+ cmds .append (f"# ---------- END SINGLE-EVENT UPSET ---------\n " )
656+ return "\n " .join (cmds )
657+
632658 def generate (self , partnumber ):
633659 output = ""
634660 for block in self .blocks :
@@ -653,6 +679,8 @@ def generate(self, partnumber):
653679 output += self .generate_spiflash (block )
654680 if block ["type" ] == "REMOTE_UPDATE" :
655681 output += self .generate_remote_update (block )
682+ if block ["type" ] == "SEU" :
683+ output += self .generate_seu (block )
656684 return output
657685
658686 def footer (self ):
0 commit comments