Firmware is usually the part of the project that takes the longest, so whatever we can do to accelerate this process will accelerate project completion.
product requirements document
First, if one does not yet exist we will work with you to create a product requirements document (PRD). The purpose of this document is to answer all the questions at the beginning, to reduce errors and make development faster. This includes:
What does the product need to do
Communication (BLE, Wi-Fi, Cellular, 900MHz, etc.)
What countries will it be sold in
How is it powered
Who is the typical user
Where will it be manufactured
Estimated sales volume
How will it be tested
“A picture says a thousand words.” We next create a simple block diagram showing the various subsystems and how they connect. These may be simple hand-drawn sketches on a whiteboard, or complex diagrams that span multiple pages. The goal is not to go into exorbitant detail, but mainly to communicate how the system works. This is especially important in systems that have multiple PCBAs. One system we designed had five different PCBAs and twenty-seven different cable assemblies. For this system the block diagram was large enough to fill a poster.
Remote Firmware Update
Once the requirements have been defined, we can proceed with hardware design, including:
First, we determine what key components we’ll need in the design. We select components based on:
If we don’t already have the component in our library (and we have a lot, several thousand) then we will build the component in our system, including schematic symbol, link to a supplier, create PCB footprint and add 3D model. The last part is important - the 3D model allows us to verify the footprint with the actual part. Most errors on boards are incorrect footprints, so we follow the IPC guidelines in designing footprints.
I always thought this was a funny term for drawing the schematic, as if the schematic was running around in the wild and we had to trap it somehow. This step entails doing the calculations on the design and drawing the schematic diagram. There are different philosophies about how much information to put on the schematic, but we will generally try to put all calculations and links to notes on the schematic so they’re easy to find and verify later. This step is really “where the rubber hits the road” and is the key to the rest of the design. We will also compare our design with the chip manufacturer’s reference design and ask them questions as needed.
We will use the completed schematic to layout the components on the board. We will work with your mechanical designer to identify the mechanical constraints (board shape, component keep out areas, etc.) Then we will place the components and route the connections. Once the routing is done then we’ll take a look at the board and see if there are any more test points or labels that would be useful.
After the board is complete we will create the manufacturing documents. We work closely with the contract manufacturers to supply them with the information they need. We are somewhat passionate about manufacturing drawings and have spent many hours researching optimal notes for PCB fabrication and assembly. See blog post on this topic.
Oftentimes the firmware takes longer than any other step. For this reason we’ll try to start the firmware as soon as possible, preferably before the boards are done.