11
\$\begingroup\$

In a paper about radiation hard FPGAs I came across this sentence:

"Another concern regarding Virtex devices is half latches. Half latches are sometimes used within these devices for internal constants, as this is more efficient than using logic".

I have never heard about an FPGA device primitive called a "half latch". As far as I understand, it sounds like a hidden mechanism to "source" a constant '0' or '1' in the backend tools... Can anyone explain what exactly a "half latch" is, especially in the context of FPGAs, and how they can be used to save logic?

EDIT: The paper where I found this was A Comparison of Radiation-Hard and Radiation-Tolerant FPGAs for Space Applications

\$\endgroup\$
8
  • 7
    \$\begingroup\$ Which search engine did you use? \$\endgroup\$ Commented Jan 25, 2018 at 15:05
  • \$\begingroup\$ It's a fault that is reported in the design stage that requires corrective action slideserve.com/delilah/single-event-upsets-in-sram-fpgas due to accelerated stress, like a bit error internally except it latches and can make a tristate into an output for example \$\endgroup\$
    – D.A.S.
    Commented Jan 25, 2018 at 15:27
  • 1
    \$\begingroup\$ @TonyStewart.EEsince'75 Faults are used for internal constants? That doesn't make sense. \$\endgroup\$
    – user39382
    Commented Jan 25, 2018 at 18:24
  • \$\begingroup\$ No. Half-latches are hidden faults that must be avoided. \$\endgroup\$
    – D.A.S.
    Commented Jan 25, 2018 at 20:33
  • 2
    \$\begingroup\$ @TonyStewart.EEsince'75 That still doesn't make any sense in context. The presentation you linked to clearly depicts a "half latch" as a part of the FPGA, alongside other things like "config bits" and "BRAM". It isn't a fault; it's something which can be affected by a fault. \$\endgroup\$
    – user39382
    Commented Jan 26, 2018 at 0:30

2 Answers 2

15
\$\begingroup\$

A half-latch is a gate with positive feedback implemented with a weak pull-up transistor:

schematic

simulate this circuit – Schematic created using CircuitLab

When the input is actively driven, it overrides the signal coming from the weak pullup. When the input is in Z-state, the weak pullup can keep the logical "1" at the input (and "0" at the output) indefinitely. It will not keep the opposite state reliably, hence "half-latch".

Why would someone want a half-latch instead of a full latch? For some signals it doesn't make sense to be able to store both constants. For example, a D-flipflop can have enable input only latched high, and reset input only latched low, otherwise it will simply be eliminated during synthesis. That's the kind of signals for which half-latches are used: they are either latched to default value, or driven by interconnect.

\$\endgroup\$
11
  • 1
    \$\begingroup\$ So you're supposed to drive the input high for a moment before floating it, or you will end up with a metastable state that will eventually but unpredictably flip? \$\endgroup\$ Commented Jan 25, 2018 at 23:56
  • 1
    \$\begingroup\$ @HenningMakholm Yes, the FPGA drives all half-latches before each programming cycle. \$\endgroup\$ Commented Jan 26, 2018 at 21:37
  • 2
    \$\begingroup\$ @HenningMakholm Why do you think a half-latches only save a single transistor? AFAIK they are used as constants which otherwise would have to be encoded in LUTs. \$\endgroup\$ Commented Jan 26, 2018 at 23:03
  • 2
    \$\begingroup\$ @HenningMakholm LUT is an acronym for look-up table. I have added an example. \$\endgroup\$ Commented Jan 26, 2018 at 23:38
  • 1
    \$\begingroup\$ @HenningMakholm And BTW, if you use a full latch, you still have to drive it once to get it into a predictable state, right? \$\endgroup\$ Commented Jan 26, 2018 at 23:47
-2
\$\begingroup\$

It seems they provide the logic for keeping constants.

Since they are not observable, can only be initialised once (so only reconfigurable after device initialisation), they do not consume a full LUT and they are much simpler, nevertheless usefull.

\$\endgroup\$
2
  • 1
    \$\begingroup\$ I saw that abstract text when I searched google, too. It doesn't properly explain them as per OP's question, nor lead them to a datasheet example. Downvoting. \$\endgroup\$
    – TonyM
    Commented Jan 25, 2018 at 15:34
  • \$\begingroup\$ If its a different structure of the FPGA and less than a full LUT, with a few more more specifics, then please explain how it does not answer the question 'what is it' and as for 'how it saves logic', that's also answered. \$\endgroup\$
    – gommer
    Commented Jan 25, 2018 at 15:56

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.