Estoy tratando de aprender la programación FPGA, mi proyecto de prueba es una CPU MIPS canalizada de 5 etapas, que funciona.
Hasta ahora he estado optimizando la utilización del área, sin embargo, esto ha provocado una velocidad de reloj muy lenta (~ 50MHz).
He estado mirando el informe de sincronización estática del mapa de publicación generado por el ISE, pero no puedo darle mucho sentido. A continuación, se encuentra la sección de una ruta única (la más lenta), no puedo entender por qué esta ruta sería tan lenta.
Mis preguntas:
1) Si el retardo de tiempo es 80% de enrutamiento (como parece indicar este informe), ¿puedo mejorar esto? Si es así, ¿cómo?
2) ¿Cómo puedo reducir el componente lógico del tiempo?
3) Lo que se entiende por "origen" y "destino", en el siguiente ejemplo, opcode_out[1]
es el origen y finished[0]
es el destino, sin embargo, en mi diseño, estos nunca se conectan directamente. Uno se establece en el borde negativo de la etapa de decodificación, el otro se establece en el borde positivo de la etapa de ejecución.
4) En algunos lugares en los que he jugado usando asignaciones no bloqueantes, esto no es posible en todas partes. ¿Qué efectos de rendimiento tiene esto? He encontrado informes mixtos sobre esto.
5) Finalmente, ¿cuál es la probabilidad de que mi velocidad de reloj llegue a 200MHz, dado que actualmente está luchando por alcanzar los 50Mhz?
Paths for end point XLXI_30/XLXI_5/XLXI_3/execute_inst/finished_1 (OLOGIC_X2Y2.D1), 131 paths
--------------------------------------------------------------------------------
Slack (setup path): -6.906ns (requirement - (data path - clock path skew + uncertainty))
Source: XLXI_30/XLXI_5/XLXI_3/decode_inst/opcode_out_2 (FF)
Destination: XLXI_30/XLXI_5/XLXI_3/execute_inst/finished_1 (FF)
Requirement: 5.000ns
Data Path Delay: 11.871ns (Levels of Logic = 6)
Clock Path Skew: 0.000ns
Source Clock: XLXN_200 falling at 5.000ns
Destination Clock: XLXN_200 rising at 10.000ns
Clock Uncertainty: 0.035ns
Clock Uncertainty: 0.035ns ((TSJ^2 + TIJ^2)^1/2 + DJ) / 2 + PE
Total System Jitter (TSJ): 0.070ns
Total Input Jitter (TIJ): 0.000ns
Discrete Jitter (DJ): 0.000ns
Phase Error (PE): 0.000ns
Maximum Data Path at Slow Process Corner: XLXI_30/XLXI_5/XLXI_3/decode_inst/opcode_out_2 to XLXI_30/XLXI_5/XLXI_3/execute_inst/finished_1
Location Delay type Delay(ns) Physical Resource
Logical Resource(s)
------------------------------------------------- -------------------
SLICE_X40Y70.DQ Tcko 0.408 XLXI_30/XLXI_5/XLXI_3/decode_inst/opcode_out<2>
XLXI_30/XLXI_5/XLXI_3/decode_inst/opcode_out_2
SLICE_X41Y70.D5 net (fanout=8) e 0.759 XLXI_30/XLXI_5/XLXI_3/decode_inst/opcode_out<2>
SLICE_X41Y70.DMUX Tilo 0.313 XLXI_30/XLXI_5/XLXI_3/execute_inst/_n0402<5>1_FRB
XLXI_30/XLXI_5/XLXI_3/execute_inst/Mmux_func_in[5]_PWR_69_o_mux_83_OUT22_SW0
SLICE_X39Y70.B5 net (fanout=1) e 0.377 N118
SLICE_X39Y70.B Tilo 0.259 XLXI_30/XLXI_5/XLXI_3/execute_inst/rd_value_out_wire<31>
XLXI_30/XLXI_5/XLXI_3/execute_inst/Mmux_func_in[5]_PWR_69_o_mux_83_OUT22
SLICE_X41Y72.A6 net (fanout=3) e 0.520 XLXI_30/XLXI_5/XLXI_3/execute_inst/Mmux_func_in[5]_PWR_69_o_mux_83_OUT22
SLICE_X41Y72.A Tilo 0.259 XLXI_30/XLXI_5/XLXI_3/decode_inst/immediate_out<4>
XLXI_30/XLXI_5/XLXI_3/execute_inst/GND_74_o_GND_74_o_equal_146_o<5>1
SLICE_X41Y72.C5 net (fanout=19) e 0.547 XLXI_30/XLXI_5/XLXI_3/execute_inst/GND_74_o_GND_74_o_equal_146_o<5>1
SLICE_X41Y72.C Tilo 0.259 XLXI_30/XLXI_5/XLXI_3/decode_inst/immediate_out<4>
XLXI_30/XLXI_5/XLXI_3/execute_inst/func_in[5]_PWR_69_o_equal_125_o<5>1
SLICE_X31Y70.A3 net (fanout=23) e 0.934 XLXI_30/XLXI_5/XLXI_3/execute_inst/func_in[5]_PWR_69_o_equal_125_o
SLICE_X31Y70.A Tilo 0.259 XLXI_30/XLXI_5/XLXI_3/decode_inst/rd_out<3>
XLXI_30/XLXI_5/XLXI_3/execute_inst/_n0453
SLICE_X31Y70.B5 net (fanout=1) e 0.359 XLXI_30/XLXI_5/XLXI_3/execute_inst/_n0453
SLICE_X31Y70.B Tilo 0.259 XLXI_30/XLXI_5/XLXI_3/decode_inst/rd_out<3>
XLXI_30/XLXI_5/XLXI_3/execute_inst/finished_glue_set
OLOGIC_X2Y2.D1 net (fanout=2) e 5.556 XLXI_30/XLXI_5/XLXI_3/execute_inst/finished_glue_set
OLOGIC_X2Y2.CLK0 Todck 0.803 XLXI_30/XLXI_5/XLXI_3/execute_inst/finished_1
XLXI_30/XLXI_5/XLXI_3/execute_inst/finished_1
------------------------------------------------- ---------------------------
Total 11.871ns (2.819ns logic, 9.052ns route)
(23.7% logic, 76.3% route)