Kozio has just announced an incredibly interesting development in its hardware verification technology. This solution is so all-embracing that it's difficult to know quite where to start, so let's take a moment to set the scene.
I remember creating test programs for printed circuit boards (PCBs) in the early 1980s. These programs ran on functional testers. You applied a test vector to the inputs and clocked it in. Then you applied the next test vector and clocked that in. Then you did the same for the next, and so it went. At some stage, data started to appear on the outputs, and your program checked these actual values against the expected results. If any discrepancies were found, the next step was to hone in on the faulty component or suspect PCB track, but that's a story for another day.
We described all the input test vectors to be applied and the resulting output vectors we expected to receive by hand. You simply couldn't do that for a modern circuit board, because modern electronic designs have grown so horrendously complex. Let's start by considering a typical circuit board from a couple of years ago. At a minimum, you would have a high-power processor chip and a bunch of high-speed memory. You would also have a gaggle of communications and interface chips, like a USB controller, an SD card controller -- well, you get the idea.
So the hardware design engineers get to design the board, the layout designers get to implement it, and manufacturing gets to build it. At some stage, the board will be handed over to the software folks to start creating firmware and developing (or porting) applications. But who gets to test the board to make sure it functions as planned?
The hardware folks may perform some rudimentary tests, but they are typically keen to move on to the next project, and they don't really understand all the things the application software will do while running on the board. As a results, it's often left to the software developers to create tests to verify the board's functionality. But this is the last thing they wish to do. All they want is to work on their software applications.
Even worse, the software developers typically don't understand all the nuances associated with the hardware, and they usually don't have expertise in developing board-level test programs. A very common scenario is for the software developers to boot the board up under its operating system (OS); let's assume it's Linux for the purpose of this discussion. Then they start writing simple tests like reading and writing to the memory. One issue is that booting a full-up Linux operating system takes quite some time. Another issue is that even creating something as basic as a good memory test requires a lot of expertise. Writing comprehensive tests to verify all the corner conditions on things like USB interfaces can bring the strongest of us to our knees.
This was the problem Kozio decided to attack several years ago. The full Kozio solution is far too complex to go into here; you can discover more by bouncing over to the company website. Suffice it to say that it has developed a special verification and test OS called VTOS that has a small memory footprint and is incredibly fast to load. It has also created a comprehensive suite of test routines that can verify different types of memory and different peripheral devices like USB interfaces. All you have to do is select the appropriate tests and specify register map addresses, start and end addresses, etc. These tests can be run individually or as a regression suite. You can use them to perform go/no-go tests on the board or to hone in on any problem areas.
The whole thing -- VTOS and a test suite customized to your design -- can be set to auto-load and run from the system's main memory, a USB stick, an SD card -- you get the idea.
All this runs on a range of supported processors from companies like ARM, Applied Micro, Intel, Freescale Semiconductor, Texas Instruments, and Xilinx. "What? Xilinx?" I can hear you ask. "Doesn't it make FPGAs?" I shall explain on the following page.
To Page 2 >