throbber
Introduction to FPGA Design
`
`By Bob Zeidman
`President
`Zeidman Consulting
`bob@ZeidmanConsulting.com
`www.ZeidmanConsulting.com
`
`Embedded Systems Conference Europe
`1999
`Classes 304, 314
`
`Patent Owner Saint Regis Mohawk Tribe
`Ex. 2045, p. 1
`
`

`

`Introduction to FPGA Design
`
`1. INTRODUCTION
`Field Programmable Gate Arrays (FPGAs) are becoming a critical
`part of every system design. Many vendors offer many different
`architectures and processes. Which one is right for your design? How do
`you design one of these so that it works correctly and functions as you
`expect in your entire system? These are the questions that this paper sets
`out to answer.
`
`The first sections of this paper deals with the internal architecture
`and characteristics of these devices. Programmable logic devices are
`described in an overview, leading up to a detailed description of the Field
`Programmable Gate Array. The various architectures of these devices are
`examined in detail along with their tradeoffs, which allow you to decide
`which particular device is right for your design.
`
`The next sections of this paper is about the design flow for an FPGA-
`based project. This section describes the phases of the design that need
`to be planned. This allows a designer or project manager to allocate
`resources and create a schedule.
`
`The final sections of this paper discuss in detail, the design,
`simulation, and testing issues that arise when designing an FPGA.
`Understanding these issues will allow you to design a chip that functions
`correctly in your system and will be reliable throughout the lifetime of your
`product.
`
`2. THE MASKED GATE ARRAY ASIC
`An Application Specific Integrated Circuit, or ASIC, is a chip that
`can be designed by an engineer with no particular knowledge of
`semiconductor physics or semiconductor processes. The ASIC vendor has
`created a library of cells and functions that the designer can use without
`needing to know precisely how these functions are implemented in
`silicon. The ASIC vendor also typically supports software tools that
`automate such processes as synthesis and circuit layout. The ASIC vendor
`may even supply application engineers to assist the ASIC design engineer
`with the task. The vendor then lays out the chip, creates the masks, and
`manufactures the ASICs.
`
`The gate array is an ASIC with a particular architecture that consists
`of rows and columns of regular transistor structures. Each basic cell, or
`gate, consists of the same small number of transistors which are not
`connected. In fact, none of the transistors on the gate array are initially
`
`1
`
`Patent Owner Saint Regis Mohawk Tribe
`Ex. 2045, p. 2
`
`

`

`Introduction to FPGA Design
`
`connected at all. The reason for this is that the connection is determined
`completely by the design that you implement. Once you have your
`design, the layout software figures out which transistors to connect. First,
`your low level functions are connected together. For example, six
`transistors could be connected to create a D flip-flop. These six transistors
`would be located physically very close to each other. After your low level
`functions have been routed, these would in turn be connected together.
`The software would continue this process until the entire design is
`complete. This row and column structure is illustrated in Figure 1.
`
`The ASIC vendor manufactures many unrouted die which contain
`the arrays of gates and which it can use for any gate array customer. An
`integrated circuit consists of many layers of materials including
`semiconductor material (e.g., silicon), insulators (e.g., oxides), and
`conductors (e.g., metal). An unrouted die is processed with all of the
`layers except for the final metal layers that connects the gates together.
`Once your design is complete, the vendor simply needs to add the last
`metal layers to the die to create your chip, using photomasks for each
`metal layer. For this reason, it is sometimes referred to as a Masked Gate
`Array to differentiate it from a Field Programmable Gate Array.
`
`Figure 1 Masked Gate Array Architecture
`
`3. THE EVOLUTION OF PROGRAMMABLE DEVICES
`Programmable devices have gone through a long evolution to
`reach the complexity that they have today. The following sections give an
`approximately chronological discussion of these devices from least
`complex to most complex.
`
`3.1 Programmable Read Only Memories (PROMs)
`Programmable Read Only Memories, or PROMs, are simply
`memories that can be inexpensively programmed by the user to contain
`
`2
`
`Patent Owner Saint Regis Mohawk Tribe
`Ex. 2045, p. 3
`
`

`

