vlsitechnology.org /2LM sclib /synthesis /loon macros |
Using Logic Macros in LOON |
Chapter
Section
The macro VBE files are added to the directory MBK_TARGET_LIB. LOON will use all the VBE files in MBK_TARGET_LIB for its synthesis optimisation. The VST files are put on the search path defined by MBK_CATA_LIB. For this example, MBK_CATA_LIB is
$ echo $MBK_CATA_LIB .:$ALLIANCE_MOS/vbe/sclib100_0\ :$ALLIANCE_MOS/vbe/sclib_netlist |
When LOON reads a netlist, it is flattened through to the catalog. If the macro is not in the catalog, then it will be flattened to its netlist.
By catalog, we mean the cells listed in the file pointed to by MBK_CATA_NAME and on the search path MBK_CATA_LIB.
$ echo $MBK_CATAL_NAME CATAL $ ls $ALLIANCE_MOS/vbe/sclib100_0 | grep "$MBK_CATAL_NAME" CATAL |
The default name is CATAL, and the file used is the one supplied with the library (which doesn't contain any macros). This means that successive LOON runs are able to use the macro and then flatten it to its real underlying cells.
I have created ten macros for this paper. If we label as x2 the drive strength of a full size unfolded inverter, then the composition and drive strengths of the macros are
|
It is possible to create as many as you want, but the process is slow and manual. I found two of the macros were not used in the netlist synthesis: the 2-OR and 2-XNOR.
The principle is for every weak cell to have a stronger macro available which will have a higher Prop delay and lower Ramp delay. If the weak cell drives a high load, at some point the Ramp delay is sufficiently large for the macro to be selected.
We synthesise the 2-step and 3-step flows across the whole range of BOOG and LOON opt levels and compare to the results without macros, using the results from the best BOOG synthesis directory.
The critical path of the fastest netlist is shown below. Many of these cells are macros which have been flattened into their netlists. They can generally be recognised by their instance name which ends with "_f" or "_t". | |
|
If instead of flattening the macros we add their names to the catalog file, then we can view the critical path with the macros included. The buffer insertion by LOON is slightly different which gives a slightly different timing, but we can see how many macros occur along the critical path. | |
|
1 $ ALLIANCE_VBE=$ALLIANCE_MOS/vbe 2 $ MBK_TARGET_LIB=$ALLIANCE_VBE/sclib100_0_min_x8 3 $ boog -l loon_0000_300_4 multi8 multi8_o 4 $ MBK_TARGET_LIB=$ALLIANCE_VBE/sclib100_0 5 $ loon -l loon_0000_300_4 multi8_o multi8_1 6 $ loon -l loon_1500_300_0 multi8_1 multi8 |
The critical path delays are shown below. The fastest result of 18361 is obtained from a BOOG synthesis using the x8 drive inverter, ndrvp_y.
Critical Path Delay (ps) | |||||
---|---|---|---|---|---|
Opt level | BOOG | colour coding | |||
LOON | 0 | 1 | 2 | 4 | |
0 | 28715 | 27701 | 27911 | 20793 | n1 |
1 | 25981 | 25696 | 25678 | 20451 | np1 |
2 | 23539 | 23064 | 23015 | 18817 | ndrv |
4 | 23524 | 22607 | 23257 | 18361 | ndrvp |
The difference the macros make to the critical path delays is shown below.
Critical Path Delay Differences (ps) | ||||
---|---|---|---|---|
Opt level | BOOG | |||
LOON | 0 | 1 | 2 | 4 |
0 | 0 | 0 | 0 | −1604 |
1 | −2132 | −1447 | −1465 | −1590 |
2 | −249 | −651 | −682 | −1197 |
4 | −889 | −302 | −432 | −1814 |
There is no change in netlists from BOOG with opt levels 0-2 and LOON with opt level 0 because BOOG does not select the cryb_y non-inverting carry macro and LOON does not select any macros because they are larger. Otherwise BOOG and LOON macros allow a general critical path speed-up.
1 $ ALLIANCE_VBE=$ALLIANCE_MOS/vbe 2 $ MBK_TARGET_LIB=$ALLIANCE_VBE/sclib100_0_min_x8 3 $ boog -l loon_0000_300_4 multi8 multi8_o 4 $ MBK_TARGET_LIB=$ALLIANCE_VBE/sclib100_0 5 $ loon -l loon_1500_300_2 multi8_o multi8 |
The critical path delays are shown below. The fastest result of 18119 is obtained from a BOOG synthesis using the x8 drive inverter, ndrvp_y, and is 12ps faster than a synthesis using only the BOOG macro cryb_y.
Critical Path Delay (ps) | |||||
---|---|---|---|---|---|
Opt level | BOOG | colour coding | |||
LOON | 0 | 1 | 2 | 4 | |
0 | 28715 | 27701 | 27911 | 20793 | n1 |
1 | 25981 | 25671 | 25678 | 20451 | np1 |
2 | 23790 | 22637 | 22643 | 18119 | ndrv |
4 | 23353 | 22515 | 23005 | 18239 | ndrvp |
The difference in the critical paths from the presence of the macros is shown below.
Critical Path Delay Differences (ps) | ||||
---|---|---|---|---|
Opt level | BOOG | |||
LOON | 0 | 1 | 2 | 4 |
0 | 0 | 0 | 0 | −1604 |
1 | −2132 | −1472 | −1674 | −1604 |
2 | −303 | −1493 | −1132 | −1635 |
4 | −455 | −939 | −217 | −1585 |