\begin{tikzpicture}

% Matrix
\node[draw,outer sep=0,minimum width=25mm,minimum height=6mm,fill=_orange                      ] (m00) {w[0,0:15]};
\node[draw,outer sep=0,minimum width=25mm,minimum height=6mm,fill=_orange,below=0 of m00       ] (m10) {w[1,0:15]};
\node[draw,outer sep=0,minimum width=25mm,minimum height=6mm,fill=_orange,below=0 of m10       ] (mx0) {$\cdots$};
\node[draw,outer sep=0,minimum width=25mm,minimum height=6mm,fill=_orange,below=0 of mx0       ] (m70) {w[7,0:15]};
\node[draw,outer sep=0,minimum width=25mm,minimum height=6mm,fill=_orange,below=0 of m70       ] (m80) {w[8,0:15]};
% \node[draw,outer sep=0,minimum width=25mm,minimum height=6mm,fill=_orange,below=0 of m80       ] (m90) {w[9,0:15]};
\node[draw,outer sep=0,minimum width=25mm,minimum height=6mm,fill=_orange,below=0 of m80       ] (mxx0) {$\cdots$};
\node[draw,outer sep=0,minimum width=25mm,minimum height=6mm,fill=_orange,below=0 of mxx0      ] (m150) {w[15,0:15]};

\node[draw,outer sep=0,minimum width=25mm,minimum height=6mm,fill=_blue,right=0 of m00] (m01) {w[0,16:31]};
\node[draw,outer sep=0,minimum width=25mm,minimum height=6mm,fill=_blue,right=0 of m10] (m11) {w[1,16:31]};
\node[draw,outer sep=0,minimum width=25mm,minimum height=6mm,fill=_blue,right=0 of mx0] (mx1) {$\cdots$};
\node[draw,outer sep=0,minimum width=25mm,minimum height=6mm,fill=_blue,right=0 of m70] (m71) {w[7,16:31]};
\node[draw,outer sep=0,minimum width=25mm,minimum height=6mm,fill=_blue,right=0 of m80] (m81) {w[8,16:31]};
% \node[draw,outer sep=0,minimum width=25mm,minimum height=6mm,fill=_blue,right=0 of m90] (m91) {w[9,16:31]};
\node[draw,outer sep=0,minimum width=25mm,minimum height=6mm,fill=_blue,right=0 of mxx0] (mxx1) {$\cdots$};
\node[draw,outer sep=0,minimum width=25mm,minimum height=6mm,fill=_blue,right=0 of m150] (m151) {w[15,16:31]};

\node[draw,outer sep=0,minimum width=25mm,minimum height=6mm,fill=lightgray,right=0 of m01] (m0x) {$\cdots$};
\node[draw,outer sep=0,minimum width=25mm,minimum height=6mm,fill=lightgray,right=0 of m11] (m1x) {$\cdots$};
\node[draw,outer sep=0,minimum width=25mm,minimum height=6mm,fill=lightgray,right=0 of mx1] (mxx) {$\cdots$};
\node[draw,outer sep=0,minimum width=25mm,minimum height=6mm,fill=lightgray,right=0 of m71] (m7x) {$\cdots$};
\node[draw,outer sep=0,minimum width=25mm,minimum height=6mm,fill=lightgray,right=0 of m81] (m8x) {$\cdots$};
% \node[draw,outer sep=0,minimum width=25mm,minimum height=6mm,fill=lightgray,right=0 of m91] (m9x) {$\cdots$};
\node[draw,outer sep=0,minimum width=25mm,minimum height=6mm,fill=lightgray,right=0 of mxx1] (mxxx) {$\cdots$};
\node[draw,outer sep=0,minimum width=25mm,minimum height=6mm,fill=lightgray,right=0 of m151] (m15x) {$\cdots$};

