Embedded World 2019

The Embedded World in Nürnberg is still going strong as the best tradeshow for “Embedded” in the world. This year, I spent time doing booth duty and gave a talk in the Conference part of the event. There was an unusual high number of old friends and business acquaintances around, and it was a great experience overall with many fruitful discussions and connections for the future.  However, it seems that there is always something that goes slightly awry with my travel to the show…

Here are some selected observations from the show, by no means intended as an exhaustive report. It is just stuff that caught my eye and that I felt was a little bit unexpected. Or just plain interesting.

Automotive

“Automotive” is one of the main themes for the exhibitors at the Embedded World, given that it takes place in the heart of the German and European automotive industry.  You found automotive applications in many booths, demos, and exhibits.  I particularly liked this one from Fraunhofer, with an electrical charger attached to a Bobby Car. Big charger for a small car:

Artificial Intelligence

One big trend in all areas of computing is AI… and embedded is no exception. Applications of machine learning (ML) and AI at the edge were common all over the show. The most common demo was various forms of computer vision – since it is both a useful function in itself and easy to demo.  AI could be found running on standard processors, FPGAs, dedicated accelerators, and even low-end microcontroller cores. In particular, implementations on FPGAs were common.

The Intel booth featured multiple AI-at-the-edge implementations, using Movidius and Nervana accelerators as well as FPGAs and general-purpose processors being used to run AI tasks.

I was a bit surprised to see the ARM demo of an image recognition neural network running on a mid-range Cortex-M microcontroller. The code used the CMSIS-NN API, and was all in C, mimicking the typical Python-based code you would see in frameworks running on beefier hardware. It is really interesting to see the same types of structures expressed over and over again in different languages.

The Mathworks showed machine-learning applications and neural networks implemented in Matlab with code generation to run in standard frameworks like Caffe and Tensorflow, as well as lower-level APIs like ARM CMSIS-NN, Nvidia CUDA, and Intel MKL. Basically, their idea is to let programmers express algorithms in Matlab instead of Python (or other languages) but still run in the same way and on the same standard frameworks as everyone else is using. It looked like a rather general-purpose setup, suitable for both training and inference. 

Simulation

Simulation was everywhere, at many different level of abstraction and simulating different things.

I saw traditional virtual platforms at Wind River, Synopsys, Siemens (Mentor), AntMicro, and Imperas.  Various forms of host-based simulation where control code runs compiled on a PC were found in places like ETAS and many others.  Simulation of the environment is also common, including traditional players like the Mathworks and Ansys.  Ansys had a demo where they showed how they simulate how a LIDAR sitting behind glass on a car would see through rain… pretty sophisticated. B-plus did “simulation” by replaying real-world sensor recordings with optional noise (see below).  The Mathworks showed a demo where they would simulate the environment in real-time to drive a physical control computer at full speed – such hardware-in-the-loop is standard practice in many real-time fields.

Hypervisors

A few years ago it felt like the whole virtual machine and hypervisor thing was cooling down… but it has come back big time! Use cases like “run Windows or Linux alongside that critical real-time application on the same processor”, or plain old “workload consolidation” all call for hypervisors that can provide good isolation between VMs and controls on resource usage. Regular IT-style VM managers are not really built or optimized for this use case, so instead there is an impressively large number of dedicated hypervisors being built for the embedded market.

A few of the ones that I found: The open-source ACRN kernel (supported by Intel), Lynx Mosaic, Sysgo PikeOS, Green Hills, QNX, Wind River (whose latest take on the embedded hypervisor is based on the VxWorks 653 technology base, rather than the previous WR Hypervisor or VxWorks 7 variants).

Full-Speed Recording

Right next to the Intel Booth we had a company called B-Plus. From what I understood, they have worked a lot as a contractor doing board design, but recently they have started building their own products. They had a big sign saying “record – replay – simulate” which piqued my curiosity.  Turns out that they really focused on the record part, with a product called AVETO . The demo looked like this:

