From transistors to applications
Posted: Sun Jul 10, 2011 2:11 pm
Alta lang, you say?
Let's say you develop a CPU - ALU, some generic creep, microcode.
An FPGA board to run the CPU in.
Now, a compiler from a customish language to that CPU.
Then, the OS and drivers in that language.
And finally, an application that draws a picture on the screen.
But the app draws the image with gaps...
Where is the problem?
-The app? Looks fine.
-The compiler? Tests run ok...
-The language? Sounds fine to me.
-The driver? Too simple...?
-The CPU microcode? Uh, it loads the OS all right...
-The memory bus? Hm?
-The SDRAM interface? Oh!
The SDRAM was missing a clock because the bulk copy command in microcode was too tight on memory access, and compiler used that one without asking, getting the app to receive swiss-cheese-like data! And OS worked because it copied from FLASH to SRAM...
Debugging is fun!
Let's say you develop a CPU - ALU, some generic creep, microcode.
An FPGA board to run the CPU in.
Now, a compiler from a customish language to that CPU.
Then, the OS and drivers in that language.
And finally, an application that draws a picture on the screen.
But the app draws the image with gaps...
Where is the problem?
-The app? Looks fine.
-The compiler? Tests run ok...
-The language? Sounds fine to me.
-The driver? Too simple...?
-The CPU microcode? Uh, it loads the OS all right...
-The memory bus? Hm?
-The SDRAM interface? Oh!
The SDRAM was missing a clock because the bulk copy command in microcode was too tight on memory access, and compiler used that one without asking, getting the app to receive swiss-cheese-like data! And OS worked because it copied from FLASH to SRAM...
Debugging is fun!