Manuals >User's Guide >Managing Data
Print version of this Book (PDF file)
prevnext

MDM File Structure

The MDM file format provides the following advantages:

    • ASCII based
    • Table-based, row-column format with column header lines that make reading easy—includes a list of the inner-most independent variables.
    • All data tables have identical shape. A header at the top of the file provides an outline of all the data in the file. After the header has been parsed, the location of any data group can be computed quickly, permitting rapid location of arbitrary data groups scattered throughout the file. Comment lines are denoted by the exclamation character (!). The file extension for the data files is .mdm (measured data management).

File Header Format

The file header contains all the relevant information about the inputs sweeps as well as a listing of all the outputs. The header information begins with the BEGIN_HEADER keyword and ends with the END_HEADER keyword. The header information is contained in one of four separate sections: ICCAP_INPUTS, ICCAP_OUTPUTS, USER_INPUTS, and ICCAP_VALUES. The ICCAP_INPUTS and ICCAP_OUTPUTS sections contain information that would be contained in an IC-CAP setup. These portions of the header are mandatory. The optional USER_INPUTS section contains sweep information on variables that can't be swept in a traditional IC-CAP setup (such as, Length, Width and Temperature). The optional ICCAP_VALUES section contains parameter and variable data. When IC-CAP reads the MDM file, the parameter or variable values are reset to the value in the file. If the parameter or variable does not exist, IC-CAP creates a variable by that name in the setup where the file is being read. The header structure is as follows:

 BEGIN_HEADER
   USER_INPUTS
      <user_input_name_1> <sweep_type> [<sweep_type_options_list>]
      .
      .
      <user_input_name_n> <sweep_type> [<sweep_type_options_list>]  
   ICCAP_INPUTS
      <input_name_1> <mode> [<mode_options_list>] <sweep_type> [<sweep_type_options_list>]
      .
      .
      <input_name_m> <mode> [<mode_options_list>] <sweep_type> [<sweep_type_options_list>]
   ICCAP_OUTPUTS
      <output_name_1> <mode> [<mode_options_list>] <unit> <compliance> <type>
      .
      .
      <output_name_p> <mode> [<mode_options_list>] <unit> <compliance> <type>
   ICCAP_VALUES
    <value_name_1> <value_1>
    .
    .
    <value_name_q> <value_q>
END_HEADER

where,

<input_name> is a unique but arbitrary name for a user sweep or an IC-CAP sweep

<mode> is set to one of the following values: V, I, F, T, P, U, W (inputs) or V, I, C, G, T, S, H, Z, Y, K, A (outputs)

<mode_options_list> is a list of fields that depend on the <mode>. The following shows the fields for each <mode>:

Table 55 <mode_options_list> 
<mode>
Fields
Inputs
 
  V, U
<+ Node><- Node> <Unit> <Compliance>
  I
<To Node><From Node> <Unit> <Compliance>
  P
<Param Name><Unit>
  W
<+ Node><- Node> <dBm(d)/Watts(W)> <Resistance> <Fund> <Unit> <Compliance>
  F, T
(no options)
Outputs
 
  V, N, U
<+ Node><- Node>
  I
<To Node><From Node>
  C, G
<High Node><Low Node>
  T
<Node><Pulse Param>
  S, H, Z, K, A, Y
<Port 1><Port 2><AC Ground>

<sweep_type> is set to one of the following IC-CAP sweeps: LIN, LOG, SYNC, LIST, CON, AC, HB, EXP, PULSE, PWL, SFFM, SIN, TDR, SEG

<sweep_options_list> is a list of fields that depend on the <sweep_type>. The following shows the fields for each <sweep_type>:

Table 56 <sweep_options_list> 
<sweep_type>
Fields
LIN
<sweep order> <start> <stop> <number of points> <step size>
LOG
<sweep order> <start> <stop> <number of points> <sweep scale (D or O)> <total number of points>
SYNC
<ratio> <offset> <master sweep>
LIST
<sweep order> <n = number of values> <value1> <value2> … <valueN>
CON
<value>
AC
<magnitude> <phase>
HB
<sweep order> <value> <order>
EXP
<initial value> <pulsed value> <rise delay> <rise const> <fall delay> <fall const>
PULSE
<initial value> <pulsed value> <delay time> <rise time> <fall time> <pulse width> <period>
PWL
<number of pairs> <time 1> <value 1> ... <time 7> <value 7> <start time> <repeat times>
SFFM
<offset> <amplitude> <carrier frequency> <modul index> <signal frequency>
SIN
<offset v> <amplitude> <frequency> <delay time> <damp factor> <phase>
TDR
<initial value> <pulsed value> <delay time> <rise time> <fall time> <pulse width> <period> <resistance>
SEG
<sweep order> <number of segments> <number of points> <value 1> ... <value 10>

