Si2oaD/Quick Start
From oacwiki
The following steps can be used as a guide to get started with Si2oaD:
- Verify any prerequisites
- Download the latest oaD release (and any extra packages needed)
- Unpack the tarball[s]
- Check the package contents
- Check the environment
- Check configuration options
- Build the code
- Test the build
- Install the package
Contents |
1 Prerequisites
The batch version consists of straightforward C++ code and should build with any ANSI compiler.
- Si2oaD is built as a shared library: libsi2oadebug.so
- si2dis is the stand-alone executable that (dynamically) links with libsi2oadebug.so
The first versions of the code were built on Solaris 9. However, the lion's share of releases to date have been tested only on Linux with gdb, and WinXP with VisualStudio (.NET). Not every release has been tested on every platform combination listed in Table 1 (due to resource limitations). The fervent hope is that the various tool/OS mixes that have been used have shaken out almost all the cross-platform problems, at least within the universe covered by the table.
| OS | Compiler | Bits | Browser |
|---|---|---|---|
| SuSE 10 | gcc 4.1.0 | 32 | firefox 1.5.0.4 firefox 2.0 |
| SuSE 10.1 | gcc 4.1.0 | 64 | firefox 1.5.0.3 firefox 2.0 |
| SuSE 10.2 | gcc 4.1.2 | 64 | firefox 2.0.0.10 konqueror 3.5.5 |
| SuSE 10.3 | gcc 4.2.1 | 32 | firefox 3.0.1 seamonkey 1.1.9 |
| SuSE 11.3 | gcc 4.5.0 | 64 | firefox 3.6.2 |
| RH EL 30 | gcc 3.2.3 | 32 | mozilla 1.4 |
| RH EL 40 | gcc 3.4.3 | 32 | mozilla 1.7.7 |
| XP | VisualStudio 2003 | 32 | firefox 2.0 |
| XP | VisualStudio 2005 | 32 | firefox 2.0 mozilla 1.7.13 |
| XP sp2 | VisualStudio 9 (Free Express8) | 32 | firefox 2.0.0.16 |
1.1 Console Output
If linked in and called from within an application, any ANSI linker should work. However, the makefiles are set up to insert that lib into an executable to enable its use with a debugger using LD_PRELOAD, which may not be available on all platforms.
1.2 GUI Output
Using the GUI (browser) to view the output pulls in a bunch of other dependencies:
- A browser to display the either the
- raw XML output
- an HTML transform of that XML, which will require an XSL transformation engine, either:
- a browser that can perform native XSL transformation, or
- a separate, XSLT processor (like Xalan, available as a separate download from https://openeda.si2.org/project/showfiles.php?group_id=55#137)
- A decent amount of Javascript code using several DOM features (notoriously supported with varying consistency across browser implementations)
There is a wide variation in browser support at the level needed for this GUI display. Platform/browser combinations other than those shown above may also work with varying degrees of success.
1.3 Tcl
If the Tcl interface is needed,
- A pre-built (with SWIG) siioadtcl.cpp is included with the
- The siioadtcl.cpp interface module can be build directly from the siioadtcl.i file; however, an appropriate version of SWIG must be installed.
2 Download the Release Tarball(s)
Get the latest release from the Si2 project page for Si2oaD.
2.1 OA Release Compatibility
Each Si2oaD release ID is followed by the OA build ID (in parentheses) used to test it. An Si2oaD release should work OK with a couple (even a few) prior (minor) OA releases because as new Si2oaD versions are tested with new OA releases, recent OA API and behavioral changes are likely to be identified. These OA differences are addressed in the Si2oaD code with
- #ifdefs for model 4 changes, plus
- some run-time tests (against specific OA build IDs) in the code will avoid known OA problems in older releases.
A recent Si2oaD release might even work with a very old OA release, since these changes are cumulative; however, little effort is made to test each Si2oaD release against older OA builds. Also, there is little chance a model-4 Si2oaD would work at all with a model-3 OA package, primarly because no attention at all was given to backward compatibility in those days.
Feel free to report on this forum such problems you discover so more checks can be added to the code as it matures to improve backward compatibility.
Some Si2oaD releases have the OA build version with which they were tested in parenthesis after the release ID. But that has not been made consistent (yet).
Read the Release Notes for each Si2oaD Files entry list tested platform[s] details. If the Release Notes are missing the "tested with OA release #", then it is the same OA release used for the prior Si2oaD release.
2.2 Integrity Validation
Before unpacking, verify the integrity of the download by verifying the md5sum shown at the top of the Release Notes for that release.
$ md5sum si2dis-2010.09.02.tar.gz e6ce1759b9da83c28d2eaf723ebb34ed si2dis-2010.09.02.tar.gz
md5sum is a standard Linux utility (documented in the man pages) and also is available free in the GNU coreutils.
3 Unpack the Release Tarballs
3.1 Si2OoaD Code
The code release package is created on Linux
- for UNIX using tar, gzip
- for Windows using zip
The package name includes the packing date (YYYY.MM.DD). For example, to unpack the 1.10 release for Linux, the following commands would be used:
$ PATH2DEFS=`pwd` $ gunzip -c si2dis2010.09.02.tar.gz | tar xvf -
Call the directory into which this tarball was unzipped PATH2DEFS (i.e., the path to the makefile.defs common gmake component used by the subdirectories under it).
3.2 XSLT processor (OPTIONAL)
Si2oaD's raw output format is XML.
3.2.1 output
If the output option (4.1.4) is set to
- "console" – the output, unchanged, will be sent to stdout
- "gui" – the output will be opened in a browser. Without further option settings, that browser will display the same, raw XML output. Nevertheless, most modern browsers display XML with a couple of conveniences: Nested tags can have their content expanded/collapsed with a mouse click, remembering all nested internal expansion positions even as a parent tag is collapsed. Since the Si2oaD XML format maps the OA Object owner hierarchy to tag nesting, in a browser, even the raw XML can give a pretty good picture of the RTM at the point it was generated.
3.2.2 xsltype
Transforming the raw XML into HTML will add a significant amount of active content, making the result much more readable, especially as the volume of output gets larger. This is accomplished via XSLT either using
- the browser's native XSLT capability (a feature of Mozilla, Netscape, and other browsers)
- a stand-alone processor (useful for browser with XSL transformation engines that do not work properly)
The xsltype option selects which these two methods will be used, "processor" or "browser", respectively. If that option is "none" or if XSL transormation fails, the raw XML will be sent to the browser – which may still be better than console display since many browsers will add collapse/expand features to XML content automatically.
3.2.3 External XSLT Location
If the browser does not have XSLT capability then an external XSLT processor must be used. The following options must be set to tell Si2oaD how to access that code:
- xslexe defines the path to the XSLT processor executable
- xsllib defines the colon-separated paths to libs needed by the xslexe processor.
For example, the Xalan processor (and xerces XML parser) can be used for the transformation (8). A self-contained package of these tools is available for download separately from the Si2 OpenAccess Debug project area of the OpenEDA.org site. The following log illustrates unpacking these tools for use.
$ gunzip -c XML.tar.gz | tar xvf - XML/ XML/bin/ XML/bin/Xalan XML/lib/ XML/lib/libxalan-c.so XML/lib/libxalan-c.so.19 XML/lib/libxalan-c.so.19.0 XML/lib/libxalanMsg.so XML/lib/libxalanMsg.so.19 XML/lib/libxalanMsg.so.19.0 XML/lib/libxerces-c.so XML/lib/libxerces-c.so.26 XML/lib/libxerces-c.so.26.0 XML/lib/libxerces-depdom.so XML/lib/libxerces-depdom.so.26 XML/lib/libxerces-depdom.so.26.0 XML/Xalan.LICENSE XML/xerces.LICENSE
3.3 Example Testdata (OPTIONAL)
Near the bottom of the same OAC project page that has the OAD code download packages is a separate section of downloads called, [Example TestData]. This tarball includes several Lib directories of simple example data that can be used to try out OAD. A couple of the make targets are set up to use some of this Example TestData to validate the install. For example, the default settings in the Makefile for the INPUT make variable use the sample/ test data library. The llf target is used first to construct a lib.defs in . that points to the sample/ directory.
make llf make run make check
Unpack the exampleData.tar.gz into the PATH2DEFS install root (i.e., ../si2dis). It doesn't have to be located there; but if it is not, change the Makefile or manually edit the lib.defs to point where that sample/ directory ends up.
4 Check Package Contents
Change directory to the top of the release tree ($PATH2DEFS) and look at the contents.
$ cd $PATH2DEFS $ ls -F makedefs.gcc* purgeIDsFromOadOutput.sh* si2assert.h* si2distest/ makefile.defs* README.txt si2dis/
There should be
- A top-level README.txt file to help understanding of the build/install/run procedures.
- A few makefile components
- The main .si2dis/ directory which houses both the
- Si2oaD library code
- Stand-alone si2dis executable useful for batch display of a persistent design
- The si2distest/ directory containing testcases to practice the use of Si2oaD with linked executables that have various kinds of OA data
- The purgeIDsFromOadOutput.sh which is useful for cleaning things that always differ from run to run (e.g. the created time) from Si2oaD output files so that they can be more easily diff'd. (The si2dis/testrelease.sh script automatically runs this on the outputs before diff.)
4.1 si2dis/
The si2dis/ directory has the Si2oaD code in it:
$ cd si2dis $ ls -F abort.html si2logotrim.gif si2oadSortUniversal.cpp apiLinkTable.js si2oadCMapViewer.cpp si2oadutil.cpp Doxyfile si2oadcoll.h si2oadutil.h favicon.ico si2oad.cpp si2oadwin.h findUnimplementedClasses.sh* si2oad.css si2oadwww.cpp formatCfiles.el si2oadDataViewer.cpp si2oadwww.h LICENSE.html si2oadglob2.cpp si2oadxml.cpp LICENSE.txt si2oadglob.cpp si2oadxml.h Makefile si2oadglob.h si2oad.xsl od.sh* si2oad.h siioadtcl.cpp quit.html si2oadheader.js siioadtcl.h README.txt si2oadmutex.h siioadtcl.i regexChoices.html si2oadObserve.cpp snapshot.sh* regexError.html si2oadregex.cpp Solution/ si2dis.cpp si2oadregex.h status.html si2disErrObserver.cpp si2oadSortInfoType.cpp testrelease.gold si2disErrObserver.h si2oadSortLayer.cpp testreleaseguts.sh* si2dis.sh* si2oadSortName.cpp testrelease.sh* si2disutil.h si2oadSortOaTypeName.cpp
4.2 si2distest/
The si2distest/ directory has a few test cases that can help exercise Si2oaD:
Makefile* parasitics1.cpp* Solution/ test1.cpp* README.txt tcl1.tcl*
5 Check Environment and Configuration Options
5.1 Win XP Version
For information about building a WIN version of Si2oaD with VisualStudio, read the following files:
- 2005: si2dis/README.Win32.txt
- 2008 (free version): si2dis/VS2008/README_Win32_vc9.txt
Two additional components may need to be installed to take advantage of the full capability of the tool. Both can be downloaded either from their source sites or from the OpenEDA Redistributed Components page.
5.1.1 RemoteLib
The insertDLL code is used to inject the OAD libs into a process (in place of the LD_PRELOAD technique used on UNIX platforms). If not explicitly linking the OAD libs in with the executable (meaning that the .exe has a call to an OAD symbol that needs resolution), then this library (or equivalent) must be downloaded and unpacked in the si2dis/ directory.
5.1.2 GNU regex
For the free version of VS2008 (which does not come with ATL), the GNU regex library will also be needed (if regular expression filters are to be used with Si2oaD).
5.2 UNIX Version
Try running the environment test target in the si2dis/Makefile to get information about any files or make variable settings that might need attention:
$ cd ../si2dis; make envtest
The $PATH2DEFS/si2dis/Makefile expects that key settings are exported in from the environment.
Make Variable Default Description
Si2_ROOT_OA No default The absolute path to the OA install MUST be passed set for make.
Si2_OA_BIT 64
Si2_OA_MODE opt
Si2_PLATFORM If unset, $(Si2_ROOT_OA)/bin/sysname will guess it.
PREFIX $(PATH2DEFS) The path into which the Si2oaD code will be installed.
SKIPTCL 0 1 means skip the Tcl build/install parts. If SWIG is not installed
the supplied siioadtcl.cpp (SWIG output) may work. If Tcl is not
installed (or not wanted) set SKIPTCL=1.
Try the envtest again with some of these variables set to verify they fix many errors (using values appropriate for the current platform and install locations, of course):
$ make envtest Si2_ROOT_OA=/OpenAccess/p064 Si2_OA_BIT=32 Si2_OA_MODE=dbg
Edit makefile.defs to set custom values for a few other variables depending on need) in the CUSTOMIZE block near the top:
#__________________________________________ # # CUSTOMIZE #__________________________________________
The rest of the makefile.defs consists of settings derived from these key variables. For example, OA lib/ and bin/ locations are derived from the ROOT_OA location using these values:
DIR_INC_OA = $(ROOT_OA)/include/oa DIR_LIB_OA = $(ROOT_OA)/lib/$(PLATFORM)_$(OA_BIT)/$(OA_MODE) DIR_BIN_OA = $(ROOT_OA)/bin/$(PLATFORM)_$(OA_BIT)/$(OA_MODE)
Some engineers use a TCL_HOME (exported into make from the environment) to set automatically locations for the Tcl includes and libraries.
TCL_HOME = /usr/lang/tcl
Alternatively, individual variables can be set for
INCLUDES_TCL = TCLSH =/usr/bin/tclsh8.5 LIB_TCL =/usr/lib64/libtcl8.4.so
It is possible other changes may be needed near the top of that file for special situations. It may also be necessary to set the #include makedefs.* appropriate for the architecture and tools being used, as well as edit that file to account for other variations in the environment. On a 64 bit platform, the following setting is probably also necessary:
LIBDL = /lib64/libdl.so.2
The default settings create Si2oaD install bin/, lib/, and data directories in the package root ($PATH2DEFS). If desired, the installation directory can be changed by either modifying the PREFIX setting in makefile.defs or by overriding the PREFIX from the make command line:
PREFIX = /usr/local -or- make install PREFIX=/usr/local
5.3 OpenAccess Data Model 3 vs. Data Model 4
Beginning with OAD v1.4.2, support is available for both DM3 (226p052) and DM4 OA release versions, implemented in both,
- Source code ─ This should not require manual editing. The oacDataModelRevNumber is checked via #ifdef, skipping code if its value is 4.
- makefiles ─ These will require manual editing. Seach for “226” in both
- makefile.defs ─ To point paths to a 226 install and to activate the “D” suffix that was added to OA library names in DM3 releases.
- Makefiles in the si2dis/ and si2distest/ directories to point path settings to an OpenAccess version 2.2.6 installation.
6 Edit the .si2oadoptions File
The default option settings in the code are designed for limited console output only. Use of the GUI will require several environment-dependent settings. Copy an .si2oadoptions file into one of the following locations:
- the directory that will be the current working directory at the time the options are read
- $HOME (the second location tried in case no options file exists in the cwd)
Several key option settings should be evaluated and set
- to conform to the execution environment
- for easier start-up
- for faster execution
6.1 Environment Options
- browser – If you want to use a browser other than mozilla, specify your favorite browser, such as "firefox". If the browser is not in the PATH of the executing process, use a full path.
- xsltype – If the XML/ directory will not be installed, or if the browser is to be used to perform the XSL transformation from Si2oaD's XML output to HTML, then set this to "browser".
- oadoc – When the output option is set to "gui", OA class names appear as hyperlinks. Click on the link and the documentation for that class appears in a browser. Set oadoc to the URL or absolute path of the OA doc/oa/html/ documentation directory.
- xslexe – If xsltype was set to "processor", set this to the correct absolute path of the XSL processor, which could be the XML/ directory available as a companion download (2.2.2).
- xsllib – If xsltype was set to processor, set this to the correct absolute path of any shared objects needed by the XSL processor identified in option xslexe (2.2.2).
6.2 Start-Up Simplicity, Performance
- output – Begin with output set to "console". This will eliminate problems associated with browser configuration and the complexities of XMLHttpRequest communications. Once the basic setup for oad and the debugger has been perfected, change output to "gui" in order to display the database in a browser.
- maxcollentries - If output is "gui", and the test design is large, a huge amount of HTML (megabytes!) can be generated. This can take a long time to display, perhaps more than an hour, if the browser doesn't crash first! Setting maxcollentries to 1 limits the amount of data sent to the browser to small increments. The ... sentinel at the end of each Collection can then be clicked to access each successive item incrementally. If the entire data dump must be seen, consider leaving output set to "console". The resulting XML file can later be fed to a browser. If the program crashes, at least the XML file can be inspected with a text editor like emacs.
- maxownerlevels - The same advice given for maxcollentries applies to maxownerlevels.
- expandocc – Begin by setting expandocc to "f" to avoid a potentially large amount of Occurrence data from being automatically included in the output.
*loadnetworks – Begin by setting loadnetworks to "f" to avoid a potentially large amount of Parasitic data from being automatically included in the output.
There are also many other settings available in the .si2oadoptions file.
7 Build/Install the Code
7.1 Build
The code can be built in-place (where it was unpacked into $PATH2DEFS/si2dis) as follows:
$ make build Si2_ROOT_OA=/data/OA/p064 Si2_OA_BIT=32 Si2_OA_MODE=dbg
Setting a PREFIX will cause the various Si2oaD pieces to be installed at a desired root location, grouped together in a way that they can be located automatically at run-time. If not set, PREFIX defaults to the Si2oaD package install root (i.e., the directory parent of the si2dis/ and si2distest/ directories).
7.2 Install
The same hierarchical structure used for the OA tree has been copied for the Si2oaD install in order to
- Enable coexistence of multiple version combinations for executables and libraries involving
- PLATFORM
- NBITS
- MODE
- Simplify user understanding of the install layout by using the same scheme for
- bins, with executables for
- OA tools, like oa2lef, oa2spef, ...
- Si2oaD tools (si2dis)
- libs, for
- OA release link modules (liboaCommon.so, liboaBase.so, ...)
- Si2oaD modules (like libsi2oadebug.so, siioadtcl.so)
- bins, with executables for
- Leverage the same "platform-guessing" scheme provided by the OA release code in order to
- Reuse code many already know by heart
- Benefit from future upgrades, platform support "automatically" with new OA releases
Figure 1 illustrates the parallel nature of the OA and oaD install trees. ERRATA: In each of the 4 pairs of trees in Figure 1, one branch should be labelled: linux_rhel40_64.
The Si2oaD package can be installed into the OA install tree (along side the OA libs and translator executables) simply by setting PREFIX=OA_ROOT (assuming the installer has write permission into the OA tree).
For example, whether /tmp/oad exists already or not, the following install command will create the various install subdirectories as needed.
/home/si2dis> make install PREFIX=/tmp/oad
Install root for si2dis = /tmp/oad
Created script wrapper to run si2dis by embedding path defs in si2dis.csh
Created script wrapper to run si2dis by embedding path defs in si2dis.sh
...Making wrapper scripts for si2dis
make[1]: Entering directory `/home/labs/si2dis'
make[1]: Leaving directory `/home/labs/si2dis'
...Installing si2dis and its script wrappers in /tmp/oad/bin
...Installing libsi2oadebug.so in /tmp/oad/lib/si2dis
...Installing DLLs in /tmp/oad/lib/si2dis:
si2oadDataViewer.so
si2oadCMapViewer.so
si2oadObserve.so
si2oadSortName.so
si2oadSortInfoType.so
si2oadSortOaTypeName.so
si2oadSortUniversal.so
...Installing docroot files in /tmp/oad/etc/si2dis:
si2logotrim.gif
si2oad.xsl
si2oad.css
apiLinkTable.js
si2oadheader.js
favicon.ico
regexChoices.html
regexError.html
quit.html
...Installing si2oadtcl.so in /tmp/oad/lib/si2dis
cp si2oadtcl.so /tmp/oad/lib/si2dis
The resulting oad pieces are grouped as follows:
../lib/linux_rhel40_32/dbg: libsi2dff.so si2oadDataViewer.so si2oadSortName.so libsi2oadebug.so si2oadObserve.so si2oadSortOaTypeName.so libsi2obs.so si2oadSortInfoType.so si2oadSortUniversal.so si2oadCMapViewer.so si2oadSortLayer.so siioadtcl.so
../lib/linux_rhel40_32/opt: libsi2dff.so si2oadCMapViewer.so si2oadSortLayer.so siioadtcl.so libsi2oadebug.so si2oadDataViewer.so si2oadSortName.so libsi2obs.so si2oadObserve.so si2oadSortOaTypeName.so libsi2pcplugin.so si2oadSortInfoType.so si2oadSortUniversal.so
../lib/linux_rhel40_64/opt: ... ...
../bin/linux_rhel40_32/dbg: si2dis
../bin/linux_rhel40_32/opt: si2dis
../bin/linux_rhel40_64: ... ...
7.3 Uninstall the Code
The cleaninstall target will remove the various oad pieces from their PREFIX root install locations:
make uninstall PREFIX=....
8 Test the Build
8.1 Automated Test Script
An automated test script, testrelease.sh, is included in the si2dis/ directory of the tarball. It is one way to test the release package. NOTE: This script requires the example test data package.
The testrelease.sh script expects as an argument the path to the directory where the downloaded tarball is located (default is /tmp). The script will unpack that tarball into a similarly named directory created where the tarball is.
$ testrelease.sh $DIRparentOFtarball
This script illustrates running the tool with various make configurations and testcases. The output can then be compared against the file, testrelease.gold, to verify the code is working as expected. Since many details (including console prompts, dates, hexadecimal address values, parasitic file identifiers, timestamps, etc.) will likely be different for various install configurations and platforms, an exact diff is not possible. But except for those details, a test run should surface any major problems with the release or its installation. The script will automatically diff the output against a testrelease.gold file as a measure of how well the environment and configuration options are set up, as well as the integrity of the downloaded package.
8.2 Manual Test
Try a simple test of the stand-alone si2dis to display a persistent design.
8.2.1 Make and Run the Code
Use the run target to kick off the stand-alone si2dis tool that has the Si2oaD libraries explicitly linked in and calls oad() directly inside the code. The testrelease.gold file included with the release shows several run examples and their outputs. The simplest, using command-line arguments specified by the INPUT make variable in the si2dis/Makefile, is:
$ make run
Note, in the default .si2oadoptions file, option output is set to "console", which will cause the output to appear on the console and be copied to si2dis.out which can be diff'd against the file, gold.sample.out. To avoid console output (which could be voluminous), the makefile.defs "run", "gdb", or "oad" targets can be edited to convert the pipe to the tee program into a simple redirect to an output file name. For large XML output, the tee can be overridden as follows:
$ make run TEE2FILE="" ...send to console only' $ make run TEE2FILE=">file.txt" ...send to file.txt only'
8.3 Try Other Test Data
Run the same si2dis stand-alone tool on a larger library. First change option output in the .si2oadoptions to be "gui" (this would be an excessive amount of output to send to the console):
$ sed 's/^output .*/output gui/' .si2oadoptions >.si2oadoptions-gui $ cp .si2oadoptions-gui .si2oadoptions
Create a lib.defs file because this design requires definitions for a Tech in a different Lib but only one Lib mapping can be specified on the command line for si2dis:
$ echo DEFINE techLib ../mdparies/LibDirTech >lib.defs $ echo DEFINE mdparies ../mdparies/LibDir >>lib.defs
Now run the tool specifying the Lib, Cell, and View names to be displayed:
$ make run INPUT="deflib mdp_aries layout"
8.4 Try the GUI
Set the option, output=gui, and then run the tool. Make sure the browser option is set to an executable in the PATH (or includes an absolute path).
If XSL runs successfully (whether via xsl=processor or xsl=browser) to convert the XML to HTML, then there are many active sites on the screen. Unfortunately, to reduce HTML volume for performance reasons, few of these are marked individually with tags; hence, automatic change of the cursor to a “hand” via CSS is impossible. Becoming familiar with the kinds of things are active HTML will be necessary for effective use of the GUI.
9 Debug a Fully-Linked Executable
While the si2dis/si2dis.cpp program has a call to an oad() function embedded in its source code, the si2distest directory has a couple of testcase "nano-apps" that illustrate running Si2oaD with a fully-linked application. Although the Makefile in that directory actually builds a testcase from source, it is then linked with the OAD code at run-time, showing how this can be accomplished with a commercial tool for which source (or even unlinked objects) may not be available.
9.1 Parasitics1
The si2distest/parasitics1.cpp testcase illustrates some parasitics model data, as well as the on-demand binding support of the GUI.
Search for the first pnChild1−>unload() call; say it is at line 181. Run the testcase as follows, getting to that call and stepping past it to cause the Network to be unloaded from RTM:
make oad TEST=parasitics1 o break 181 c n call oad()
In the GUI, open up the model to the “pnRoot” Network.
Session
libs
oaLib
designs
oaDesign name=LibDetPara=FullAdder=routed
oaBlock
nets
oaScalarNet name=netRoot
parasiticNetworks
oaParasiticNetwork name=pnRoot
partitions
The “childPN2” and “childPN0” partitions are loaded already in the RTM (as can be seen by the isLoaded=t attributes, as well as the+ on the entry indicating that there is data to be expanded in the entry).
+oaParasiticNetwork name=childPN2 ... isLoaded=t ... oaParasiticNetwork name=childPN1 ... parents=pnRoot ... pn=LOAD +oaParasiticNetwork name=childPN0 ... isLoaded=t ....
However, the “childPN1” partition has no data to expand, but instead has LOAD sentinel at the end of its attribute list (the isLoaded attribute is not displaying because it is false and the .si2oadoptions file has dofalseBools=f). This ParasiticNetwork is unloaded because the pnChild1−>unload() statement in the code was just executed prior to the call to oad().
Click in the LOAD sentinel and click the OK button on the confirmation. This will cause loading of that ParasiticNetwork partition and its display in a separate browser window.
Open the ParasiticNetwork in the new window, and its partitions. Notice that the only the parent ParasiticNetwork was loaded: its two child partitions remain unloaded, but also can be dynamically loaded by clicking their LOAD sentinels.
-oaParasiticNetwork name=childPN1... -partitions oaParasiticNetwork name=childPN1b...parents=childPN1|pnRoot...pn=LOAD oaParasiticNetwork name=childPN1a...parents=childPN1|pnRoot...pn=LOAD
Click the RETURN TO CONSOLE button, kill the browser windows. Repeat the steps 1 and 2, above. The childPN1 partition is once again unloaded, since OAD automatically unloads any Networks dynamically loaded in this fashion once a return to to the console is performed, leaving the RTM in its original state.


