The Source Blocks specify an input file or CHD, and provide directives
that are active when the source is read. The Source Block may contain
Placement Blocks, which identify individual cells or cell hierarchies
to be read.

The same file might be used in more than one Source Block, if the
directives, such as cell name modification, are different in the two
blocks.

The Source Blocks start with the following keyword:

Sourcefilename(option: -ifilename)
This line or option represents the start of a Source Block for the
given input file. The file must be in one of the supported archive
formats, and the format is recognized automatically, so there is no
name suffix requirement as with the output file name.

The absence of any Placement Blocks defined in the Source Block
implies that all cells found in the file will be read.

The filename can also be the access name of a CHD which already
exists in memory. In this case, the CHD is used for access, and cell
names given in Placement Blocks must include any cell name mapping
which is used in the CHD.

Further, the filename can be that of a CHD saved to disk, such a
with the Save button in the Cell Hierarchy Digests panel.
In this case, the CHD will be read into memory, and used as the
source.

In any case where a Source Block contains a Placement Block, a
temporary CHD will be created anyway if one is not given, so
explicitly naming the CHD may save time/space in some cases.

In cases where a CHD is named, but no Placement Blocks are given, the
hierarchy of the CHD's default cell will be streamed. The default
cell is the first top-level cell found in the file, or can be
configured into the CHD.

The Source Blocks can be terminated with:

EndSource(option: -i-)
This optional keyword or option terminates the present Source Block.
Lines or text tokens that follow, up to another Source keyword
or -i option, are taken in the context of the Header Block.
Thus, directives can be set, modified, or reset between Source Blocks,
and will remain in force (in the Header Block context) until reset or
modified between subsequent Source Blocks. This keyword is optional,
as it is implicit if another Source line or -i option is
given. It is required only if one wishes to change the directives in
the Header context for subsequent Source Blocks.

Within the Source Block, one may find Placement Blocks, Source Block
directives, and Placement Block directives.