In the world of embedded systems designing, there are some main design objectives which are desired by client as well as design house. These are almost universal:
- The design meets the user requirements
- The end-product is low-cost
- Minimum time in development process
- Minimum development cost
To meet these requirements in current competitive environment, the designer must be smart enough. There are several techniques which effectively reduce time and cost of development while managing to fulfill all user requirements.
- Lock the requirements before starting the design: carefully read-out the exact client requirements. It often happens that non-technical managers take the requirements from client and pass on to the designer. When the designer comes up with the final prototype, he comes to know that client was looking for something else, huh! This has happened to me several times. So if management doesn’t mind, try to interact with the client at the very early stage of project to get the exact picture.
- Re-use previous designs: Try to reuse what you already have and used in other designs. You better know the pros and cons of your previous designs and try to the best options you have. This may include schematic parts, the components and layout libraries etc.
- Use available and tested firmware components: Often firmware libraries are available for every vendor of main MCU that you are going to use. If there are no exclusive requirements otherwise, use the available code. It is tested and trusted.
- At least initial design should be on a tested hardware: This may be a development kit or a PCB of previous design (Keep the royalty thing in mind haan..). Now a days, demo kits are cheap, tailor-able to some extent and have some great features. If you don’t have kit(s), you can also take help from reference design of the vendor. Every vendor has ref-designs of almost all hot topic in industry. Like Zigbee is a hot field today and every vendor like TI, Atmel, Microchip etc. have their demo boards and firmware stacks to download and develop upon.
There may be other things besides mentioned above, what is your experience?