ISPD 2009 Clock Synthesis contest

This file explains the input/output file format by examples.

//--------------------------------------------------------------------------//
//--------------------------------------------------------------------------//
input file

0 0 5000000 5000000      // lower_left_x,y upper_right_x,y (in nm) = 0.5cm x 0.5cm
source 0 0 0 0           // source sourceName x y bufName
num sink 4              
1 1200000 1300000 35     // sinkName x y load_cap(in fF)
2 4000000 1200000 35
3 1300000 3800000 35
4 3700000 3300000 35
num wirelib 2
0 0.0001 0.0002          // wireTypeName unit_wire_resistance (Ohm/nm) unit_wire_capacitance (fF/nm)
1 0.0003 0.00016
num buflib 1
0 clkinv0.subckt 1 35 80 61.2 // buf_id spice_subckt_filename inverted? input_load_cap output_parasitic_cap output_resistance
simulation vdd 1 1.1     // spice simulation in different vdd setting
limit slew 100           // slew limit in ps
limit cap 5000           // cap limit in fF (to limit power)
num blockage 4
1000 1000 1000000 2800000 // lower_left_x,y upper_right_x,y (in nm)
1000 3000000 1800000 3400000
1000 3500000 1000000 4800000
2100000 2800000 3500000 4800000

===============
Notes:
spice_subckt_filename "clkinv0.subckt" must exist in current directory

//--------------------------------------------------------------------------//
//--------------------------------------------------------------------------//
output file

sourcenode 0 0   // nodeName srcName(must_be_the_same_as_the_source_name_in_input_file)
num node 21
1  1250000 0     // nodeName x y
2  1250000 0
3  2500000 0
4  2500000 0
5  2500000 1250000
6  2500000 1250000
7  2500000 2500000
8  2500000 2500000
9  2500000 2500000
10 2500000 2500000
11 2500000 2500000
12 2500000 2500000
13 1250000 2480000
14 1250000 2480000
15 1250000 2480000
16 1250000 2480000
17 1250000 2480000
18 1250000 2480000
19 3750000 2480000
20 3750000 2480000
21 1250000 3000000
num sinknode 4
25 1             // nodeName sinkName(must_be_the_same_as_one_of_sink_names_in_input_file)
26 3
27 2
28 4
num wire 20
0 1 0            // from_nodeName to_nodeName wireType(must_be_the_same_as_one_of_the_wire_type_in_input_file)
2 3 0
4 5 0
6 7 0
7 8 0
7 9 0
10 12 0
11 12 0
12 13 0
13 14 0
13 15 0
17 18 0
16 18 0
18 25 0
18 21 0          // two nodes can be connected by more than one wire
18 21 0          //
21 26 0
12 19 0
20 27 0
20 28 1
num buffer 9
1 2 0            // from_nodeName to_nodeName bufType(must_be_the_same_as_one_of_the_buf_type_in_input_file)
3 4 0
5 6 0
8 10 0
9 11 0
14 16 0
15 17 0
19 20 0          // two nodes can be connected by more than one buffer
19 20 0          //

===============
Notes:
For buffers, the from_nodeName and to_nodeName must have same x,y location.

