although matchen is inside the sensitive list, no signal inside the always block read it.
In hardware, it is either positive enable or negative enable.
You can make it work by two ways:
1. use matchen as a clock
So write as "always @(posedge matchen)"
2. assuming it is a positive enable
Add line "if(matchen)" before "if(conditions)", but in this case, ss1, ss2, ss3, conditions should be inside the sensitive list.
only the process (in verilog) that would implement a flop, does not need to appears inside the process.
if you want to use marchen as "clock", you must declare as "posedge matchen", and "posedge condition" to be use as reset active high