The Circuit Diagram, also called the Schematic or Logic Diagram, maps out the electronics and connections in the most readily readable form. The designer needs to do background work while producing the Circuit diagram, researching specifications of components, interaction between components (especially timing and loading) physical packages, and arrangement of connector pinouts. The circuit will often start on paper and finish in Computer Aided Design (CAD) format. The finished circuit diagram, supported by notes if required, is the main reference document for the design.
The Printed Circuit Board Layout
The Printed Circuit Board (PCB) is the laminate to which all the electronic components are soldered, with one or more layers of etched metal tracks making the connections. The components and connections in the PCB Layout are derived from the circuit diagram, and physically placed and routed by the designer to get the best result. The PCB Layout defines the final physical form of the circuit, and enclosure and labelling details can be finalised as the layout is completed. When the PCB layout is complete, the final CAD file is sent to a subcontract PCB laminate manufacturer. The manufacturer returns the etched PCB laminates a few days later, ready for assembly into prototypes.
Prototypes
We usually make 2 or 3 identical prototypes at the same time. The Prototype circuitry is debugged in stages. The debugging proceeds according to the debug test procedure, which is written for the product as it is designed. Prototype microprocessor circuits are generally debugged with specially written diagnostic code, again progressing in stages. When confidence has been gained in the operation of the prototype hardware, debug of the actual prototype program can begin, on the target.
Software
Software for the electronics is often a big job of the design work in a project. The programming that controls the microprocessor usually gives the electronic product its features and "glitz" whereas the hardware is the purely functional side of the equation. The programming or coding for electronic products is usually written in 'C' or assembler, whereas the programming that runs on a PC will normally be written in C++, java or another language (and almost certainly not assembler). The programming for microcontrollers is totally different from that for a PC in any case - it is usually "more detailed" and less "generic" than the type of programming made for a personal computer, because it is more tightly coupled to the electronic hardware on which it runs, and because it usually has to respond more quickly - that is it has to run in "real time". There is usually a great deal of care and testing involved with programming for electronic products - while for some reason clients seem willing to accept bugs in windows software as somewhat normal, they are pretty unacceptable in, say, an engine control unit for a modern car.