<unit> is set to the IC-CAP instrument unit associated with the output (use DEFAULT for unspecified)

<compliance> is the compliance limit for the output (use DEFAULT for unspecified)

<type> is a single character—M, S, or B. M indicates that the output, if created from an MDM file, is for measured data only. S indicates simulated data only and B indicates either.

The data in the ICCAP_OUTPUTS block is restricted to data that can exist in a single IC-CAP setup. For example, since forward and reverse gummel DC measurements on a bipolar device are measured with different sweeps, the file headers for each of these would be incompatible. In order to make all the data within a file importable into a standard IC-CAP setup, two separate files (one for each setup) would be required to store this data.

File Data Format

The data within a file is organized into multiple groups of tabular data. Each group of tabular data is arranged in columns representing the innermost sweep data and its associated dependent data. The innermost sweep is always the first column. Any inputs with SYNC sweep type and with the innermost sweep as its master are listed next. Dependent data may be either real or complex, depending on the following rules:

    • C, G, and T output modes are always real—therefore require only 1 column.
    • TwoPort (S, H, Z, Y, K, or A) output modes are always 2-port complex—therefore require 8 columns.
    • V and I output modes depend on the sweep types of the inputs specified in the setup. If any of the inputs in a setup have sweep type AC or HB, V and I output modes require 2 columns—one for real and one for imaginary data. For all other setups, V and I output modes require a single real column.
    • Any output mode not covered in the preceding rules have 2 columns for complex data.

For real data, the tabular data is structured as follows:

 <input_name> <output_name 1> <output_name 2> … 
<output_name n> input1 (output 1) 1 (output 2) 1 … 
(output n) 1 
.
.
.
inputm (output 1) m (output 2) m … (output n) m

For matrix data (such as, multiport data), the data format for a single output is structured as follows:

 <in_name> R:<out_name>(1,1) I:<out_name>(1,1) … 
   R:<out_name>(n,m) I:<out_name>(n,m)
input1 real(output 1,1)1 imag(output 1,1) 
   1 … real(output n,m) 1 imag(output n,m) 1
.
.
.
inputk real(output 1,1) k imag(output 1,1) 
   k … real(output n,m) k imag(output n,m) k

Each group of tabular data is preceded by a list of each remaining input name (i.e., all inputs except the innermost sweep) and its current value for the data group in question. Each group begins with the keyword BEGIN_DB and ends with the END_DB keyword. Note that the IC-CAP inputs always vary faster than the user inputs. The file structure of each group is as follows:

 BEGIN_DB
<user_input_1> <user_value_1> … <user_input_n>
<user_value_n> <iccap_input_2> <iccap_value_2> …
<iccap_input_m> <iccap_value_m>
[tabular data goes here]
END_DB

Since the import function in IC-CAP determines the size of the dataset from the header information alone, the data following the header must be consistent with the description in the header. After parsing the header, IC-CAP knows exactly how many data blocks should be contained in the file, as well as the number of lines occupied by a single data block. If any data blocks are missing, or if the number of lines within a data block are inconsistent with the header, the data import fails.

File Examples

This section contains three example .mdm files that were generated with IC-CAP's export functions.

Example 1: Forward Gummel Data

The Forward Gummel Data example (code listing below) shows how some forward Gummel data can be stored in an .mdm file. In this example, the variables vb and Temp are being swept. The variable vb is the inner most (fastest varying) sweep. Since vc is synchronized to vb, the values of vc must appear in each data block. The actual ordering of the sweeps within the USER_INPUTS, ICCAP_INPUTS or ICCAP_OUTPUTS block, as well as the ordering of the variables in the secondary header (USER_VAR, ICCAP_VAR), is immaterial.

Figure 42 Example: Forward Gummel Data 
 ! VERSION = 6.00
BEGIN_HEADER
 ICCAP_INPUTS
  vb    V  B GROUND SMU1 0.01 LIN  1 0.33 0.83 51 0.01
  ve    V  E GROUND GND  0.1  CON  0
  vc    V  C GROUND SMU2 0.2  SYNC 1 0 vb
 ICCAP_OUTPUTS
  ib    I  B GROUND SMU1 B
  ic    I  C GROUND SMU2 B
END_HEADER

