contenido
solución práctica de ingeniería
Editar restricciones de tiempo
Ruta de datos: indica la hora de llegada real de los datos
Ruta del reloj de destino: Ruta del reloj de destino
De acuerdo con el contenido de la Sección 6, este artículo se explica por su funcionamiento práctico.
En esta ocasión se lleva a cabo con el proyecto real (Vivado)
introducción al problema
El tiempo de llegada de datos es de 3ns después del flanco ascendente del reloj en el pin FPGA, y el ciclo del reloj es de 10ns.¿Cómo restringir el retraso de entrada y ver el informe de tiempo?
analizar problema
Se puede saber del diagrama de tiempo anterior combinado con el título que debido a que 3ns después de la llegada del flanco ascendente del reloj en el pin FPGA es el tiempo de llegada de datos, significa que no hay Lrmin y Lrmax, es decir, independientemente de la longitud del cableado de PCB, en el reloj FPGA en 3 ns después del borde ascendente de , los datos FPGA en datos se elevan.
solución práctica de ingeniería
Nueva construcción
El contenido básico es similar al del análisis anterior del tiempo de establecimiento, excepto que hay algunos relojes más, señales de habilitación, datos, etc. en el código de archivo de nivel superior, y se reproducen dos tiempos al final.
código de nivel superior
module top_ioddr(
input wire rx_clk,
input wire rx_ctrl,
input wire [3:0] rx_dat,
//tx
output wire tx_clk,
output wire [3:0] tx_d,
output wire tx_dv,
input wire sdrclk,
input wire [3:0] sdrdata,
input wire sdrden,
output reg tout
);
wire rst;
wire rx_clk_90;
wire rx_en;
wire [7:0] rx_data;
reg tx_en1,tx_en2;
reg [7:0] tx_data1,tx_data2;
assign rst =0;
assign rx_clk_90 = rx_clk;
/*
clk_wiz_0 clk_gen0
(
// Clock out ports
.clk_out1(rx_clk_90), // output clk_out1
// Clock in ports
.clk_in1(rx_clk)); // input clk_in1
*/
always @(posedge rx_clk_90 or posedge rst) begin
if (rst == 1'b1) begin
tx_data1 <= 'd0;
end
else if (rx_en == 1'b1) begin
tx_data1 <= rx_data+ rx_data -1;
end
end
always @(posedge rx_clk_90 or posedge rst) begin
if (rst == 1'b1) begin
tx_data2 <= 'd0;
end
else if (tx_en1 == 1'b1) begin
tx_data2 <= tx_data1+ tx_data1 -5;
end
end
always @(posedge rx_clk_90 ) begin
tx_en1 <= rx_en;
end
always @(posedge rx_clk_90 ) begin
tx_en2 <= tx_en1;
end
iddr_ctrl inst_iddr_ctrl
(
.rx_clk_90 (rx_clk_90),
.rst (rst),
.rx_dat (rx_dat),
.rx_ctrl (rx_ctrl),
.rx_en (rx_en),
.rx_data (rx_data)
);
oddr_ctrl inst_oddr_ctrl
(
.sclk (rx_clk_90),
.tx_dat (tx_data2),
.tx_en (tx_en2),
.tx_c (rx_clk_90),
.tx_data (tx_d),
.tx_dv (tx_dv),
.tx_clk (tx_clk)
);
//sdr clock domain
reg [3:0] sdrdata_r1,sdrdata_r2;
reg sdrden_r1,sdrden_r2;
//打两拍
always @(posedge sdrclk ) begin
{sdrdata_r2,sdrdata_r1} <= {sdrdata_r1,sdrdata};
end
always @(posedge sdrclk ) begin
{sdrden_r2,sdrden_r1} <= {sdrden_r1,sdrden};
end
always @(posedge sdrclk) begin
if(sdrden_r2 == 1'b1) begin
tout <= (&sdrdata_r1)|(&sdrdata_r2);
end
else begin
tout <= (^sdrdata_r2);
end
end
endmodule
Similar a la operación anterior, genere el archivo de flujo de bits y luego abra el diseño de enrutamiento.
Editar restricciones de tiempo
La mayoría de las operaciones aquí son similares a las del tiempo de configuración anterior y las restricciones de tiempo de espera, por lo que no daré más detalles aquí.
La restricción de entrada sdrclk se establece como se muestra en la siguiente figura. De acuerdo con la condición del sujeto, el período es de 10 ns. Configure el nombre del reloj de la restricción para que sea consistente con el reloj correspondiente. También puede configurarlo usted mismo y dejar que se corresponda con sdrclk.
Generar informe de tiempo
Haga clic en el tiempo del informe para agregar cuatro datos de salida y habilitar señales
Establecer retraso de entrada
De acuerdo con los requisitos de la pregunta, establezca el retardo de entrada máximo y el retardo de entrada mínimo respectivamente. De acuerdo con el significado de la pregunta, el máximo y el mínimo son iguales, ambos son 3ns
El valor de retardo es relativo al flanco del reloj: aumento del flanco ascendente (de acuerdo con el diagrama de tiempo)
El valor de retraso ya incluye un retraso de reloj específico: ninguno
Establecido en retardo de flanco ascendente
Esta configuración es la cantidad máxima de retraso (la otra se establece en la cantidad mínima de retraso)
Nota: agregue información de retraso al retraso existente (sin sobrescribir) agregue información de retraso al retraso existente (no sobrescriba)
Esto significa que si establece el retardo del flanco ascendente por primera vez y el retardo del flanco descendente la segunda vez, si desea que el segundo retardo no sobrescriba el primer ajuste, debe verificarlo en este momento. cantidad de retraso, esto no se afectará entre sí, y no necesita verificar esta situación.
Necesidad de volver a informar el tiempo debido a un retraso de entrada modificado
Se puede ver que cuando no se agrega el input delay, el slack (margen de tiempo de configuración) de cada ruta es infinito, esto se debe a que cuando establecemos las restricciones, la pomada de champú nos ayuda a establecer un valor grande por defecto para evitar errores. .
Después de agregar restricciones, puede ver que la holgura ya no es infinita, sino que tiene un cierto valor límite.
Análisis específico
Haga doble clic a voluntad para abrir una ruta para el análisis (tome la ruta 6 como ejemplo)
Resumen : resume alguna información
Ruta de datos : indica la hora en que realmente llegaron los datos
retardo de entrada : esta es la restricción que se acaba de agregar, el retardo de entrada es de 3 ns;
IBUF(Prop ibuf IO)
El retraso de entrada a salida de IBUF es 0.521ns;
neto : El tiempo de retardo del cableado de PCB es de 0,455 ns;
El tiempo de llegada real de los datos agregados totales es 3,976 ns.
Ruta del reloj de destino: Ruta del reloj de destino
clock sdrclk rise edge : después de que el reloj de muestreo es un ciclo de reloj del reloj de origen, el ciclo es de 10 ns;
IBUF(Prop ibuf IO)
El retraso de entrada a salida de IBUF es 0.319ns;
neto : Retardo de cableado de PCB 0.640ns;
BUFG(Cerca bufg IO)
El retraso de entrada a salida de BUFG es 0.026ns;
neto : Retardo de cableado de PCB 0.593ns;
pesimismo del reloj : este parámetro es 0 porque no hay restricción;
incertidumbre del reloj : la incertidumbre del reloj, que está determinada por el propio chip.
El tiempo total necesario para que lleguen los datos agregados es de 11,523 ns.
De acuerdo con la definición de holgura de configuración
Margen de tiempo de configuración = tiempo requerido para que lleguen los datos - tiempo para que lleguen realmente los datos
Se puede verificar que la restricción de retardo de entrada se agrega como se esperaba.
En este punto se completa el análisis de la parte del margen de tiempo de establecimiento sumando el retardo de entrada,
El funcionamiento del margen de tiempo de espera es similar al del margen de tiempo de establecimiento, y el método de análisis también es aproximado.
Serie pasada de blogs