`Introduction to FPGA Design
`
`a specific pattern. This pattern can be used to represent a microprocessor
`program, a simple algorithm, or a state machine. Some PROMs can be
`programmed once only. Other PROMs, such as EPROMs or EEPROMs can
`be erased and programmed multiple times.
`
`PROMs are excellent for implementing any kind of combinatorial
`logic with a limited number of inputs and outputs. For sequential logic,
`external clocked devices such as flip-flops or microprocessors must be
`added. Also, PROMs tend to be extremely slow, so they are not useful for
`applications where speed is an issue.
`
`3.2 Programmable Logic Arrays (PLAs)
`Programmable Logic Arrays (PLAs) were a solution to the speed
`and input limitations of PROMs. PLAs consist of a large number of inputs
`connected to an AND plane, where different combinations of signals can
`be logically ANDed together according to how the part is programmed.
`The outputs of the AND plane go into an OR plane, where the terms are
`ORed together in different combinations and finally outputs are
`produced. At the inputs and outputs there are typically inverters so that
`logical NOTs can be obtained. These devices can implement a large
`number of combinatorial functions, though not all possible combinations
`like a PROM can. However, they generally have many more inputs and
`are much faster.
`
`
`
`Inputs
`
`
`AND
`plane
`
`
`
`OR
`plane
`
`Outputs
`
`Figure 2 PLA Architecture
`
`3.3 Programmable Array Logic (PALs)
`The Programmable Array Logic (PAL) is a variation of the PLA. Like
`the PLA, it has a wide, programmable AND plane for ANDing inputs
`together. However, the OR plane is fixed, limiting the number of terms that
`3
`
`Patent Owner Saint Regis Mohawk Tribe
`Ex. 2045, p. 4
`
`

`

`Introduction to FPGA Design
`
`can be ORed together. Other basic logic devices, such as multiplexers,
`exclusive ORs, and latches are added to the inputs and outputs. Most
`importantly, clocked elements, typically flip-flops, are included. These
`devices are now able to implement a large number of logic functions
`including clocked sequential logic need for state machines. This was an
`important development that allowed PALs to replace much of the
`standard logic in many designs. PALs are also extremely fast.
`
`Figure 3 PAL Architecture
`
`3.4 CPLDs and FPGAs
`Ideally, though, the hardware designer wanted something that
`gave him or her the flexibility and complexity of an ASIC but with the
`shorter turn-around time of a programmable device. The solution came in
`the form of two new devices - the Complex Programmable Logic Device
`(CPLD) and the Field Programmable Gate Array. As can be seen in Figure
`4, CPLDs and FPGAs bridge the gap between PALs and Gate Arrays.
`CPLDs are as fast as PALs but more complex. FPGAs approach the
`complexity of Gate Arrays but are still programmable.
`
`4
`
`Patent Owner Saint Regis Mohawk Tribe
`Ex. 2045, p. 5
`
`

`

`Introduction to FPGA Design
`
`Figure 4 Comparison of CPLDs and FPGAs
`
`3.5 Complex Programmable Logic Devices (CPLDs)
`Complex Programmable Logic Devices (CPLDs) are exactly what
`they claim to be. Essentially they are designed to appear just like a large
`number of PALs in a single chip, connected to each other through a
`crosspoint switch They use the same development tools and
`programmers, and are based on the same technologies, but they can
`handle much more complex logic and more of it.
`
`3.5.1 CPLD Architectures
`The diagram in Figure 5 shows the internal architecture of a typical
`CPLD. While each manufacturer has a different variation, in general they
`are all similar in that they consist of function blocks, input/output block,
`and an interconnect matrix. The devices are programmed using
`programmable elements that, depending on the technology of the
`manufacturer, can be EPROM cells, EEPROM cells, or Flash EPROM cells.
`
`5
`
`Patent Owner Saint Regis Mohawk Tribe
`Ex. 2045, p. 6
`
`

`

