3. Have you considering migrating to Spartan-7? They are significantly faster than S6, they are cheaper, and you can use Xilinx's Microblaze core for free if that's what you want.
Duh... no, I had not considered that yet. And I had not even realized that the S7 is lower cost than the S6; had always assumed it was the other way round by a fair margin. Better chip performance, modern toolchain, lower cost -- seems worth a look indeed, thank you!
This is not always true, and newer is not always better. I have a project using the S6 because it is just as cheap, or cheaper than the equivalent S7,
but also mostly because the 7-series is not hobbyist friendly. The newer chips are pushing the packages smaller and smaller, and a 0.5mm ball-pitch CSP (or smaller) is just not doable for hobbyists yet. The PCB features needed to route and escape the chip-scale stuff are 6-layers minimum and 0.0762mm (3mil) traces. The "standard" affordable boards are 4-layer and 0.127mm (5mil) at best, with 0.25mm (10mil) drills for vias.
edit: I stand corrected, the S7 has just about the same size and ball-pitch packages as the S6 in the low-end of the chip range.
For me, the S7 did not offer the right size package + features + price that was right, but I could get the S6 in exactly what I needed
(15mm @ 0.8mm ball pitch), it was available at DigiKey and Mouser, it was cheap ($20 per chip), and I can manage to assemble the prototypes in my reflow oven. I could not go to a larger package because I'm space constrained by a PCB size requirement.
edit: The S7 has the same package, but only half the available physical I/O in that package and price.
Also, IMO, Vivado is awful compared to ISE. I have a few 7-series devboards, and the first time I went to use Vivado, I thought I had done something wrong because my "blink an LED" design took, literally, 10-minutes to generate a bit-stream. I could not believe it. And Vivado is a huge bloated mess. At lease ISE is smaller-ish, and works pretty well.
edit: I have been "informed" I am doing something wrong and I should get on the bandwagon.
Yes, it is unfortunate and really crappy the way Xilinx handled the transition from ISE to Vivado, right on the cusp of Win7 to Win10, and dropping support for S6 in Vivado. They lost some of my respect for sure, but clearly they do not care about that. Also, I managed to find (somewhere) on the Xilinx website that the S6 line is going to be in production through 2024 or 2026 (can't remember exactly), and that was enough for my project.
Sorry for the rant, it just gets old when people always push the latest thing, for the sake of it being the latest. But sometimes you cannot always jump on the latest and greatest, and sometimes the old and reliable is good enough (or better).
As for the timing problem with BRAM, it seems you have gotten a lot of help and I hope something worked for you. I have used a S6 with a design at 100MHz that used all the BRAM, and did not have too much trouble. The 100MHz design even came from a Spartan-3E, but the largest single block was only 16K in that case. All I can suggest is to register your inputs and outputs, and add a pipe-line (register) stage to help ease the routing constraints.