The decision on what works "better" is dependent on why you need to stretch the pulse.
If you need a signal that's big enough to be sensed in a different clock domain, an "acknowledge" can be brought back to the first time domain to shut the pulse back off. This assumes that two pulses won't be close enough to interfere.
If we stick with your original approach, rather than using the |stretcher in your construct below, I'd turn longer_pulse into a set/reset flop that's started with the single_clock_pulse and ended with the stretcher_sr[2], i.e.
longer_pulse What are the best techniques for stretching single-clock pulses? Here
"best" defined as either faster or smaller logic.
>
> I've been using the following technique with great success, the idea is to
> add a few clock cycles to a pulse prior to having it cross a clock domain
or
send it somewhere where it would be safer to have it be active longer:
>
> reg [3:0] counter;
> reg single_clock_pulse;
> reg [3:0] strecher_sr;
> reg longer_pulse;
>
> // Generate a test pulse
> always @(posedge clock)begin
> counter single_clock_pulse end
>
> // Stretch the pulse
> always @(posedge clock)begin
> stretcher_sr longer_pulse end
>
> By changing the length of the shift register I can control the new pulse
> duration. This is obviously not a good technique for very long durations.
> What are some of the other techniques? Anything more "elegant" than this?
>
> Thanks,
>
>
> --
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> Martin Euredjian
>
> To send private email:
> 0_0_0_0 snipped-for-privacy@pacbell.net
> where
> "0_0_0_0_" = "martineu"
>
>