BEGIN_DB
 ICCAP_VAR ve  0

 #vb      vc      ib              ic
  0.33    0.33    4.87574e-011    4.67239e-010
  0.34    0.34    5.77546e-011    6.85381e-010
  0.35    0.35    6.86361e-011    1.00538e-009
  0.36    0.36    8.18976e-011    1.47476e-009
  0.37    0.37    9.82047e-011    2.16325e-009
  0.38    0.38    1.18461e-010    3.17307e-009
  0.39    0.39    1.4391e-010     4.65412e-009
  0.4     0.4     1.76281e-010    6.82619e-009
  0.41    0.41    2.18003e-010    1.00115e-008
  0.42    0.42    2.72518e-010    1.46826e-008
  0.43    0.43    3.44737e-010    2.15321e-008
  0.44    0.44    4.41716e-010    3.15754e-008
  0.45    0.45    5.73646e-010    4.63009e-008
  0.46    0.46    7.55304e-010    6.78903e-008
  0.47    0.47    1.0082e-009     9.95413e-008
  0.48    0.48    1.36373e-009    1.45941e-007
  0.49    0.49    1.86784e-009    2.13956e-007
  0.5     0.5     2.58788e-009    3.13654e-007
  0.51    0.51    3.62273e-009    4.59782e-007
  0.52    0.52    5.11772e-009    6.7395e-007
  0.53    0.53    7.28674e-009    9.87821e-007
  0.54    0.54    1.04447e-008    1.44778e-006
  0.55    0.55    1.50555e-008    2.12177e-006
  0.56    0.56    2.18032e-008    3.10934e-006
  0.57    0.57    3.16961e-008    4.55624e-006
  0.58    0.58    4.62218e-008    6.67595e-006
  0.59    0.59    6.75746e-008    9.78105e-006
  0.6     0.6     9.89915e-008    1.43291e-005
  0.61    0.61    1.45248e-007    2.09898e-005
  0.62    0.62    2.1339e-007     3.07431e-005
  0.63    0.63    3.13803e-007    4.50218e-005
  0.64    0.64    4.61803e-007    6.59204e-005
  0.65    0.65    6.79941e-007    9.64972e-005
  0.66    0.66    1.0014e-006     0.000141213
  0.67    0.67    1.47494e-006    0.000206561
  0.68    0.68    2.17197e-006    0.000301974
  0.69    0.69    3.19683e-006    0.000441095
  0.7     0.7     4.70103e-006    0.000643565
  0.71    0.71    6.9031e-006     0.00093743
  0.72    0.72    1.01148e-005    0.00136231
  0.73    0.73    1.47739e-005    0.00197331
  0.74    0.74    2.14824e-005    0.00284535
   0.75    0.75    3.10425e-005    0.00407717
  0.76    0.76    4.44792e-005    0.00579344
  0.77    0.77    6.30296e-005    0.0081425
  0.78    0.78    8.80775e-005    0.0112877
  0.79    0.79    0.000121025     0.015391
  0.8     0.8     0.000163119     0.0205921
  0.81    0.81    0.000215278     0.0269887
  0.82    0.82    0.000277987     0.0346245
  0.83    0.83    0.000351277     0.0434891
END_DB

Example 2: Saving Transformed Data

The Saving Transformed Data example (code listing below) shows how some forward Gummel data can be stored along with additional data beta, which has been computed from the measured data. Since the beta data has been computed rather than measured, information such as node connections is not relevant. The IC-CAP import functions accept outputs in the ICCAP_OUTPUTS block in the abbreviated form shown in the example for beta, as well as in the standard form for measured quantities, such as ib and ic. In order to differentiate between real data (such as, current, voltage, and capacitance) and 2-port data (such as, s-parameters) non-measured quantities must have one of two mode types listed after the variable name:

    • Real quantities should use V as the generic real data mode type.
    • Two-port quantities should use S as the generic 2-port mode type.

Figure 43 Example: Saving Transformed Data
 ! VERSION = 6.00
BEGIN_HEADER
 ICCAP_INPUTS
  vb      V  B GROUND SMU1 0.01 LIN    1    0.3    0.8    51    0.01
  ve      V  E GROUND GND 0.1 CON      0
  vc      V  C GROUND SMU2 0.2 SYNC    1 0 vb
 ICCAP_OUTPUTS
  ib      I  B GROUND SMU1 B
  ic      I  C GROUND SMU2 B
  beta    U
END_HEADER

