2012-03-10 62 views
2

我嘗試創建一個包含兩個寬複用器兩級MUX。每個寬多路複用器具有8個共享相同選擇信號的2至1多路複用器。由於我可以使用RLOC將共享選擇信號的一個寬多路複用器(= 8個2到1個多路複用器)打包到一個Virtex-5片中。我想把這兩個寬複用器分成2個片。 但是,下面的代碼給了我一個地圖上的錯誤: ERROR:產品包裝:679 - 無法服從設計約束(宏名= HSET,RLOC = X2Y2)賽靈思RLOC失敗映射

有誰知道如何解決這個問題?

module mux_8(a, c, d, sel, o); 
input [7:0] a; 
input [7:0] d; 
input [7:0] c; 
input [1:0] sel; 
output [7:0] o; 

wire [7:0] b; 

(* RLOC = "X0Y0" *) 
mux mux_0(.a(a[0]), .b(b[0]), .sel(sel[0]), .o(o[0])); 
(* RLOC = "X0Y0" *) 
mux mux_1(.a(a[1]), .b(b[1]), .sel(sel[0]), .o(o[1])); 
(* RLOC = "X0Y0" *) 
mux mux_2(.a(a[2]), .b(b[2]), .sel(sel[0]), .o(o[2])); 
(* RLOC = "X0Y0" *) 
mux mux_3(.a(a[3]), .b(b[3]), .sel(sel[0]), .o(o[3])); 
(* RLOC = "X0Y0" *) 
mux mux_4(.a(a[4]), .b(b[4]), .sel(sel[0]), .o(o[4])); 
(* RLOC = "X0Y0" *) 
mux mux_5(.a(a[5]), .b(b[5]), .sel(sel[0]), .o(o[5])); 
(* RLOC = "X0Y0" *) 
mux mux_6(.a(a[6]), .b(b[6]), .sel(sel[0]), .o(o[6])); 
(* RLOC = "X0Y0" *) 
mux mux_7(.a(a[7]), .b(b[7]), .sel(sel[0]), .o(o[7])); 

(* RLOC = "X2Y2" *) 
mux mux_8 (.a(c[0]), .b(d[0]), .sel(sel[1]), .o(b[0])); 
(* RLOC = "X2Y2" *) 
mux mux_9 (.a(c[1]), .b(d[1]), .sel(sel[1]), .o(b[1])); 
(* RLOC = "X2Y2" *) 
mux mux_10(.a(c[2]), .b(d[2]), .sel(sel[1]), .o(b[2])); 
(* RLOC = "X2Y2" *) 
mux mux_11(.a(c[3]), .b(d[3]), .sel(sel[1]), .o(b[3])); 
(* RLOC = "X2Y2" *) 
mux mux_12(.a(c[4]), .b(d[4]), .sel(sel[1]), .o(b[4])); 
(* RLOC = "X2Y2" *) 
mux mux_13(.a(c[5]), .b(d[5]), .sel(sel[1]), .o(b[5])); 
(* RLOC = "X2Y2" *) 
mux mux_14(.a(c[6]), .b(d[6]), .sel(sel[1]), .o(b[6])); 
(* RLOC = "X2Y2" *) 
mux mux_15(.a(c[7]), .b(d[7]), .sel(sel[1]), .o(b[7])); 

endmodule 


(* LUT_MAP = "yes" *) 
module mux(a, b, sel, o); 
input a; 
input b; 
input sel; 
output o; 

assign o = (~sel & a) | (sel & b); 
endmodule 

回答

1

恐怕是報道根據你的約束無法路由。 您可以使用fpgaeditor(ISE中的工具)查看目標片的路由資源。 您可以嘗試在fpgaeditor中手動路由它。如果可能的話,您可以將路由設計保存爲hard-marco,並在您的設計中使用marco。但是,我相信你在一個slice中放置了太多的多路複用器,這會導致無法處理的路由擁塞。

+0

謝謝韋。我用類似的方式解決了這個問題:) – drdot 2012-04-11 18:22:27