added buffering of dualrail decoder output lines to pull downs
This commit is contained in:
parent
6dfc941993
commit
f1ae79cd5a
|
@ -176,17 +176,12 @@ defproc decoder_2d_hs (avMx1of2<NxC+NyC> in; a1of1 out[Nx*Ny]; bool? reset_B; po
|
|||
decoder_dualrail<NyC,Ny> d_dr_y(.supply = supply);
|
||||
(i:0..NyC-1:d_dr_y.in.d[i] = addr_buf.out.d.d[i+NxC];)
|
||||
|
||||
// Buffer dualrail decoder outputs
|
||||
// sigbuf<Ny*2> d_dr_xX[Nx]; // x2 because X req lines go to twice the num of gates
|
||||
// sigbuf<Nx> d_dr_yX[Ny];
|
||||
// (i:Nx:
|
||||
// d_dr_xX[i].in = d_dr_x.out[i];
|
||||
// d_dr_xX[i].supply = supply;
|
||||
// )
|
||||
// (i:Ny:
|
||||
// d_dr_yX[i].in = d_dr_y.out[i];
|
||||
// d_dr_yX[i].supply = supply;
|
||||
// )
|
||||
// sig buf for reqx lines, since they go to synapse pull down gates.
|
||||
sigbuf<Ny+1> d_dr_xX[Nx];
|
||||
(i:Nx:
|
||||
d_dr_xX[i].in = d_dr_x.out[i];
|
||||
d_dr_xX[i].supply = supply;
|
||||
)
|
||||
|
||||
// Validity
|
||||
vtree<NxC> vtree_x (.supply = supply);
|
||||
|
@ -213,7 +208,7 @@ defproc decoder_2d_hs (avMx1of2<NxC+NyC> in; a1of1 out[Nx*Ny]; bool? reset_B; po
|
|||
(j:Ny:
|
||||
index = i + Nx*j;
|
||||
ack_pulldowns[index].a = out[index].a;
|
||||
ack_pulldowns[index].b = d_dr_x.out[i];
|
||||
ack_pulldowns[index].b = d_dr_xX[i].out[j];
|
||||
ack_pulldowns[index].y = _out_acksB[i];
|
||||
ack_pulldowns[index].vss = supply.vss;
|
||||
ack_pulldowns[index].vdd = supply.vdd;
|
||||
|
@ -224,7 +219,7 @@ defproc decoder_2d_hs (avMx1of2<NxC+NyC> in; a1of1 out[Nx*Ny]; bool? reset_B; po
|
|||
PULLUP_X4 pu[Nx]; // TODO probably replace this with variable strength PU
|
||||
AND2_X1 pu_ANDs[Nx];
|
||||
(i:Nx:
|
||||
pu_ANDs[i].a = d_dr_x.out[i];
|
||||
pu_ANDs[i].a = d_dr_xX[i].out[Ny];
|
||||
pu_ANDs[i].b = reset_B; // TODO buffer
|
||||
pu_ANDs[i].vdd = supply.vdd;
|
||||
pu_ANDs[i].vss = supply.vss;
|
||||
|
|
Loading…
Reference in New Issue