To connect these logic elements together, pass transistors are used. The transistor can be programmed to either connect a signal or not, thereby giving the FPGA the ability to very specifically connect logic elements together. For example, if the output of one logic elements will feed the input of another, the pass transistor can be programmed to connect these two wires together and match the specified logic. Between the logic elements and the pass transistors, a compiler can take a hardware description from an HDL, create the logic for the logic elements, and connect them together using the pass transistors.