The easiest way to do this for a $2r$ round cipher is to divide the key into two halves and base the first $r$ subkeys on one half and the second $r$ subkeys on the other half.
ETA 20220416: Thus for a block cipher with round function $F(x,k)$ and subkeys $k_1,\ldots, k_{2r}$, input $p$ and out $c$ we have
$$c=F(F(F(F(\cdots F(F(p,k_1),k_2)\cdots),k_{2r-2}),k_{2r-1}),k_{2r})$$
which rearranges to
$$F^{-1}(F^{-1}(F^{-1}(\cdots F^{-1}(c,k_{2r})\cdots,k_{r+2}),k_{r+1})=F(F(F(F(\cdots F(F(p,k_1),k_2)\cdots),k_{r-2}),k_{r-1}),k_{r}).$$
Given a handful of matched $p$ and $c$ values (one pair is about enough if the key size is the same as the block size), running over all possibilities for the first half of the key is enough to generate all of the possibilities for each right-hand side for each value of $p$. We can make a list of these possible right hand sides. Likewise, given $c$ running over all possibilities for the second half of the key is enough to generate all of the possibilities for the left hand side and for each possible left-hand side, we check to see if it appears in the right-hand side. If we do find a match, with good probability the corresponding first and second halves of the key all be the actual halves of the required key.