`Introduction to FPGA Design
`
`Figure 5 CPLD Architecture
`
`3.5.1.1 Function Blocks
`A typical function block is shown in Figure 6. The AND plane still
`exists as shown by the crossing wires. The AND plane can accept inputs
`from the I/O blocks, other function blocks, or feedback from the same
`function block. The terms and then ORed together using a fixed number
`of OR gates, and terms are selected via a large multiplexer. The outputs of
`the mux can then be sent straight out of the block, or through a clocked
`flip-flop. This particular block includes additional logic such as a
`selectable exclusive OR and a master reset signal, in addition to being
`able to program the polarity at different stages.
`Usually, the function blocks are designed to be similar to existing
`PAL architectures, such as the 22V10, so that the designer can use familiar
`tools or even older designs without changing them.
`
`6
`
`Patent Owner Saint Regis Mohawk Tribe
`Ex. 2045, p. 7
`
`

`

`Introduction to FPGA Design
`
`Figure 6 CPLD Function Block
`
`3.5.1.2 I/O Blocks
`Figure 7 shows a typical I/O block of a CPLD. The I/O block is used
`to drive signals to the pins of the CPLD device at the appropriate voltage
`levels with the appropriate current. Usually, a flip-flop is included, as
`shown in the figure. This is done on outputs so that clocked signals can be
`output directly to the pins without encountering significant delay. It is
`done for inputs so that there is not much delay on a signal before
`reaching a flip-flop which would increase the device hold time
`requirement. Also, some small amount of logic is included in the I/O block
`simply to add some more resources to the device.
`
`Figure 7 CPLD Input/Output Block
`
`7
`
`Patent Owner Saint Regis Mohawk Tribe
`Ex. 2045, p. 8
`
`

`

`Introduction to FPGA Design
`
`3.5.1.3 Interconnect
`The CPLD interconnect is a very large programmable switch matrix
`that allows signals from all parts of the device go to all other parts of the
`device. While no switch can connect all internal function blocks to all
`other function blocks, there is enough flexibility to allow many
`combinations of connections.
`
`3.5.1.4 Programmable Elements
`Different manufacturers use different technologies to implement the
`programmable elements of a CPLD. The common technologies are
`Electrically Programmable Read Only Memory (EPROM), Electrically
`Erasable PROM (EEPROM) and Flash EPROM. These technologies are
`similar to, or next generation versions of, the technologies that were used
`for the simplest programmable devices, PROMs.
`
`3.5.2 CPLD Architecture Issues
`When considering a CPLD for use in a design, the following issues
`should be taken into account:
`1. The programming technology
` EPROM, EEPROM, or Flash EPROM? This will determine the
`equipment needed to program the devices and whether
`they came be programmed only once or many times.
`2. The function block capability
` How many function blocks are there in the device?
` How many product and sum terms can be used?
` What are the minimum and maximum delays through the
`logic?
` What additional logic resources are there such as XNORs,
`ALUs, etc.?
` What kind of register controls are available (e.g., clock
`enable, reset, preset, polarity control)? How many are
`local inputs to the function block and how many are
`global, chip-wide inputs?
` What kind of clock drivers are in the device and what is
`the worst case skew of the clock signal on the chip. This
`will help determine the maximum frequency at which the
`device can run.
`3. The I/O capability
` How many I/O are independent, used for any function,
`and how many are dedicated for clock input, master
`reset, etc.?
` What is the output drive capability in terms of voltage
`levels and current?
`
`8
`
`Patent Owner Saint Regis Mohawk Tribe
`Ex. 2045, p. 9
`
`

`

`Introduction to FPGA Design
`
` What kind of logic is included in an I/O block that can be
`used to increase the functionality of the design?
`
`3.5.3 Example CPLD Families
`Some CPLD families from different vendors are listed below:
` Altera MAX 7000 and MAX 9000 families
` Atmel ATF and ATV families
` Lattice ispLSI family
` Lattice (Vantis) MACH family
` Xilinx XC9500 family
`
`3.6 Field Programmable Gate Arrays (FPGAs)
`Field Programmable Gate Arrays are called this because rather
`than having a structure similar to a PAL or other programmable device,
`they are structured very much like a gate array ASIC. This makes FPGAs
`very nice for use in prototyping ASICs, or in places where and ASIC will
`eventually be used. For example, an FPGA maybe used in a design that
`need to get to market quickly regardless of cost. Later an ASIC can be
`used in place of the FPGA when the production volume increases, in
`order to reduce cost.
`
`9
`
`Patent Owner Saint Regis Mohawk Tribe
`Ex. 2045, p. 10
`
`

`

