Skip to main content
One campaign, two fault families drawn as a two-column map: electrical faults and protocol faults on the left, each running through detection, reaction, recovery and evidence on the right, from GSAS Micro Systems India

Fault Injection in HIL: Open Load, Shorts, Malformed Frames

GSAS Engineering · · 12 min read

Fault injection in hardware-in-the-loop testing deliberately applies electrical faults such as open circuit, short to ground and short to battery, plus protocol faults such as malformed or mistimed frames, then verifies that the ECU detects the fault, reacts as specified, reports it accurately and recovers when the fault is removed. The two families belong in one campaign because a real network fault crosses both: a degraded pair changes link quality, and the service and diagnostic layers above then behave in ways a purely electrical test never observes. Every row of the campaign needs a fault, an injection point, an expected behaviour, an observable and the evidence you capture, and the fault insertion hardware sits in the signal path, so characterise the bench with the unit installed and idle before you trust any fault result.

Fault injection material splits in two. One half is switching hardware: relay matrices, open-load wiring, short-to-battery buses. The other half is software testing: malformed input, fuzzing, protocol robustness, written as if the wire were perfect.

A vehicle network does not fail along that line. An intermittent short changes link quality, the link logs errors before dropping, and the layers above misbehave. This article puts both families in one campaign, with the expected reaction and the observable written down per fault. If the link is not coming up at all, our 100BASE-T1 bring-up checklist works that in order; where these links sit in the architecture sets the context.

Two fault families, one test plan

Electrical faults on the wiring, protocol faults on the traffic

Electrical faults act on the conductors: open one, short two together, tie one to a supply rail, add resistance. The device under test sees them as link state, quality metrics and error counters. Protocol faults act on the bytes: a bad frame check sequence, an illegal length, an offer that never arrives, a response after the timeout. Those surface in state machines and timers.

Why covering one family leaves a class of defects untested

A pair that degrades rather than breaks keeps the link up and drops frames. An electrical-only campaign records that the link stayed up and passes; a protocol-only campaign never generates that loss pattern. Run together, the question appears: when the pair is marginal, does the ECU report a communication fault, a physical layer fault, or both?

What you are proving: detection, reaction, reporting and recovery

Four properties, and lumping them together passes on the wrong evidence. Detection, the ECU notices, at its own interfaces rather than inferred from silence. Reaction, it does the specified thing: a degraded mode, a bounded hold, a defined output state. Reporting, the diagnostic names the fault accurately, since one generic code for six faults is a finding. Recovery, it returns on its own once the fault clears.

Electrical faults on a single twisted pair

Both conductors of the pair carry signal both ways at once.

Open circuit on one conductor, and open on both

Open one conductor and the receiver loses the differential signal it was recovering; open both and you have cut the link segment. Expect the link down: our bring-up checklist records that a swapped pair is not by itself a reason for no link, because the slave corrects polarity during link-up, but continuity failures, shorts and breaks are. The case is about how fast it drops, and whether the two opens are distinguishable in the diagnostic, which is a question your requirement owns.

Short to ground and short to battery

A switching-hardware vendor’s published validation whitepaper describes inserting shorts from any wire to an external supply such as battery voltage or ground, shorts between the two wires of a pair, and partial or resistive shorts through external fault buses.

Short to battery needs planning, because it puts a supply rail onto a conductor a PHY transmitter is driving: fix the current limit and the teardown before the first run. Expect the link down again, but the diagnostic expectation is design-specific. Whether the ECU separates a short to battery from a short to ground is a requirement question, and a negative answer belongs in the record as a limitation.

The same whitepaper lists shorts between wires of different channels, and a single-link bench cannot produce this fault at all. One chafe in a bundle shorts a conductor of one link to a conductor of another, so two links misbehave from one cause. Which link reports first, and whether the fault handling sees a common cause, are questions the campaign owns, and a zonal layout answers them differently from a domain one; our comparison of domain and zonal architectures covers why.

Degradation rather than failure

