\node [pmos] (mp1) at (0,0) {}; \draw (mp1.drain) to [short,-] ++ (0,-0.75) node[ pmos , anchor=source ] (mp2) {}; \draw (mp2.drain) to [short,-*] ++ (0,-0.75) coordinate (x) to [short,- ] ++ (-2,0) to [short,- ] ++ (0 ,-0.75) node[ nmos , anchor=drain ] (mn1) {}; \draw (x) to [short,-] ++ (2 ,0) coordinate (x) to [short,-] (x|-mn1.drain) node[ nmos , anchor=drain ] (mn2) {}; \draw (x) to [short,*-o] ++ (1 ,0) coordinate (o); \draw (mn2.gate) to [short,- ] (mn2.gate-|mp2.gate) to [short,-*] (mp2.gate) to [short,- ] (mp2.gate-|mn1.gate) to [short,-o] ++ (-0.75,0) coordinate (a); \draw (mn1.gate) to [short,- ] (mn1.gate|-mp1.gate) coordinate (x) to [short,- ] (mp1.gate); \draw (x) to [short,*-o] (x-|a) coordinate (b); \draw (mn1.source) to [short,- ] ++ (0,-0.75) coordinate (x) to [short,-*] (x-|mp1.source) coordinate (vss) to [short,- ] (vss-|mn2.source) to [short,- ] (mn2.source); \node[anchor=east] at (a) {B}; \node[anchor=east] at (b) {A}; \node[anchor=west] at (o) {O}; \node[vdd] at (mp1.source) {}; \node[vss] at (vss) {}; \node[ anchor = west , inner sep = 2pt , font = \footnotesize ] () at ($(mn1.source)!0.775!(mn1.drain)$) {MN1}; \node[ anchor = west , inner sep = 2pt , font = \footnotesize ] () at ($(mn2.source)!0.775!(mn2.drain)$) {MN2}; \node[ anchor = west , inner sep = 2pt , font = \footnotesize ] () at ($(mp1.drain)!0.775!(mp1.source)$) {MP1}; \node[ anchor = west , inner sep = 2pt , font = \footnotesize ] () at ($(mp2.drain)!0.775!(mp2.source)$) {MP2};