On the face of it, if we consider a simple ‘diff’ utility, it doesn’t need any explanation; almost everyone in our community would have used it. But imagine the CTO of a company investing his time in explaining how beneficial a specialized ‘Cdiff’ function can be in evaluating IP. Today’s SoC design world can’t live without IP and hence it’s worth looking at it in detail. Let’s take a dig at it to find out how Cdiff can help in quickly checking an IP.
Fractal TechnologiesCTO, Johan Peeters says that Cdiff (you may call it Crossfire-diff) is a result of active discussions with the Crossfire user-community who is very explorative; which is natural as the time-to-market window is very short, they have to find alternative ways of doing their design with whatever is provided by a tool or technology. It’s the eyes of a smart tool provider who catches up on what is repeatedly being done and automates the same. It was observed that very frequently designers were inspecting new models to locate any differences with the previous ones. Although Crossfire could be used to locate those differences in other ways, a push button approach with a Cdiff option on the GUI is much smarter way to improve designers’ productivity.
One can quickly check every new IP shipment for the requested changes as well as absence of any unexpected or spurious changes to qualify the IP for use; of course Crossfire can anyway check the whole IP for quality, but the Cdiff option can quickly do the in-coming acceptance test against a standard golden. The option can be set for full diff between two .lib files with complete check of parameter values along with any tolerance limit.
It could be argued why gvimdiff can’t be used. Well, it can’t, imagine the kind of result you are going to get by comparing two .lib files; formatting, ordering and various indents can lead to very different results altogether. Cdiff on the other hand checks the .lib semantics as intended and flags meaningful real issues such as a missing pin, cell or an extra reset-to-Q arc on a flop etc. Cdiff is smart in the sense that it uses gvimdiff functionality in reporting. Above picture shows an example where two .lib files are shown in gvimdiff with identical cell order and text formatting. It highlights only an extra arc in the second .lib file with a message to locate it in the original file. Now imagine locating just this one arc difference among a large number of different process conditions and formatting differences by using gvimdiff!
Another angle to look at Cdiff from design perspective is that it lets a designer converge a design to tape-out faster. Imagine at the tape-out time, your IP supplier provided a small incremental update in the IP. You can quickly check for the intended change and if there are other changes that implicate other steps of the flow such as GDS and characterization then you can discuss with your IP supplier to know about the reasons to do that. The precious design time at the tape-out stage can be utilized in these discussions, rather than re-qualifying the whole IP through Crossfire, which is anyway a given.
From a difference from golden perspective, Cdiff does all that what Crossfire does and provides the differences in cells, pins, timing arcs, pin shapes, cell functionalities etc. However, Crossfire is much versatile in assessing the quality of an IP such as pin routability, cell-delay monotony through temperature, and so on.
Read the whitepaperwhere Johan answers in detail to intriguing queries from designer community. He also speaks about future capabilities which can be added in Cdiff, such as ‘filter on differences-of-interest’ and leveraging the concept with repositories.