`3.6.1 FPGA Architectures
`
`Introduction to FPGA Design
`
`Figure 8 FPGA Architecture
`Each FPGA vendor has its own FPGA architecture, but in general
`terms they are all a variation of that shown in Figure 8. The architecture
`consists of configurable logic blocks, configurable I/O blocks, and
`programmable interconnect. Also, there will be clock circuitry for driving
`the clock signals to each logic block, and additional logic resources such
`as ALUs, memory, and decoders may be available. The two basic types of
`programmable elements for an FPGA are Static RAM and anti-fuses.
`
`3.6.1.1 Configurable Logic Blocks
`Configurable Logic Blocks contain the logic for the FPGA. In a large
`grain architecture, these CLBs will contain enough logic to create a small
`state machine. In a fine grain architecture, more like a true gate array
`ASIC, the CLB will contain only very basic logic. The diagram in Figure 9
`would be considered a large grain block. It contains RAM for creating
`arbitrary combinatorial logic functions. It also contains flip-flops for
`clocked storage elements, and multiplexers in order to route the logic
`within the block and to and from external resources. The muxes also allow
`polarity selection and reset and clear input selection.
`10
`
`Patent Owner Saint Regis Mohawk Tribe
`Ex. 2045, p. 11
`
`

`

`Introduction to FPGA Design
`
`Figure 9 FPGA Configurable Logic Block
`
`3.6.1.2 Configurable I/O Blocks
`A Configurable I/O Block, shown in Figure 10, is used to bring signals
`onto the chip and send them back off again. It consists of an input buffer
`and an output buffer with three state and open collector output controls.
`Typically there are pull up resistors on the outputs and sometimes pull
`down resistors. The polarity of the output can usually be programmed for
`active high or active low output and often the slew rate of the output can
`be programmed for fast or slow rise and fall times. In addition, there is
`often a flip-flop on outputs so that clocked signals can be output directly
`to the pins without encountering significant delay. It is done for inputs so
`that there is not much delay on a signal before reaching a flip-flop which
`would increase the device hold time requirement.
`
`11
`
`Patent Owner Saint Regis Mohawk Tribe
`Ex. 2045, p. 12
`
`

`

`Introduction to FPGA Design
`
`Figure 10 FPGA Configurable I/O Block
`
`3.6.1.3 Programmable Interconnect
`The interconnect of an FPGA is very different than that of a CPLD,
`but is rather similar to that of a gate array ASIC. In Figure 11, a hierarchy of
`interconnect resources can be seen. There are long lines which can be
`used to connect critical CLBs that are physically far from each other on
`the chip without inducing much delay. They can also be used as buses
`within the chip. There are also short lines which are used to connect
`individual CLBs which are located physically close to each other. There is
`often one or several switch matrices, like that in a CPLD, to connect these
`long and short lines together in specific ways. Programmable switches
`inside the chip allow the connection of CLBs to interconnect lines and
`interconnect lines to each other and to the switch matrix. Three-state
`buffers are used to connect many CLBs to a long line, creating a bus.
`Special long lines, called global clock lines, are specially designed for low
`impedance and thus fast propagation times. These are connected to the
`clock buffers and to each clocked element in each CLB. This is how the
`clocks are distributed throughout the FPGA.
`
`12
`
`Patent Owner Saint Regis Mohawk Tribe
`Ex. 2045, p. 13
`
`

