Changing trends have brought us to the age where development tools like electronic design automation (EDA) solve more than just immediate hardware problems. Electronic products have become more sophisticated, so developing their underlying hardware and software and integrating these two sides together has also become more complex. This article takes a look at the trends observed in software development tools for electronics engineers.
Software-eclipsing hardware
Jaswinder Ahuja, corporate vice president and managing director, Cadence India, explained in an interview with EFY that, from the electronic system level (ESL) design perspective, high-level abstraction of software is eclipsing hardware as the main driver of system development cost, schedule and risk. “Early software development, hardware verification, hardware or software integration and integrated system validation have now become primary challenges, increasing development costs, project schedules and risks. As software applications have become the primary product differentiator, systems and semiconductor companies must provide not only silicon but also complete hardware or software systems ready for apps deployment.”
It is not just apps development, though. An interesting trend observed in the product design flow is how it is increasingly becoming a multi-disciplinary approach. Sreekanth Tammana, country manager for India, Pakistan, Bangladesh and Sri Lanka, Altium Europe GmbH, explained this to us a few months back. He said, “You need mechanical engineering for the modern printed circuit board’s (PCB’s) physical design and hardware engineers who build the system. If it is an intelligent or a smart device, you get embedded engineering and software engineering involved. Then, there is cloud systems engineering to connect these devices to the cloud and to develop front-end interfaces to manage devices and grab data out of these. Cloud systems engineering is an important discipline due to the popularity of machine-to-machine (M2M) and Internet of Things (IoT) designs.”
How does cloud systems engineering help you? Let us say that you are designing a temperature-control system. You have memory, a microprocessor and you might want to add Internet connectivity to it. In the first stage, you can place the collected data on the cloud, and in the second stage, you would need an application running locally on the device to control the temperature and set up a Web interface to it. Then, you would need to set up locations for the device, a smartphone, for example, to control the system. The designer needs infrastructure to set up a server or a portal or a platform, where the mobile phone is connecting to and syncing with the cloud.
More tools in the sky
Another interesting trend in the software tools arena is the growing number and increasing popularity of Web based development tools for embedded systems.
Jason Guo, senior technical staff member of Fairchild Semiconductor, recently said in an interaction with EFY that some advanced electronic design and simulation tools are now available online to enable system-level design of switching mode power supply (SMPS).
Cloud based development tools reduce the hassle of setting up software, resolve space issues in the user’s computer and avoid frequent upgrades of the tool. These also allow sharing of files between users from around different parts of the world. Of course, a Web based system also comes with issues like the need for continuous high-speed Internet, security and increased uptime.
Fairchild’s Power Supply WebDesigner (PSW), Texas Instruments’ WEBENCH and the open source project Simulations for Performance Assessments that Report on Knowledge and Skills (SPARKS) are some of the online design and simulation tools currently available.
Altera and Mentor Graphics are collaborating to provide virtual platforms that contain simulation models of ARM processor sub-systems in Altera’s systems on chip (SoC) field-programmable gate array (FPGA) families. This makes embedded software development easier while reducing the need for expensive hardware by enabling large development teams to perform development and testing in a virtual environment based on the chip.
Interconnected tools
Tools now encompass the entire system design flow. This means that something like wire harness tools now have the capability of being connected to their PCB tools, which are then combined and used for designing systems and even systems of systems.
Tools like the one Guo mentioned earlier in the article are also typically driven by knowledge based automation for every decision-making point of a design flow. This makes it possible for even novices and amateurs in the design field to complete a design quickly.
Engineers also want to know how they can do collision checking and can ensure that all ports fit perfectly on the circuit board, and soon.
This is why it became important to integrate the mechanical world into EDA tools. If the tool has support for Incremental Design Exchange format (IDX) files, it would help in the integration of design files from EDA tools to mechanical design tools like SolidWorks. The benefit here is that IDX allows incremental changes to the design file, in addition to making the file sizes smaller.
Tools for the IoT
Every other engineer we meet is into designing some product or the other for the IoT. So we thought it would be a good idea to have one section focusing entirely on the software tools available for those working on IoT products.
If you are trying to build M2M applications like remote monitoring or fleet management, M2MLabs Mainspring is a good framework that you could check out. Written in Java, it is an open source framework that allows flexible modelling of devices, their parts and characteristics. For instance, a temperature sensor can have a set of attributes related to indoor and outdoor data that it sends.
All data is time-stamped and sent according to a REST Web service. When new data is received, it triggers execution of Groovy scripts (programming language for Java platform) to perform boundary checking of data, interpolation or threshold supervision. Data is stored on scalablenoSQL database.
DeviceHive and the IoT toolkit are other frameworks that you could try out, too.
Node-RED is a tool for wiring together hardware devices and online services through different flows. It works with popular boards like Raspberry Pi (or Raspi), BeagleBone Black and Arduino. Flows could be created by adding an inject node and a debug node and then wiring the two together through a simple drag-and-drop GUI. You can then deploy the nodes. If you want to apply some function to each message from the inject node to the debug node, you can add a function node in between these—it is that simple!
Intel XDK IoT edition is a software tool that also uses Javascript to define the behaviour of an IoT device. It allows you to design a companion app I/O for the IoT device and control it from another smart device.
Wyliodrin is a tool that Intel recommends. It can be used to create IoT projects using just your browser. Being a cloud based tool, it saves everything automatically, works in most browsers and is compatible with most popular boards. It allows boards to talk to each other, and enables mobile devices and Web services to talk to the board.
There are also neutral home automation software like OpenHAB that allow smart devices in your home to talk to each other. Being vendor-neutral, it allows users to easily add new features to their devices. To top these off, there are middleware like IoTSyS and OpenIoT that ease the process of communicating data to and from devices.