11 Steps to Successful Hardware Troubleshooting in PCB Development and Debug
Among all the elements to be considered in the design of any embedded system, printed circuit board (PCB) development and debugging is the most challenging of all tasks involved. PCB is the point where all of the previous design decisions made are put together and where other unforeseen problems that are related to the performance, signal integrity, noise mismatching and power manifest themselves and they must be resolved at this point.
Resolving all these problems is becoming more challenging since integrated circuit (IC) design geometries are becoming more compact and extremely sensitive to the issues of crosstalk, jitter and electromagnetic interference. Other such issues emerge in the PCB itself and its packaging. Efforts aimed at increasing the functional density of the design through development of new smaller dimension pin-out techniques and multichip packaging present other signal integrity issues. Therefore, debugging this board often requires one to employ the skills of a detective so as to differentiatethe guilty and the innocent.
Dunstan Power points out that it’s always important to always remember that the work of board design is performed by a person who is fallible and may also be usingincorrect or incomplete data.He continues to say that some bugs are unavoidableexcept for the simple designs and hence the method of troubleshooting the bugs is all-important. Bugs range from the device going BANG on powering for the first time to other intermittent glitches. The ease of bug fixingusually ranges from a simple five-minute task to a month’swork.
Dunstan Power pointed out the following 11 steps to successful hardware troubleshooting in PCB development and debug;
This is an important part of the debugging process and entails having the right mental attitude.This is because persistent problems may decrease your morale. It feels bad particularly when you are working for several successive days with the investigation process stuck at the same point.
It is crucial to first determine if other people have previously dealt with similar problems successfully. This helps one to resist the temptation to straightly dive into fixing the bug immediately.Often gather reports from other sources related to the bug to be solved.
Reproducing the problem
It is the most time-consuming and hardest part of the process. At this point, one needs to come up with the conditions that can create the bug at your command, based on the collected information. Therefore, diagnosis can begin at this point. Keep working until all the information from the person who gave the report about the problem is available and also sufficient to narrow down on list of possible causes.
Focus should be on reproducing the bug. Care has to be taken since some similar but totally different issues may appear to be as a result of the same bug, if one is masking the other. If any other bugs are discovered in the process of looking for the initial bug, a note of them should be made. They should be re-visited later on.
Gathering the evidence
Observations have to be document. At this point, a table of things that aggravate or alleviate the bug has to be created.
Trying the easy stuff first.
To reproduce the problem, first look for the easiest explanations. For example, is the wiring of connectors back-to-front? Are the pin-outs of the chip similar to the data sheet? Bugs are usually as a result of mistakes that are dumb in hindsight.
Break the problem down
In complex systems, many bugs may manifest similar symptoms on the surface.These bugs do require different remedies. Elimination of part of the system that is not relevant to the bug should be done to clarify the issue. For example, one could power down all the devices, which are unrelated, on the PCB, or eject cables from other boards. This is done while re-testing. If the bug stops after removal of an unrelated module, document it. Reproduction of the bug again, with and without the module should be done.
Talk it over with a colleague
Talking over intractable bugs with someone else may often help, even if the person is not from the same engineering discipline. Explaining your observations to someone might help you to view the bug from another different angle and realize an important fact. You may realize inconsistencies that require ironing out. You may also receive suggestions of different things to try.
Application of the fix
You gain understanding of the bug and will have developed a rational solution. Run the code.The problem will appear to be solved. Despite this, the task is not yet over.
Try to break it again
Try breaking the system once again. To make sure you had success, you have to subject the system to appropriate stress tests that are an order of magnitude that surpasses stress of the initial implementation.
For example, if a real-time system crashed after every ten minutes and could not last for more than an hour, but it now runs for over ten hours, the bug is almost fixed.
The system may behave better but may still crash. At this juncture, you may have come across another bug that was previously masked by the other bug. Therefore, one needs to go back again to step one and create a fresh new investigation on this “cured/corrected” system.
Remember ‘disappearing’ bugs are still there if you haven’t fixed them
In some cases, some bugs may appear to vanish by themselves. This can prove to be frustrating.One needs to note that they haven’t fixed this bug. These are the kind of bugs that usually reappear when a customer or the boss is present. The best thing to do is to document it and then continue looking into the other issues since it might return by itself. Although, you still have to go back and fix the bug at some point. Therefore, a lot of effort should to be applied in trying to reproduce the bug.
At this point, you have successfully fixed the bug.
We are experts in PCB manufacturing, assembly, fabrication and design. You can place an order with us and be assured of perfect quality and service from our team of dedicated experts. Visit us at www.rushpcb.co.uk