Code parts encapsulation method
This code has many problems other than how "pretty" it is.

You are controlling signals based on edges on multiple signals, which is not synthesizable.

But to address your actual question &mdash; why do you have so many state variables for a simple multivibrator in the first place? For example, having both st_current and q_tmp is completely redundant; they always change in lock-step. And both of those variables could be eliminated by simply checking to see whether cnt is zero or not.

For example, you could change the last two lines to:

q  &lt;= '0' when cnt = 0 else '1';
nq &lt;= '1' when cnt = 0 else '0';