Subscribe to DesignWare Technical Bulletin
Top 5 Features to Consider When Choosing a Software Development Platform
By Allen Watson, Product Marketing Manager, ARC Development Tools, Systems and Ecosystem, Synopsys
The cost of developing system-on-chip (SoC) silicon increases with each new process node, and the cost of developing the software for SoCs is often greater than the cost of the IC design1. Therefore, it is increasingly important that the software development tasks are started early and that the work is done efficiently. There are multiple options open to the developer, including using virtual platforms, emulators or FPGA prototyping systems as part of the software development process. One or more of these options may have to be utilized. Synopsys offers these types of solutions to its customers with products such as Synopsys’ Virtualizer™, the ZeBu® Emulators and the HAPS® FPGA Prototyping Solution.
Traditionally, processor IP vendors have offered processor-specific development systems that are optimized for the development of software on the vendor’s processor cores. In the case of the DesignWare® ARC® Processors, Synopsys provides a number of development systems designed to enable software development to start early and to improve the productivity of the software development tasks. The latest systems, the ARC Software Development Platforms, are designed to allow software engineers to get started with ARC software development very quickly by including everything needed to begin coding right away. In defining these systems, Synopsys needed to determine what the most important considerations for its customers would be. In this article, we will describe the top five most important features to consider when selecting a solution to help you choose the right software development platform for your next project.
1. Processor Choice
The development board you choose, of course, must support your target processor. However, most processor vendors offer multiple processor cores and you may intend to use a different processor for a later project. So, the first question to ask is, “Do I need the board to support multiple processors or just one?” If you know you are only interested in one processor, choosing a board that is dedicated to that processor would be the simpler and, possibly, lower-cost option. For example, Synopsys offers the ARC EM Starter Kit, which supports just the ARC EM family, although it does support different configurations by providing both the ARC EM4 and EM6 configurations (Figure 1). If you need more options, then most vendors do this with a daughter board/motherboard arrangement. The same motherboard can be used with different daughter boards, where each daughter board contains a different processor core or member of a processor family, as is the case with the ARC AXS101 Software Development Platform. In fact, in this case, the platform has a daughter board containing multiple different cores.
Figure 1: The ARC EM Starter Kit is a low-cost board that support a single processor family
2. Input/Output System (I/O)
If software development is to start before the SoC is available, then you must have a development system that, at least to some extent, resembles the final SoC from a functional standpoint. This is certainly true for the input/output system or interfaces available. For example, if your SoC will interface to a network or connect to a USB peripheral, then the development system should offer these interfaces as well. You may also need additional interfaces for development, debugging or demo purposes. The ARC Software Development Platform offers a rich set of peripherals including Ethernet, USB, HDMI, SD Card, Serial I/O and General Purpose I/O (Figure 2). If you do not need extensive I/O, then a simpler and less expensive board may be suitable for your purposes.
A related aspect with regard to interfaces is re-use in the final SoC. The ARC Development Systems implement many of the interfaces using the licensable DesignWare IP interface components. Thus, if you choose to, you can license this IP for implementation in your SoC and use the same hardware and software drivers that you used in early development for your final SoC. This can reduce risk and cut down on development time.
Figure 2: The ARC Software Development Platform offers many different I/O and expansion choices
Some software functions require the processor to operate at a certain speed to execute properly. For example, for audio decoding to work properly and the audio to sound right, there is a minimum processor speed required. This is usually handled by using ASIC implementations of the processor, assuming one is available for your chosen processor. Having an ASIC implementation may also help reduce the cost of the development board and make it more suitable for wide deployment. The daughter card that accompanies the ARC AXS101 Software Development Platform uses a processor development IC designed by Synopsys. It contains multiple processors, all of which will run at up to many hundreds of MHz (Figure 3).
Figure 3: The daughter card for the ARC AXS101 Software Development Platform implements multiple processors in an ASIC implementation
4. Development Tools and Software
If you are the software engineer doing the development, it’s likely that development tools and software are the first items on your list. These are key items for being productive once you have a board with the right processor, right peripherals and enough performance.
Ideally, the development tools such as the compiler, linker and especially the debugger have been designed or tested by the board vendor to work smoothly with the development board. You may also need different tools depending on the target software environment. If you are running Linux on the board, the GNU Tool Chain is normally required. If you are developing deeply embedded software on a resource constrained device, then an optimized tool chain for the target processor is needed and must be easily available for use with the board.
A major part of software development is debugging the code, of course. So, it is essential that the development board you select provide easy-to-use debug functionality. This is partly a function of the tools themselves (e.g., the debugger), as well as the debug hardware used to connect to the boards. Common ways to do this are with a 2-wire (cJTAG) or 4-wire JTAG connection. Vendors such as Ashling and Lauterbach provide additional hardware “probes” that make this process more efficient. For simpler debug-only scenarios, Digilent provides a cable that converts standard USB to JTAG or cJTAG. The ARC Software Development Platform supports all of these methods and also provides the ability to connect a debugger, either the ARC MetaWare Debugger or the GNU GDB, with just a USB cable. Other forms of debug depend on the software environment. For example, for Linux GDB may be used by connecting over a serial or Ethernet port.
Also important to the software engineer is what other software, including items such as drivers, RTOSes and, if applicable, a Linux kernel, is provided with or for the development board. In addition, it is very helpful if application examples are provided to enable the developer to build an application as soon as the board is unpacked. Synopsys has done this with both the ARC EM Starter Kit and the ARC Software Development Platform. Software drivers, an MQX RTOS binary and, in the case of the ARC AXS101 Software Development, a pre-built Linux image are available for use by the developer. Application examples, along with documentation on how to get these up and running, are also included.
5. Expandability and Extensibility
While the board should come with most of what you need, it is useful if there is an easy way to extend or expand the development hardware. This can extend the usefulness of the development system to multiple projects. A simple way to do this to have connectors or headers that allow add-on boards, something that most development boards have. The ARC Software Development Platforms accomplish this with headers as well as the use of PMod™-compatible connectors, which allow a wide variety of additional hardware or peripherals to be added. For example, a Bluetooth, Zigbee or Wi-Fi module can be added to extend the usefulness of the board, both for development and for demonstration purposes.
The ARC Software Development Platforms take the extensibility even further by adding a HAPS connector to the mainboard. The ability to connect the HAPS Prototyping System to the mainboard provides a complete SoC prototyping solution. In addition, customer IP can be placed on the HAPS boards with the development platform being used to connect to the ARC processor and associated software development tools.
Embedded software development represents a significant part of the design effort for modern SoCs. Getting started quickly on software development tasks is critical to meeting the tight project schedules that are typical in the industry today. In many cases, one of the first hurdles to overcome is to get a development system up and running to allow software development to start early in the project and there are several factors to consider when choosing the best software development platform for your design. This article describes five of the most important features designers should think about, including processor choice, I/O, performance, development tools/software and expandability/extensibility; these were also Synopsys’ primary considerations when defining the development systems for the ARC processors.
1 Semico: http://www.semico.com/content/soc-silicon-and-software-design-cost-analysis-costs-higher-complexity-continue-rise
Subscribe to DesignWare Technical Bulletin