By Mark Bingeman | Sep 30, 2013
It is very important to have a solid architecture early in the design process for successful electronic product development and deployment. Architecture is by nature a multi-dimension problem. Several factors need to be considered simultaneously including product features, development costs, product costs, schedule, technical feasibility, and risk management.
Each project places a different importance on each of these items, so communication between engineering and product management is key to determine the priorities and establish a clear set of requirements. Following the guidelines below will help to create a solid architecture and a successful product.
How to Create a System Architecture
Perform an Architecture and Feasibility Study
Often trade-offs need to be made between requirements and priorities. Performing an Architecture and Feasibility study provides the analysis required in order to make an informed decision on the trade-offs. If product requirements are not feasible due to current technological limitations, costs, etc., the feasibility study will identify this early in the design process and avoid significant resources being wasted on a project that is not viable. Nuvation has performed many Architecture and Feasibility studies to determine client priorities, refine requirements, establish product architecture and examine project risks and technologies available to establish a feasible architecture that meets the client’s priorities.
Mapping Functional Blocks to Available Technologies
System architecture for electronic product designs requires identifying the functions to be performed, the order of functions required, and the interfaces between functional blocks. The next step is mapping functionality into available technologies. Creating the architecture is primarily a top-down exercise with bottom-up knowledge. Top-down refers to starting with the highest level requirements, dividing the requirements into high-level functions, then dividing each function into sub-functions, and so on, to develop the architecture hierarchy and interfaces between blocks and sub-blocks. Bottom-up refers to using specific information about the functionality and limitations of lower level technology blocks to drive the design of the lower level functional blocks, which in turn influences the relations and functionality of blocks up the architecture hierarchy. A clear division of functionality and mapping of functionality into available technology allows for easier adaptation of the architecture when any given bottom-up knowledge rules out a particular implementation of any functional blocks.
System architecture needs a well-defined process to transition from a very-high level concept to well defined detailed design and mature architecture. The process requires both a top-down and a bottom-up examination to ensure all the requirements have been satisfied, and technologies exist and can feasibility be integrated together.
Take a Multi-Disciplined Approach
It is human nature to solve problems with the tools we know best. For example, FPGA designers primarily approach a project by looking at what type and size of FPGA is needed, what IP blocks already exist, interfacing requirements, performance, etc. Similarly, software designers consider MIPs, processor types, number and speed of cores, availability of drivers, exiting libraries, tool chains, etc. System architecture requires multi-discipline approach to select the technology best suited for the application and the client priorities. Experience also plays an important role. More projects and diversity of past project experience will provide a larger foundation on which to architect new projects.
In summary, a solid architecture is the result of choosing the design tradeoffs and compromises early, mapping out the technologies, and bringing in experienced and diverse resources. Architecture creation is the most critical part of the product development process, and spending time on a well-designed plan will save time and budget further down the road.