Compare commits
No commits in common. "f317a7e8dae42062c6401897b2a9706608313342" and "39ec744562da0fefc66b61c9c75ab5fc895a7f51" have entirely different histories.
f317a7e8da
...
39ec744562
@ -26,8 +26,8 @@
|
|||||||
|
|
||||||
|
|
||||||
.subckt wire iot iof len=10 wid=10
|
.subckt wire iot iof len=10 wid=10
|
||||||
.param rr=0.4
|
.param rr=0.8
|
||||||
.param cc = '100e-15'
|
.param cc = '200e-15'
|
||||||
rt iot iof 'rr*len*50/(wid)'
|
rt iot iof 'rr*len*50/(wid)'
|
||||||
cf iof 0 'cc*len*wid*50/1e6'
|
cf iof 0 'cc*len*wid*50/1e6'
|
||||||
|
|
||||||
@ -179,7 +179,7 @@ Xpct btt clk vdd pp ww='100'
|
|||||||
Xpcf bff clk vdd pp ww='100'
|
Xpcf bff clk vdd pp ww='100'
|
||||||
.ends write1
|
.ends write1
|
||||||
|
|
||||||
.subckt iWrite1 btt bff dii rwt en clk
|
.subckt iWrite1 btt bff dii rwt clk
|
||||||
* TODO: sizes
|
* TODO: sizes
|
||||||
Xclk clkb clk inv size='40'
|
Xclk clkb clk inv size='40'
|
||||||
Xdii diib dii inv size='40'
|
Xdii diib dii inv size='40'
|
||||||
|
@ -101,15 +101,9 @@ of length to this number, to a total of roughly $2200\lambda$.
|
|||||||
|
|
||||||
\pagebreak
|
\pagebreak
|
||||||
\section{Performance Results}
|
\section{Performance Results}
|
||||||
I was able to clock my design at \textbf{$1.3\textit{ns}$}.
|
I was able to clock my design at $1.9\textit{ns}$.
|
||||||
%
|
%
|
||||||
I realize that this isn't as fast as everyone else, but I ask that you take
|
Two factors lead to these upper limits.
|
||||||
into consideration the fact that \textbf{I was working with the old wire model}
|
|
||||||
until about an hour before the final due date (since I didn't know the wire model changed).
|
|
||||||
If I knew earlier, I'd have more time to optimize my design for the timings associated
|
|
||||||
with the new model.
|
|
||||||
%
|
|
||||||
Two factors lead to this upper limit.
|
|
||||||
%
|
%
|
||||||
\begin{itemize}
|
\begin{itemize}
|
||||||
\item \textit{Write capacitance} makes it increasingly difficult to overwrite the value
|
\item \textit{Write capacitance} makes it increasingly difficult to overwrite the value
|
||||||
@ -359,27 +353,6 @@ space incurred, an entire column is approximately $100\lambda$ wide.
|
|||||||
\label{fig:layout-arrayed}
|
\label{fig:layout-arrayed}
|
||||||
\end{figure}
|
\end{figure}
|
||||||
|
|
||||||
\pagebreak
|
|
||||||
\section{Further Design Ideas}
|
|
||||||
I discovered -- from other people in the class -- that an 8-column design was plausible.
|
|
||||||
Unfortunately, I was only convinced a day or so before the project was due, which did not give me
|
|
||||||
enough time to redesign my SRAM. I have seen students successfully using
|
|
||||||
the 8-column design by sharing \textsc{Wl} wires for each 'row', and using
|
|
||||||
the remaining 3 bits to enable and disable the write block. Since reading does
|
|
||||||
not change the cell value, this is a viable approach; all 8 columns would ``read''
|
|
||||||
(except during writing, in which 7 columns would read and 1 would write). As
|
|
||||||
long as a proper address selection mechanism is implemented into the read collector
|
|
||||||
circuit (which at present cannot handle concurrent reads), this would work just
|
|
||||||
fine, albeit at the expense of added power consumption (from draining and re-charging
|
|
||||||
7 extra wires). This design, combined with my idea of placing the write block
|
|
||||||
in the middle of the column, can lead to very short effective wire lengths. If
|
|
||||||
I was to approach this project again, that's what I would try.
|
|
||||||
|
|
||||||
\section{Acknowledgements}
|
|
||||||
Reed's aforementioned idea of sharing well contacts between adjacent cells
|
|
||||||
played a part in my design. Also, without the other students in the class
|
|
||||||
Discord, I would not have known to use the ``better'' wire model at all.
|
|
||||||
|
|
||||||
\pagebreak
|
\pagebreak
|
||||||
\bibliographystyle{unsrt}
|
\bibliographystyle{unsrt}
|
||||||
\bibliography{bibliography}
|
\bibliography{bibliography}
|
||||||
|
@ -21,10 +21,10 @@ Xnf fff gnd dead nn ww='number*5'
|
|||||||
|
|
||||||
|
|
||||||
*********begin: topLevel*****
|
*********begin: topLevel*****
|
||||||
.param per = 1.3ns
|
.param per = 1.9ns
|
||||||
.param dataLead=per*0.1
|
.param dataLead=per*0.1
|
||||||
.param lw=2200
|
.param lw=2200
|
||||||
.param wirew=14
|
.param wirew=12
|
||||||
|
|
||||||
vdd vdd 0 'supply'
|
vdd vdd 0 'supply'
|
||||||
|
|
||||||
@ -46,7 +46,7 @@ Xrdwff rdwf rdw clk flop
|
|||||||
Xrotff dotf dot clk flop
|
Xrotff dotf dot clk flop
|
||||||
Xdec choose adf clk decModel
|
Xdec choose adf clk decModel
|
||||||
|
|
||||||
Xwr bt3 bf3 dinf rdwf adf clkb6 iWrite1
|
Xwr bt3 bf3 dinf rdwf clkb6 iWrite1
|
||||||
Xw1 bt1 bt2 bf1 bf2 clk wire_precharge len='lw/4' wid='wirew'
|
Xw1 bt1 bt2 bf1 bf2 clk wire_precharge len='lw/4' wid='wirew'
|
||||||
Xmd1 bt2 bf2 memLoad number=15
|
Xmd1 bt2 bf2 memLoad number=15
|
||||||
Xw2 bt2 bt3 bf2 bf3 clk wire_precharge len='lw/4' wid='wirew'
|
Xw2 bt2 bt3 bf2 bf3 clk wire_precharge len='lw/4' wid='wirew'
|
||||||
|
Loading…
Reference in New Issue
Block a user