-SCS Parameter Analyzer Reference Manual Section 8:
Keithley User Library Tool (KULT)
4200A-901-01 Rev. C / February 2017 8-55
Structuring dependencies hierarchically
You can avoid user library circular dependency by calling user libraries in a hierarchical design, as
illustrated in "Hierarchical design for user-library dependencies" below.
Observe the following:
• Design lower-level user modules in the calling hierarchy so that they do not require support from
higher-level modules. That is, lower-level user modules should not require calls to higher-level
modules to perform their required tasks.
• Use several general-purpose low-level-library user modules to do a task rather than a single, do-
all, higher-level-library user module.
You may find it helpful to prefix user modules with the user-library name as an identifier, for example,
liba_ModuleName for user modules in liba. This avoids duplicate user module names and
prevents confusion with similarly named modules that are in other user libraries and source files.
When you execute the File > Copy Library command, KULT automatically appends the user library
name to each user module in the new user library name. KULT also appends the library name, as a
suggestion, when you execute the File > Copy Module command.
In the following table, the series of coded user modules amplifies the hierarchical dependencies
shown in the following figure.
Coded user modules illustrating the use of hierarchical user library dependencies
Hierarchy
level
User-library
name
User-module
name User-module code
{
printf("In liba, calling CalledA1()\n");
CalledA1();
{
printf("In liba1, calling CalledA2()\n");
CalledA2();
{
printf("In liba2, calling CalledA3()\n");
CalledA3();
{
printf("In liba3, making no calls()\n");