-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathREADME
executable file
·183 lines (116 loc) · 5.45 KB
/
README
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
/****************************************************************************/
/*
Released Software: Bounded-Skew Clock Tree Router
Version 1.0: May 2000
Version 1.3: 2002
Copyright (C) 1994-2018 Regents of the University of California
Computer Science Department, University of California, Los Angeles.
CSE and ECE Departments, University of California, San Diego.
Author: Prof. Andrew B. Kahng -- abk@cs.ucla.edu (2018: abk@eng.ucsd.edu)
Author: Dr. Chung-Wen (Albert) Tsao -- tsao@cs.ucla.edu (2018: albert999tsao@gmail.com)
All Rights Reserved
Description:
The released software constructs a binary tree over a set of clock sink
locations subject to a given global skew bound under Elmore or linear
delay models. No buffers insertion is used.
For more details, plase see the following publication:
J. Cong, A. B. Kahng, C.-K. Koh and C.-W. A. Tsao,
``Bounded-Skew Clock and Steiner Routing'',
ACM Trans. on Design Automation of Electronic Systems, Vol. 4,
No. 1, January, 1999.
*/
/****************************************************************************/
/*
04/07/00: wrap BST/DME in C++
*/
This package consists of
*** bstdme.h (wrap BST/DME in C++, users only need to include this header file )
*** main.cxx (a sample file that shows how to use this package)
-- bst.cxx/bst.h (main file)
-- bst_sub1.cxx/bst_sub1.h (common subroutines)
-- bst_sub2.cxx (clustering, buffering, skew allocation)
-- bst_sub3.cxx/bst_sub3.h (obstacle routing)
-- IME_code.cxx/IME_code.h (For comparison between BME and IME )
-- foundation/*.h (For the future reconstruction/development)
-- Time.cxx/Time.h (Print out cpu time)
-- bst_header.h ( define data structures and constants )
-- Global_var.h ( Global variables shared among all files. )
How to compile this program?
** Compiled successuffly with the following version of g++
-- gcc version 2.95.1 19990816 (release)
-- gcc version 2.95.2 19991024 (release)
-- gcc version egcs-2.91.66 19990314 (egcs-1.1.2 release)
-- gcc version 2.95.3 20010315 (SuSE)
-- RedHat Linux 6.0 / Linux 2.2.12-6smp i686 unknown
on the following platform
-- SunOS 5.6 Generic_105181-05 sun4u sparc SUNW,Ultra-4
-- SunOS 5.7 Generic_106541-08 sun4u sparc SUNW,Ultra-2
How to run the regression test?
** All the testcases are under ./BENCHMARKS
** use script ./regression for regresison test and
comparison against the old regression result
** The regression result of version 1.x is in
./BENCHMARKS/BST-1.x_regression_result*
How to run this program?
** For the format of the input and outfile files, please read the
REAME and examples files under directory DOC.
** For variable topologies.
Example: bst -i r1 -B 100
where -i specify the input is the benchmark r1
-B specify the allowed skew bound is 100 (pico-second)
Outfile:
topology: r1.top_B100
xgraph files :
r1.xg_B100 (routing solution in xgraph format)
r1_area.xg_B10 (tree of merging regions in xgraph format)
The xgraph package can be obtained from
http://www.cs.toronto.edu/~radford/xgraph.html
** For fixed topologies.
example: bst -i r1 -G r1.top_B100 -B 100
where -G specifies that the topologies is given in file r1.top_B100
** Generate random test cases
-N 99 will generate a file "n99" which has 99 points
(The following functionality are NOT complete yet, but I plan to
finish them in the future)
** For different wire delay model
-D 0 (Linear delay model)
-D 1 (Elmore delay model) (default)
** For non-uniform Layer parasitics
-RES 2 specifies that Res. of layer2 is 2 times larger than R. of layer 1
-CAP 2 specifies that Cap. of layer2 is 2 times larger than C. of layer 1
** For obstruction
-O n99.block read in the file n99.block which has obstacles information
** For buffer insertion:
To set buffer linear model
-BRES 50 set Buffer Resistance to be 50 ohm
-BCAP 50.0e-15 set Buffer Capacitance to be 50 ff.
To set the number of buffers at each level
-NCL 16 1 specifies that
16 buffers at the bottom level
1 buffer at the top level
/****************************************************************************/
/* Revision log */
/****************************************************************************/
05-11-2002: (try to fix the regression crash on PC/Linux platform).
* remove the following variables and the related codes.
N_Skew_Samples
Max_Delay_Skew
Min_Delay_Skew
Capac_Skew
WL_Skew
Niteration
B_Niteration
* fix the crash in the fucntion print_merging_tree on PC/Linux, where
the array bound of char* a[20] overflows.
The solution is to use the C++ string to get around the array bound problem.
05-18-2002: take prescribed delays at each sinks.
"bst -N 99" will produce a file called n99, which can be used as
a sample input file with prescribed delays for a testcase with 99 sinks,
05-31-2002: check if any errors in the input topology file.
06-03-2002: correct the way to draw a buffer, which
cause a confusion to Sherief Reda" <sreda@cs.ucsd.edu>
to-do list:
* add static to local functions
* eliminate more un-used codes
* root_id in update_Cluster
* look into any potential problem on array bound problem.