ChipCenter Questlink
SEARCH CHIPCENTER
Search Type:
Search for:




Knowledge Centers
Product Reviews
Data Sheets
Guides & Experts
News
International
Ask Us
Circuit Cellar Online
App Notes
NetSeminars
Careers
Resources
FAQ
EE Times Network
Electronics Group Sites

EE Expert Barry Henderson
SpacerReal-Time Processing

Click Here to Go to the Real-Time Processing ArchiveClick Here to Go to Barry Henderson's Main EE Expert PageClick Here to Go to the Guides and Experts Main Page

Rotten to the Core
Part 2: Soft and Vanilla or Hard and Cryptic?
by Dr. Barry Henderson

Introduction

In Part 1 of my article about IP core development, I explored the basic ideas and processes involved in selecting an IP core vendor. We looked into how to reduce risk, how to write the Lore (the requirements specification) that spells out all the major technical details required to design the core, and how to pick a reliable developer. Part 2 now takes a look under the hood, by which I mean that now we want to explore how a core is developed. This includes aspects of responsibility, the various types of core deliverables, verification environments, and steps to take to verify what you get, and how to stay on track once a project is under way.

IP Core Design—The Initial Steps

The stage is set—we have selected what we think (based on research, initial meetings and other metrics) is a respectable and affordable IP core developer. The Lore has been agreed on. We are ready to go. The first step will be a kick-off meeting where any wrinkles to the Lore are ironed out. Deliverables and schedules (i.e., which product is scheduled to be delivered on what date, and by whom), which must be realistic to guarantee a fair chance of success, should now be set in stone and agreed upon by both parties.

Phased Core Development

Unless you are going with a one-man band or a garage salon, both of which are not highly recommended approaches to securing high-quality IP, your core developer company will typically have some sort of a hierarchy. It is a very good idea to meet with and obtain the contact details for the project manager and each of the design and test engineers involved. It is, however, quite likely that there may be only a single engineer who will be responsible for both design and test. This, of course, can be a double-edged sword. It simplifies communications and reduces cost…but verification is far more effective when performed by an engineer who is independent of the design effort. In this case it is wise to insist that the developer supply you with your own test suite and verification environment so that you can perform exhaustive, iterative testing as the core is developed.

Typically a few weeks will pass after the kick-off meeting before any deliverables materialize. The IP core design team (or person) should be tasked with performing a comprehensive set of tests during and after each stage of development. I am assuming here that the core to be developed is reasonably complex, otherwise you would be doing it yourself, right? Figure 1 illustrates the IP core development process I just described.

Figure 1

Figure 1 - The IP Core Development Life Cycle

It is a good idea to agree up front on all the nitty gritty details, such as the tools and environments to be used for design and verification. There is also a wide variety of platforms (Unix, Linux, Windows, Mac, etc.) on which a developer may design and test a core. This purist approach should ensure that there will be no surprises either half way through or even at the end of development! You must also specify who is to write any test scripts, what language they will be written in (Perl, TCL, C, VBasic), and any associated documentation. There are tools available that let you run tests that were developed on Unix environments on a Windows PC. One such tool, which I used during the Reed Solomon core development, is called Cygwin. It is easy to set up and use, but does incur some overhead during verification.

Verification Strategies

Verification can be a tricky one. It used to be that simple cores could be verified either by code walkthroughs and design reviews, or bt a few simulation runs. However, the cores being developed today are typically much more sophisticated, can have very tight timing requirements, and may interact in complex ways with external logic modules. There are many options available, some of them far more expensive than others. Formal verification is expensive, can be time-consuming, and almost certainly requires quite a lot of specialized knowledge. Hardware accelerators improve simulation and can aid in visualization and debugging, but they also tend to be quite expensive, and are usually hampered by still needing slow and often complex test benches and set-up environments. Simulation on a PC or workstation using a well-known and trusted tool (e.g., ModelTeks Modelsim) is a fairly inexpensive and relatively easy method of verification. However, this is a very slow and tedious debugging technique when the target design gets beyond about 500K gates. The trick here is to get the developer to sign off on doing as much testing as possible before the handover occurs. Also get a solid understanding of the test set-up that the developer will deliver to you. The more comprehensive the test benches, documentation, and test data generators are, the less time you will spend setting up, extending, and familiarizing yourself with the environment.

