Benchmarks and Utilities for BloBB and CompaSS

Hayward Chan and Igor Markov

All (small) C++ programs here are written for immediate convenience of the author.  They are not expected to be robust.

Benchmarks (top)

MCNC and GSRC benchmarks in blocks/nets/pl format are available here.

  Hard version Soft version (aspect ratio constraints)
[0.50,2.00] [0.55,1.80] [0.59,1.70] [0.63,1.60] [0.67,1.50]
MCNC (9 - 49 blks) txt soft format soft format soft format soft format soft format
GSRC (10 - 300 blks) txt soft format soft format soft format soft format soft format
ami49_X suite

(98 - 156K blks)

dimensions for larger benchmarks are divided by 10

txt --- --- --- --- ---

random test cases

(6 - 500 blks)

dimensions between 1..200

all distinct: txt

3-type: txt

2-type: txt

--- --- --- --- ---

Format Converters (top)

These converters deal with the "txt", "soft", "bbb", "blocks/nets/pl" and "yal" formats.  Details about the "txt", "soft" and "bbb" formats can be found in CompaSS' manual (available here), The "blocks/nets/pl" and "yal" formats are described here

blocks2txt (source, Linux executable)

usage:   blocks2txt <input-blocks-file> <output-txt-file>
example:   blocks2txt input.blocks output.txt

 

 

blocks2soft (source, Linux executable)

usage:   blocks2soft <input-blocks-file> <output-soft-file>
example:   blocks2soft input.blocks output.soft

 

 

txt2blocks (source, Linux executable)

description:   It converts a txt file to a set of output files in blocks/nets/pl format, which contains all the blocks with no nets and pads. The example below creates files output.blocks, output.nets and output.pl
usage:   txt2blocks <input-blocks-file> <output-file-prefix>
example:   txt2blocks input.txt output

 

 

 

 

txt2yal (source, Linux executable)

description:   It converts a txt file to a yal file, which contains all the blocks with no nets and pads.
usage:   txt2yal <input-txt-file> <output-yal-file>
example:   txt2yal input.txt output.yal

 

 

 

txt2soft (source, Linux executable)

description:   It converts a txt file to a soft file.  The blocks in the soft file have the same area as they do in the txt file, but they are now soft.  They can take aspect ratio from 1/<max-aspect-ratio> to <max-aspect-ratio>.  In the example below, all blocks can take aspect ratio from 0.5 to 2.0 inclusive.  If <max-aspect-ratio> is less than 1, it becomes the aspect-ratio lower bound instead.
usage:   txt2soft <input-txt-file> <output-soft-file> <max-aspect-ratio>
example:   txt2soft input.txt output.soft 2

 

 

 

 

 

soft2soft (source, Linux executable)

description:   It allows the user to change the aspect ratio constraints for blocks in the input file.  In the example below, the blocks in output.soft can take aspect ratios from 0.33 to 3.00, regardless their aspect ratio constraints in input.soft.
usage:   soft2soft <input-soft-file> <output-soft-file> <new-max-aspect-ratio>
example:   blocks2soft input.soft output.soft 3

 

 

 

 

bbb2pl (source, Linux executable)

description:   It converts a bbb file to an output pl file, with no pads of course.
usage:   bbb2pl <input-bbb-file> <output-pl-file>
example:   bbb2pl input.bbb output.pl

 

 

 

Visualizers (top)

plotout (source, Linux executable)

description:   It plots the packing specified by a bbb file using gnuplot.  The gnuplot script "out" is created.  Applying "gnuplot out" plots the packing, and saving it in postscript format.
usage:   plotout <input-file> <output-file> [options]
example:   The following sequence of commands create a postscript file "output.ps" from "input.bbb"

  plotout input.bbb output.ps

  gnuplot out

options:  
  • label -l / no label -n: In "label" mode, all blocks are labeled by consecutive integers, starting from 1 unless otherwise specified (see "starting #" and "ascending" below).  "no label" is assumed if none of "-l" and "-n" is specified.
  • starting # (-s <int>): If it is in "label" mode, all blocks are labeled by consecutive integers starting from <int>, or 1 if "-s" is not used and in "ascending mode" or the number of blocks in "descending" mode (see "ascending" below).
  • ascending -a / descending -d: In "ascending" mode, the blocks are labeled in ascending order, while in "descending" mode, the blocks are labeled in descending order.  "ascending" mode is assumed by default.

 

 

 

 

 

 

 

 

 

 

bbb2matlab (source, Linux executable)

description:   It converts a bbb file to an m-file that draws the packing in Matlab.
usage:   bbb2matlab <input-file> <output-file> [options]
examples:  
  • bbb2matlab input.bbb output.m
  • bbb2matlab input.bbb output.m -l -s 1
options:  
  • terse -t / verbose -v: In "verbose" mode, detailed information about the packing will be specified beside the picture.  "terse" is assumed is none of "-t" and "-v" is specified.
  • label -l / no label -n: In "label" mode, all blocks are labeled by consecutive integers, starting from 0 unless otherwise specified (see "starting #" below).  "no label" is assumed if none of "-l" and "-n" is specified.
  • starting # (-s <int>): If it is in "label" mode, all blocks are labeled by consecutive integers starting from <int>, or 0 if "-s" is not used.
  • line width (-l <number>): The line width is set to be 1.5 unless it is specified by <number> following "-l".  It is useful since it's hard to come up with a universal line width for drawing 10 blocks or 100K blocks.
hints:   Suppose output.m is created.  In Matlab, the following sequence of commands may be useful to create a tight eps file output.eps.

  output; print -deps output.eps

 

 

 

 

 

 

 

 

 

 

 

 

Other Utilities (top)

multiply (source, Linux executable)

description:   It creates a new instance that is X copies of the original.  In the example below, output.txt constains 4 copies of input.txt and the dimensions of all blocks in output.txt are 1/C of those in input.txt.  C equals 1 if it is not specified.
usage:   multiply <input-txt-file> <output-txt-file> <X> [optional down-scaling constant C]
example:   multiply input.txt output.txt 4 2

 

 

 

 

txtascend (source, Linux executable)

description:   It sorts the blocks in input.txt according to their areas.  Smaller blocks succeed larger blocks.  The input instance is expected to be small.  It uses a naive quadratic-time sorting algorithm.
usage:   txtascend <input-txt-file> <output-txt-file>
example:   txtascend input.txt output.txt

 

 

 

txtdescend (source, Linux executable)

Similar to txtascend, except that it returns the blocks in descending order, according to their areas.

Last update: May 12, 2004