Model 4200A-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
0
liba
Test
void Test(void)
{
printf("In liba, calling CalledA1()\n");
CalledA1();
}
1
liba1
CalledA1
void CalledA1(void)
{
printf("In liba1, calling CalledA2()\n");
CalledA2();
}
2
liba2
CalledA2
void CalledA2(void)
{
printf("In liba2, calling CalledA3()\n");
CalledA3();
}
3
liba3
CalledA3
void CalledA3(void)
{
printf("In liba3, making no calls()\n");
}