Assuming that you want to implement this as a command you can do something where you use the FPGA timer to time the 'halfway point' of the command.
In the command initialize you set a start time variable for the command to the current time.
In the execute you do something along the lines of setting the solenoid to forward when the start time + delay time is less than the current time, and set in to reverse otherwise.
In the is finished you can then check to see if the delay has passed and the limit switch is active.
In C++ this would be something like this:
https://gist.github.com/Equinox-/5127682