`

`Introduction to FPGA Design
`
`Figure 11 FPGA Programmable Interconnect
`
`3.6.1.4 Clock Circuitry
`Special I/O blocks with special high drive clock buffers, known as
`clock drivers, are distributed around the chip. These buffers are connect
`to clock input pads and drive the clock signals onto the global clock lines
`described above. These clock lines are designed for low skew times and
`fast propagation times. As we will discuss later, synchronous design is a
`must with FPGAs, since absolute skew and delay cannot be guaranteed.
`Only when using clock signals from clock buffers can the relative delays
`and skew times be guaranteed.
`
`3.6.2 Small vs. Large Granularity
`Small grain FPGAs resemble ASIC gate arrays in that the CLBs
`contain only small, very basic elements such as NAND gates, NOR gates,
`etc. The philosophy is that small elements can be connected to make
`larger functions without wasting too much logic. In a large grain FPGA,
`where the CLB can contain two or more flip-flops, a design which does
`not need many flip-flops will leave many of them unused. Unfortunately,
`small grain architectures require much more routing resources, which take
`up space and insert a large amount of delay which can more than
`compensate for the better utilization.
`
`Large Granularity
`Small Granularity
`fewer levels of logic
`better utilization
`direct conversion to ASIC less interconnect delay
`13
`
`Patent Owner Saint Regis Mohawk Tribe
`Ex. 2045, p. 14
`
`

`

`Introduction to FPGA Design
`
`Table 1 Small vs. Large Grain FPGAs
`A comparison of advantages of each type of architecture is shown
`in Table 1 above. The choice of which architecture to use is dependent
`on your specific application.
`
`3.6.3 SRAM vs. Anti-fuse Programming
`There are two competing methods of programming FPGAs. The first,
`SRAM programming, involves small Static RAM bits for each programming
`element. Writing the bit with a zero turns off a switch, while writing with a
`one turns on a switch. The other method involves anti-fuses which consist
`of microscopic fuses which, unlike a regular fuse, normally makes no
`connection. A certain amount of current during programming of the
`device causes the two sides of the fuse to connect.
`
`The advantages of SRAM based FPGAs is that they use a standard
`fabrication process that chip fabrication plants are familiar with and are
`always optimizing for better performance. Since the SRAMs are
`reprogrammable, the FPGAs can be reprogrammed any number of times,
`even while they are in the system, just like writing to a normal SRAM. The
`disadvantages are that they are volatile, which means a power glitch
`could potentially change it. Also, SRAM-based devices have large routing
`delays.
`
`The advantages of Anti-fuse based FPGAs are that they are non-
`volatile and the delays due to routing are very small, so they tend to be
`faster. The disadvantages are that they require a complex fabrication
`process, they require an external programmer to program them, and
`once they are programmed, they cannot be changed.
`
`3.6.4 Example FPGA Families
`Examples of SRAM based FPGA families include the following:
` Altera FLEX family
` Atmel AT6000 and AT40K families
` Lucent Technologies ORCA family
` Xilinx XC4000 and Virtex families
` Examples of Anti-fuse based FPGA families include the following:
` Actel SX and MX families
` Quicklogic pASIC family
`
`3.7 Choosing Between CPLDs and FPGAs
`Choosing between a CPLD and an FPGA will depend on the
`characteristics and requirements of your project. A summary of the
`characteristics of each is show in Figure 12 below.
`14
`
`Patent Owner Saint Regis Mohawk Tribe
`Ex. 2045, p. 15
`
`

`

`Introduction to FPGA Design
`
`Architecture
`Density
`
`Speed
`Interconnect
`Power Consumption
`
`CPLD
`PAL-like
`Low to medium
`12 22V10s or more
`Fast, predictable
`Crossbar
`High
`Figure 12 CPLDs vs. FPGAs
`
`FPGA
`Gate Array-like
`Medium to high
`up to 1 million gates
`Application dependent
`Routing
`Medium
`
`4. THE DESIGN FLOW
`This section examines the design flow for any device, whether it is
`an ASIC, an FPGA, or a CPLD. This is the entire process for designing a
`device that guarantees that you will not overlook any steps and that you
`will have the best chance of getting back a working prototype that
`functions correctly in your system. The design flow consists of the steps in
`Figure 13.
`
`Write a Specification
`
`Specification Review
`
`Design
`
`Simulate
`
`Design Review
`
`Synthesize
`
`Place and Route
`
`Resimulate
`
`Final Review
`
`Chip T est
`
`System Integration and T est
`
`Ship product!
`Figure 13 Design Flow
`
`4.1 Writing a Specification
`The importance of a specification cannot be overstated. This is an
`absolute must, especially as a guide for choosing the right technology
`
`15
`
`Patent Owner Saint Regis Mohawk Tribe
`Ex. 2045, p. 16
`
`

`