\node[draw,outer sep=0,minimum width=25mm,minimum height=6mm,fill=_green,right=0 of m0x] (m07) {w[0,112:127]};
\node[draw,outer sep=0,minimum width=25mm,minimum height=6mm,fill=_green,right=0 of m1x] (m17) {w[1,112:127]};
\node[draw,outer sep=0,minimum width=25mm,minimum height=6mm,fill=_green,right=0 of mxx] (mx7) {$\cdots$};
\node[draw,outer sep=0,minimum width=25mm,minimum height=6mm,fill=_green,right=0 of m7x] (m77) {w[7,112:127]};
\node[draw,outer sep=0,minimum width=25mm,minimum height=6mm,fill=_green,right=0 of m8x] {w[8,112:127]};
% \node[draw,outer sep=0,minimum width=25mm,minimum height=6mm,fill=_green,right=0 of m9x] {w[9,112:127]};
\node[draw,outer sep=0,minimum width=25mm,minimum height=6mm,fill=_green,right=0 of mxxx] {$\cdots$};
\node[draw,outer sep=0,minimum width=25mm,minimum height=6mm,fill=_green,right=0 of m15x] {w[15,112:127]};

\node[above right=1mm and 0 of m00.north west] {Weight Matrix};

\pgfdeclarelayer{bank1}
\pgfdeclarelayer{bankx}
\pgfdeclarelayer{bank7}
\pgfsetlayers{bank7,bankx,bank1,main}

% Banks
\node[draw,outer sep=0,minimum width=10cm,minimum height=24mm,fill=white,below right=4.5cm and 2.5cm of m150.south,anchor=north] (bank0) {};
\node[draw,outer sep=0,minimum width=25mm,minimum height=6mm,fill=_orange,below right=0 of bank0.north west] (b0e0) {w[0,0:15]};
\node[draw,outer sep=0,minimum width=25mm,minimum height=6mm,fill=_blue,right=0 of b0e0] (b0e1) {w[0,16:31]};
\node[draw,outer sep=0,minimum width=25mm,minimum height=6mm,fill=lightgray,right=0 of b0e1] (b0e2) {$\cdots$};
\node[draw,outer sep=0,minimum width=25mm,minimum height=6mm,fill=_green,right=0 of b0e2] (b0e3) {w[0,112:127]};
\node[draw,outer sep=0,minimum width=25mm,minimum height=6mm,fill=_orange,below=0 of b0e0] (b0e4) {w[8,0:15]};
\node[draw,outer sep=0,minimum width=25mm,minimum height=6mm,fill=_blue,right=0 of b0e4] (b0e5) {w[8,16:31]};
\node[draw,outer sep=0,minimum width=25mm,minimum height=6mm,fill=lightgray,right=0 of b0e5] (b0e6) {$\cdots$};
\node[draw,outer sep=0,minimum width=25mm,minimum height=6mm,fill=_green,right=0 of b0e6] (b0e7) {w[8,112:127]};

\node[minimum width=10cm,minimum height=12mm,below right=0 of b0e4.south west] {$\cdots$};

\begin{pgfonlayer}{bank1}
\node[draw,outer sep=0,minimum width=10cm,minimum height=24mm,fill=white,above right=15mm of bank0.south west] (bank1) {};
\node[draw,outer sep=0,minimum width=25mm,minimum height=6mm,fill=_orange,below right=0 of bank1.north west] (b1e0) {w[1,0:15]};
\node[draw,outer sep=0,minimum width=25mm,minimum height=6mm,fill=_blue,right=0 of b1e0] (b1e1) {w[1,16:31]};
\node[draw,outer sep=0,minimum width=25mm,minimum height=6mm,fill=lightgray,right=0 of b1e1] (b1e2) {$\cdots$};
\node[draw,outer sep=0,minimum width=25mm,minimum height=6mm,fill=_green,right=0 of b1e2] (b1e3) {w[1,112:127]};
\node[draw,outer sep=0,minimum width=25mm,minimum height=6mm,fill=_orange,below=0 of b1e0] (b1e4) {w[9,0:15]};
\node[draw,outer sep=0,minimum width=25mm,minimum height=6mm,fill=_blue,right=0 of b1e4] (b1e5) {w[9,16:31]};
\node[draw,outer sep=0,minimum width=25mm,minimum height=6mm,fill=lightgray,right=0 of b1e5] (b1e6) {$\cdots$};
\node[draw,outer sep=0,minimum width=25mm,minimum height=6mm,fill=_green,right=0 of b1e6] (b1e7) {w[9,112:127]};
\end{pgfonlayer}

