[Xilinx Vivado Timing Analysis/Constraints Series 7] FPGA Development Timing Analysis/Constraints-FPGA Single-Edge Sampling Data Input Delay Timing Restriction Practice

contenido

introducción al problema

analizar problema

solución práctica de ingeniería

Nueva construcción

código de nivel superior

Editar restricciones de tiempo

Generar informe de tiempo

Establecer retraso de entrada

Análisis específico

Ruta de datos: indica la hora de llegada real de los datos

Ruta del reloj de destino: Ruta del reloj de destino

Serie pasada de blogs


 

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?

marca de agua, type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBATGluZXN0LTU=,size_20,color_FFFFFF,t_70,g_se,x_16

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.

marca de agua, type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBATGluZXN0LTU=,size_20,color_FFFFFF,t_70,g_se,x_16

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.

marca de agua, type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBATGluZXN0LTU=,size_13,color_FFFFFF,t_70,g_se,x_16

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.

marca de agua, type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBATGluZXN0LTU=,size_16,color_FFFFFF,t_70,g_se,x_16

Editar restricciones de tiempo

marca de agua, type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBATGluZXN0LTU=,size_12,color_FFFFFF,t_70,g_se,x_16

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.

marca de agua, type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBATGluZXN0LTU=,size_20,color_FFFFFF,t_70,g_se,x_16

Generar informe de tiempo

Haga clic en el tiempo del informe para agregar cuatro datos de salida y habilitar señales

marca de agua, type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBATGluZXN0LTU=,size_20,color_FFFFFF,t_70,g_se,x_16

Establecer retraso de entrada

marca de agua, type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBATGluZXN0LTU=,size_20,color_FFFFFF,t_70,g_se,x_16

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.

marca de agua, type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBATGluZXN0LTU=,size_20,color_FFFFFF,t_70,g_se,x_16

Necesidad de volver a informar el tiempo debido a un retraso de entrada modificado

marca de agua, type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBATGluZXN0LTU=,size_17,color_FFFFFF,t_70,g_se,x_16

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.

marca de agua, type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBATGluZXN0LTU=,size_20,color_FFFFFF,t_70,g_se,x_16

 

marca de agua, type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBATGluZXN0LTU=,size_20,color_FFFFFF,t_70,g_se,x_16

 

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

marca de agua, type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBATGluZXN0LTU=,size_20,color_FFFFFF,t_70,g_se,x_16

 

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.

marca de agua, type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBATGluZXN0LTU=,size_19,color_FFFFFF,t_70,g_se,x_16

 

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.

marca de agua, type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBATGluZXN0LTU=,size_20,color_FFFFFF,t_70,g_se,x_16

 

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

 [Análisis de tiempo de Xilinx Vivado/serie de restricciones 1] Análisis de tiempo de desarrollo de FPGA/análisis de tiempo de restricción entre registros

 [Xilinx Vivado Timing Analysis/Constraints Series 2] FPGA Development Timing Analysis/Constraints - Setup Time

[Análisis de tiempo de Xilinx Vivado/serie de restricciones 3] Análisis de tiempo de desarrollo de FPGA/tiempo de retención de restricciones

 [Xilinx Vivado Timing Analysis/Constraints Series 4] FPGA Development Timing Analysis/Constraints-Experimental Engineering Hands-on Operation

 [Análisis de tiempo de Xilinx Vivado/serie de restricciones 5] Análisis de tiempo de desarrollo de FPGA/análisis de tiempo de E/S de restricción

 [Análisis de tiempo de Xilinx Vivado/serie de restricciones 6] Análisis de tiempo de desarrollo de FPGA/retraso de entrada de tiempo de restricción-IO

 

Supongo que te gusta

Origin blog.csdn.net/m0_61298445/article/details/123561968
Recomendado
Clasificación