`Introduction to FPGA Design
`
`and for making your needs known to the vendor. As specification allows
`each engineer to understand the entire design and his or her piece of it. It
`allows the engineer to design the correct interface to the rest of the
`pieces of the chip. It also saves time and misunderstanding. There is no
`excuse for not having a specification.
`
`A specification should include the following information:
` An external block diagram showing how the chip fits into the
`system.
` An internal block diagram showing each major functional
`section.
` A description of the I/O pins including
`(cid:2) output drive capability
`(cid:2) input threshold level
` Timing estimates including
`(cid:2) setup and hold times for input pins
`(cid:2) propagation times for output pins
`(cid:2) clock cycle time
` Estimated gate count
` Package type
` Target power consumption
` Target price
` Test procedures
`
`It is also very important to understand that this is a living document.
`Many sections will have best guesses in them, but these will change as the
`chip is being designed.
`
`4.1.1 Choosing a Technology
`Once a specification has been written, it can be used to find the
`best vendor with a technology and price structure that best meets your
`requirements.
`
`4.1.2 Choosing a Design Entry Method
`You must decide at this point which design entry method you
`prefer. For smaller chips, schematic entry is often the method of choice,
`especially if the design engineer is already familiar with the tools. For
`larger designs, however, a hardware description language (HDL) such as
`Verilog or VHDL is used because of its portability, flexibility, and readability.
`When using a high level language, synthesis software will be required to
`“ synthesize” the design. This means that the software creates low level
`gates from the high level description.
`
`16
`
`Patent Owner Saint Regis Mohawk Tribe
`Ex. 2045, p. 17
`
`

`

`Introduction to FPGA Design
`
`4.1.3 Choosing a Synthesis Tool
`You must decide at this point which synthesis software you will be
`using if you plan to design the FPGA with an HDL. This is important since
`each synthesis tool has recommended or mandatory methods of
`designing hardware so that it can correctly perform synthesis. It will be
`necessary to know these methods up front so that sections of the chip will
`not need to be redesigned later on.
`
`At the end of this phase it is very important to have a design review.
`All appropriate personnel should review the decisions to be certain that
`the specification is correct, and that the correct technology and design
`entry method have been chosen.
`
`4.2 Designing the chip
`When designing the chip, remember to design synchronously and
`take into account the design issues that were discussed previously. These
`include:
` Top-down design
` Use logic that fits well with the architecture of the device you
`have chosen
` Macros
` Synchronous design
` Protect against metastability
` Avoid floating nodes
` Avoid bus contention
`
`4.3 Simulating - design review
`Simulation is an ongoing process while the design is being done.
`Small sections of the design should be simulated separately before
`hooking them up to larger sections. There will be many iterations of design
`and simulation in order to get the correct functionality.
`
`Once design and simulation are finished, another design review
`must take place so that the design can be checked. It is important to get
`others to look over the simulations and make sure that nothing was missed
`and that no improper assumption was made. This is one of the most
`important reviews because it is only with correct and complete simulation
`that you will know that your chip will work correctly in your system.
`
`4.4 Synthesis
`If the design was entered using an HDL, the next step is to synthesize
`the chip. This involves using synthesis software to optimally translate your
`register transfer level (RTL) design into a gate level design which can be
`17
`
`Patent Owner Saint Regis Mohawk Tribe
`Ex. 2045, p. 18
`
`

`