The faults above are binary; the ones that produce field returns are not. Our guide to automotive Ethernet cables and connectors makes the point underneath: a channel built entirely from conforming parts can still sit outside the link segment limit.

Resistive shorts through a fault bus inject that deliberately, and the expected behaviour is a link that stays up and gets worse. The observables are therefore trend instruments rather than flags: the PHY’s Signal Quality Index, read relative to the maximum that PHY reports, and Mean Square Error diagnostics where exposed. Log both across the fault rather than sampling once.

A link that is down is not automatically a link that is faulted. The OPEN Alliance publishes a sleep and wake-up specification for 100BASE-T1, so a link can be commanded to sleep by the network itself, as our article on TC10 sleep and wake-up sets out. The campaign therefore carries a negative case: sleep the link by its designed mechanism and confirm no fault is raised. No fault case surfaces that defect, because every one you wrote expected a code.

What a fault insertion unit actually does

Relay matrix versus micro-electromechanical switching

Fault insertion units are a market category rather than one product: a switching matrix puts each conductor into one of a few states, passed through, opened, tied to another conductor, or tied to a fault bus.

Electromechanical relays give a genuine metallic open and carry current, which is what a short-to-battery case wants. The same whitepaper puts the cost plainly: electromechanical relays have switching times in the millisecond range and are not designed to reliably pass signal content into the 4 to 5 GHz range, while the micro-electromechanical parts it compares them against switch in microseconds and are built for data rates up to 10 Gb/s. Where a rail is involved, current and power handling is the specification to check on the datasheet, and that is GSAS engineering guidance rather than something the whitepaper states. The same document is explicit on the mechanism: electromechanical relays introduce impedance discontinuities, stubs and parasitic capacitance that degrade signal integrity.

The unit is in your signal path

The box sits in series with a transmission line carrying both directions at once. Its insertion loss adds to your channel budget, its return loss adds reflections, and its stubs look, to the receiver, like stubs in your harness. The same whitepaper presents low insertion loss and voltage standing wave ratio on its own switching modules as what preserves the integrity of a 10GBASE-T1 signal, and notes that where rigour is required it may be necessary to measure the S-parameters of the whole fixture, then de-embed them.

Characterise the bench with the unit installed but idle

Run your reference traffic with the unit removed, logging quality metrics and error counters. Install the unit with every switch in pass-through and repeat the run. If the two differ, the unit is a term in every later result, and you have a number for it instead of an assumption. Where the link is marginal before any fault, reach for the pair itself, as our guide to scoping automotive Ethernet covers.

Fault typeSwitching elementStressesMeasure alongside
Open, one or both conductorsSeries switch per conductorDrop detection, segment loss and restoreLink state, counters, capture
Short across the pairCross-point across the pairReceiver under a collapsed signalLink state, metric
Short to ground or batteryCurrent-limited fault busPort protection, code classificationBus current, device state after
Pair-to-pair shortCross-point between channelsCommon-cause diagnosisBoth links’ diagnostics
Resistive or partial shortFault bus, series elementDegradation rather than failureQuality metric, loss rate

Protocol and timing faults

The generator is a scripted peer, not the harness.

Frame level: bad frame check sequence, wrong length, oversize and undersize

Emit a frame whose frame check sequence does not match its contents, one below the minimum length, one above the maximum, and one whose declared length disagrees with the bytes present. Expect the receiving interface to discard and count them, and make that counter the observable, read at the device under test rather than your own.

Tagging and addressing: wrong VLAN, wrong priority, unexpected multicast

Send a tagged frame on a VLAN identifier the port is not configured for, one with a priority the deployment does not use, and one to a joined multicast group from an unexpected source. Expected behaviour here belongs to your requirement rather than a standard, because whether an unexpected tag is dropped at the port, dropped by the ECU or accepted is a decision recorded in your network design. Where nobody can point at that record, that is the finding.

Service level: malformed headers, wrong payload length, responses that never arrive

Our article on debugging SOME/IP service discovery sets out how a service goes missing: the client never received a valid offer for that instance, because discovery multicast is not reaching it or the configured unicast address is wrong.

