Adir Salman Levi
Embedded Firmware Validation using Code Insertion
The limited interfaces that embedded firmware expose to the outside world posed a challenge to the validation activities. The ROM code we are tasked with testing offers, in fact, almost no external visibility to what the code does.
In the past years, code insertion test methodology was developed by our team to overcome this challenge. Code insertion provides a solution for the validation of a FW module which doesn’t have any interface that can be used for testing. With code injection, the tester can create a trigger for case he wants to verify and inject a code to verify the result of that trigger. All those code injections are done automatically by scripts.
After using code injection for some time, we realized that the inserted code is very dedicated for specific test, and for what the user wanted to verify, but ignores unexpected changes in other areas of the code. This realization resulted in improvements and modifications to the way we use code insertion. In the new mode, we added a set of auto tests that look for general unexpected behaviour caused by the injected trigger. This mode of work proved to find unexpected bugs which team probably would have missed with the original “basic” code insertion technique.
Adir has BS.C in SW Engineering, he started his career in RTL verification, which shaped his mode of thinking (In RTL verification there is a purpose to reduce the human factor). After three years in RTL verification Adir moved to Intel as validation engineer and soon after took the position of a validation team manager.
In this talk, Adir shares methods developed by his team to validate ROM code and low level embedded FW.