Friday, November 02, 2007

Updated AEMB

I've been getting a request from the company that is using the AEMB in their upcoming product, to add certain functionalities to the processor. I thought about it and realise that it would be difficult to tack on the functionality to the current processor. So, I decided to re-design the processor, with the capability to plug in future functionality.

There are also some minor bugs outstanding for the existing design, which are currently fixed by optimising the software. One bug was spotted by an engineer from a major EDA company that was using my processor for training purposes. It has been around for months but I haven't had the time to dig through the old design to fix it and it would be difficult for others to dig around as any minor design change may affect other parts of the processor.

There comes a point in a design where the amount of patchwork is so extensive that it's actually easier to start from scratch. So, my cleaned-up design also fixes the existing bugs (of which there were several). Since I was already familiar with the processor architecture, my effort at a clean redesign took only a day. I woke up early in the morning, popped everything into the rice cooker, and worked till I slept.

To my surprise, the new design worked without any problems. It even works without the unwieldy software optimisations. So, I'm more confident of the new design working than the old one. I will get the company to test the new design and I will gradually phase out the older design if no bugs are discovered.

The new design allows future functionality to be easily added. For the moment, I've included a barrel-shifter and a multiplier. In the test code, the one with the optional components and software optimisation runs at 1.6 times faster than the unoptimised one. However, the additional components slow down the processor by 1.14 times and increases the size by 1.09 times.

No comments: