In his series of articles for hardware startups, in this edition the author covers the importance of hardware architecture design and how not doing a proper architecture design will lead to trouble. To make the issue clear he has used a real-life example, which he handled recently, for better understanding.
When we build a house, typically we do not go to design the house straightaway. We first get the architect’s help to get an outline of the house (now-a-days a 3D rendering of the house) and get all the needed features addressed before we move to the next stage of planning or creating a house plan drawing. Similarly, creating an electronic product calls for basic architecture design before the detailed design is done. A successful design needs properly designed architecture followed by good circuit design.
But for this you need experience and depth of knowledge to design the architecture before starting the implementation of the design. What I have observed in the recent times is that, once the team freezes the decision to design a product, they start off with the circuit design, which leads to issues. Some of the critical issues I have seen are:
- Low performance of the product against requirement
- Increased cost of product
- Issues when working in different environments
- Difficulty in product upgrades
Designing architecture of the product first helps in a robust product. When you do an architecture design, you should not worry about what components you would use, and you should worry about only the functionality of the product. Once architecture is done, implementing the design becomes easier.
Second riskier tendency is getting fixated on ‘technology’ and customise the design for using the technology. Many a times I have heard startup founders telling me, “Sir, the microcontroller is good, so we are designing a product based on that.” But this fallacy leads only to trouble later. As the saying goes, you should buy the right size shoes and not cut the leg for the shoe you like!
The architecture becomes most critical when you design medical devices, avionics, and industrial devices, all of which have safety as the main criterion. Since these are regulated industries (a central agency will approve your product finally), architecture design and fail-safe analysis is critical as review of these designs are a must.
Most designers do not understand the benefits of developing an architecture before they start the design. Advantages of designing the architecture first helps in a product with the following:
- Predictable performance meeting the needs
- Simpler design to manufacture and low cost
- Easy to support and upgrade in future
By the way, designing an architecture is not a rocket science. It just needs basic idea of decomposing a product functions into individual parts and create individual blocks to address those functions.
Why architecture is critical
A well architected product is robust and performs as per the specifications. This effectively results in a successful product with a long life. Remember, for a product to have a long life (medical devices, avionics, and industrial devices), following are important:
- Performance throughout their long life
- System should have resources to meet future requirements
- Reliable and can be upgraded
These requirements call for a well-designed architecture. Long-life products come with their own issues, especially obsolescence. Today seven to ten years is the average life of a semiconductor. So, if the product has to live longer, the design needs to specifically address this challenge.
Second aspect is the cost of the product. As the product ages, customers expect the cost to go down, Added to this is the fear of obsolescence, which reduces the price of the product continuously. A well architected product results in reduced cost of production and easy maintenance.
In addition to these, product’s software development is impacted by the architecture. Well-defined architecture helps in simpler and robust software. This is helpful when the software does not use any RTOS and is developed as a bare metal software. In bare metal software, dependence on the hardware is very high and a well-designed architecture makes the bare metal code writing easy and compact.
A good architecture example
To explain the importance of a good architecture, here is a real-life example of a product which was designed without a good architecture, and the circuit was implemented without going through proper design cycle. This design was created for defense application to replace an existing mechanical control into an electronic control. Main function of the system was to close a series of 31 relays one by one, starting from the first relay. The closure operation started with the press of a push button. The potentiometers P1 and P2 were used to set the following functions:
1. P1 to set the delay time after which the closure of relays would start after pressing of the push button.
2. P2 to set time between closures of relays after the time set by P1, starting from relay 1 to relay 31.
The original design is given in Fig. 1. You can see there are two microcontrollers, and the system has two PCBs due to retrofitting requirement in the existing enclosure. This resulted in 22 interconnect pins between the PCBs. The time involved in delay and closure of relays are in seconds, still the designers used a conventional design approach of one microcontroller driving the 31 relays. This left no space for interfacing the pots (which needed ADCs), and they added another microcontroller to just do this function and complicated the design with two microcontrollers. The whole design became complicated and expensive to maintain with two software in the same product. This step could have been avoided had the designers spent just a day or two on the architecture.
The designers came to us for guidance and help in redesigning to make the whole thing simpler. After studying the requirement (major constraint was that the existing enclosure was of 15cm diameter and 10cm long cylinder and the PCBs had to be fitted inside this constrained space, our team redesigned the architecture and made the whole design simpler as shown in Fig. 2. We spent about a day in understanding the requirement and did a bottom-up new design. As you can see, the advantages of the new design are:
- One microcontroller and simpler software
- Interconnects between the PCBs are reduced from 22 to 4, making the engineering simple and manufacturing easier
- This architecture offered an open option to add more relays for next-generation systems.
- Above all, being a long-life product, the design can be supported without much effort.
What need to be factored
When designers develop product architecture, following elements need to be considered:
- Choice of processor and the variations available with different memory sizes and the different packages available.
- Number of PCBs and partitioning of the system by functional blocks to ensure optimal design.
- If the system is battery operated, architecture design becomes critical as battery life entirely depends on the speed of operation and quiescent current consumed by the electronics, which are proportional to the speed of the processor.
- If the product is for regulated industries, the architecture should be either ‘fault-tolerant’ or ‘fail-safe.’ In the case of fault-tolerant system, architecture should work without stopping, which is typically needed in medical and telecom systems. This may call for use of two processors. In the case fail-safe systems, when system fails, the system should go to a safe state without harming the user.
- Spending time in understanding the development and debugging tools available and their compliance to safety standards. Typically, most free tools or open source tools do not comply with any safety requirement and special tools have to be used.
- Understand the processor clock speed and product performance needs to avoid selecting an under-powered speed that could compromise the system’s performance.
Tips to develop the architecture
Developing an architecture for an electronic product can be a full course as it impacts both hardware and software. However, here are a few tips to use.
- When product idea is conceived, build the product with functional blocks with each block doing a unique function.
- Plan the interconnects between blocks with groups of signals (had the team that designed in the above example done this step they would have figured out that they had a challenge) separated as data, power, clock, etc. This gives a clear overview of the signals and brings out any missing signal.
- If the product has to be designed with multiple PCBs (any electronic product which has a user interface always has a separate PCB for the display), identify which block will go to which PCB. Revisit the interconnects again as now you will have more signals to connect
- Always choose a controller that has different memory options and different pinout options. This helps in customising the product with just minimal hardware and software changes.
- When you design an IoT solution, the ‘things’ will be in large numbers, so the cost has to be low. However, each ‘thing’ will have interconnections to the gateway or cloud. The interconnection needs to be selected properly. Many designs run into cost and performance issues due to wrong choice of interface as well as wrong component.
- If you are using vendor-supplied reference hardware or software, first understand the design well as these are meant for demonstration and their cost and memory size will never be optimised.
S.A. Srinivasa Moorthy is director at D4X Technologies Private Limited