The following is an informal letter to Xilinx requesting their continued efforts to increase the speed of their software tools. If there are incorrect or missing statements, please correct me!
Dear Xilinx:
As many of us spend numerous hours of our life waiting for Map/Par/Bitgen to finish, I hereby petition Xilinx, Inc., to consider this issue (of their tool speed) to be of the highest priority. I am now scared to purchase newer chips because I fear that their increased size and complexity will only further delay my company's development times. Please, please, please invest the time and money to make the tools execute faster.
Have you considered the following ideas for speeding up the process?
- The largest benefit to speed would be obtained through making the tools multithreaded. Upcoming multi-core processors will soon be available on all workstation systems. What is it that is causing Xilinx years on end to make their tools multithreaded? There is no excuse for this. I assume the tools are written in C/C++. Cross platform C/C++ threading libraries make thread management and synchronization easy (see boost.org).
- Use a different algorithm. I understand that the tools currently rely on simulated Annealing algorithms for placement and routing. This is probably a fine method historically, but we are arriving at the point where all paths are constrained and the paths are complex (not just vast in number). If there is no value in approximation, then the algorithm loses its value. Perhaps it is time to consider a Branch and Bound algorithm instead. This has the advantage of being easily threadable.
- SIMD instructions are available on most modern processors. Are we taking full advantage of them? MMX, SSE1/2/3/4, etc.
- Modern compilers have much improved memory management and compilation over those of previous years. Also, the underlying libraries for memory management and file IO can have a huge impact on speed. Which compiler are you using? Which libraries are you using? Have you tried the latest PathScale or Intel compilers?
- In recent discussions about the speed of the map tool, I learned that it took an unearthly five minutes to simply load and parse a 40MB binary file on what is considered a fairly fast machine. It is obviously doing a number of sanity checks on the file that are likely unnecessary. It is also loading the chip description files at the same time. Even still, that seems slow to me. Can we expand the file format to include information about its own integrity? Can we increase the file caches? Are we using good, modern parser technology? Can we add command line parameters that will cause higher speed at the cost of more memory usage and visa-versa? Speaking of command line parameters, the software takes almost three seconds to show them. Why does it take that long to simply initialize?
- Xilinx's chips are supposedly useful for acceleration. If so, make a PCIe x4 board that accelerates the tools using some S3 chips and SRAM. I'd pay 00 for a board that gave a 5x improvement. (okay, so that is way less than decent simulation tools, I confess I'm not willing to pay big dolla....)
- Is Xilinx making its money on software or hardware? If it is not making money on software, then consider making it open source. More eyes on the code mean more speed.
Sincerely, An HDL peon