Chapter

Section

Use

buf_loon -l lax_file input_file output_file \
[-f max_fanin] [-r rin] [-t time_limit]

Description

Script can replace LOON. If the opt level set in the LAX file is 0 or 1 it is the same as LOON. If the opt level is 2,3 or 4 then if necessary it will iterate LOON to try to reduce the fanin by inserting buffers on high fanin inputs.

Additional parameters can be given in a hidden file .buf_loon or on the command line.

If LOON locks up the process will be killed at the end of time_limit. An exit status of 1 indicates a crash and 2 a lock up.

There is no hierarchy in the output file, and any internal vectored nets are converted to ordinary bits.

Standard output is used for the LOON output. Standard error output is used for the intermediate fanin and critical path information. The last LAX file used is in lax.lax.

Arguments

-l lax_file

lax_file.lax sets the values of opt level, input resistance and output capacitance. The default value of opt level is 2. Default values of input resistance and output capacitance are 0.

input_file

The structural VHDL netlist input_file.vst to optimise.

output_file

The result of the LOON synthesis, structural VHDL netlist output_file.vst and XSCH timing file output_file.xsc.

-f max_fanin

Optional field to specify the threshold for fanin reduction Default value is 4. With a value of 0 or less there is no fanin reduction.

-r rin

Optional field to specify the input resistance value for the fanin reduction LOON synthesis, Default value is 10kΩ.

-t time_limit

Optional field to specify the time limit for a LOON synthesis before killing the process. Default value is 30s.

.buf_loon

File .buf_loon (the dot makes it a hidden file) is read to get values of max_fanin, rin and time_limit. Default values of 410kΩ and 30s can be overidden here. If a value is defined more than once, the last one is used. Optional command line arguments will overide values in the .buf_loon file.

Depends on

Alliance programs loon, flatlo, x2y and the value of environment variables $MBK_TARGET_LIB and $MBK_TARGET_LIB.

Bugs

A number of unwanted extra files could be left.

Operation

Script buf_loon is structured to accept the same arguments as LOON with additional parameters defined in hidden file .buf_loon or on the command line.

If opt level 0 is set in the LAX file then buf_loon is the same as loon.

If opt level 1 is set in the LAX file then buf_loon executes additional commands x2y and flatlo to remove any internal vectored nets and flatten the netlist (for macros which could have been instantiated by loon).

For opt level 2-4 the script

  • runs loon
  • checks the fanin
  • increases to rin the resistance on inputs with a fanin higher than max_fanin
  • reruns loon until the fanin is no more than max_fanin, or the fanin cannot be improved.

If loon crashes or locks up then the script is terminated and exits with status 1 for a crash and 2 for a lock up.

Download buf_loon
Example
./buf_loon -l loon_1500_300_2 fred mary

  • The script is in the working directory and run by prefixing it with ./ .
  • The LAX file is loon_1500_300_2. With this paper's naming convention, it means that the input resistance is 1.5kΩ, output load 300fF and opt level 2. An opt level of 2 means that buffer insertion will take place and the script will iterate LOON with new LAX files having rin on high fanin inputs to try to reduce the fanin. If the maximum fanin is already 4 or less, no iteration takes place and buf_loon is the same as loon.
  • The file to be optimised is fred.vst.
  • The optimised netlist is written to mary.vst.
  • An XSCH timing file is written to mary.xsc.
  • Standard output shows the LOON output used to write mary.vst
  • Standard error output shows intermediate values of delay and fanin.