Estoy trabajando con Artix 7 (xc7a15tftg256). Cuando llega el momento de ejecutar la implementación, muestra el siguiente mensaje de error:
[Lugar 30-574] Mala ubicación para el enrutamiento entre un pin IO y BUFG. Si esta condición subóptima es aceptable para este diseño, puede usar la restricción CLOCK_DEDICATED_ROUTE en el archivo .xdc para degradar este mensaje a ADVERTENCIA. Sin embargo, se desaconseja encarecidamente el uso de esta anulación. Estos ejemplos se pueden usar directamente en el archivo .xdc para anular esta regla de reloj. < set_property CLOCK_DEDICATED_ROUTE FALSE [get_nets input_IBUF] >
input_IBUF_inst
(IBUF.O) está bloqueado paraIOB_X0Y83
input_IBUF_BUFG_inst
(BUFG.I) es colocado provisionalmente por clockplacer enBUFGCTRL_X0Y30
Para mi aplicación verifico rising_edge(input)
. Por favor proporcione la solución en este problema.
Se recomienda utilizar pines compatibles con reloj (CC pines) para las entradas de reloj. Estos se pueden enrutar a BUFG.
Pero el error está en otra parte de tu código. Como escribiste, estás usando
if rising_edge(input) then
No puede usar risen_edge en ninguna red de reloj, esto los promueve a una red de reloj, cuya entrada no lo es.
La forma correcta es sincronizar la entrada con 2 D-FF y agregar una detección de borde después de eso (3rd D-FF, not-gate y and-gate). Todos los FF están controlados por el reloj de su sistema.
input_meta <= input when rising_edge(Clock); -- 1st synchronizer D-FF
input_sync <= input_meta when rising_edge(Clock); -- 2nd synchronizer D-FF
input_d <= input_sync when rising_edge(Clock); -- edge detection D-FF (d = delayed)
input_re <= not input_d and input_sync; -- edge detection equation (re = rising edge)
process(Clock)
begin
if rising_edge(Clock) then
if (input_re = '1') then
-- do something
end if;
end if;
end process;
rising_edge(input)
. Entonces, o nombró una red de reloj real input
(nombre extraño para un reloj) o el OP usó el borde ascendente en una señal de datos, lo que es incorrecto para la síntesis (en la mayoría de los casos). Ingresar señales de reloj en un FPGA en pines sin capacidad de reloj es una falla de diseño.
onda sónica
input
en realidad es una señal de reloj, y si lo que está usando es una placa personalizada, diría que haga un rediseño y asegúrese de usar una entrada de reloj dedicada y correcta. Siinput
no es un reloj como tal, sino solo una señal en la que desea activar el borde, ¿por qué no usar una señal de reloj "real" para muestrearla?FarhadA