Cadence uses Agility MCS to generate product software

MATLAB-to-C Synthesis Dramatically Increases Productivity and Quality

Cadence Design Systems (www.cadence.com) is well known as an industry leader when it comes to delivering the state-of-the-art Electronic Design Automation (EDA) tools used to create cutting-edge integrated circuit (silicon chip) designs. In order to maintain this leadership position, Cadence’s Manufacturing Modeling Integration (MMI) organization is tasked with making the design tools understand and accommodate a wide variety of manufacturing issues.

One such issue that is absolutely critical in the case of today’s incredibly sophisticated manufacturing processes is that of Chemical Mechanical Polishing (CMP). Each chip on a silicon wafer may contain hundreds of millions of transistors, which are formed on the surface of the wafer. In addition to the transistors, multiple layers of fine copper tracks (wires) are created on the wafer. CMP is used to smooth the surface of the wafer after each layer of tracks has been created.

Due to the fact that the tracks are so small, small variations in their thickness can dramatically impact the speed of signals passing through them, the amount of power they consume, and their susceptibility to noise effects. They may even cause pooling or shorts, thus creating complete function failures.

Polishing the wafer uniformly is tricky because the various materials deposited on the wafer have different chemical and mechanical characteristics. The problem is further complicated by the mechanical properties of the wafer and the polishing pad, such as their elasticity. The result is that polishing a minute “bump” at one location on the chip may cause a corresponding “dip” millimeters (hundreds of wires) away.

The solution is for the designer to add additional copper to different areas of the chip so as to ensure a more uniform distribution of “bumps.” In turn, this means that it is necessary to accurately model the CMP process to determine where to add the extra copper and to then check that these areas of “copper fill” perform as required.

Modeling the CMP process is extremely complex and requires highly sophisticated algorithms. MATLAB is used throughout this process, from the code for the calibration step to creating the 3D model of the chip and automatically placing fills. The end result is a more power-efficient chip with fewer defects that works at higher clock frequencies.

The team started around the year 2000 as a group of PhD students at MIT addressing the subtleties involved in truly modeling the effects of CMP. Over time, the group expanded and formed a company called Praesagus, where they continued to evolve and refine their models and to calibrate them against real-world foundry processes.

“The result was approximately 20,000 lines of highly optimized and vectorized MATLAB code,” says Emmanuel Drege, Senior Member of the Consulting Staff. “The fact that we started working on the CMP modeling problem when we did – before CMP-related variability effects became a significant issue – gave us a commanding technology advantage, including the fact that our parameterized models are applicable to processes from multiple foundries. This technology lead and the sophistication of our models were key reasons why we were acquired by Cadence in March, 2006.”

Topographic view of a chip (Image copyright© Cadence Design- All rights reserved)

The Challenge

“The real problem was that we wished to continue to use M-Code as our golden representation so as to be able to take full advantage of MATLAB’s superb visualization and analysis capabilities and speed of development,” notes Emmanuel. “Our initial approach was to perform the translation by hand, but this took many months. And even after we’d completed the initial translation, every time we modified our algorithms in the MATLAB domain we had to spend at least a week propagating these changes into the translated code.”

“The challenge was to quickly and reliably translate our MATLAB M-Code into a form that could be used by the groups developing the EDA tools,” comments Shishir Shroff, Member of the Consulting Staff. “Our MATLAB models account for approximately 80% of the functionality of these tools, so they represent a major part of the end product.”

“Things really started to look bad when the product development teams ran into issues,” adds Shishir, “because no one knew where the error lay – was it in the hand-translation or in the integration? The result was that the members of our team were spending the bulk of their time wading through the hand-translated code trying to determine the source of the glitch, as opposed to enhancing our models.”

The Solution

“With only two months in our rapid product release cycles, we were almost always scrambling to get this hand-translation done in time and with the required level of accuracy,” says Nickhil Jakatdar, Engineering Group Director. “When Agility released their MCS (MATLAB-to-C Synthesis) tool, its capabilities were exactly what we needed to handoff our algorithms to the product development groups in a form they could use.”

“This was the answer to one of our most fundamental problems,” comments Emmanuel.

“In addition to the fact that Agility MCS supports a broad subset of the MATLAB language, we were also able to tap into the large set of MATLAB functions supported by the MCS Function Library and not have to develop and test these functions by hand. In the past, whenever we modified our MATLAB models, it took at least a week to propagate each change to the product teams. Now, after making and verifying even a major change to our algorithms in MATLAB, it’s a push-button operation to generate the C code to be handed over to the product development groups."

The End Result

“It’s certainly been a great addition to our environment allowing us to deliver high quality models and code very rapidly,” adds Shishir. “Now we don’t have to worry about the quality of the translation, because the seamless integration of Agility MCS within MATLAB allows us to verify that the generated C code produces exactly the same results as the original MATLAB algorithms (we do this via the automatic generation of MEX-files directly from the MATLAB command line). This means that we can spend our time doing what we do best – algorithm research.”

Emmanuel sums things up, “The bottom-line is simple but consequential: the product development team is able to take the generated C code ‘as-is’ and integrate it into our products without any modifications, which means Agility MCS gives us a smooth and predictable handoff, on schedule.”