The last few weeks I have been more involved in hardware CM, or more specifically hardware CM for IC (chip) development. The design process for a chip if very similar to the design process of software.
To design an analogue chip, you first make a model the electronic circuits using an modeling tool where you connect signal and power lines between standard components. This model goes into a simulator where you "test" your design. For a digital chip, modeling is even more similar to software development: you write code using a programming language. A code checker is then able to calculate the output bits based on the input bits. So in both cases, you create source files to describe the system behavior and you run a build to check the code or model, and generate files needed to feed the (chip) fab. The different between hardware (chips) and software is what happens with the build result.
So I would expect that CM for the design process of chips would be similar or even identical to the design process of software. Well, in my present experience it is not! CM for chip design is as we did it for software in the 80-ies of the previous century, which is 25 years ago. There is hardly any parallel development and the only controlled versions are the current versions (/main/latest) and the baselines (tagged versions).
From a software perspective, absence of parallel development is hard to imagine. How come that chip design can do without, and still develop multiple product variants at the same time? The answer is: reusing block designs. A chip consists of a combination of (more or less) standard blocks. These can be high level blocks (e.g. an ADC, or a Bluetooth controller) or low level blocks (e.g. a transistor, an amplifier or a FIFO). These blocks are used to compose a chip design. The challenge is to combine as many blocks as possible, on a chip as small as possible, with the best performance as possible (e.g. low noice levels, minimum power dissipation, largest temperature range, etc.). The cost of a chip is determined by the size, but the market value is determined by the functionality (maximum number of blocks) and the quality (best performance).
One of the biggest challenges of chip design is how to place and connect the blocks and get still get the chip within spec. This is a 3-D problem - because a chip consists of multiple layers - and almost all changes in the design has impact on the complete chip. Therefore, you cannot change one part of the chip in one team, which another team works on another part, and therefore there is not much parallel development.
Development of those reusable blocks (e.g. making a smaller ADC using less power and with better performance) is done separately from the chip development. These blocks are called IP blocks. The designers of an IP block don't really care about placement and connection of the block on the chip; they care about the internals of the block, making the design possible. The only reason they care about other blocks on the (test) chips is interference: for example, what is the effect if we place the ADC next to a power management block?
Since almost all changes within an IP block have impact on the whole block, there is little use to designing one part of the block in parallel with another part of the same block. And if that is feasible at all, it is more useful to make them separate IP blocks which can be used (and designed) independently.
Now let's go back to configuration management. We have seen that chip design and IP block design have little use for parallel development. So CM does not need branching or streaming. If there is a need for (for instance) product variants, it is easy enough to just design them as separate product types, reusing the ideas of one product type for the other one. It may even be sensible to design them sequentially where the first product type takes several months to design and the next one only a few weeks after it.
If we look at software development, we may notice that the use of standard blocks is not "common practice". Designing a software system involves (1) designing the software blocks and (2) integrating them into a system. So what chip design does in two separated processes (usually also separate projects), is combined in a software project. This is possible because in software you have infinitely more freedom in interconnecting "blocks" and infinitely higher speed of changing the characteristics of a blocks. If a software designer has a block that "almost" fits in a system, it is often cheaper to change to block itself than to change the system around it to make it fit. In a modular design changing the block internally has less impact on the whole system than changing the environment of the block. And therefore, software blocks are often developed in separate teams that work simultaneously, using a (more a less) fixed interconnection called the interface architecture. Variants of blocks can - and do - exist simultaneously within the same system, where at compile-time, link-time, install-time or run-time is it decided which variant of a block is actually used.
The simultaneous and concurrent existence and design of software blocks, and the dynamics of integrating those blocks into a system is so much more complex than for chip design, that it requires a lot more complex configuration management approach. The SCM approach requires parallel development in branches and streams, both on block level and system level. It also requires a lot more flexibility of dealing with integration scenarios, variants and circumstantial differences. And last but not least, chip designs require an (expensive) manufacturing process that is very expensive to change once it is established, while software is the final product after the build. Consequently, the dynamics of change in software systems is much higher then for chip designs.
In summary I would say that although the design processes for chip design and software design look very similar, the configuration management requirements are of completely different magnitudes.
It is official: Parabuild 3.2 Beta is out! We've just announced the beginning of a beta program for Parabuild 3.2, the Continuous Integration and Software Release Management System. Viewtier offers a free license for each new bug found in beta builds!
To join the beta program jump to http://www.viewtier.com/products/parabuild/eap.htm
What's New In Parabuild 3.2
Parabuild 3.2 adds Automerge, an automatic inter-branch merging (integration) for Perforce and over 50 enhancements to its build and release management, build telemetry, user interface, version control integration and notification subsystems.
Other cool things include integration with Checkstyle, PHPUnit, CPPUnit, PMD statistics and build time-to-fix.
Check screen shots and detailed descriptions of the new features.
I just discovered Microsoft Max. While the application still seems to be in the early stages, it has to be the prettiest application I have ever used - just take a look at the semi-transparent splash screen with it's lovely wobbly progress bar.
This is currently a photo-organizing/sharing app based on top of the WPF and WCF stuff in the .NET 3.0 release (think Picasa but from Microsoft). I'm pretty happy to see that my Dell M70 with Nvida Quadro FX Go 1400 graphics card qualifies as a "Tier 2" device for WPF world - hopefully signifying a Vista upgrade will actually give me the fancy look and feel.
As far as the application goes - currently it allows you to automatically share photos with your friends so that they automatically receive new photos inside Microsoft Max. It also has a decent RSS aggregator. Apple has something similar in the iLife suite of products for Mac OS X, I think it is iPhoto, don't remember. Anyway the use case I have in mind is an easy way for my father to get the latest photos of my family growing up automatically on his desktop so that he can print them / burn them to DVD.
However, while Microsoft Max looks incredibly nice, there are some problems with the current architecture as I see it. The main one is that without the equivalent of a .Mac account, files are transferred directly between my machine and my fathers - meaning both machines have to be on for this to work. It also has to make it through the multiplicity of NAT's, firewalls etc separating our machines. I hoping that there is a backing Windows Live online service in the works to help with this, we'll see. The fact that you have to have a MS Passport to use the software certainly suggests that this may be the case. The lack of information on the Max web site leads you to think that this is the basis of some sort of social network type application - more indications that in the Web 2.0 world Microsoft are stepping up the pace to justify a specific OS to be an ideal complement to peoples new online lifestyles.
Anyway, this bodes well for applications coming the pipe from Microsoft to make Vista a more consumer friendly OS. Also it shows what can be done with WPF.
While WPF has me very excited, I'm also a little scared. You are going to have to have a modicum of graphical talent to use WPF sensibly or you could very rapidly have a very ugly application. It's looking like application vendors are going to have to hire some of the creative talents from the games studios to make apps that are visually pleasing.
One thing is certain, the Windows world is going to have a revolution in UI design over the next 5 years - probably the biggest change in the history of Windows - and anyone not keeping up is soon going to have a very dated looking application.
I’ve been using the new 2.5 beta version of Skype for a week now and I am loving it. The main new feature is the support for SMS messaging. When I am out of the country I use SMS as a primary method of communication to home – however when roaming I am frequently charged about 50 pence per message sent (free to receive). Using Skype I can now text home for 0.08 € (about 5p – which is actually half the price I pay for my text messages when at home and 10 times cheaper than what I pay while abroad). According to the Skype blog, the feature set it due to increase but it already works for me. I text from my computer and receive replies to my cell phone, the recipient has no idea I’m using Skype to send the message apart from the fact that my messages are usually longer as I have access to my full Qwerty keyboard.
All I need now is to get one of those NetGear SPH101 phones and Skype will have 100% WAF. Until that point, I’ll have to pay for my phone / text messages home.






