I wasn't trying to design the whole thing, just offering a suggestion on how to increase the swing.
The timing capacitor waveform is the ramp. If you need it to be linear, a current source accomplishes that.
Once you have the excess swing, I was expecting you'd clamp and limit it to whatever range you wanted, and make your sawtooth. For example,
Vdd -+- | (_) | i.t (_) v (e.g., 10nA) | | D1 +----->|-----. | | |\ Ct | |\ | .---| >o---||---+-----| >0---+---> | |/ (A) |/ | | U1a U1b | '----------------------------'
The above produces a sawtooth ramp from (Vth - Vdd) to Vth, or (Vth.falling - Vdd) to Vth.rising if you use a Schmitt.
Total swing is precisely Vdd regardless of Vth, or (Vdd - hysteresis) for a Schmitt.
It's always good to fly beyond the rails :-)
Why do you need U4A? Couldn't you take the feedback from U1A.2 and save an inverter?
Cheers, James Arthur