Turn each into a case. Stop offering without an explicit stop, so the client expires the service on its time to live. Refuse a subscription. Restart the model so the reboot indication is set. Our rest bus simulation article covers each as a simulator behaviour, and each maps to a defined correct response. The response that never arrives is the most valuable: on the UDP binding, which achieves maybe reliability, the client must wait a specified timeout then signal a timeout result, so a simulator that always answers never exercises it.

Timing faults: late responses, pending handling and timeout boundaries

Our article on UDS 0x78 and P2 timeouts states the expected client behaviour: a response pending code tells the tester the ECU is still working, so the client stops the P2 timer, restarts on the longer P2 star timer and keeps waiting. Three cases follow: answer just inside the timer, just outside it, and send a pending code then answer inside the extended timer, checking the tester did not abandon a request the ECU answered late.

Time sync faults: injected asymmetry and grandmaster loss

Time synchronisation is where the families meet, because a degraded link changes path delay. Our article on validating time synchronisation makes the argument: proving 802.1AS means a bounded time error rather than a locked state, measured again during grandmaster failover, under injected path asymmetry and under load. Those three are fault injection cases already; our gPTP troubleshooting guide covers the daemon-level symptoms.

Generating these from a scripted peer rather than by hand

Scapy is the usual generator, and its documentation describes what this needs: it sends, sniffs, dissects and forges packets, it lets you put any value you want in any field you want and stack them like you want, and it names sending invalid frames among its uses. Protocol checksums and computed fields can be overridden, which covers a bad IP or UDP checksum case. A corrupt Ethernet frame check sequence is not one of them: the FCS is appended by the MAC after the frame leaves the stack, so that case needs a hardware traffic generator or a NIC that can be told to pass a supplied FCS through, not a scripted peer. The inter parameter spaces packets in time and loop repeats them, but a millisecond boundary test needs hardware-timestamped capture, not the sender.

Designing the fault campaign

The campaign table

Each row carries a fault, an injection point, an expected behaviour, an observable and the evidence captured. Where no source or requirement supports an expected behaviour, the row states the question instead. That is legitimate: it is how a campaign finds specification gaps.

The durations below are placeholders to show the shape of a row. Take the real ones from your own debounce and confirmation parameters, as the next section but one sets out.

Fault (example duration)Injection pointExpected behaviourObservableEvidence
Open, both conductors, 1 sIn series with the pairLink down: breaks and continuity failures are a reason for no linkLink state, quality metricLink state log
Short to ground or battery, 200 msCurrent-limited fault busLink down, device survives. Code classification is a requirement questionBus current, code, functional checkCurrent trace, diagnostic read
Resistive short, 60 sFault bus, series elementLink stays up and degrades, frames start to be lostQuality metric trendedMetric log, set interval
Pair-to-pair short, 500 msCross-point between channelsBoth links affected. Common-cause recognition: your requirement’s questionBoth links’ diagnosticsOrdered timestamps
Commanded sleep, not a faultThe designed sleep mechanismNo fault raisedLink state, diagnostic readCapture of the exchange
Bad frame check sequenceTraffic generator with FCS controlDiscarded and counted, never seen above the MACError counter at the ECUCounter either side
Pending, then answer inside the extended timerScripted peer, or the ECU under loadThe tester stops P2, restarts the longer timer, keeps waitingTester result, elapsed timeTimestamped capture
Response withheld past the timeoutScripted peerThe client signals a timeout, not an indefinite waitClient result codeCapture at the boundary
Grandmaster removedScripted peer holding the roleTime error stays bounded through failover, measured not reportedMeasured time errorWindow and topology
Fault removed, any row aboveSwitching unit or scripted peerLink returns, the lifecycle completes again, diagnostic state clears as designedLifecycle stages, codesCapture across removal

Deriving the fault list from the design rather than a generic checklist

The faults worth bench time come from your own design: which conductors share a housing with a switched load, which links run through a connector vibration can back out, which functions have a degraded mode and therefore a reaction you can assert. As our ISO 26262 background page puts it, an integrity level is an output of the analysis for a specific item, not a property of a category of ECU. A list copied from another programme is a starting point, not a plan.

