09.07.2015 Views

Xilinx - Design Reuse Methodology for ASIC and FPGA Designers.pdf

Xilinx - Design Reuse Methodology for ASIC and FPGA Designers.pdf

Xilinx - Design Reuse Methodology for ASIC and FPGA Designers.pdf

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

183.1.2 Partitioning at Register BoundaryGuideline - For large blocks, both inputs <strong>and</strong> outputs should be registered. For smaller moduleseither the input or the output of the module should be registered. Registering both the input <strong>and</strong>output makes timing closures within each block completely local. Internal timing has no effect onthe timing of primary inputs <strong>and</strong> outputs of the block. The module gives a full clock cycle topropagate outputs from one module to the input of another.Unlike <strong>ASIC</strong>s, there is no need <strong>for</strong> buffers to be inserted at the top level to drive long wires since<strong>FPGA</strong> architectures designed <strong>for</strong> systems have an abundant amount of global routing with built inbuffering.This kind of defensive timing design is useful <strong>for</strong> large system level designs as well as reusablemodules. In a reusable block, the module designer does not know the timing context in which theblock will be used. Defensive timing design is the only way to assure that timing problems willnot limit future use of the module.3.1.3 One-Hot State MachinesState machines are one of the most commonly implemented functions in system level designs.Highly encoded state sequences will generally have many, wide-input logic functions to interpretthe inputs <strong>and</strong> decode the states. When implemented in a <strong>FPGA</strong> this can result in several levels oflogic between clock edges because multiple logic blocks are needed to decode the states.Guideline - A better state-machine approach <strong>for</strong> <strong>FPGA</strong>s limits the amount of fan-in into onelogic block. In some cases a binary encoding can be more efficient in smaller state machines.The abundance of registers in <strong>FPGA</strong> architectures <strong>and</strong> the fan-in limitations of the CLB tend tofavor a one-hot-encoding (OHE) style. The OHE scheme is named so because only one stateregister is asserted, or “hot”, at a time. One register is assigned to each state. Generally an OHEscheme will require two or fewer levels of logic between clock edges compared to binaryencoding, translating into faster per<strong>for</strong>mance. In addition the logic circuit is simplified becauseOHE removes much of the state-decoding logic. An OHE state machine is essentially alreadyfully decoded making verification simple. Many synthesis tools have the ability to convert statemachines coded in one style to another.3.1.4 PipeliningPipelining can dramatically improve device per<strong>for</strong>mance by restructuring long data paths withseveral levels of logic <strong>and</strong> breaking them up over multiple clocks. This method allows <strong>for</strong> a fasterclock cycle <strong>and</strong> increased data throughput at small expense to latency from the extra latchingoverhead. Because <strong>FPGA</strong>s are register-rich, this is usually an advantageous structure <strong>for</strong> <strong>FPGA</strong>design since the pipeline is created at no cost in terms of device resources. However, since thedata is now on a multi-cycle path, special considerations must be used <strong>for</strong> the rest of the design toaccount <strong>for</strong> the added path latency. Care must be taken when defining timing specifications <strong>for</strong>these paths. The ability to constrain multi-cycle paths with a synthesis tool varies based on thetool being used. Check the synthesis tool's documentation <strong>for</strong> in<strong>for</strong>mation on multi-cycle paths.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!