Using Compressed Files
DSim supports "transparent" compression: in certain contexts it will compress/decompress files on the fly.
The following types of compression are supported:
The compression/decompression is performed by launching the compression program in a child process. On a multi-core machine, the compression or decompression happens in parallel with model execution.
This requires that the compression program be installed. Due to patent issues,
compress is typically not installed on many systems.
The patents have expired, but
compress is still rarely found since it has the worst performance of all the compressors.
Rules for Reading Files
If the filename being opened has a primary extension denoting compression, then the file is opened and decompressed.
If the filename being opened does not have a primary extension denoting compression and does not exist, but a file of the same name, plus an applicable extension exists, then that file will be opened and decompressed. e.g. if
gates.vg does not exist, but
gates.vg.gz does, then the latter will be opened and decompressed.
If the primary extension denotes a compression type, the secondary extension can be used to identify the intended language of the file. If no compression is specified, then the primary extension can be used to identify the intended language. Although the intended language can be explicitly specified using the Common Options.
See Input Filename Examples to see different combinations of extensions to indicate file type as well as compression types.
Rules for Writing Files
If the filename being opened has a primary extension denoting compression, then the file is opened and compressed.
If the filename being opened does not have a primary extension denoting compression, then the file is opened and written uncompressed. The existence of file(s) with a similar name does not alter behavior.
If a file being opened for read does not exist, but there are multiple compressed versions using different compressors, then it is not defined which one will be opened.
Files opened using
$open using transparent compression will not support
$fseek - you cannot seek on a compressed file, at least not easily.
Transparent compression is supported for the following operations:
- Compile: reading in source files: either off the command line, or using include, or during library (
- VCD waveform dump. Note that GTKWave can read in
- System calls (
- Reading SDF files.