None
以上来自于谷歌翻译
以下为原文
Hi @nicosilicom
The error is:
ERROR:Route:472 - This design is unrouteable.To evaluate the problem please use fpga_editor.
Details:
ERROR:Route:472 -
This design is unrouteable.
To evaluate the problem please use fpga_editor.
Routing Conflict 1:
Net:w_clk_100m_180 on pin CLK1 on location OLOGIC_X0Y68
Net:w_clk_100m_270 on pin CLK1 on location ILOGIC_X0Y68
Conflict detected on wire: PINFEED1(-105576,-86958)
Routing Conflict 2:
Net:w_clk_100m_180 on pin CLK1 on location OLOGIC_X0Y70
Net:w_clk_100m_270 on pin CLK1 on location ILOGIC_X0Y70
Conflict detected on wire: PINFEED1(-105576,-76286)
Routing Conflict 3:
Net:w_clk_100m_180 on pin CLK1 on location OLOGIC_X0Y72
Net:w_clk_100m_270 on pin CLK1 on location ILOGIC_X0Y72
Conflict detected on wire: PINFEED1(-105576,-66686)
Routing Conflict 4:
Net:w_clk_100m_180 on pin CLK1 on location OLOGIC_X0Y74
Net:w_clk_100m_270 on pin CLK1 on location ILOGIC_X0Y74
Conflict detected on wire: PINFEED1(-105576,-57086)
Routing Conflict 5:
Net:w_clk_100m_180 on pin CLK1 on location OLOGIC_X0Y69
Net:w_clk_100m_270 on pin CLK1 on location ILOGIC_X0Y69
Conflict detected on wire: PINFEED1(-105566,-86926)
Routing Conflict 6:
Net:w_clk_100m_180 on pin CLK1 on location OLOGIC_X0Y71
Net:w_clk_100m_270 on pin CLK1 on location ILOGIC_X0Y71
Conflict detected on wire: PINFEED1(-105566,-76254)
Routing Conflict 7:
Net:w_clk_100m_180 on pin CLK1 on location OLOGIC_X0Y73
Net:w_clk_100m_270 on pin CLK1 on location ILOGIC_X0Y73
Conflict detected on wire: PINFEED1(-105566,-66654)
Routing Conflict 8:
Net:w_clk_100m_180 on pin CLK1 on location OLOGIC_X0Y75
Net:w_clk_100m_270 on pin CLK1 on location ILOGIC_X0Y75
Conflict detected on wire: PINFEED1(-105566,-57054)
Total REAL time to Router completion: 5 secs
Total CPU time to Router completion: 4 secs
Partition Implementation Status
-------------------------------
No Partitions were found in this design.
-------------------------------
Generating "PAR" statistics.
**************************
Generating Clock Report
**************************
+---------------------+--------------+------+------+------------+-------------+
| Clock Net | Resource |Locked|Fanout|Net Skew(ns)|Max Delay(ns)|
+---------------------+--------------+------+------+------------+-------------+
| 0.000 | |
+---------------------+--------------+------+------+------------+-------------+
| w_clk_16p5m* | BUFGMUX_X2Y12| No | 64 | 0.000 | |
+---------------------+--------------+------+------+------------+-------------+
| w_clk_100m_270* | BUFGMUX_X2Y2| No | 14 | 0.000 | |
+---------------------+--------------+------+------+------------+-------------+
| w_clk_100m* | BUFGMUX_X2Y1| No | 200 icon_CONTROL0<0>* | BUFGMUX_X2Y10| No | 87 | 0.000 | |
+---------------------+--------------+------+------+------------+-------------+
| w_clk_100m_90* | BUFGMUX_X3Y13| No | 12 | 0.000 | |
+---------------------+--------------+------+------+------------+-------------+
| 0.000 | |
+---------------------+--------------+------+------+------------+-------------+
|u_icon/U0/iUPDATE_OU | | | | | |
| T* | Local| | 1 | 0.000 | |
+---------------------+--------------+------+------+------------+-------------+
| w_clk_100m_180* | BUFGMUX_X2Y4| No | 9 | | |
+---------------------+--------------+------+------+------------+-------------+
* Some of the Clock networks are NOT completely routed
* Net Skew is the difference between the minimum and maximum routing
only delays for the net. Note this is different from Clock Skew which
is reported in TRCE timing report. Clock Skew is the difference between
the minimum and maximum path delays which includes logic delays.
* The fanout is the number of component pins not the individual BEL loads,
for example SLICE loads not FF loads.
| icon_CONTROL1<13>* | Local| | 5 | 0.000Timing Score: 650781 (Setup: 650781, Hold: 0, Component Switching Limit: 0)
Code:
ODDR2 #(.DDR_ALIGNMENT("C1"),
.INIT(1'b0),
.SRTYPE("ASYNC")
) ODDR2_dq_out_en0
(.Q(w_dq_out_en0),
.C0(i_clk),
.C1(i_clk_180),
.CE(1'b1),
.D0(w_dq_out_en_tmp),
.D1(w_dq_out_en_tmp),
.R(1'b0),
.S(1'b0));
The oddr2 is to drive the T pin of tri-state gate,and I am not sure the reasonability of it.
io_ddr_m u_dq0(
.i_clko(i_clk),
.i_clko_180(i_clk_180),
.i_clki(i_clk_90),
.i_clki_180(i_clk_270),
.i_wr_en(r_dq_vaild),
.i_rd_en(r_data_flag),
.i_outen(w_dq_out_en0),
.i_oddr_rst(1'b0),
.i_oddr_st(1'b0),
.i_iddr_rst(1'b0),
.i_iddr_st(1'b0),
.i_d0(r_dq1[0]),
.i_d1(r_dq2[0]),
.io_dq(io_DQ[0]),
.o_di_0(w_data1[0]),
.o_di_1(w_data2[0])
);
The module is to function as a bidirectional pin named io_DQ,it has eight bit width.So there are eight modules in total.The net called w_dq_out_en0 is T pin.
module io_ddr_m (
input i_clko
,input i_clko_180
,input i_clki
,input i_clki_180
,input i_wr_en
,input i_rd_en
,input i_outen
,input i_oddr_rst
,input i_oddr_st
,input i_iddr_rst
,input i_iddr_st
,input i_d0
,input i_d1
,inout io_dq
,output o_di_0
,output o_di_1
);
wire w_oddr_q;
wire w_iobuf_q;
ODDR2 #(
.DDR_ALIGNMENT("C1"), // Sets output alignment to "NONE", "C0" or "C1"
.INIT(1'b0), // Sets initial state of the Q output to 1'b0 or 1'b1
.SRTYPE("ASYNC") // Specifies "SYNC" or "ASYNC" set/reset
) ODDR2_inst (
.Q(w_oddr_q), // 1-bit DDR output data
.C0(i_clko), // 1-bit clock input
.C1(i_clko_180), // 1-bit clock input
.CE(i_wr_en), // 1-bit clock enable input
.D0(i_d0), // 1-bit data input (associated with C0)
.D1(i_d1), // 1-bit data input (associated with C1)
.R(i_oddr_rst), // 1-bit reset input
.S(i_oddr_st) // 1-bit set input
);
IDDR2 #(
.DDR_ALIGNMENT("C1"), // Sets output alignment to "NONE", "C0" or "C1"
.INIT_Q0(1'b0), // Sets initial state of the Q0 output to 1'b0 or 1'b1
.INIT_Q1(1'b0), // Sets initial state of the Q1 output to 1'b0 or 1'b1
.SRTYPE("ASYNC") // Specifies "SYNC" or "ASYNC" set/reset
) IDDR2_inst0 (
.Q0(o_di_0), // 1-bit output captured with C0 clock
.Q1(o_di_1), // 1-bit output captured with C1 clock
.C0(i_clki), // 1-bit clock input
.C1(i_clki_180), // 1-bit clock input
.CE(i_rd_en), // 1-bit clock enable input
.D(w_iobuf_q), // 1-bit DDR data input
.R(i_iddr_rst), // 1-bit reset input
.S(i_iddr_st) // 1-bit set input
);
IOBUF #(
.DRIVE(12), // Specify the output drive strength
.IOSTANDARD("DEFAULT"), // Specify the I/O standard
.SLEW("SLOW") // Specify the output slew rate
) IOBUF_inst (
.O(w_iobuf_q), // Buffer output
.IO(io_dq), // Buffer inout port (connect directly to top-level port)
.I(w_oddr_q), // Buffer input
.T(i_outen) // 3-state enable input, high=input, low=output
);
/*********************************************************/
endmodule