\begin{pgfonlayer}{bankx}
\node[draw,outer sep=0,minimum width=10cm,minimum height=24mm,fill=white,above right=15mm of bank1.south west] (bankx) {};
\node[draw,outer sep=0,minimum width=25mm,minimum height=6mm,fill=_orange,below right=0 of bankx.north west] (bxe0) {$\cdots$};
\node[draw,outer sep=0,minimum width=25mm,minimum height=6mm,fill=_blue,right=0 of bxe0] (bxe1) {$\cdots$};
\node[draw,outer sep=0,minimum width=25mm,minimum height=6mm,fill=lightgray,right=0 of bxe1] (bxe2) {$\cdots$};
\node[draw,outer sep=0,minimum width=25mm,minimum height=6mm,fill=_green,right=0 of bxe2] (bxe3) {$\cdots$};
\node[draw,outer sep=0,minimum width=25mm,minimum height=6mm,fill=_orange,below=0 of bxe0] (bxe4) {$\cdots$};
\node[draw,outer sep=0,minimum width=25mm,minimum height=6mm,fill=_blue,right=0 of bxe4] (bxe5) {$\cdots$};
\node[draw,outer sep=0,minimum width=25mm,minimum height=6mm,fill=lightgray,right=0 of bxe5] (bxe6) {$\cdots$};
\node[draw,outer sep=0,minimum width=25mm,minimum height=6mm,fill=_green,right=0 of bxe6] (bxe7) {$\cdots$};
\end{pgfonlayer}

\begin{pgfonlayer}{bank7}
\node[draw,outer sep=0,minimum width=10cm,minimum height=24mm,fill=white,above right=15mm of bankx.south west] (bank7) {};
\node[draw,outer sep=0,minimum width=25mm,minimum height=6mm,fill=_orange,below right=0 of bank7.north west] (b7e0) {w[7,0:15]};
\node[draw,outer sep=0,minimum width=25mm,minimum height=6mm,fill=_blue,right=0 of b7e0] (b7e1) {w[7,16:31]};
\node[draw,outer sep=0,minimum width=25mm,minimum height=6mm,fill=lightgray,right=0 of b7e1] (b7e2) {$\cdots$};
\node[draw,outer sep=0,minimum width=25mm,minimum height=6mm,fill=_green,right=0 of b7e2] (b7e3) {w[7,112:127]};
\node[draw,outer sep=0,minimum width=25mm,minimum height=6mm,fill=_orange,below=0 of b7e0] (b7e4) {w[15,0:15]};
\node[draw,outer sep=0,minimum width=25mm,minimum height=6mm,fill=_blue,right=0 of b7e4] (b7e5) {w[15,16:31]};
\node[draw,outer sep=0,minimum width=25mm,minimum height=6mm,fill=lightgray,right=0 of b7e5] (b7e6) {$\cdots$};
\node[draw,outer sep=0,minimum width=25mm,minimum height=6mm,fill=_green,right=0 of b7e6] (b7e7) {w[15,112:127]};
\end{pgfonlayer}

\node[left=2mm of b0e0] {Bank 0};
\node[left=2mm of b1e0] {Bank 1};
\node[left=8mm of bxe0] {$\iddots$};
\node[left=2mm of b7e0] {Bank 7};

\node[above right=1mm and 0 of bank7.north west] {Bank Layout};

\end{tikzpicture}