`Introduction to FPGA Design
`
`mapped to logic blocks in the FPGA. This may involve specifying switches
`and optimization criteria in the HDL code, or playing with parameters of
`the synthesis software in order to insure good timing and utilization.
`
`4.5 Place and Route
`The next step is to lay out the chip, resulting in a real layout for a
`real chip. This involves using the vendor’s software tools to optimize the
`programming of the chip to implement the design. Then the design is
`programmed into the chip.
`
`4.6 Resimulating - final review
`After layout, the chip must be resimulated with the new timing
`numbers produced by the actual layout. If everything has gone well up to
`this point, the new simulation results will agree with the predicted results.
`Otherwise, there are three possible paths to go in the design flow. If the
`problems encountered here are significant, sections of the FPGA may
`need to be redesigned. If there are simply some marginal timing paths or
`the design is slightly larger than the FPGA, it may be necessary to perform
`another synthesis with better constraints or simply another place and
`route with better constraints. At this point, a final review is necessary to
`confirm that nothing has been overlooked.
`
`4.7 Testing
`For a programmable device, you simply program the device and
`immediately have your prototypes. You then have the responsibility to
`place these prototypes in your system and determine that the entire
`system actually works correctly. If you have followed the procedure up to
`this point, chances are very good that your system will perform correctly
`with only minor problems. These problems can often be worked around
`by modifying the system or changing the system software. These problems
`need to be tested and documented so that they can be fixed on the
`next revision of the chip. System integration and system testing is
`necessary at this point to insure that all parts of the system work correctly
`together.
`
`When the chips are put into production, it is necessary to have
`some sort of burn-in test of your system that continually tests your system
`over some long amount of time. If a chip has been designed correctly, it
`will only fail because of electrical or mechanical problems that will usually
`show up with this kind of stress testing.
`
`5. DESIGN ISSUES
`In the next sections of this paper, we will discuss those areas that
`
`18
`
`Patent Owner Saint Regis Mohawk Tribe
`Ex. 2045, p. 19
`
`

`

`Introduction to FPGA Design
`
`are unique to FPGA design or that are particularly critical to these
`devices.
`
`5.1 Top-Down Design
`Top-down design is the design method whereby high level functions
`are defined first, and the lower level implementation details are filled in
`later. A schematic can be viewed as a hierarchical tree as shown in
`Figure 14. The top level block represents the entire chip. Each lower level
`block represents major functions of the chip. Intermediate level blocks
`may contain smaller functionality blocks combined with gate-level logic.
`The bottom level contains only gates and macrofunctions which are
`vendor-supplied high level functions. Fortunately, schematic capture
`software and hardware description languages used for chip design easily
`allows use of the top-down design methodology.
`
`Figure 14 Top-Down Design
`Top-down design is the preferred methodology for chip design for
`several reasons. First, chips often incorporate a large number of gates and
`a very high level of functionality. This methodology simplifies the design
`task and allows more than one engineer, when necessary, to design the
`chip. Second, it allows flexibility in the design. Sections can be removed
`and replaced with a higher-performance or optimized designs without
`affecting other sections of the chip.
`
`Also important is the fact that simulation is much simplified using this
`design methodology. Simulation is an extremely important consideration
`in chip design since a chip cannot be blue-wired after production. For this
`reason, simulation must be done extensively before the chip is sent for
`fabrication. A top-down design approach allows each module to be
`simulated independently from the rest of the design. This is important for
`
`19
`
`Patent Owner Saint Regis Mohawk Tribe
`Ex. 2045, p. 20
`
`

