Restricciones de tiempo para el multiplexor de salida DDR

2

Considere el siguiente circuito, que multiplexa las entradas d0 y d1 a la salida y en un ciclo de reloj (es decir, doble velocidad de datos, DDR).

simular este circuito : esquema creado usando CircuitLab

Que puede ser el resultado de sintetizar el siguiente código de Verilog:

module ddr_mux (
    input wire clk,
    input wire d0, d1,
    output wire y
);

reg q0, q1;

always @(posedge clk) q0 <= d0;
always @(negedge clk) q1 <= d1;

assign y = clk ? q1 : q0;

endmodule

Tengo los siguientes requisitos de tiempo:

  • q0 no debe cambiar mientras la entrada de selección de MUX está en 0
  • q1 no debe cambiar mientras la entrada de selección de MUX está en 1

En otras palabras,

  • y debe tener como máximo dos transiciones por período de reloj.

Si las herramientas de análisis de síntesis y temporización no conocen estos requisitos en la salida y , tienen la libertad de implementar el circuito con una relación de temporización arbitraria entre q0 , q1 y sel . Aquí hay un ejemplo de cómo esto podría salir mal:

Yaquíestáelcomportamientodeseado:

¿Cómo puedo expresar esto correctamente en forma de restricciones de SDC para que las lean las herramientas de análisis de síntesis y sincronización de Cadence?

    
pregunta mkrieger1

0 respuestas

Lea otras preguntas en las etiquetas