Cómo imagino que funcionan las redes digitales síncronas: las líneas de datos se muestrean en el flanco ascendente del reloj, se producen una serie de transitorios, el sistema se asienta y las líneas de datos se muestrean de nuevo en el siguiente flanco ascendente. Yo colocaría los transitorios en los flancos descendentes del reloj, de esa manera tanto el tiempo Tsu como Th para el muestreo están claros. (Algo similar al comportamiento del bus SPI).
Lo que se ve en una hoja de datos de un dispositivo del mundo real (74595): Flipflops D conectados en serie que tienen un reloj común. En la salida del primer flipflop, el transitorio en la línea de datos sigue al flanco de subida del reloj con Tpd. El siguiente flipflop necesita que el tiempo de la línea de datos sea estable después del flanco de subida para funcionar correctamente. Por supuesto que funciona porque Tpd>Th, pero es sólo una cuestión de nanosegundos.
Mi problema con todo esto es que no es robusto (quizá no sea la mejor palabra). Visualizar las cosas en un analizador lógico será menos útil porque las líneas de datos prácticamente cambian en sincronía con el flanco de subida del reloj. Los errores aleatorios causados por Th>Tpd no son realmente visibles y pasan desapercibidos. Si conecto otro registro de desplazamiento en serie de una tecnología diferente, que requiere tiempos de retención más largos, el circuito no funcionará, no importa lo lento que sea el reloj que haya elegido.
¿Es ésta la forma en que se construyen la mayoría de los circuitos digitales síncronos? ¿Sólo el retardo de propagación de los componentes hace que funcione? ¿Estoy siendo demasiado idealista? :)