Development for Design Reuse is a critical challenge facing design houses and semiconductor vendors today. Designs are broadly classified into two categories: legacy designs and current designs. For the past decade, companies were focusing on creating a design and getting it to work for their immediate product. However, with a shift to the "system-on-chip" methodology, it has become crucial, for competitive reasons, that every design be done with an "IP paradigm" or "Design Reuse" in mind, so that it can be integrated quickly into a larger system-on-chip. However, this approach requires a completely different methodology and mindset.
This paper explores the details of a complete IP methodology that revolves around development standards, scripts, release mechanisms and shrink-wrapped packaging using "SOS", a software system for design data management.
Companies need to design with the IP paradigm so that they can be competitive in the marketplace. Design cycles are becoming increasingly shorter and levels of integration are rising exponentially. If a company does not move to an IP paradigm, it will be left with costly products that are late to market. In addition, the structured approach will help designs to be done much quicker.
The graphical nature of the tool and the simple usage paradigm makes
it very easy for new engineers to get started on a project. It has a
centralized and secure design repository and provides revision control,
manages directory hierarchy and tracks releases. Each engineer works
in her/his own work area or sandbox, which is created through SOS by
specifying a rule to select revisions of files. This allows one engineer
to work on the latest enhancements while a second engineer is creating
a patch release and a third engineer is running a long synthesis job
concurrently without affecting each other.
In addition to the visual representation of the entire project SOS has a set of flags, which automatically improve collaboration and quality. Furthermore, the customizability of SOS allows us to automatically run Verilint before a verilog file is checked in. Due to these collaboration features our engineers never lose time struggling with common errors like tracking down who forgot to check a file in or added changes which are not lint free. When making a release we know exactly what we have and that all previous patch fixes have been incorporated into this new release. The following figure shows the data management of a complete AGP/PCI IP development system.
SOS uses the normal checkout-modify-checkin paradigm. When you have a file checked out, a write-able copy of the file in placed in your personal work area and a lock is placed to notify others that you are editing this file. You edit and debug your changes in your own work area. When you are satisfied with your changes you check the file back in and a new revision of the file is created. If you must edit a file that is locked by another user (usually a test bench) then SOS allows concurrent checkout with an automatic merge capability to allow both of you to make changes without overwriting each others changes.
With SOS you not only revision control files but also revision control changes to directories like adding, deleting, or renaming files. This gives you the flexibility to rearrange your directory structure or rename the files while still being able to recreate previous releases with the old directory structure.
SOS allows you to setup design processes through user define-able triggers. To improve the efficiency of our team and to maintain the quality of our design we have setup a trigger to automatically invoke Verilint on all verilog files. Check in is not allowed if Verilint reports any errors. This avoids unnecessary team down time, which may be caused if files with errors are accidentally checked in.
We use symbolic labels or tags on revisions to communicate the status of a revision. A revision of a file ready for simulation is given the tag simulates. A revision of a file ready for synthesis is given the tag synthesizes. An engineer who wants to simulate can use a revision search rule to select revisions of files with the tag simulates and an engineer trying to synthesize can ask SOS to search for the tag synthesizes. This eliminates ad-hoc means of communication like email which are very error prone.
Your work area maintained by SOS provides a stable environment for you to work in. You control when changes made by others are brought into your work area. This allows you to run a long simulation or synthesis job without being affected by modifications being checked in by other team members. Similarly you can work on creating a patch for a previous release without affecting ongoing development. The alert icons in your SOS window are periodically updated to show you what changes have been made to the project without actually bringing those changes into your work area. If you now choose to update your work area your revision search rule is applied again to get the latest changes made to the project into your work area.
A neat feature in SOS is the ability to rewind your work area to any given time. No matter how careful our engineers are someone is liable to check in a file that causes a failure. With the number of files and number of changes happening it is sometimes hard to guess what may have gone wrong. Using the rewind feature you can set the work area back in time until the problem no longer exists and you can continue your work. It also helps you isolate the problem. This further helps us reduce team downtime.
When an IP is ready to be shipped we take a snapshot of the project in SOS and give the snapshot a meaningful name. This places a fixed tag on the current revisions of all the files and directories in the project. Development can continue to the IP. If a customer later reports a problem we can easily recreate the development environment used for the release by using the snapshot name as the revision search rule. Not only does SOS get all the right revisions of files for this release into your work area it exactly recreates the directory hierarchy. So all our old makefiles and scripts work and we can quickly reproduce the problem. We can then fix the problem and send out a patch fix while other team members continue with normal development. The figure below shows how a snapshot is taken in SOS.
The advantage of this approach is two-fold: