TEM and GTEM cells¶
TEMCell combines geometry, verification, the e0y field factor,
emission correlation, and immunity testing. The current production focus is
on single-port GTEM cells.
Geometry and reference data¶
Geometry is part of the measurement history. Height and longitudinal position are related through the model defined for the particular cell. Measurements and reference data must refer to this geometry.
Two preparatory paths are available for later measurements:
VerificationMeasures a plane at multiple probe positions. It evaluates field uniformity, TEM-mode dominance, required forward power, and AM headroom.
e0yMeasures the normalized field factor at one position. Emission evaluation may alternatively use the analytical
e0yfrom the GTEM geometry.
Emission evaluation explicitly records the selected e0y source. When
several suitable sources exist, one must be selected deliberately.
Multiple uniform areas and verification planes¶
A configuration can provide several named planes under uniform_areas.
tem-verification.py and tem-immunity.py register every definition in
the TEMCell history. The singular uniform_area key remains as a
backward-compatible default:
UNIFORM_AREAS = {
"ua_h1p0": {
"name": "ua_h1p0",
"h": 1.0,
"width": 0.5,
"height": 0.5,
"center": (0.0, 0.5),
},
"ua_h1p5": {
"name": "ua_h1p5",
"h": 1.5,
"width": 1.5,
"height": 1.0,
"center": (0.0, 0.75),
},
}
cdict = {
"uniform_areas": UNIFORM_AREAS,
# backward-compatible default
"uniform_area": UNIFORM_AREAS["ua_h1p5"],
}
One Measure_Verification call still measures exactly one area.
measure_parameters[i]["uniform_area"] selects its name, while
descriptions[i] names the associated dataset. Consecutive verification
runs extend the same history pickle and store geometry, points, raw data, and
evaluation separately for each description. The area definition itself
contains no measurement values.
A later immunity run loads this history and presents the available
verification datasets for selection. When eut_h or eut_z is
configured, datasets are ordered by height difference from the EUT position.
Height interpolation may be offered between two adjacent planes when both
datasets contain the required common frequencies.
Automatic interpolation is intended only for technically compatible area families. Areas with different centers, lateral dimensions, or point coverage must not be combined merely because their heights bracket the target. The current immunity selection does not make an automatic decision from the lateral EUT position; such datasets require deliberate selection.
Virtual verification and e0y¶
python script/tem-verification.py \
script/conf/tem-gtem-verification-virtual/conf.py
python script/tem-e0y.py \
script/conf/tem-gtem-e0y-virtual/conf.py
Both workflows support preflight, autosave, and resume. The hardware
templates additionally contain a HARDWARE_TEST.md with a staged
commissioning procedure.
Logical graph mode and external switching¶
Measure_e0y, Measure_Verification, and Measure_Immunity receive
the logical measurement-graph mode through the mode parameter. The
regular GTEM scripts set it explicitly to "GTEM"; "TERM" represents
the safe termination or diagnostic path. A local configuration may override
the value in measure_parameters:
"measure_parameters": [{
"dotfile": "immunity.dot",
"mode": "GTEM",
# further measurement parameters
}]
The measurement application does not know relay numbers or switch wiring. Those details belong to the measurement graph and its referenced instrument driver. A switch is declared as a context controller on its DOT node, while conditions select only logical paths:
sw [ini="sw_gtem.ini" context_controller="mode"]
gtem -> pmbwd [condition="MODE == 'GTEM'"]
term -> pmbwd [condition="MODE == 'TERM'"]
RF is switched off before every context transition. The controller plans the expected complete hardware state, applies a required mode change, and then reads the state back. A frequency-only change must not set the mode again. It therefore cannot silently override a safe TERM position selected externally in the meantime.
The state is checked before another context transition, before RFOn, and
during instrument read operations. This is not an asynchronous background
watchdog; checks occur at these safe program boundaries. If the observed
state differs from the expected state or the read-back response is
incomplete, mpylab switches RF off and pauses the measurement. The operator
may abort or explicitly reapply the planned state. mpylab never switches
back to GTEM automatically after such a mismatch.
Emission¶
The emission workflow measures disturbance voltages for the required EUT orientations and correlates them to an equivalent free-field electric-field strength. Its field factor may originate from an e0y measurement, a verification dataset, or the analytical GTEM formula.
A virtual workflow based on an e0y measurement is:
python script/tem-e0y.py \
script/conf/tem-gtem-e0y-virtual/conf.py
python script/tem-emission.py \
script/conf/tem-gtem-emission-virtual/conf.py
Alternatively,
tem-gtem-emission-virtual-from-verification/conf.py demonstrates the use
of a preceding verification. A configured limit enables selection of
frequencies that require remeasurement with the detector associated with the
limit. When no suitable limit is available, the measurement remains valid;
only the detector-specific remeasurement is omitted.
Immunity¶
The immunity workflow uses reference powers and AM-headroom results obtained during verification:
python script/tem-immunity.py \
script/conf/tem-gtem-immunity-virtual/conf.py
AM-headroom decisions¶
For 80 percent AM, verification approaches 1.8 times the carrier field
and reduces the generator by 5.10545 dB. Corrected forward power is the
normative measurement; a field-strength ratio is explicitly a non-normative
proxy. Both methods propagate the uncertainty of the measured ratio,
including shared SCUQ components, before converting it to dB.
Both methods use the nominal interval 3.10545...7.1 dB by default. The
upper boundary follows IEC 61000-4-3:2020 and is deliberately also used as an
engineering interpretation for IEC 61000-4-20:2022, whose older wording does
not consistently resolve reductions above 5.1 dB. The withdrawn IEC
61000-4-3:2006 interpretation sheet supports the technical reasoning but is
not presented as a current normative reference.
am_headroom_maximum_drop_db configures the TEMCell upper boundary and
defaults to 7.1 (the low-level evaluator parameter is
maximum_drop_db).
Measurement uncertainty is propagated and reported but does not change either
boundary by default. am_headroom_allow_upper_uncertainty=True can accept
overlap only at the upper boundary; the nominal lower boundary is never
relaxed. am_headroom_coverage_factor sets the coverage factor for this
option. Shared calibration contributions can cancel in the high-to-reduced ratio, while
independent type-A scatter remains.
Before exposure, the workflow checks geometry, frequency coverage, available field strengths, amplifier protection, and EUT monitoring. Manual operator intervention remains available when additional automatic EUT monitoring is configured. The common EUT event and assessment contract keeps disturbance, observations, and performance criterion separate. Configuration and custom monitor implementations are covered by the EUT monitoring guide.
Reports¶
tem-report.py creates a modular HTML/PDF report with separate figures and
tables from the complete pickle history. Several TOML files can add or
override report metadata in layers. tem-verification-report.py remains
available for a focused verification report.