MOSFET voltage controlled delay
You can set up your current starved inverter in such a way that it is easy to derive a relationship between a control voltage and a propagation delay. The core of a current-starved inverter is an additional NFET and PFET in series with the switching transistors. These transistors operate in the saturation region, and provide roughly a constant current over the relevant operating range.



With M1 and M4 biased in the saturation region, and either M2 or M3 in the linear region, the inverter will charge and discharge the capacitor C1 with a constant current. This constant current causes the voltage of the capacitor to change linearly, and lets us easily calculate the delay if we're using something like a Schmidt trigger (or a comparator with hysteresis) after the capacitor.

The voltage on a capacitor can be solved by \$V_S=\dfrac{Q}{C} \$ and \$ Q=I\times t\$, where Vs is the voltage that the capacitor must charge up to in order for the Schmidt trigger to fire. Combining and rewriting these equations gives us an equation for time delay based on the capacitance, the current, and the target voltage: \$ t_d =\dfrac{V_S\times C}{I} \$. Note that the capacitor will continue to charge after the Schmidt trigger fires. This means that you really need to let the capacitor voltage continue to VDD or GND, and your minimum period would be \$ T_{min} &gt;\dfrac{2\times V_{DD}\times C}{I} \$.

The only thing missing from this is how to make the bias voltages, and that can be done with current mirrors. See the schematic below for an idea on how this could be accomplished. Here, transistors M9 and M10 generate the V_P_BIAS and optionally the V_N_BIAS voltages from the first schematic. These voltages can be shared with any subsequent delay stages downstream as well. Transistor M11 can be used to generate V_N_BIAS from a reference current instead of a reference voltage if desired.



With a given V_BIAS, you can then calculate the current through both the NFET and PFET switch as long as you know the transistor parameters. Neglecting channel saturation effects, \$ i_d = \dfrac{C_{ox}\mu_n}{2} \dfrac{W}{L}(V_{gs} - V_{th})^2 \$. We can then substitute this in for the current, which gives us a final equation:

\$ T_d=\dfrac{V_S \times C}{\dfrac{C_{ox}\mu_n}{2} \dfrac{W}{L}(V_{bias} - V_{th})^2}\$

I found this article on current starved inverters used as a part of a voltage controlled oscillator. The application is different, but the methodology is the same.