2Table of Contents1 Introduction ......................................................................................... 31.1 System-on-a-Reprogrammable Chip ....................................................................31.2 Why Use an <strong>FPGA</strong>?.............................................................................................41.2.1 <strong>ASIC</strong> vs. <strong>FPGA</strong> <strong>Design</strong> Flows .....................................................................41.3 A Common <strong>Design</strong> <strong>Reuse</strong> Strategy ......................................................................62 System Level <strong>Reuse</strong> Issues <strong>for</strong> <strong>FPGA</strong>s ............................................... 81.4 Definitions & Acronyms......................................................................................72.1 System Synthesis <strong>and</strong> Timing Issues ....................................................................82.1.1 Synchronous vs. Asynchronous <strong>Design</strong> Style ...............................................82.1.3 System Clocking <strong>and</strong> Clock Distribution......................................................92.2 Memory <strong>and</strong> Memory Interface..........................................................................122.2.1 On-Chip Memory..........................................................................................122.2.2 Interfacing to Large Memory Blocks..........................................................133 Coding <strong>and</strong> Synthesis Tips................................................................ 162.3 External Operability (I/O St<strong>and</strong>ards)..................................................................143.1 Abundance of Registers .....................................................................................163.1.1 Duplicating Registers .................................................................................163.1.2 Partitioning at Register Boundary...............................................................183.1.3 One-Hot State Machines.............................................................................183.1.4 Pipelining...................................................................................................183.2 Case <strong>and</strong> IF-Then-Else.......................................................................................203.3 Critical Path Optimization..................................................................................233.4 Tristate vs. Mux Buses.......................................................................................244 Verification Strategy ......................................................................... 263.5 Arithmetic Functions..........................................................................................244.1 HDL Simulation <strong>and</strong> Testbench .........................................................................264.2 Static Timing .....................................................................................................264.3 Formal Verification............................................................................................27
31 Introduction<strong>FPGA</strong>s have changed dramatically since <strong>Xilinx</strong> first introduced them just 15 years ago. In thepast, <strong>FPGA</strong> were primarily used <strong>for</strong> prototyping <strong>and</strong> lower volume applications; custom <strong>ASIC</strong>swere used <strong>for</strong> high volume, cost sensitive designs. <strong>FPGA</strong>s had also been too expensive <strong>and</strong> tooslow <strong>for</strong> many applications, let alone <strong>for</strong> System Level Integration (SLI). Plus, the developmenttools were often difficult to learn <strong>and</strong> lacked the features found in <strong>ASIC</strong> development systems.Now, this has all changed.Silicon technology has progressed to allow chips with tens of millions of transistors. This notonly promises new levels of integration onto a single chip, but also allows more features <strong>and</strong>capabilities in reprogrammable technology. With today’s deep sub-micron technology, it ispossible to deliver over 2 - million usable system gates in a <strong>FPGA</strong>. In addition, the average<strong>ASIC</strong> design operating at 30 – 50MHz can be implemented in a <strong>FPGA</strong> using the same RTLsynthesis design methodology as <strong>ASIC</strong>s. By the year 2004, the state-of-the-art <strong>FPGA</strong> will exceed10 million system gates, allowing <strong>for</strong> multimillion gates <strong>FPGA</strong>s operating at speeds surpassing300 MHz. Many designs, which previously could only achieve speed <strong>and</strong> cost-of-density goals in<strong>ASIC</strong>s, are converting to much more flexible <strong>and</strong> productive reprogrammable solutions.The availability of <strong>FPGA</strong>s in the 1-million system gate range has started a shift of SoC designstowards using Reprogrammable <strong>FPGA</strong>s, thereby starting a new era of System-on-a-Reprogrammable-Chip (SoRC). For a 1-million system gate SoRC design, an engineer designing100 gates/day would require a hypothetical 42 years to complete, at a cost of $6 million. Clearly,immense productivity gains are needed to make million gate designs commercially viable, <strong>and</strong>SoRC based on today’s million logic gate <strong>FPGA</strong>s, <strong>and</strong> tomorrow’s 10-million logic gate <strong>FPGA</strong>sis a promising solution.SoRC is no different from SoC in that it requires leveraging existing intellectual property (IP) toimprove designer productivity. Reusable IP is essential to constructing bug-free multimilliongatedesigns in a reasonable amount of time. Without reuse, the electronics industry will simplynot be able to keep pace with the challenge of delivering the “better, faster, cheaper” devices thatconsumers expect.With the availability of new <strong>FPGA</strong> architectures designed <strong>for</strong> system level integration <strong>and</strong> <strong>FPGA</strong>design tools that are compatible with <strong>ASIC</strong> design methodologies, it is now possible to employ asimilar if not identical design reuse methodology <strong>for</strong> <strong>ASIC</strong>s <strong>and</strong> <strong>FPGA</strong>s. For design teams thathave longed to eliminate NRE costs <strong>and</strong> improve time-to-market without climbing the learningcurve to become <strong>FPGA</strong> experts, this design reuse methodology adds a new level of freedom.However, this methodology is not without its limitations. This paper examines the designs thatcan take advantage of an identical <strong>ASIC</strong> <strong>and</strong> <strong>FPGA</strong> design reuse methodology <strong>and</strong> the simplemodifications that can be made to the RTL code to enhance per<strong>for</strong>mance <strong>and</strong> reuse.1.1 System-on-a-Reprogrammable ChipTo define SoRC, let us first start with a general definition of System-on-a-Chip (SoC). Most ofthe industry agrees that SoC is the incorporation of an entire system onto one chip. Dataquest’s1995 definition included a compute engine (microprocessor, microcontroller or digital signalprocessor), at least 100K of user gates <strong>and</strong> significant on-chip memory.