This is a recording solution for sensor-rich cars with automated driving and safety functions. The idea is to record ALL sensor data during a test run, and later be able to replay it in the lab. The data rates can get rather large… They record a 10Gbps Ethernet line going at full speed (about 1 GiB per second). Their hardware takes the torrent of data and turns it into a recording on a big SSD – they said they could use up to 32 Terabyte in a single box, which does fill up pretty quickly.  A key value of their recorder setup is that they can correlate recordings from many sources, with very high time-stamp resolution. Everything is time-stamped as it gets captured, and those time stamps are saved with the recordings. This makes it possible to stitch together a view across all log sources at replay time.

The recordings can be replayed in the lab to re-test tuned algorithms or to replicate problems from the field. It is also possible to inject small things like pixel errors in the replay of sensor data to test how well algorithms behave with noisy or bad data (that was the simulation part).

This is unlike the simulation solutions from companies like Ansys that make it possible to simulate a virtual world to generate artificial scenarios – B-plus instead does insanely high-speed record and replay. They can merge recordings from traditional slow automotive buses like CAN into the overall solution as well, but that data is so small it is hardly noticeable.

Log Analysis for Debug

Another take on record and replay/analysis is offered by Inchron – they use various forms of debug hardware to pull out traces from multiple networked automotive ECUs (running as hardware). Their booth had a pretty demo setup that looks like this, with two nodes running live with attached iSystems trace boxes:

Inchron demo from Embedded World 2019

