Verilog (FPGA/CPLD) design tips from Xilinx

This is a list of common mistakes made in design. These errors often make your design unreliable or slow. In order to improve your design performance and increase the reliability of your speed you must determine your design through all of these checks.

Reliability Select the global clock buffer BUFG for the clock signal? A clock that does not use the global clock buffer will introduce a bias. Use only one clock edge to register data? Using the two edges of the clock is unreliable because some or both edges of the clock will drift; if the clock drifts and you only use one edge of the clock, you reduce the risk of clock edge drift. ? This problem can be solved by allowing CLKDLL to automatically correct the duty cycle of the clock to achieve a 50% duty cycle. Otherwise it is strongly recommended that you only use one clock edge. ** Do not use the clock generated by CLKDLL or DCM. Generate a clock. ? Does this include generating a gated clock and a divided clock? Alternatively, a clock enable can be established or a different clock signal can be generated using CLKDLL or DCM. ? For a purely synchronous design it is recommended that you use only one clock whenever possible.

Reliability Select the global clock buffer BUFG for the clock signal? A clock that does not use the global clock buffer will introduce a bias. Use only one clock edge to register data? Using the two edges of the clock is unreliable because some or both edges of the clock will drift; if the clock drifts and you only use one edge of the clock, you reduce the risk of clock edge drift. ? This problem can be solved by allowing CLKDLL to automatically correct the duty cycle of the clock to achieve a 50% duty cycle. Otherwise it is strongly recommended that you only use one clock edge. ** Do not use the clock generated by CLKDLL or DCM. Generate a clock. ? Does this include generating a gated clock and a divided clock? Alternatively, a clock enable can be established or a different clock signal can be generated using CLKDLL or DCM. ? For a purely synchronous design it is recommended that you use only one clock whenever possible.

Do not generate asynchronous control signals such as reset signals or set signals internally? Does the internally generated asynchronous control signal produce glitch? As an alternative, a synchronous reset/set signal can be generated. The decoding of this signal is one clock cycle ahead of the time required. Do not use multiple clocks without phase relationship? You may not always be able to avoid this condition. Under these circumstances, make sure you have used the appropriate synchronization circuit to cross the clock domain. ** Don't use multiple clocks without phase relationships? Again, you may not always be able to avoid this condition. Many designs need to be so in these cases to make sure that you have properly constrained the path across the clock domain.

Do not use internal latches? Internal latches can confuse timing and often introduce additional clock signals? The internal latch can be viewed as a combinational logic when the transparent gate is open but can be considered a synchronous component when the gate is latched. Will this confuse timing analysis? Internal latches often introduce gated clock gating clocks that can cause glitches that make the design unreliable

Does the performance logic level delay not exceed 50% of the timing budget? Each path logic level delay can be found in the logic level timing report or post-layout timing report. After each path is analyzed in detail, the timing analyzer will generate statistics for each path delay. Check that the total logic level delay exceeds 50% of your timing budget?

IOB register? Does the IOB register provide the fastest clock-to-output and input-to-clock delay? First of all, there are some restrictions on the input register. There can be no combined logic between the pin and the register. For the output register, there can be no combined logic between the register and the pin. For the three-state output, all the registers in the IOB must use the same one. The clock and reset signals and the IOB tristate register must be active low to be placed in the IOB. The tristate buffer is active low so there is no need for an inverter between the register and the tristate buffer. You must enable the software to select the IOB register. You can set the global implementation option to select the IOB register for the input or output or input and output. The default value is off. ? You can also set the syntax of the IOB register in the synthesis tool or in the user constraint file UCF to: INST "io_register_name" IOB = TRUE;

Choose a fast conversion rate for critical outputs? The slew rate can be selected for LVCMOS and LVTTL levels. The fast slew rate will reduce the output delay but will increase the ground bounce. So you must choose the fast slew rate based on careful consideration.

Flowing logic? If your design allows for increased latency, the pipelined operation of the combinatorial logic can improve performance? There are a large number of registers in Xilinx's FPGA. There is a corresponding register for each four-input function generator. These registers are used to increase data throughput in the case of sacrificial delay.

Code optimization for a four-input lookup table structure? Remember that each lookup table can create a four-input combinatorial logic function. If you need more functionality, remember the number of lookup tables needed to implement the function.

Use a Case statement instead of an if-then-else statement? Complex if-then-else statements usually generate priority decoding logic which will increase the combined delay on these paths? Case statements used to generate complex logic typically generate parallel logic that does not have too much latency. Verilog users can use the compile wizard synopsys parallel_case.

Use one or more core generator blocks? The kernel generator block is optimized for the structure of Xilinx. Many blocks can allow user configuration including size width and pipeline delay? Check the critical path in your design. Can you generate a core in the core generator to improve key path performance?

Keep the finite state machine FSM at the level of your own level? In order to allow the synthesis tool to fully optimize your FSM it must be optimized in its own block. If not, would this make the synthesis tool optimize the FSM logic along with the logic around it? FSM cannot include any arithmetic logic data path logic or other combinational logic that is not related to the state machine

Using a finite state machine with two processes or always blocks? The next state and output decode logic must be placed in a separate process or always block. This will not allow the synthesis tool to share resources between the output and the next state decode logic.

Using a valid encoding finite state machine FSM? A valid encoding usually provides the highest performance state machine in a register-rich FPGA

Is there a registered output for each leaf-level leaf-level block? A leaf-level block is a block that can infer logic and a structural-level block only instantiates a lower-level block so that a hierarchy is established. If the leaf-level block is latched, the synthesis tool can be kept hierarchical. This makes it easier to analyze the static timing of these codes. Registering boundaries allows for a defined timing relationship between blocks

Use a data stream with appropriate pin positioning constraints? The reason why the data stream in the Xilinx device is in the horizontal direction is that there is another reason why the carry chain is in the vertical direction. The tristate buffer line is also horizontally connected directly between the blocks in the horizontal direction. ? In order to utilize the data stream address and data pins, it must be placed on the left or right side of the chip. Note that because the carry chain is bottom-up, the lowest bit is placed at the bottom of the control signal placed on the upper and lower parts of the chip. Counter style? Binary counters are very slow if your binary counters are critical paths can be considered using different styles of counters LFSRPre-scalar or Johnson** design is hierarchically divided into different functional blocks and technology blocks? The design must be divided into different functional blocks. First, the top-level functional blocks are then the lower-level blocks. Should you also include specific technology blocks? Design hierarchy must make the design more readable and easier to debug. This can be controlled by your synthesis tool. However, in order to control replication more tightly, you can choose to copy the registers. ** Use the four global constraints to globally constrain the design for each clock bias input bias output pin - To - pin? You may have other constraints on multi-cycle path failure paths and critical paths but you must always start by specifying four global constraints

4G Motorcycle GPS Trackers

4G Motorcycle GPS trackers,LTE Motorcycle GPS trackers,Cat-1 Motorcycle GPS Trackers,CAT-M Motorcycle GPS Trackers. Waterproof Motorcycle GPS Trackers,Wired Motorcycle GPS Trackers

eSky wireless Inc , https://www.eskygpsiot.com

This entry was posted in on