| vlsitechnology.org /2LM sclib /synthesis /scripts /loop_buf_loon |
loop_buf_loon |
Chapter
Section
loop_buf_loon -l lax_file input_file output_file
Script can replace LOON. It will loop LOON synthesis until the fastest netlist has been found, and perform fanin reduction if requested. The lax_file sets the input resistance and output load used for synthesis. The value of opt level set in the LAX file is ignored as the script will try all values when searching for the fastest netlist.
The looping of the LOON synthesis uses the script buf_loon. This means that it will try to reduce fanin below
The results of the synthesis sequence are written to standard output. The result of the last LOON run is written to loop_buf_loon.log.
-l lax_file
lax_file.lax sets the values of input resistance and output capacitance. The value of opt level is ignored.
input_file
The structural VHDL netlist input_file.vst to synthesise.
output_file
The result of the LOON synthesis, structural VHDL netlist output_file.vst and XSCH timing file output_file.xsc.
.buf_loon
File .buf_loon (the dot makes it a hidden file) is read to get values of max_fanin and time_limit. Default values of 4 and 30s can be overidden here. Setting max_fanin to 0 disables fanin reduction.
Alliance programs loon, flatlo, x2y; scripts ./buf_loon, ./find_fanin and ./find_rin; and the value of environment variables $MBK_TARGET_LIB and $MBK_CATA_LIB.
Note that scripts buf_loon, find_fanin and find_rin are assumed to be in the working directory and are called with the prefix "./".
A number of unwanted extra files could be left.
Script loop_buf_loon is structured to accept the same arguments as LOON with additional parameters defined in hidden file .buf_loon.
1 $ more .buf_loon rin 6860 rin 7419 max_fanin 2 time_limit 60 |
Input resistance and output capacitance are defined in the LAX file. The opt level is ignored since loop_buf_loon will test all opt levels as it loops LOON to find the fastest netlist.
Starting with the input netlist, the script loops loon to find the fastest netlist. The fanin is measured with script ./find_fanin and if
then the script ./find_rin is run to give the value of rin to use inside script ./buf_loon for fanin reduction.
Script ./buf_loon is looped three deep inside a loop that continues until there is no further improvement in the delay. BOOG provides the starting netlist, and subsequent netlists are taken from the first synthesis loop which gives the fastest result at the end of three loops. Each synthesis loop then requires 84 LOON commands instead of 1, as is shown by the pseudo-code below.
min_delay=100000; old_min_delay=100001
while [ "$old_min_delay" -gt "$min_delay" ]; do
old_min_delay=$min_delay
for opt1 in 0 1 2 4; do
./buf_loon cct0 cct1 #4 times
for opt2 in 0 1 2 4; do
./buf_loon cct1 cct2 #16 times
for opt3 in 0 1 2 4; do
./buf_loon cct2 cct3 > buf_loon.log #64 times
delay=$(grep '^Critical ' buf_loon.log | cut)
if [ "$min_delay" -gt "$delay" ]; then
min_delay=$delay
cct0=cct1
fi |
| Download loop_buf_loon Example 1 $ echo "max_fanin 10" >> .buf_loon 2 $ echo "time_limit 60" >> .buf_loon 3 $ ./loop_buf_loon -l loon_1500_300_0 multi8_4 multi8 Thu Jul 3 11:16:36 BST 2008 #multi8_4_0... Delay 29572, Area 1665972, Gates 2204 #multi8_4_1... Delay 29335, Area 1667988, Gates 2206 #multi8_4_2... crashed #multi8_4_4... Delay 23245, Area 1738548, Gates 2300 #multi8_4_12.. Delay 23038, Area 1728468, Gates 2286 #multi8_4_42.. Delay 22551, Area 1749384, Gates 2314 #multi8_4_422. Delay 22492, Area 1750896, Gates 2316 # elapsed time 240s #multi8_4_40... Delay 23245, Area 1738548, Gates 2300 #multi8_4_41... Delay 23160, Area 1738800, Gates 2300 #multi8_4_42... Delay 22551, Area 1749384, Gates 2314 #multi8_4_422.. Delay 22492, Area 1750896, Gates 2316 # elapsed time 165s #multi8_4_4220.. Delay 22492, Area 1750896, Gates 2316 Thu Jul 3 11:23:22 BST 2008
The LOON sequence of different opt levels which gives the fastest netlist varies from design to design. Running LOON interactively to find the best sequence is time consuming. This script automates all of that. |