BEGIN_DB
 ICCAP_VAR ve    0
 
  vb      vc      ib              ic              R:beta(1,1)    I:beta(1,1)
  0.3     0.3     2.97359e-011    1.48082e-010    4.9799         0
  0.31    0.31    3.50033e-011    2.17173e-010    6.20438        0
  0.32    0.32    4.12693e-011    3.18536e-010    7.71848        0
  0.33    0.33    4.87574e-011    4.67239e-010    9.58294        0
  0.34    0.34    5.77546e-011    6.85381e-010    11.8671        0
  0.35    0.35    6.8636e-011     1.00538e-009    14.648         0
.
.
.
  0.73    0.73    1.47739e-005    0.00197331      133.567        0
  0.74    0.74    2.14824e-005    0.00284535      132.45         0
  0.75    0.75    3.10425e-005    0.00407717      131.342        0
  0.76    0.76    4.44792e-005    0.00579344      130.25         0
  0.77    0.77    6.30296e-005    0.0081425       129.185        0
  0.78    0.78    8.80775e-005    0.0112877       128.156        0
  0.79    0.79    0.000121025     0.015391        127.172        0
  0.8     0.8     0.000163119     0.0205921       126.24         0
END_DB

Example 3: 2-Port Data

The 2-Port Data (code listing below) example shows how some 2-port data is stored in an .mdm file. This a simple example with only one data block. Multiple blocks of 2-port data are easily handled using the same approach as illustrated in the Forward Gummel data example.

Figure 44 Example: 2-Port Data
 BEGIN_HEADER 
  ICCAP_INPUTS 
    freq F LIN 1 1e+09 2e+10 20 
    vd V D 0 CON 2 
    vg V G 0 CON 0 
    vs V S 0 CON 0 
  ICCAP_OUTPUTS 
    s S G D 0 
END_HEADER

BEGIN_DB 
  ICCAP_VAR vd 2 
  ICCAP_VAR vg 0 
  ICCAP_VAR vs 0 

freq     R:s(1,1)   I:s(1,1) R:s(1,2)   I:s(1,2)   R:s(2,1)  I:s(2,1) R:s(2,2)   I:s(2,2) 
1e+09    0.952765  -0.224466 0.00250463 0.0181728 -9.12695   4.09933  0.826825  -0.133475
2e+09    0.823887  -0.4131   0.00927818 0.0338053 -8.015     7.68155  0.721175  -0.242516
3e+09    0.643912  -0.545612 0.0185764  0.0453976 -6.51225  10.4343   0.572444  -0.313754
4e+09    0.445355  -0.620653 0.0285869  0.0527403 -4.93111  12.3018   0.406526  -0.347128
5e+09    0.251996  -0.648786 0.038045   0.0564729 -3.48076  13.4015   0.242814  -0.35067
6e+09    0.0767755 -0.643938 0.0463266  0.0575208 -2.25457  13.9149   0.0923492 -0.334344
7e+09   -0.0755289 -0.618357 0.0532653  0.0567453 -1.26671  14.0161  -0.0403101 -0.306557
8e+09   -0.204864  -0.58103  0.0589388  0.0548157 -0.492037 13.8452  -0.154513  -0.273196
9e+09   -0.313372  -0.537902 0.0635211  0.0522049  0.10741  13.5041  -0.251554  -0.237929
1e+10   -0.403927  -0.492642 0.0672037  0.0492289  0.569153 13.0635  -0.333484  -0.202836
1.1e+10 -0.479404  -0.447392 0.0701604  0.046091   0.925146 12.5706  -0.402492  -0.16899
1.2e+10 -0.542383  -0.403328 0.0725371  0.0429182  1.20076  12.0562  -0.460617  -0.136866
1.3e+10 -0.595055  -0.361041 0.0744508  0.0397875  1.41544  11.54    -0.509644  -0.106604
1.4e+10 -0.639233  -0.320776 0.0759938  0.0367433  1.5838   11.034   -0.551083  -0.0781668
1.5e+10 -0.676397  -0.282583 0.0772385  0.0338096  1.71675  10.5454  -0.586187  -0.0514345
1.6e+10 -0.707743  -0.246403 0.0782409  0.0309975  1.82244  10.0781  -0.615993  -0.0262538
1.7e+10 -0.734241  -0.212124 0.0790451  0.0283101  1.90696   9.63396 -0.641346  -0.00246532
1.8e+10 -0.756675  -0.179609 0.0796856  0.0257459  1.97487   9.21352 -0.662944   0.0200831
1.9e+10 -0.775683  -0.148716 0.0801897  0.0233003  2.02964   8.81648 -0.681355   0.0415301
2e+10   -0.791784  -0.119307 0.0805791  0.0209675  2.07389   8.44203 -0.69705    0.0619992
END_DB


prevnext