The Inchron tools like chronView (https://www.inchron.com/tool-suite/chronview/) visualize how traffic flows between nodes – and can also perform automatic analysis of the timing of messages (and chains of messages) to spot missed deadlines, timing overruns, and other timing problems. The resulting graphs are pretty and fascinating, and a fine example of how visualization can give life to data. Using logs and analysis of logs to debug the behavior of complex systems is a methodology I strongly believe in, and Inchron offers a nice implementation of log analysis for the embedded/automotive domain.

Static Analysis in a New Way

Semmle is a new player (new at least to me) in the static code analysis area, with a fresh angle on how to do code analysis at Enterprise scale. They parse the code of a program, store the syntax tree in a database, and make the code available to queries in “SQL-style”.  it is a spin-off from Oxford university in the UK, but now headquartered in Silicon Valley.

The idea of running queries on the source code lets you do things like “find all cases of calls to snprintf() where the return argument is used as input to another call to snprintf()” — essentially finding other code that looks like a known problem or bug you just found. Semmle has a thousand+ ready-to-use queries, and have been busy analyzing open-source code for free at https://lgtm.com/

They had some really funny stickers for laptops as give-aways… not that they have anything to do with their product. Still, appreciated:

Heterogeneous Hardware Debug

I got a demo at the UltraSoc booth that finally explained what their product actually is, and it is pretty cool. Fundamentally, UltraSoc is selling debug hardware IP blocks that chip designers put into their chips to provide debug services. It is an alternative and equivalent to things like ARM CoreSight – but without being tied to a particular core architecture. They did talk a lot about RISC-V (as did many tool vendors at the show), which is pretty natural since they were in the RISC-V foundation booth.

However, the UltraSoc hardware works for several other types of cores, including ARM (!). That means that it is possible to use UltraSoc hardware to do hardware debug on a heterogeneous system with entirely different types of cores, from a single debug connection. Basically, all previous solutions I have seen have been for a single type of core or at least cores from the same vendor or instruction set. Here, they had a demo showing Eclipse debugging a software on a chip with both an ARM and a RISC-V core. That’s the kind of cool trick we use to pull off with Simics… but now it was done on actual hardware. Interestingly, this debugger was built using another debug protocol than TCF, which should have been the default choice for heterogeneous debug.

Catchbox

While demoing in the Intel booth, I talked to a couple of guys from Catchbox – who had one of their throwable microphones with them. Brilliant idea for conferences – instead of passing a mike around or asking people to line up for a microphone stand, you just throw them a microphone inside a soft cube. It can handle the abuse, and there is no risk of getting hurt. 

One particular aspect of the catchbox is how it is charged. It is possible to remove the central electronics unit and plug in a USB cable to charge it – but the most convenient way is to use wireless charging. However, the Qi standard used for mobile phones does not work – it requires a very short distance from the charging plate to the receiver. I have hit this myself with my most recent Sony phone, where adding even the slightest case to the phone essentially broke wireless charging.

Thus the catchbox uses a custom solution with a rather massive coil at the bottom of the electronics unit that allows for charging through the cushioning (a distance of at least 2cm).

Intel Collector Pins

(Disclosure: I work for Intel) In the booth this year, we had a neat program with pins to help visitors find Intel-based solutions and Intel hardware on the show floor. There was more than 20 different pins to collect, all with unique designs specific to the embedded world and Nürnberg. Here are the ones that I managed to find:

The Intel collectors pins I collected at the Embedded World 2019

I particularly appreciate the Brezel, Bier, and Goldbären. Looking forward to what the event team will create for next year!

Speaking

As previously announced on this blog, I presented a paper called Shifting-Left Together – Enabling the Ecosystem with Virtual Platforms in the SoC session of the conference (which lasted for most of Wednesay). I did not think about it before, but the SoC session was new for this year. The Embedded World daily newspaper featured an interview with Farhad Mafie, the organizer of the track that explained the concept:


The three talks in my part of the session ended up complementing each other in a surprisingly good way. The first talk, by Cedrik Bock, was about cycle-accurate virtual platform modeling of an IP block and its use for architectural analysis of different ways to implement an NVMe interface. I came second with a talk about large-scale fast virtual platforms, and their use in software development. Finally, Frank Schirrmeister talked about how to use virtual platforms with RTL simulation and emulation to validate the RTL implementation of hardware alongside the software. Together, it provided a good all-around look at virtual platform uses in industry.

Travel Fun

Last year, I got stuck in a snowstorm in Sweden and barely made it to my show floor talk.  This year, I was too late to find a hotel in Nürnberg at pretty much any price, and ended up staying in Neumarkt in der Oberpfalz a nice little town some 40 km away from Nürnberg. This meant I had to rent a car and drive to and from the show – which turned out to be a lot less burdensome than it might sound. Not being able to drink any beer at the show could be considered a bit of a bummer, but on the other hand it made it easier to stay sharp for the three days of the show.

Driving on the autobahnen from Nürnberg to Neumarkt was a European experience in the best way.  Driving out of Nürnberg, there were road signs pointing to place like Berlin, Dreden, and Prague – this is really in the heart of Europe. I saw a Polish-registered trucks ferrying Seat cars made in Spain by a Volkswagen subsidiary. While navigating using by Google Maps – enabled in part by the free roaming that the EU pushed through a few years ago. This is what Europe and European Union is about in practice – making it easy to go anywhere in Europe to work or vacation, and building up the European market.

The Autobahnen around Nürnberg also featured some interesting speed limits (including no limit) – there is something rather comical about a sign pegging the limit to 120 km/h “bei Nasse” (when wet).  I did see quite a few Autobahnraketen drive by at ludicrous speeds that my rather cheap rental Opel Crossland could not keep up with.

The black sign points towards the Messe and the show. Best picture I could get since I had to be stopped to take a photo….

The signs leading from the A6 autobahn to the Messe were excellent – electronic signs like the above pointed all the way to the show, including which parking structure to enter for visitors to the Embedded World (separate parking was allocated for visitors to the Freizeit, “Leisure time”, fair that took place that same time as the Embedded World).  

On the way back home, the next snag hit. When i checked in for the flight from Nürnberg to München, Lufthansa asked me if I could consider skipping the flight and instead taking a taxi to München to catch my next flight home!  I have never seen that one before, but given that it is not all that far between the cities this would actually get me to the airport in München faster than with the plane. So, I accepted the offer just for the sheer craziness.  Apparently, this also made the day for the taxi driver.  You have to love the abilities of a full-service airline to solve problems. 

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.