Revelations From Italy

Picking the right rental car depends on where you’re driving and what you need to stuff into the vehicle. It’s all about context.


By Jon McDonald
I am just back from vacation. My wife and I spent two weeks in Italy. While there we toured the Tuscan countryside, Florence and Rome. We had a rental car for the time in Tuscany. In Rome we didn’t keep the car. Watching the different types of cars and the way they were driven gave me a good analogy for an issue I’ve had a number of discussions on.

As people think about ESL design and what’s most important, I often get the question “What’s more important, software or hardware?” I have heard Gary Smith say, “It’s the System Stupid,” which in my mind implies both hardware and software, but that’s really not enough, either. It’s not just the system. It’s the system and how that system is being used. What is the environment around the system? The environment in which the system has to interact has a huge effect on the decisions that should be made to create a successful system implementation, impacting both hardware and software decisions as well as partitioning.

Getting back to my Italian car analogy, the car would be the hardware, how I drive the car and what I put into the car would be the software, while the roads or in some cases lack of roads I travel over would be the environment.

In the Tuscan countryside there are many dirt roads, locally described as “white” roads. The “white” roads were quite a surprise the first time we discovered one. The countryside is fairly hilly, and since we didn’t pack as efficiently as we might have, we required a significant amount of room in the car. These issues biased us towards a fairly powerful somewhat larger car for our time in Tuscany.

When we got to Rome, getting that larger vehicle to the hotel was a bit of a challenge. In Rome the tiny Smart Cars are very common, and I believe very practical. They fit through amazingly small spaces, and they were parked in virtually any small open space along the road, and in some cases on the road. If I look at the car choices, from our ESL perspective, the car would be the hardware.

What we needed to put into the car would correspond to the software. I could have used either a Smart Car or the larger car we had in the countryside if I only looked at those things. I actually saw a Smart Car carrying more luggage than we had.
In much the same way I can run the same software on many different hardware implementations. In our cars, which one is more appropriate depends on the environmental requirements in which the car is being used. What combination of hardware and software should be realized in my system depends on the environment in which the system must function.

This leads to one of the key points to understand when thinking about ESL design and tradeoffs. We cannot optimize a system or even choose the best hardware/software partitioning without understanding and analyzing how the system will work in its target environment. ESL provides the methodology and abstraction to allow us to quantify these implementation choices and analyze them in the appropriate context before we invest in a particular implementation.

–Jon McDonald is a technical marketing engineer for the design and creation business unit at Mentor Graphics.