Duration and intermittency

A one second short and a ten millisecond glitch are different tests. Detection logic debounces: a fault must persist before it is confirmed, so a long fault tests detection and reporting while a short one tests the opposite requirement, that a transient is not reported, or is counted rather than confirmed. Take both durations from the design’s own debounce parameters, and add repetition as a third axis, because field connector faults look like a repeated glitch.

Recovery: remove the fault and prove the network comes back

Recovery is its own case, and it fails more often than the fault case, because a link that returns is not a network that returns. Our article on ECU testing over Ethernet makes the lifecycle argument: the stages run from link-up and address assignment through time synchronisation, service discovery and steady state to sleep, and most integration defects appear at the transitions. A fault removal is a transition, so name the stages your recovery case expects to repeat, and capture continuously across it. Automating these campaigns as part of a CI pipeline is the subject of our SDV test automation article. Our comparison of taps, mirror ports and converters covers what each method preserves; correlating captures across CAN, LIN, FlexRay and Ethernet puts a multi-bus recovery on one timeline.

Safety context, without quoting the standard

Why fault injection appears in safety programmes at all

A safety argument claims the system behaves acceptably when things go wrong, and the only direct evidence is a record of things going wrong and the system behaving. A functional test that passes proves a function works; a fault injection test proves a reaction happened, and a reaction means nothing without a stated expectation.

Read our functional-safety background pages rather than a paraphrase

Our ISO 26262 background page records that fault injection test appears among the recommended software unit verification methods in Part 6, alongside requirements-based test, interface test and resource usage evaluation. Our IEC 61508 background page sets out that the standard carries two recommendation sets, one organised by lifecycle topic and a second, more detailed set expanding particular entries, which is where dynamic analysis and testing, functional and black-box testing and failure analysis sit.

Evidence quality: what a reviewer expects a record to contain

Enough to reconstruct the run without you in the room: the fault and its injection point, the duration, the device state when it was applied, a timestamped capture spanning application and removal, the observables read at the device under test, and the expected behaviour referenced to its requirement. Then the verdict, with any limitation written as such rather than dressed as a pass. A record with no requirement behind it is an experiment, not a verification.

Automating fault campaigns

Combining rest bus simulation with fault insertion

A rest bus simulator gives the device under test a network it believes is complete, so the protocol half of this campaign becomes a change to the simulator’s behaviour rather than a new tool. Our rest bus simulation article notes that this needs a stateful, scriptable model, the top of the fidelity ladder rather than something bolted on later. It does not replace conformance, which our article on conformance above TC8 covers.

Running the campaign unattended and triaging the results

A dozen faults, three durations each and a recovery case per fault is not a manual exercise, and an expected behaviour in every row makes it machine-checkable. The ordinary requirements apply: a defined teardown, a failing case that does not leave the fault applied, and a device recoverable without a person at the bench. Then sort failures into three buckets: the ECU did not do what the requirement says, the requirement does not say, and the bench did it. The third is why the idle baseline exists.

Where GSAS fits

Bench and instrumentation review

GSAS Micro Systems is an engineering partner, and on fault injection the useful first conversation is about the bench rather than the campaign. Most disputed results we are asked about are fixture effects: switching hardware in a marginal channel, a baseline nobody recorded, or a capture that started after the interesting second.

Campaign design review

The second conversation is the campaign design, and it is a review rather than a build: which faults your design implies rather than which a generic list offers, and whether each row’s evidence traces back to a requirement. Where your campaign already covers it, that is the answer.

Our applications engineers work with teams in Bengaluru, Pune, Chennai and Hyderabad, on benches from a single link on a desk to a multi-link rig run overnight. Read the automotive Ethernet capability page for how we work, and request a consultation to have a bench and campaign reviewed against the design they prove.

References

Building for Automotive & Mobility?

Talk to our application engineers for personalized tool recommendations.

Frequently asked questions

