Cómo imagino que funcionan las redes digitales síncronas: las líneas de datos se muestrean en el borde ascendente del reloj, se produce un conjunto de transitorios, se asienta el sistema y se vuelven a muestrear las líneas de datos en el siguiente borde ascendente. Colocaría los transitorios en los flancos descendentes del reloj, de modo que tanto el tiempo Tsu como Th para el muestreo son claros. (Algo similar al comportamiento del bus SPI).
Lo que se ve en una hoja de datos de un dispositivo del mundo real (74595): D flipflops conectados en serie con un reloj común. En la salida del primer flip-flop, transitorio en la línea de datos sigue el aumento del borde del reloj con Tpd. El próximo flip-flop necesita una línea de datos estable en el tiempo después del flanco ascendente para funcionar correctamente. Por supuesto que funciona porque Tpd > Th, pero es solo una cuestión de nanosegundos.
Mi problema con todo esto es que no es robusto (tal vez no sea la mejor palabra). La visualización de cosas en un analizador lógico será menos útil porque las líneas de datos prácticamente cambian en sincronización con el flanco ascendente del reloj. Los errores aleatorios causados por Th > Tpd no son realmente visibles y no se detectan. 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 cuán lento sea el reloj que haya elegido.
¿Es esta la forma en que se construyen los circuitos digitales más comúnmente síncronos? ¿Solo el retraso en la propagación de los componentes hace que funcione? ¿Estoy siendo idealista? :)