`

`Introduction to FPGA Design
`
`complex designs where an entire design can take weeks to simulate and
`days to debug. Simulation is discussed in more detail later in this paper.
`
`5.2 Keep the Architecture in Mind
`Look at the particular architecture to determine which logic
`devices fit best into it. The vendor may be able to offer advice about this.
`Many synthesis packages can target their results to a specific FPGA or
`CPLD family from a specific vendor, taking advantage of the architecture
`to provide you with faster, more optimal designs.
`
`5.3 Synchronous Design
`One of the most important concepts in chip design, and one of the
`hardest to enforce on novice chip designers, is that of synchronous
`design. Once an chip designer uncovers a problem due to asynchronous
`design and attempts to fix it, he or she usually becomes an evangelical
`convert to synchronous design. This is because asynchronous design
`problems are due to marginal timing problems that may appear
`intermittently, or may appear only when the vendor changes its
`semiconductor process. Asynchronous designs that work for years in one
`process may suddenly fail when the chip is manufactured using a newer
`process.
`
`Synchronous design simply means that all data is passed through
`combinatorial logic and flip-flops that are synchronized to a single clock.
`Delay is always controlled by flip-flops, not combinatorial logic. No signal
`that is generated by combinatorial logic can be fed back to the same
`group of combinatorial logic without first going through a synchronizing
`flip-flop. Clocks cannot be gated - in other words, clocks must go directly
`to the clock inputs of the flip-flops without going through any
`combinatorial logic.
`
`The following sections cover common asynchronous design
`problems and how to fix them using synchronous logic.
`
`5.3.1 Race conditions
`Figure 15 shows an asynchronous race condition where a clock
`signal is used to reset a flip-flop. When SIG2 is low, the flip-flop is reset to a
`low state. On the rising edge of SIG2, the designer wants the output to
`change to the high state of SIG1. Unfortunately, since we don’t know the
`exact internal timing of the flip-flop or the routing delay of the signal to
`the clock versus the reset input, we cannot know which signal will arrive
`first - the clock or the reset. This is a race condition. If the clock rising edge
`appears first, the output will remain low. If the reset signal appears first, the
`
`20
`
`Patent Owner Saint Regis Mohawk Tribe
`Ex. 2045, p. 21
`
`

`

`Introduction to FPGA Design
`
`output will go high. A slight change in temperature, voltage, or process
`may cause a chip that works correctly to suddenly work incorrectly. A
`more reliable synchronous solution is shown in Figure 16. Here a faster
`clock is used, and the flip-flop is reset on the rising edge of the clock. This
`circuit performs the same function, but as long as SIG1 and SIG2 are
`produced synchronously - they change only after the rising edge of CLK -
`there is no race condition.
`
`OUT
`
`Q
`
`D C
`
`LK
`CLR
`
`SIG1
`
`SIG2
`
`SIG1
`
`SIG2
`
`OUT
`Figure 15 Asynchrono

This document is available on Docket Alarm but you must sign up to view it.


Or .

Accessing this document will incur an additional charge of $.

After purchase, you can access this document again without charge.

Accept $ Charge
throbber

Still Working On It

This document is taking longer than usual to download. This can happen if we need to contact the court directly to obtain the document and their servers are running slowly.

Give it another minute or two to complete, and then try the refresh button.

throbber

A few More Minutes ... Still Working

It can take up to 5 minutes for us to download a document if the court servers are running slowly.

Thank you for your continued patience.

This document could not be displayed.

We could not find this document within its docket. Please go back to the docket page and check the link. If that does not work, go back to the docket and refresh it to pull the newest information.

Your account does not support viewing this document.

You need a Paid Account to view this document. Click here to change your account type.

Your account does not support viewing this document.

Set your membership status to view this document.

With a Docket Alarm membership, you'll get a whole lot more, including:

  • Up-to-date information for this case.
  • Email alerts whenever there is an update.
  • Full text search for other cases.
  • Get email alerts whenever a new case matches your search.

Become a Member

One Moment Please

The filing “” is large (MB) and is being downloaded.

Please refresh this page in a few minutes to see if the filing has been downloaded. The filing will also be emailed to you when the download completes.

Your document is on its way!

If you do not receive the document in five minutes, contact support at support@docketalarm.com.

Sealed Document

We are unable to display this document, it may be under a court ordered seal.

If you have proper credentials to access the file, you may proceed directly to the court's system using your government issued username and password.


Access Government Site

We are redirecting you
to a mobile optimized page.





Document Unreadable or Corrupt

Refresh this Document
Go to the Docket

We are unable to display this document.

Refresh this Document
Go to the Docket