\documentclass{standalone}

\usepackage{tikz}
\usetikzlibrary{positioning, fit}

\usepackage{circuitikz}
\tikzset{
  register/.style={flipflop, flipflop def={t1=I, t6=O, c3=1}},
}

\begin{document}

\begin{circuitikz}
  \node[register] (reg 0) {foo\_0[7:0]};
  \node[register, right=1.5 of reg 0] (reg 1) {foo\_1[7:0]};
  \node[register, right=1.5 of reg 1] (reg 2) {foo\_2[7:0]};
  \node[draw, inner sep=10pt, fit=(reg 0) (reg 1) (reg 2), label=north:ShiftReg] {};
  \draw (reg 0.pin 1) -- ++(-10pt, 0) node[ocirc, label=left:{foo\_in[7:0]}] {};
  \draw (reg 0.pin 6) -- (reg 1.pin 1);
  \draw (reg 1.pin 6) -- (reg 2.pin 1);
  \draw (reg 2.pin 6) -- ++(10pt, 0) node[ocirc, label=right:{foo\_out[7:0]}] {};
\end{circuitikz}

\end{document}
