diff --git a/passes/fsm/fsm_detect.cc b/passes/fsm/fsm_detect.cc
index fd0ae44b9..740113e35 100644
--- a/passes/fsm/fsm_detect.cc
+++ b/passes/fsm/fsm_detect.cc
@@ -110,6 +110,8 @@ static bool check_state_users(RTLIL::SigSpec sig)
 
 static void detect_fsm(RTLIL::Wire *wire)
 {
+	if (wire->attributes.count("\\init") > 0)
+		return;
 	if (wire->attributes.count("\\fsm_encoding") > 0 || wire->width <= 1)
 		return;
 	if (sig_at_port.check_any(assign_map(RTLIL::SigSpec(wire))))