Answers Database
XBLOX 5.1 may erroneously remove inverters from OBUFT/OBUFE output enable
Record #605
Product Family: Software
Product Line: FPGA Core
Problem Title:
XBLOX 5.1 may erroneously remove inverters from OBUFT/OBUFE output
enable
Problem Description:
If you have a flip-flop that drives an OBUFE in an XBLOX design (or if you
force execution of XBLOX, for example, with the -b option in XMake with the
-b option), the resulting .lca file will have output buffers with
active-low enables (OBUFT) instead of active-high enables (OBUFE).
When XBLOX on the .xtg file (the output of XNFPrep) and creates its .xg
file, it may pull a flip-flop that drives an OBUFT into the I/O block. It
does this by using an OUTFFT, which combines the flip-flop and OBUFT into a
single element. However, if the OBUFT has an inverted output enable (which
is the case if an OBUFE was actually used in the original schematic), the
inversion is lost.
Here is an example excerpt from a .xtg file:
SYM, I$1110/I$1, DFF, TNM=csr, INIT=R, LIBVER=2.0.0
PIN, Q, O, OUT1
PIN, D, I, IN1
PIN, C, I, CLK
END
SYM, I$13070/I$6/I$2, OBUFT, LIBVER=2.0.0
PIN, T, I, ENABLE, , INV
PIN, O, O, TOUT1
PIN, I, I, OUT1
END
Here is the resulting netlist in the .xg file:
SYM, I$1110/I$1, OUTFFT, INIT=R, LIBVER=2.0.0, TNM=CSR
PIN, O, O, TOUT1,
PIN, D, I, IN1,
PIN, T, I, ENABLE,
PIN, C, I, CLK,
END
Notice that the INV is not on the PIN record for the OUTFFT.T
(enable-control) pin.
Solution 1:
11. If the design contains OBUFEs but does not contain XBLOX modules,
refrain from using XBLOX optimization by not using the XMake -b option.
2. If the design uses XBLOX, prevent flip-flop merging by running XBLOX
with the merge_io=false parameter.
3. Use XBLOX 5.2 or later, where the problem has been fixed.
End of Record #605
For the latest news, design tips, and patch information on the Xilinx design environment, check out the Xilinx Expert Journals! |