mirror of https://github.com/openXC7/prjxray.git
tilegrid: iob WIP
Signed-off-by: John McMaster <johndmcmaster@gmail.com>
This commit is contained in:
parent
7ad9dc8c63
commit
e5cae1f55e
|
|
@ -19,11 +19,16 @@ proc loc_iob_old {} {
|
|||
|
||||
proc loc_iob {} {
|
||||
# Get all possible sites
|
||||
set duts [make_iob_sites]
|
||||
# set duts [make_iob_sites]
|
||||
# set dut_sites [get_sites -of_objects [get_pblocks roi] -filter {SITE_TYPE =~ RAMBFIFO36E1*}]
|
||||
#set duts [get_sites -filter {SITE_TYPE =~ IOB33*}]
|
||||
set duts [get_bels -filter {TYPE =~ PAD}]
|
||||
|
||||
# Sort them into CMT columns
|
||||
set dut_columns [group_dut_cols $duts 75]
|
||||
# Assign one from each
|
||||
return [loc_dut_col_bels $dut_columns {di[} {]} ]
|
||||
write_checkpoint -force tmp.dcp
|
||||
return [loc_dut_col_bels $dut_columns {di_bufs[} {].ibuf} ]
|
||||
}
|
||||
|
||||
proc write_iob { selected_iobs } {
|
||||
|
|
|
|||
|
|
@ -15,6 +15,14 @@ module top(input clk, stb, [DIN_N-1:0] di, output do);
|
|||
parameter integer DIN_N = `N_DI;
|
||||
parameter integer DOUT_N = `N_LUT + `N_BRAM;
|
||||
|
||||
wire [DIN_N-1:0] di_buf;
|
||||
genvar i;
|
||||
generate
|
||||
for (i = 0; i < `N_LUT; i = i+1) begin:di_bufs
|
||||
IBUF ibuf(.I(di[i]), .O(di_buf[i]));
|
||||
end
|
||||
endgenerate
|
||||
|
||||
reg [DIN_N-1:0] din;
|
||||
wire [DOUT_N-1:0] dout;
|
||||
|
||||
|
|
@ -22,7 +30,7 @@ module top(input clk, stb, [DIN_N-1:0] di, output do);
|
|||
reg [DOUT_N-1:0] dout_shr;
|
||||
|
||||
always @(posedge clk) begin
|
||||
din_shr <= {din_shr, di};
|
||||
din_shr <= {din_shr, di_buf};
|
||||
dout_shr <= {dout_shr, din_shr[DIN_N-1]};
|
||||
if (stb) begin
|
||||
din <= din_shr;
|
||||
|
|
@ -34,7 +42,7 @@ module top(input clk, stb, [DIN_N-1:0] di, output do);
|
|||
|
||||
roi roi (
|
||||
.clk(clk),
|
||||
.din(din),
|
||||
.din(din[7:0]),
|
||||
.dout(dout)
|
||||
);
|
||||
endmodule
|
||||
|
|
|
|||
|
|
@ -48,16 +48,18 @@ proc loc_dut_col_bels { dut_columns cellpre cellpost } {
|
|||
set dut_index 0
|
||||
|
||||
dict for {column duts_in_column} $dut_columns {
|
||||
set selected_dut_bel_str [min_ysite $duts_in_column]
|
||||
set selected_dut_bel [get_bels $selected_dut_bel_str]
|
||||
set selected_dut_site [get_sites -of_objects $selected_dut_bel]
|
||||
set sel_bel_str [min_ysite $duts_in_column]
|
||||
set sel_bel [get_bels $sel_bel_str]
|
||||
if {"$sel_bel" == ""} {error "Bad bel $sel_bel from bel str $sel_bel_str"}
|
||||
set sel_site [get_sites -of_objects $sel_bel]
|
||||
if {"$sel_site" == ""} {error "Bad site $sel_site from bel $sel_bel"}
|
||||
|
||||
set cell [get_cells $cellpre$dut_index$cellpost]
|
||||
puts "LOCing cell $cell to site $selected_dut_site (from bel $selected_dut_bel)"
|
||||
set_property LOC $selected_dut_site $cell
|
||||
puts "LOCing cell $cell to site $sel_site (from bel $sel_bel)"
|
||||
set_property LOC $sel_site $cell
|
||||
|
||||
set dut_index [expr $dut_index + 1]
|
||||
lappend ret_bels $selected_dut_bel
|
||||
lappend ret_bels $sel_bel
|
||||
}
|
||||
|
||||
return $ret_bels
|
||||
|
|
|
|||
Loading…
Reference in New Issue