http://neil.franklin.ch/Projects/VirtexTools/README author Neil Franklin, last modification 2002.10.12 Introduction to my Virtex programming and debugging tools project Aim To make an toolset for programming and debugging of Xilinx Virtex (or Spartan-II) FPGA chips. The individual tools intended so far are: vd (VirtexDump (textual)) and vv (VirtexView (graphical)): - seeing where stuff got placed, particularly verifying that data buses got layed out sensibly, either be P&R tool or by handwritten algorithms - seeing how much of the FPGA space one has used up, and where there still are unused areas, good for those doing placing by hand - seeing what functions got put into LUTs, at least as far as they have the shape of visually known standard fuctions - "blink compare" image of 2 bitstreams to find differences fastly - offer an better (LUT patterns visible) index, into the FF-only view given in the JBits BoardScope tool - offer an better (LUT-level separate window) index, than the CLB-level same window and slow switching JBits tag() function - demonstrating how FPGAs work, and how an particular design is implemented - automatically and fast generating cool pictures with all the complexity of an complex circuit that took months to develop, good for project folders, project websites, posters on the wall, showing to bosses or customers vm (VirtexModify): - change individual LUTs and BRAMs without recompiling or reassembling - loading ROMs and RAMs with code or data, instead of via recompiling design - generate an null bitstream from scratch and modify - later modify any elements of FPGA, allowing entire design fron scratch libvirtex and virtex.h: - collection of functions for processsing/generating bit streams from C program - the actual hard work of all bit twiddling, the actual bit positions vrc (VirtexRouteChecker) - test if routing has shorts (>1 driver), circles, dangling ends vas (VirtexAssembler): - generating bit streams from an assembly language like source file - usable as back end for high level language compilers vdl (VirtexDownloader): - download and readback of .bit file to/from FPGA vdb (VirtexDebug): - display and control of an running Virtex chip, as an better (LUT patterns visible) alternative to BoardsScope - be easier to write hook up to an random FPGA board than BoardScope, because being written in C and not in Java - be faster than BoardScope because FPGA computes and C code displays, not slow JVM code doing both or at least display vta (VirtexTimeAnalyser): - calculate run times of the signals on chip - finding the longest paths for each clock domain, and if it is low enough - finding out maximal clock for each domain, and if it is high enough vld (VirtexLinker) (possibly): - allow putting together an bitstream from multiple seperately compiled parts - allow multiple sources files, even of different languages ved (VirtexEditor) (unlikely): - graphical editor Tools As these programs read in and analyse files, some of them binary, outputs stuff to files, some binary, some even graphics, and may later contain an life X Window System display, I will be writing in C. This should port to any system with files, sockets, and an X display. I will be working on an Linux/x86 system. I am basing this on the information provided in the XAPP151 application note. Reinforced with my own reverse engineering of the .bit file. Code This project is fully open source. Everything I write is immediately available for download. If I write a bug you crash the next day. Documentation gets written together with the code. State The work, as far as it has progressed, is documented in an Logfile that is updated whenever I do something: http://neil.franklin.ch/Projects/VirtexTools/Logfile Installation There is an installation guide at: http://neil.franklin.ch/Projects/VirtexTools/INSTALL Questions There is a FAQ file at: http://neil.franklin.ch/Projects/VirtexTools/FAQ