Open zachbe opened 4 months ago
ie:
(* RLOC = "X0Y0" *) FD sr0 (.C(clk), .D(d[0]), .Q(y[0]));
(* RLOC = "X0Y1" *) FD sr1 (.C(clk), .D(d[1]), .Q(y[1]));
(* RLOC = "X0Y2" *) FD sr2 (.C(clk), .D(d[2]), .Q(y[2]));
(* RLOC = "X0Y3" *) FD sr3 (.C(clk), .D(d[3]), .Q(y[3]));
(* RLOC = "X0Y4" *) FD sr4 (.C(clk), .D(d[4]), .Q(y[4]));
(* RLOC = "X0Y5" *) FD sr5 (.C(clk), .D(d[5]), .Q(y[5]));
(* RLOC = "X0Y6" *) FD sr6 (.C(clk), .D(d[6]), .Q(y[6]));
(* RLOC = "X0Y7" *) FD sr7 (.C(clk), .D(d[7]), .Q(y[7]));
becomes
I still don't have a great visual image of what the high level design looks like, but it certainly seems like HU_SETS an/or BEL placements can get you pretty close to what you need. Don't forget to either mark the important cells as DONT_TOUCH or don't run phys opt/opt stages in your dcp generating tcl script. Vivado will probably be smart with the routing if you're smart with the placements, but certainly double check the DCP. In fact, if you have a DCP handy I'd like to poke around at it (can you attach the file to this github issue?)
It'll be a lot of work, but manual routing may significantly increase system stability and performance.
https://docs.amd.com/r/en-US/ug904-vivado-implementation/Routing-Assignment-Window