What is a fault insertion unit, and do I need one for Ethernet testing?
A fault insertion unit is switching hardware placed in series with the conductors of the device under test so that a test script can open a conductor, short two conductors together, or connect a conductor to an external supply rail such as battery or ground, without anyone touching the harness. You need one when the campaign has to be repeatable and unattended. You do not need one to run a handful of exploratory faults on a bench, where a break-out board and a switched lead will show you the same first-order behaviour. The real decision is not whether to buy switching hardware but whether your links can tolerate it: the unit is in the signal path, and on multi-gigabit links its insertion loss and return loss are part of your channel from the moment it is installed, applied fault or not.
Which electrical faults should I test on a 100BASE-T1 link?
Start from the four that a switching-hardware vendor's published validation whitepaper lists as the standard set for its switching hardware: open circuit on one conductor or on the whole channel, a short between the two conductors of the pair, a short from either conductor to an external rail such as battery voltage or ground, and a short between conductors of different channels. Add resistive or partial shorts, which the same document describes as inserted through external fault buses, because those are the ones that degrade a link rather than killing it. Then add the faults your own design implies: a connector your harness can back out of, a shield termination that can go open, and any conductor that shares a housing with a switched load.
Does a fault insertion unit degrade the link when no fault is applied?
Assume it does until you have measured otherwise. A switching-hardware vendor's published validation whitepaper is explicit that electromechanical relays introduce impedance discontinuities, stubs and parasitic capacitance that degrade signal integrity, and it presents low insertion loss and voltage standing wave ratio on its own switching modules as what preserves the integrity of a 10GBASE-T1 signal. The same document notes that for demanding cases it may be necessary to measure the S-parameters of the whole fixture, meaning the fault insertion unit, the cables and the interface board, and to de-embed their effect. The practical rule on a bench is simpler: run your reference traffic with the unit installed and every relay in the pass-through state, record link quality metrics and error counters, and compare against the same run with the unit removed. If those two runs differ, your fault results are measuring the fixture.
How do I inject malformed frames without damaging the device under test?
Malformed frames do not stress the interface electrically. They are ordinary signalling carrying byte patterns the receiver was not expecting, so the direct risk is behavioural: a device that crashes, corrupts stored state, or ends up in a mode that needs a power cycle and a reflash. The indirect risk is real where the device drives a load, because an unintended commanded state is a physical event. Manage that risk the way you would manage any destructive test. Run the campaign on a bench segment that carries nothing else, keep the flashing and recovery path available and tested before you start, snapshot any non-volatile state you care about, and script the peer so that every case is reproducible and every case ends with a defined teardown. Scapy is the usual generator because its documentation describes putting any value you want in any field you want and stacking layers as you like, which is exactly the control a malformed-frame case needs.
What is the difference between fault injection and fuzz testing?
Fault injection applies a specific named fault and checks a specific expected reaction. Fuzz testing applies a large volume of semi-random input and checks that nothing catastrophic happens. The distinction that matters on a test plan is the pass criterion. A fault injection case fails when the ECU does not set the expected diagnostic, does not enter the expected degraded mode, or does not recover; the case is derived from a requirement and traces back to it. A fuzz run fails when the device hangs, resets or leaks, and it is derived from a grammar rather than from a requirement. Both are useful and they use the same tooling: Scapy's documented fuzz function replaces default values that are not computed with random values adapted to each field, which is the fuzzing side of the same generator that writes your named cases.
How long should a fault be applied before I record the ECU reaction?
Long enough to cross the debounce and confirmation logic in the ECU, and separately short enough to test the case where it does not. Those are two different tests and both belong in the campaign. Diagnostic logic normally requires a fault to persist for a defined period before a trouble code is confirmed, so a one second short and a ten millisecond glitch are asking different questions: the first asks whether detection and reporting work, the second asks whether the ECU correctly declines to report a transient, or correctly counts it. Write the duration into the campaign row alongside the fault, run each duration as its own case, and take the durations from the design's own debounce and confirmation parameters rather than from a round number that felt reasonable.
How do I prove the network recovers after the fault is removed?
Treat recovery as a separate case with its own observable, not as the tail end of the fault case. Remove the fault, then prove three things in order: the physical link comes back and stays up, the communication lifecycle above it completes again, and the diagnostic state clears the way the design says it should. The middle one is where recovery testing usually finds defects, because a link that returns is not a network that returns. Our article on ECU testing over Ethernet works through that lifecycle, link-up, address assignment, time synchronisation, service discovery, steady state, network release and sleep, and a recovery case should name which of those stages it expects to see repeat. Capture continuously across the removal rather than starting a capture afterwards, or you lose the transition you were testing.
What evidence does a fault injection test need to produce for a safety programme?
Enough for someone who was not in the room to reconstruct the run. In practice that means the fault and its injection point, the exact duration and any intermittency pattern, the state of the device under test when the fault was applied, a timestamped capture spanning application and removal, the link-level and diagnostic observables that were read, the expected behaviour with a reference to the requirement it comes from, and the verdict. Our own background page on ISO 26262 records that fault injection test appears among the recommended software unit verification methods in Part 6, alongside requirements-based test, interface test, resource usage evaluation and back-to-back comparison test, so a fault injection record that does not trace to a requirement is not doing the job the method is listed for. Read that page and our IEC 61508 page for the framing rather than working from a paraphrase of standard text.

