|
Emulation on the Cheap - ASIC prototyping with FPGAs Whoever first thought of putting a processor core on a chip must have had a dark side, a sneaky, subversive sense of humor. They were the kind that finds a certain perverse pleasure in offering up what looks to be a wonderful and innovative idea, knowing that hidden beneath the seemingly scatheless surface lies a virtual minefield of technical traps awaiting the arrival of the hapless design team. While a processor might seem like just another piece of hardware to plunk down in your design, it brings the element of software development and debug into the low-visibility, high-risk realm of IC design, and the combination is caustic. First, software developers and hardware designers are not accustomed to speaking to one another. They play on different softball teams at company picnics and almost never buy chocolate bars to support the others’ kids’ marching bands. Second, software developers are used to working in a “we can always fix it in the patch” mode, whereas hardware engineers are bound by big NRE charges to a “do it right the first time” dogma. Third, the languages of hardware and software are different enough that communication regarding hardware/software integration problems (when it does occur) is limited to mostly clicks, grunts, and hand signals. The fourth, and most significant, issue is the execution speed granularity difference between the software and hardware realms. Hardware engineers can generally get by with a nice cycle-by-cycle simulation for debug, which would amount to something like geologic time for software developers. When all the other problems melt away, this one is left requiring a technical solution. Fortunately, programmable logic makes an ideal emulation platform, bringing the two worlds together for design verification. FPGAs can support the execution speed and flexibility requirements of the software side while meeting the signal visibility and step-resolution needs of the hardware designer. [more] Aurora
Lightweight Gigabit Serial Protocol The System Interconnect Challenge. As CPU speeds approach the multi-gigahertz range, system designers increasingly focus on system interconnect as the primary bottleneck at all levels, viz: chip-to-chip, board-to-board, backplane, and box-to-box. Most of the system interconnect used today uses parallel I/O technology with either source-synchronous clocking or system-synchronous clocking. The venerable PCI bus is the prime example of a system-synchronous interface that has served the industry well over the past decade. PCI uses a central arbiter that allows sharing of a common bus between several clients. This has obvious limitations since the bus bandwidth is not infinite – this in turn limits the capabilities of the clients. Additionally, this technology does not scale well when translated to backplane or box-to-box interconnects. Source-synchronous technologies using LVDS I/O were the next obvious choice for designers as they are point-to-point interconnects that do not have a central arbitration scheme bottleneck. However, these schemes suffer from the same problem that PCI based schemes did when scaling the technology across backplanes or box-to-box interconnects. Not only do designers have to run tens or even hundreds of traces in some cases over many inches of FR4, they also have to be mindful of the lane-to-lane data and the clock-to-data skew. A bit arriving too early or too late can cause serious link integrity problems. [more] SoC
Prototyping Requirements For an SoC chip, the validation of hardware, software, and firmware on a common platform can be accomplished using FPGA-based prototypes. FPGA prototypes make it possible for SoC designs to be delivered on time, on budget, and on market target. For successful design testing with prototypes, tools need to provide automation while maintaining flexibility. This article focuses on what's required in an RTL–to–PCB mapping and debugging flow that targets multiple state-of-the-art FPGAs. Requirements such as hardware/software testing, design checking, partitioning, co-emulation, debug, FPGA synthesis and place-and-route, IP encryption, and hardware self-test will be discussed. So, let’s begin with a quick review of what exactly distinguishes an SoC design from a traditional ASIC. From the picture of an SoC [Figure 1], it looks much like any other IC. Functionally, however, it includes components like CPUs, DSPs, and memory that have traditionally been in separate chips. In SoC designs, external IP plays a much larger role. The designs are simply too big and complex to be developed from scratch within a single organization. Where custom logic is used, there is tremendous emphasis on re-use of existing design work, rather than re-inventing the wheel for each design. Another difference with SoCs is the emphasis on being able to roll out derivative products quickly. Companies want to capitalize on market successes by making small changes to existing designs to target new market niches. The biggest single difference between SoCs and traditional ASICs, however, is the importance of software. Software has become the key differentiator among products and often requires the lion’s share of development time. [more] |
All material
copyright © 2003 techfocus media, inc. All rights reserved. |