VPack / T-VPack Version 4.30, March 25, 2000 I (Vaughn) integrated my last VPack enhancements into Sandy's latest T-VPack code base. He branched off of VPack Version 2.08 instead of 2.09, so I had to put the -muxes_to_cluster_output_pins stuff in to his latest code base. Also fixed a missing prototype warning on print_stats, and fixed the usage statement to say t-vpack instead of vpack. I bumped the version number up so this has the same version number as the VPR it's going to be released with. This version was released on the web. VPack / T-VPack Version 3.0, around May 1999 Sandy's T-VPack algorithm enhancements to VPack. He added timing-driven packing, and connection-driven packing (another variant on the basic VPack-style algorithm). VPack Version 2.09 -- Jan. 26, 1999 Added the -muxes_to_cluster_output_pins option. If true, then the output of BLEs that is used only locally within a logic cluster does not have to connect to a cluster output pin. If false, each BLE output is connected directly to a logic cluster output (this is how Altera FPGAs do it), so even if a BLE output is used only within a cluster, it must still connect to (and hence use up) a cluster output. The old VPack always worked under the assumption that -muxes_to_output_pins was TRUE. By default it will now be FALSE. Moved ext.h to globals.h, since it's a more descriptive filename. Vpack Version 2.08 -- June 25, 1998 Copied the new util.c and util.h files over from the latest VPR. Removed the ARCH_TYPE define from the makefile, since I now have my own handmade random number routine, and hence there are no architectural incompatibilities. Fixed a bug that occurred with circuits that had multiple clocks. In get_block_by_num_ext_inputs the prev_ptr element used to traverse the linked list wasn't being updated properly. This led to unclustered blocks being removed prematurely from the data structures. The sanity checks complained about the missing blocks, happily. I also made echo_input print to whatever filename you want now. Vpack Version 2.07 -- April 22, 1998 Fixed a couple of memory handling problems that purify caught. Vpack Version 2.06 -- April 3, 1998 Added some new code to output_clustering.c to print out the average number of used inputs per BLE (i.e. how many used LUT inputs, on average) and to print out the fraction of these LUT inputs that come from within the same cluster (i.e. are locally generated). Vpack Version 2.05 -- March 31, 1998 Fixed a bug in the subblock information. Clustered netlists were printed out incorrectly -- the clock pins were not hooked up from the clb clock input to the subblock clock pins (all clocks on subblocks were usually being marked as open). Now fixed. Vpack Version 2.04 -- Oct. 15, 1997 Changed the output netlist subblock information format. Subblock inputs driven by the outputs of other BLEs within the same cluster now refer to ble_?? where ?? is from 0 to cluster_size - 1. This gives the BLE output that drives this input. This change allows VPR to support logic blocks which have internal nodes that can't be connected to logic block outputs. Subblock outputs that don't leave the cluster are now also marked as OPEN. They will be used within the cluster by other BLEs (otherwise there would be no need for them). Subblock outputs that leave the cluster still have the number of the clb pin they connect to listed. Vpack Version 2.03 Fixed two bugs. 1) The netlist compression routine that gets rid of "holes" left by empty pads and latches that got folded into LUTs didn't compress the is_clock array. This could result in the wrong signal being marked as a clock. Now fixed. 2) Long signal names that made .latch and .names statements run over multiple lines were making vpack go nuts, due to a subtle problem with strtok not making local copies of things. Now fixed. Vpack Version 2.02 Made global_clocks and hill_climbing on by default. Made the default cluster seed max_inputs. Fixed minor bug found by Yaska. Number of LUT + FF blocks reported to user could be wrong when there were unused input blocks that had been removed. Just affected the summary; the netlist produced was always correct. Made all local functions static to make code more modular. Changed name from blifmap to vpack. Blifmap Version 2.01 Changed output netlist so that nets which are now completely contained within a cluster are removed from the top-level netlist. That is, the cluster subblock information still describes the internal connections, but the output pin that would drive that net is now marked as OPEN. This avoids nets with no fanout that would cause problems for the placer and router in VPR, and single- pin nets didn't make a lot of sense anyway. Blifmap Version 2.00 Complete clustering blifmap. Fully debugged. In addition to the greedy clustering algorithm, an optional hill climbing second pass has been added. It is similar in philosophy to Kernighan-Lin partitioning. Two different seed generation strategies can be selected -- maximum sharing with the previous cluster (locality enhancing, I hope) or maximum number of used inputs. The output routines and statistics routines have also been added. The output netlist now includes information on the subblocks within a cluster. To get a netlist of LUT + FF logic blocks with no assumption of local routing from output to input, use the -no_clustering option. Blifmap Version 1.99 Compress the net and block data structures after ff packing so there are no "holes" in them. First pass of compression code is written and debugged. It's a pure greedy algorithm with no hill climbing that just tries to go for maximum pin sharing. The clustering check code is also written and works. Blifmap Version 1.25 Fixed bug where space was not properly malloced for model name (didn't appear to ever cause problems, but was a latent memory access error). Made several variables that were unnecessarily global into more local versions. Took the command line parsing out of main and put it into a parse_command subroutine. Blifmap Version 1.24 Altered code to make it strictly ANSI compliant (no warning through strict gcc) and so that it should compile without trouble on an HP architecture. Added a title banner that prints at startup. Blifmap Version 1.23 Adds -global option, which will automatically make all clocks global. It prints a warning message if more than one clock is found. Blifmap Version 1.22 Automatically removes unused inputs, with a warning message. Blifmap Version 1.21 I now allow LUTs with no inputs to pass through the translater, since they may be constant generators. A warning message is still generated though. This version is going to Jonathan. Blifmap Version 1.2 Changes the pin ordering for CLBs so that it is: .clb pinlist: LUT_in1 LUT_in2 ... LUT_inN Output Clock This will lead to nets being parsed in the same order as they were with a blif netlist, making it easier for me to compare results with my old vpr version (using serial numbers). Blifmap Version 1.1 Reads in circuits including latches. Does not rebuild the symbol table on the second pass, so it is better structured. Merges LATCHES properly into lookup tables and writes out its output.