Background
A digital signal (such as "power good") coming from analog cell should have enough drive strength for the receivers (might be scattered throughout many other cells).
Prerequisites
To use Fanout, or call fanout functions, you must have:
- Power and Ground rails defined.
- Per-unit Device Parameters for MOSFETs: Default Length, Cg, Cedge.
- Circuit fully loaded and all flow indicators set to Green (no "trouble" in setup).
- Logic subgraph identification complete (this is part of having all flow indicators Green, without "trouble").
Option 1: Built-in Fanout Checks
The built-in checks for Fanout are done only on signals that are recognized to be digital in some way; Having either a CMOS driver or CMOS receiver. If you run on a full chip, the Fanout checks will avoid signals that are not somehow CMOS, thereby skipping cases that would lead to false positives (such as analog). To be clear: An analog cell that has an inverter inside it will not be completely skipped. The inverter signals will be checked for fanout rules.
Find the built-in checks for drive strength under "Fanout". To run the built-in checks for drive strength, the Application type should be set to "Digital". If it is not, you may still run the Fanout ERC scan through a script command ('plugin run Fanout'), but your end user won't be able to run or set options from the GUI. The Application type must be set to "Digital" if you want the GUI to control the Fanout ERC scan.
Set a relaxed threshold of fanout, since this application assumes you want to find only severe violations (not performance-oriented). A typical threshold for performance-oriented logic might be 6.0, while a more relaxed threshold might be 15.0 (ratio of 1:15 drive:load).
Run the Fanout ERC scan. Sort the results table either by Value (fanout value, with higher numbers indicating worse violations), or by cell or net name.
Option 2: Custom Procedure
If you are not satisfied with the built-in fanout checks, you may write a custom iterator to check fanout only on nets of your choosing. To accomplish this, you will call the command 'cdb net $n getFanout'.
Here's an example:
cscan nets { if {[ cdb net %n isLogic ]} { puts "%n [ cdb net %n getFanout ]" } }