Verdi batch FSM report: fsmAnalyzeFSM, with RecogFSM passed to npisys.init
To get a design's FSM states, transitions and counts from Verdi without the GUI, run verdi -nogui -dbdir simv.daidir -ssf x.fsdb and call Tcl fsmAnalyzeFSM -instance "<scope>.<module>(@1):FSM0:<l1>:<l2>:FSM" -fsdb x.fsdb -output rpt.log. The report covers clock, reset and control inputs, the state table (NAME=3'b...), transitions with their condition text, and per-state and per-transition hit counts (it gives no times). The nState window commands (fsmCreateWindow, fsmOpen, fsmGetState) return 0 or fail in -nogui, so use fsmAnalyzeFSM. You get the FSM instance names from Python NPI: pass -npi_nl_rtl_opt RecogFSM+GenBlock to npisys.init(), not load_design (which ignores it with 'Unknown argument'), then look for inst_list() entries of type npiNlFSMInst. Their ports mark the clock, the control inputs and the state registers. Adding DetailRTL+DetailMux gave no FSM instances in my test.