А что можно сказать по ниже показанному косяку?... почти получилось вот так
wire clk = ~clk & s3;
wire load = s2^ clk;
always @(posedge load)
s4 <= s1;
Пока высокий s3 - генерится clk, давая мне фронты. Тут скорость реакции неважна, хоть через двадцать задержек защелкнется.
Если s3 низкий и появляется фронт s2, то в результате также есть фронт для защёлки. Задержка в сумме - 2 минимальные задержки плиски.
И схеме синтезированная соответствует ожиданиям
yadi.sk/i/vQ4vOhf13GJHZK
Однако симулятор показывает на выходе в одной ситуации херню какую-то. Там судя по схеме просто неоткуда взяться нулю на выходе. Но он есть.
yadi.sk/i/zLGq7Hcg3GJHaD