Hard or Soft?

Probably one of the most important details to sort out is the type of IP core that you want to receive. There can be several different flavors to choose from. The most rigid option is a hard IP core, which means that the core has been preverified and laid out in one specific technology. The timing and area are predefined exactly in a hard core of this type. You do not have access to the source code, so last-minute tweaks are out of the question. The other extreme is a soft IP core. With this type of core, you may be able to get access to the source code, but you probably have to pay more for this option. With soft IP, you typically specify the likely operating conditions such as clock speeds, set-up and hold timing, approximate area requirements, and the type of target FPGA or ASIC. It is far better to specify the target device exactly since both timing and placement can be greatly affected by the device architecture—this is especially true for FPGAs. Figure 2 illustrates the typical IP core delivery options.

Figure 2

Figure 2 - IP Core Embedding Options

Deliverables

The type of deliverables you would expect from an IP core developer vary to some extent, depending on the type of core you have selected, as discussed in the previous section. The most flexible delivery method would be to obtain the full source code along with a preverified netlist, a full suite of documentation, and a solid verification environment. This is the soft IP route, illustrated by the right-hand side of Figure 2. Then, using an Altera FPGA as the host, for example, the netlist could be plugged into a design specified as a floating and partly parameterized (i.e., the area and position would be defined by the Alteras Quartus tool) LogicLock region, and compiled with the rest of your code. A timing and area analysis would then determine if any changes needed to be made to the IP core to bring it in line with your specific requirements. Once you become familiar with the design, you then have the option (as you have access to the source) to modify it at will.

As an alternative many IP developers provide you with an encrypted netlist, some documentation that explains how the core works (usually at the block-diagram level), some test parameters that define the logic resources used, and all the timing limitations. This is the hard IP route, as illustrated by the left-hand of Figure 2. This is a far less flexible approach. Using hard IP, you do not have access to the source, so all modifications must be performed by the original core developer. The core structure (i.e., area usage) may also be set in stone. Going back to our Altera example, you would probably have to implement the core in your design as a fully parameterized LogicLock region, which means that the exact size, position, and shape are completely locked (i.e., the IP core must be positioned to start at row C, column 4, and is x MegaLabs high by y MegaLabs long, in a 20K1000E-1 device).

There are other alternatives—a core's size may be completely specified, but its relative position may be allowed to float within a particular FPGA, or a small family of FPGAs. With all of these approaches, one critical item that must be specified correctly is the I/O requirement. This is especially true if the core resides along an edge of an FPGA and needs to use a specific number and configuration of pins.

Conclusion

This series of two articles has discussed the IP core specification, development, and verification process. The objectives are to first clearly state in your requirements specification exactly what you want. This is probably your main vehicle for communicating all the necessary features and parameters of an IP core. Get this wrong and it could well be a disaster. Next, know the technical trade-offs and state of the art in the field of technology the IP core is aimed at. If you don't go in to negotiations well armed, you could take a mortal blow and not even realize it until it's too late. Pick an experienced, knowledgeable, reliable, and reasonably priced IP core developer. This step should get your project off to a good start. Select the delivery method (hard or soft), a verification and debug environment, and define all tasks and milestones. Who does what and when must be crystal clear to all parties involved in order to develop a trusting and smooth development process. Schedule when deliveries are to be made, what is to be delivered, and who does the testing and debugging. It's no good expecting a fully verified core or module on a specific date, only to find out that the developer thought that you would be doing 90% of the verification and debugging. This lapse in protocol could add months to the Design ® Test ® Debug ® Modify cycle. Finally, ensure that you have regular meetings with the IP core developer to track progress, identify problems early on, and maintain the project's momentum.

Real-Time Processing Using DSPs, FPGAs & uCs Archive

Guides and Experts   Analog Avenue   EDA Tools   PLD   DSP   EDA   Embedded Systems   Power   Test

Click here to get your listing up.

Copyright © 2003 ChipCenter-QuestLink
About ChipCenter-Questlink  Contact Us  Privacy Statement   Advertising Information  FAQ