Stay in the Loop

Get monthly compliance updates, product insights, and engineering best practices delivered to your inbox.

Related Articles

Master and slave roles on a 100BASE-T1 link: the master PHY times its transmitter from a local clock, the slave recovers the clock from the received signal, with the both-master and both-slave misconfigurations that leave the link down, from GSAS Micro Systems India
Automotive Ethernet Automotive & Mobility

100BASE-T1 Link Won't Come Up: A Vendor-Neutral Checklist

A 100BASE-T1 link that will not come up is almost never a mystery, but the answers on the web are written per silicon vendor and do not transfer. This is the ordered bring-up checklist that holds regardless of which PHY, switch or SoC you have: physical layer first, then the PHY over MDIO, then the master and slave pairing, then the causes of a link that comes up and drops. The standards and tooling claims trace to IEEE 802.3 task force records, the Linux ethtool and kernel documentation or published test material. Written by the GSAS Micro Systems engineering team in India.

29 Aug 2026 · 14 min read
Five-step master and slave decision flow for a 100BASE-T1 media converter: read the ECU port role, set the converter to the complement, match the speed, check the wiring, link up, from GSAS Micro Systems India
Automotive Ethernet Automotive & Mobility

100BASE-T1 Media Converters: How to Choose One

Search for a 100BASE-T1 media converter and you get SKU pages that document their own DIP switches, plus a pile of copper-to-fibre converters that have nothing to do with single-pair automotive Ethernet. This is the selection guide neither publishes: what the box does at the PHY layer, when a converter is the wrong box, and the nine criteria that decide fitness, each written as a question to put to the supplier rather than a specification we invented. Standards claims trace to IEEE 802.3 task force records and the public OPEN Alliance specifications. Written by the GSAS Micro Systems engineering team in India.

29 Aug 2026 · 13 min read
Side by side comparison of a 10BASE-T1S multidrop mixing segment, one balanced pair with four nodes on short stubs and a termination at each end, against a point to point star of four separate links into switch ports, from GSAS Micro Systems India
Automotive Ethernet Automotive & Mobility

10BASE-T1S and PLCA: Multidrop Ethernet Explained

10BASE-T1S is the one member of the T1 single-pair Ethernet family that keeps a shared medium, and PLCA is the reconciliation sublayer that stops the nodes on it from colliding. This article covers what IEEE 802.3cg standardises, how the beacon and transmit opportunities schedule a cycle, the node count and segment length figures the OPEN Alliance interoperability test suite works to, and the failure modes that put a segment quietly back into contention while every link still looks up. Written by the GSAS Micro Systems engineering team in India for teams bringing up multidrop segments on the bench.

29 Aug 2026 · 12 min read