Compare commits

30 Commits

Author SHA1 Message Date
a4889ae844 fixed conflict with Madison commit 2022-03-03 17:54:29 +01:00
d64afd8c50 Merge remote-tracking branch 'origin/dev' into dev 2022-03-03 17:53:40 +01:00
ba096bf6b2 wired up most of the stuff in encoder (missing dual rail tree)
Obv not simulated yet and not sure all wires are correct. still need to repass through them
2022-03-03 17:52:42 +01:00
382714d11e decoder dly with and grid unit test 2022-03-03 17:10:55 +01:00
c8412606b3 merged 2022-03-03 17:10:16 +01:00
893f71db92 AND grid init 2022-03-03 17:09:00 +01:00
da5948f493 added N=1 cases 2022-03-03 17:05:56 +01:00
0e9f2ae506 started encoder on the coders.act 2022-03-03 15:10:31 +01:00
e53fc88054 arbiter_tree works 2022-03-03 12:39:10 +01:00
f7cd7006d0 removed arbiter_tree from primitives because is already in coders 2022-03-03 12:15:17 +01:00
24a6260862 Merged encoder_wip into dev 2022-03-03 12:14:48 +01:00
f5859040d8 Arbiter tree test 2022-03-03 12:11:20 +01:00
3e1b63c201 continued handshaking tree, not finished 2022-03-03 12:11:20 +01:00
b49b9d98c3 started arbiter tree 2022-03-03 12:11:20 +01:00
6fc3e4b99c removed arbiter tree 2022-03-03 11:56:59 +01:00
af52c688a3 arbiter tree with arbiters, not tested 2022-03-03 11:56:34 +01:00
d0a2fff096 arbiter init with or2s 2022-03-03 10:52:29 +01:00
7f40b48b49 arbtree init, using or2s for now 2022-03-03 10:47:37 +01:00
9c27248e12 decoder 2d dly init 2022-03-02 15:55:26 +01:00
3bba9fefa4 made buf with dly sorry 2022-03-02 15:48:54 +01:00
31d2f35042 i am a moron re dly cells 2022-03-02 15:47:36 +01:00
c61a570f80 fixed wiring bug in prog delay 2022-03-02 15:11:22 +01:00
6bece2f459 renamed gates in or tree 2022-03-02 13:51:12 +01:00
659cd2479c oops accidentally hit all trees 2022-03-02 13:50:04 +01:00
c5e582ff3e renamed vars in atree 2022-03-02 13:48:57 +01:00
e52ec9ed61 renamed var in vtree for consciences 2022-03-02 11:51:45 +01:00
c580d21efe fixed supply in fifo_t 2022-03-02 11:24:28 +01:00
1b7e39bc00 coders.act file init 2022-03-02 09:48:41 +01:00
8060051da0 Merge branch 'dev' of ssh://git.web.rug.nl:222/bics/actlib_dataflow_neuro into dev 2022-03-02 09:48:11 +01:00
b456ea40fd changed delayprog to outin vs ya naming scheme 2022-03-02 09:48:05 +01:00
23 changed files with 6130 additions and 45 deletions

View File

@ -104,10 +104,12 @@ namespace tmpl {
export defcell DLY4_X1(bool! y; bool? a, vdd, vss) export defcell DLY4_X1(bool! y; bool? a, vdd, vss)
{ {
bool _y; bool _y, __y, ___y;
prs { prs {
a => _y- a => _y-
_y => y- _y => __y-
__y => ___y-
___y => y-
} }
} }
@ -272,7 +274,7 @@ namespace tmpl {
export defcell MUX2_X1(bool! y; bool? a, b, s, vdd, vss) export defcell MUX2_X1(bool! y; bool? a, b, s, vdd, vss)
{ {
// y = !( S ? a : b ) // y = !( S ? b : a )
// Adjusted to fit the XFAB Muxes // Adjusted to fit the XFAB Muxes
bool _s; bool _s;
bool _y; bool _y;

363
dataflow_neuro/coders.act Normal file
View File

@ -0,0 +1,363 @@
/*************************************************************************
*
* This file is part of ACT dataflow neuro library
*
* Copyright (c) 2022 University of Groningen - Ole Richter
* Copyright (c) 2022 University of Groningen - Michele Mastella
* Copyright (c) 2022 University of Groningen - Hugh Greatorex
* Copyright (c) 2022 University of Groningen - Madison Cotteret
*
*
* This source describes Open Hardware and is licensed under the CERN-OHL-W v2 or later
*
* You may redistribute and modify this documentation and make products
* using it under the terms of the CERN-OHL-W v2 (https:/cern.ch/cern-ohl).
* This documentation is distributed WITHOUT ANY EXPRESS OR IMPLIED
* WARRANTY, INCLUDING OF MERCHANTABILITY, SATISFACTORY QUALITY
* AND FITNESS FOR A PARTICULAR PURPOSE. Please see the CERN-OHL-W v2
* for applicable conditions.
*
* Source location: https://git.web.rug.nl/bics/actlib_dataflow_neuro
*
* As per CERN-OHL-W v2 section 4.1, should You produce hardware based on
* these sources, You must maintain the Source Location visible in its
* documentation.
*
**************************************************************************
*/
import "../../dataflow_neuro/cell_lib_async.act";
import "../../dataflow_neuro/cell_lib_std.act";
import "../../dataflow_neuro/treegates.act";
import "../../dataflow_neuro/primitives.act";
// import tmpl::dataflow_neuro;
// import tmpl::dataflow_neuro;
import std::channel;
open std::channel;
namespace tmpl {
namespace dataflow_neuro {
/**
* 2D decoder which uses a configurable delay from the VCtrees to buffer ack.
* Nx is the x size of the decoder array
* NxC is the number of wires in the x channel.
* Thus NxC should be something like NxC = ceil(log2(Nx))
* but my guess is that we can't do logs...
* N_dly_cfg is the number of config bits in the ACK delay line,
* with all bits high corresponding to 2**N_dly_cfg -1 DLY4_X1 cells.
*/
export template<pint NxC, NyC, Nx, Ny, N_dly_cfg>
defproc decoder_2d_dly (avMx1of2<NxC+NyC> in; bool? outx[Nx], outy[Ny],
dly_cfg[N_dly_cfg], reset_B; power supply) {
// Buffer to recieve concat(x,y) address packet
buffer<NxC+NyC> addr_buf(.in = in, .reset_B = reset_B, .supply = supply);
// NEED TO BUFFER OUTPUTS FROM BUFFER I RECKON
// Validity trees
vtree<NxC> vtree_x (.supply = supply);
vtree<NyC> vtree_y (.supply = supply);
(i:0..NxC-1:vtree_x.in.d[i].t = addr_buf.out.d.d[i].t;)
(i:0..NxC-1:vtree_x.in.d[i].f = addr_buf.out.d.d[i].f;)
(i:0..NyC-1:vtree_y.in.d[i].t = addr_buf.out.d.d[i+NxC].t;)
(i:0..NyC-1:vtree_y.in.d[i].f = addr_buf.out.d.d[i+NxC].f;)
// Delay ack line. Ack line is delayed (but not the val)
A_2C_B_X1 C2el(.c1 = vtree_x.out, .c2 = vtree_y.out, .vdd = supply.vdd, .vss = supply.vss);
addr_buf.out.v = C2el.y;
// delayprog<N_dly_cfg> dly(.in = tielow.y, .s = dly_cfg, .supply = supply);
delayprog<N_dly_cfg> dly(.in = C2el.y, .s = dly_cfg, .supply = supply);
// ACK MAY HAVE BEEN DISCONNECTED HERE
// FOR TESTING PURPOSES
// !!!!!!!!!!!!!!!!
dly.out = addr_buf.out.a;
// ACK MAY HAVE BEEN DISCONNECTED HERE
// FOR TESTING PURPOSES
// !!!!!!!!!!!!!!!!
// AND trees
pint bitval;
andtree<NxC> atree_x[Nx];
(k:0..Nx-1:atree_x[k].supply = supply;)
(i:0..Nx-1:
(j:0..NxC-1:
bitval = (i & ( 1 << j )) >> j; // Get binary digit of integer i, column j
[bitval = 1 ->
atree_x[i].in[j] = addr_buf.out.d.d[j].t;
[]bitval = 0 ->
atree_x[i].in[j] = addr_buf.out.d.d[j].f;
[]bitval >= 2 -> {false : "fuck"};
]
atree_x[i].out = outx[i];
)
)
andtree<NyC> atree_y[Ny];
(k:0..Ny-1:atree_y[k].supply = supply;)
(i:0..Ny-1:
(j:0..NyC-1:
bitval = (i & ( 1 << j )) >> j; // Get binary digit of integer i, column j
[bitval = 1 ->
atree_y[i].in[j] = addr_buf.out.d.d[j+NxC].t;
[]bitval = 0 ->
atree_y[i].in[j] = addr_buf.out.d.d[j+NxC].f;
]
atree_y[i].out = outy[i];
)
)
}
/*
* Build an arbiter_handshake tree.
*/
export template<pint N>
defproc arbtree (a1of1 in[N]; a1of1 out; power supply)
{
bool tout;
{ N > 0 : "What?" };
pint i, end, j;
i = 0;
end = N-1;
pint arbCount;
arbCount = 0;
/* Pre"calculate" the number of C cells required, look below if confused */
*[ i != end ->
j = 0;
*[ i <= end ->
j = j + 1;
[i = end ->
i = end+1;
[] i+1 = end ->
i = end+1;
arbCount = arbCount +1;
[] else ->
i = i + 2;
arbCount = arbCount +1;
]
]
/*-- update range that has to be combined --*/
// i = end+1;
end = end+j;
]
/* array that holds ALL the nodes in the completion tree */
a1of1 tmp[end+1];
// Connecting the first nodes to the input
(l:N:
tmp[l] = in[l];
)
/* array to hold the actual C-elments, either A2C or A3C */
[arbCount > 0 ->
arbiter_handshake arbs[arbCount];
]
(h:arbCount:arbs[h].supply = supply;)
/* Reset the variables we just stole lol */
i = 0;
end = N-1;
j = 0;
pint arbIndex = 0;
/* Invariant: i <= end */
*[ i != end ->
/*
* Invariant: tmp[i..end] has the current signals that need to be
* combined together, and "isinv" specifies if they are the inverted
* sense or not
*/
j = 0;
*[ i <= end ->
/*-- there are still signals that need to be combined --*/
j = j + 1;
[ i = end ->
/*-- last piece: pipe input through to next layer --*/
tmp[end+j] = tmp[i];
i = end+1;
[] i+1 = end ->
/*-- last piece: use either a 2 input C-element --*/
arbs[arbIndex].in1 = tmp[i];
arbs[arbIndex].in2 = tmp[i+1];
arbs[arbIndex].out = tmp[end+j];
arbIndex = arbIndex +1;
i = end+1;
[] else ->
/*-- more to come; so use a two input C-element --*/
arbs[arbIndex].in1 = tmp[i];
arbs[arbIndex].in2 = tmp[i+1];
arbs[arbIndex].out = tmp[end+j];
arbIndex = arbIndex +1;
i = i + 2;
]
]
/*-- update range that has to be combined --*/
i = end+1;
end = end+j;
j = 0;
]
out = tmp[end];
}
export template<pint Nx, Ny>
defproc and_grid(bool! out[Nx*Ny]; bool? inx[Nx], iny[Ny]; power supply) {
AND2_X1 ands[Nx*Ny];
(i:0..Nx*Ny-1:ands[i].vss = supply.vss; ands[i].vdd = supply.vdd;)
(x:0..Nx-1:
(y:0..Ny-1:
ands[x + y*Nx].a = inx[x];
ands[x + y*Nx].b = iny[y];
ands[x + y*Nx].y = out[x + y*Nx];
)
)
}
template<pint N, pint M,pint address_size, pint ACK_STRENGTH>
defproc encoder2D(a1of1 x[N]; a1of1 y[M] ;avMx1of2<address_size> addr; power supply; bool reset_B) {
// Reset buffers
bool _reset_BX,_reset_BXX[H];
BUF_X1 reset_buf(.a=reset_B, .y=_reset_BX,.vdd=supply.vdd,.vss=supply.vss);
sigbuf<2*address_size+3> reset_bufarray(.in=_reset_BX, .out=_reset_BXX);
// Arbiters
a1of1 _out_arb_x,_out_arb_y;
a1of1 _x_temp[N];
(i:N:
_x_temp[i].r = x[i].r;
)
(i:M:
_y_temp[i].r = y[i].r;
)
arbtree<N> Xarb(.in = _x_temp,.out = _out_arb_X,.supply = supply);
arbtree<M> Yarb(.in = _y_temp,.out = _out_arb_Y,.supply = supply);
// Sigbufs for strong ackowledge signals (note that the sigbuf needs to be changed)
sigbuf<ACK_STRENGTH> x_ack_arb[N];
sigbuf<ACK_STRENGTH> y_ack_arb[M];
(i:N:
x_ack_arb[i].in = _x_temp[i].a;
x_ack_arb[i].out[0] = x[i].a;
x_ack_arb[i].supply = supply;
)
(i:M:
y_ack_arb[i].in = _y_temp[i].a;
y_ack_arb[i].out[0] = y[i].a;
y_ack_arb[i].supply = supply;
)
// This block checks that the input is valid and that the arbiter made a choice
// Then activates the ack of the arbiter
bool _x_v,_in_x_v;
A_2C2P_RB_X1 Y_ack_confirm();
Y_ack_confirm.p1 = _x_v;
Y_ack_confirm.p2 =_in_x_v;
Y_ack_confirm.c1 = _out_arb_Y.r;
Y_ack_confirm.c2 = _x_a_B;
Y_ack_confirm.y = _out_arb_Y.a;
Y_ack_confirm.vdd = supply.vdd;
Y_ack_confirm.vss = supply.vss;
Y_ack_confirm.reset_B = _reset_BXX[0];
// This block checks that the input is valid and that the arbiter made a choice
// Then activates the ack of the arbiter
A_2C_RB X_ack_confirm();
X_ack_confirm.c1 = _out_arb_X.r;
X_ack_confirm.c2 = _x_a_B;
X_ack_confirm.vdd = supply.vdd;
X_ack_confirm.vss = supply.vss;
X_ack_confirm.reset_B = _reset_BXX[1];
//X_REQ validation
bool _x_req_array[N],_x_v,_x_v_B;
(i:N:_x_req_array[i] = x[i].r;)
ortree x_req_ortree(.in = _x_req_array,.out = _x_v,.supply = supply);
INV_X1 not_x_req_ortree(.in = _x_v,.out = _x_v_B);
//
A_2P3P1C2N_RB_X4 x_ack();
//branch1
x_ack.p1 = _in_x_v;
x_ack.p2 = _x_v_B;
//branch2
x_ack.p3 = _in_x_v;
x_ack.p4 = _in_y_v;
x_ack.p5 = _x_v;
//
x_ack.c1 = _en
x_ack.n1 = addr.v
x_ack.n2 = _in_x_v;
//
x_ack.y = _x_a;
//
x_ack.vdd = supply.vdd;
x_ack.vss = supply.vss;
x_ack.reset_B = _reset_BXX[2];
INV_X1 not_x_ack(.in = _x_a,.out = _x_a_B);
A_1C2P enabling(.p1 = addr.a, .p2 = addr.v, .c1 = _x_a, .y = _en, .vdd = supply.vdd, .vss = supply.vss)
avMx1of2<N> _in_x;
dualrail<N> _in;
_in_x.d = _in.d;
_in_x.v = _in_x_v;
//buffer_func_s
A_2C2N_RB buffer_func_s_f[address_size];
A_2C2N_RB buffer_func_s_t[address_size];
sigbuf<address_size> en_buf_t(.in=_en, .out=_en_X_t, .supply=supply);
sigbuf<address_size> en_buf_f(.in=_en, .out=_en_X_f, .supply=supply);
INV_X1 out_a_inv(.a=addr.a,.y=_out_a_B);
sigbuf<address_size> out_a_B_buf_f(.in=_out_a_B,.out=_out_a_BX_t, .supply=supply);
sigbuf<address_size> out_a_B_buf_t(.in=_out_a_B,.out=_out_a_BX_f, .supply=supply);
(i:address_size:
buffer_func_s_f[i].c1 = _en_X_f[i];
buffer_func_s_f[i].c2 = _out_a_BX_f[i];
buffer_func_s_f[i].n1 = _in_x.d.d[i].f;
buffer_func_s_f[i].n1 = _in_x.v;
buffer_func_s_f[i].vdd=supply.vdd;
buffer_func_s_f[i].vss=supply.vss;
buffer_func_s_f[i].pr_B = _reset_BXX[i+3];
buffer_func_s_f[i].sr_B = _reset_BXX[i+3];
buffer_func_s_f[i].y = addr.d.d[i].f;
buffer_func_s_t[i].c1 = _en_X_r[i];
buffer_func_s_t[i].c2 = _out_a_BX_t[i];
buffer_func_s_t[i].n1 = _in_x.d.d[i].r;
buffer_func_s_t[i].n1 = _in_x.v;
buffer_func_s_t[i].vdd=supply.vdd;
buffer_func_s_t[i].vss=supply.vss;
buffer_func_s_t[i].pr_B = _reset_BXX[i+3+address_size];
buffer_func_s_t[i].sr_B = _reset_BXX[i+3+address_size];
buffer_func_s_t[i].y = addr.d.d[i].t;
)
bool _addr_v
vtree addr_validity(.in = addr,.out = _addr_v);
sigbuf<4> addr_validity_x(.in = _addr_v,.out = addr.v);
addr_validity.supply = supply;
addr_validity_x.supply = supply;
}
}
}

View File

@ -507,6 +507,8 @@ namespace tmpl {
BUF_X1 reset_buf(.a=reset_B, .y=_reset_BX,.vdd=supply.vdd,.vss=supply.vss); BUF_X1 reset_buf(.a=reset_B, .y=_reset_BX,.vdd=supply.vdd,.vss=supply.vss);
} }
export template<pint N> export template<pint N>
defproc merge (avMx1of2<N> in1; avMx1of2<N> in2; avMx1of2<N> out ; bool? reset_B; power supply) { defproc merge (avMx1of2<N> in1; avMx1of2<N> in2; avMx1of2<N> out ; bool? reset_B; power supply) {
@ -614,18 +616,18 @@ namespace tmpl {
// reset buffers // reset buffers
bool _reset_BX; bool _reset_BX;
BUF_X1 reset_buf(.a=reset_B, .y=_reset_BX,.vdd=supply.vdd,.vss=supply.vss); BUF_X1 reset_buf(.a=reset_B, .y=_reset_BX,.vdd=supply.vdd,.vss=supply.vss);
sigbuf<N> reset_bufarray(.in=_reset_BX, .out=_reset_BXX; power supply); sigbuf<N> reset_bufarray(.in=_reset_BX, .out=_reset_BXX, .supply = supply);
} }
// Programmable delay line. // Programmable delay line.
// N is the number of layers, // N is the number of layers,
// the longest layer having 2**N DLY elements // the longest layer having 2**N DLY elements
export template<pint N> export template<pint N>
defproc delayprog (bool! y; bool? a, s[N]; power supply) defproc delayprog (bool! out; bool? in, s[N]; power supply)
{ {
{ N >= 0 : "What?" }; { N >= 0 : "What?" };
{ N < 9 : "Delay prog size is given in 2**N. Given N is too big." }; { N < 10 : "Delay prog size is given in 2**N. Given N is ridiculous." };
AND2_X1 and2[N]; AND2_X1 and2[N];
@ -634,7 +636,7 @@ namespace tmpl {
bool _a[N+1]; // Holds the input to each row bool _a[N+1]; // Holds the input to each row
_a[0] = a; _a[0] = in;
pint i_delay; pint i_delay;
i_delay = 0; // Index of the last connected delay element i_delay = 0; // Index of the last connected delay element
@ -647,7 +649,7 @@ namespace tmpl {
// Delays // Delays
dly[i_delay].a = and2[i].y; dly[i_delay].a = and2[i].y;
i_delay = i_delay + 1; i_delay = i_delay + 1;
(j:1..i-1: (j:1..(1<<i)-1:
dly[i_delay].a = dly[i_delay-1].y; dly[i_delay].a = dly[i_delay-1].y;
i_delay = i_delay +1; i_delay = i_delay +1;
) )
@ -659,7 +661,7 @@ namespace tmpl {
_a[i+1] = mu2[i].y; _a[i+1] = mu2[i].y;
) )
y = mu2[N-1].y; out = mu2[N-1].y;
// Connect everything to vdd/gnd // Connect everything to vdd/gnd

View File

@ -26,6 +26,7 @@
**************************************************************************/ **************************************************************************/
import "../../dataflow_neuro/cell_lib_async.act"; import "../../dataflow_neuro/cell_lib_async.act";
import "../../dataflow_neuro/cell_lib_std.act"; import "../../dataflow_neuro/cell_lib_std.act";
import std::channel; import std::channel;
open std::channel; open std::channel;
namespace tmpl { namespace tmpl {
@ -47,6 +48,9 @@ defproc ortree (bool? in[N]; bool! out; power supply)
{ N > 0 : "What?" }; { N > 0 : "What?" };
[N = 1 -> BUF_X1 b(.vss=supply.vss, .vdd = supply.vdd, .a = in[0], .y = out);
[] N > 1 ->
pint i, end, j; pint i, end, j;
i = 0; i = 0;
end = N-1; end = N-1;
@ -83,18 +87,18 @@ defproc ortree (bool? in[N]; bool! out; power supply)
/* array to hold the actual C-elments, either A2C or A3C */ /* array to hold the actual C-elments, either A2C or A3C */
[lenTree2Count > 0 -> [lenTree2Count > 0 ->
OR2_X1 C2Els[lenTree2Count]; OR2_X1 or2s[lenTree2Count];
] ]
[lenTree3Count > 0 -> [lenTree3Count > 0 ->
OR3_X1 C3Els[lenTree3Count]; OR3_X1 or3s[lenTree3Count];
] ]
(h:lenTree2Count:C2Els[h].vdd = supply.vdd;) (h:lenTree2Count:or2s[h].vdd = supply.vdd;)
(h:lenTree3Count:C3Els[h].vdd = supply.vdd;) (h:lenTree3Count:or3s[h].vdd = supply.vdd;)
(h:lenTree2Count:C2Els[h].vss = supply.vss;) (h:lenTree2Count:or2s[h].vss = supply.vss;)
(h:lenTree3Count:C3Els[h].vss = supply.vss;) (h:lenTree3Count:or3s[h].vss = supply.vss;)
/* Reset the variables we just stole lol */ /* Reset the variables we just stole lol */
i = 0; i = 0;
@ -117,25 +121,25 @@ defproc ortree (bool? in[N]; bool! out; power supply)
j = j + 1; j = j + 1;
[ i+1 >= end -> [ i+1 >= end ->
/*-- last piece: use either a 2 input C-element --*/ /*-- last piece: use either a 2 input C-element --*/
C2Els[tree2Index].a = tmp[i]; or2s[tree2Index].a = tmp[i];
C2Els[tree2Index].b = tmp[i+1]; or2s[tree2Index].b = tmp[i+1];
C2Els[tree2Index].y = tmp[end+j]; or2s[tree2Index].y = tmp[end+j];
tree2Index = tree2Index +1; tree2Index = tree2Index +1;
i = end; i = end;
[] i+2 >= end -> [] i+2 >= end ->
/*-- last piece: use either a 3 input C-element --*/ /*-- last piece: use either a 3 input C-element --*/
C3Els[tree3Index].a = tmp[i]; or3s[tree3Index].a = tmp[i];
C3Els[tree3Index].b = tmp[i+1]; or3s[tree3Index].b = tmp[i+1];
C3Els[tree3Index].c = tmp[i+2]; or3s[tree3Index].c = tmp[i+2];
C3Els[tree3Index].y = tmp[end+j]; or3s[tree3Index].y = tmp[end+j];
tree3Index = tree3Index +1; tree3Index = tree3Index +1;
i = end; i = end;
[] else -> [] else ->
/*-- more to come; so use a two input C-element --*/ /*-- more to come; so use a two input C-element --*/
C2Els[tree2Index].a = tmp[i]; or2s[tree2Index].a = tmp[i];
C2Els[tree2Index].b = tmp[i+1]; or2s[tree2Index].b = tmp[i+1];
C2Els[tree2Index].y = tmp[end+j]; or2s[tree2Index].y = tmp[end+j];
tree2Index = tree2Index +1; tree2Index = tree2Index +1;
i = i + 2; i = i + 2;
] ]
@ -147,6 +151,8 @@ defproc ortree (bool? in[N]; bool! out; power supply)
] ]
out = tmp[end]; out = tmp[end];
]
} }
export template<pint N> export template<pint N>
@ -156,6 +162,11 @@ defproc andtree (bool? in[N]; bool! out; power supply)
{ N > 0 : "What?" }; { N > 0 : "What?" };
[N = 1 -> BUF_X1 b(.vss=supply.vss, .vdd = supply.vdd, .a = in[0], .y = out);
[] N > 1 ->
pint i, end, j; pint i, end, j;
i = 0; i = 0;
end = N-1; end = N-1;
@ -192,18 +203,18 @@ defproc andtree (bool? in[N]; bool! out; power supply)
/* array to hold the actual C-elments, either A2C or A3C */ /* array to hold the actual C-elments, either A2C or A3C */
[lenTree2Count > 0 -> [lenTree2Count > 0 ->
AND2_X1 C2Els[lenTree2Count]; AND2_X1 and2s[lenTree2Count];
] ]
[lenTree3Count > 0 -> [lenTree3Count > 0 ->
AND3_X1 C3Els[lenTree3Count]; AND3_X1 and3s[lenTree3Count];
] ]
(h:lenTree2Count:C2Els[h].vdd = supply.vdd;) (h:lenTree2Count:and2s[h].vdd = supply.vdd;)
(h:lenTree3Count:C3Els[h].vdd = supply.vdd;) (h:lenTree3Count:and3s[h].vdd = supply.vdd;)
(h:lenTree2Count:C2Els[h].vss = supply.vss;) (h:lenTree2Count:and2s[h].vss = supply.vss;)
(h:lenTree3Count:C3Els[h].vss = supply.vss;) (h:lenTree3Count:and3s[h].vss = supply.vss;)
/* Reset the variables we just stole lol */ /* Reset the variables we just stole lol */
i = 0; i = 0;
@ -226,25 +237,25 @@ defproc andtree (bool? in[N]; bool! out; power supply)
j = j + 1; j = j + 1;
[ i+1 >= end -> [ i+1 >= end ->
/*-- last piece: use either a 2 input C-element --*/ /*-- last piece: use either a 2 input C-element --*/
C2Els[tree2Index].a = tmp[i]; and2s[tree2Index].a = tmp[i];
C2Els[tree2Index].b = tmp[i+1]; and2s[tree2Index].b = tmp[i+1];
C2Els[tree2Index].y = tmp[end+j]; and2s[tree2Index].y = tmp[end+j];
tree2Index = tree2Index +1; tree2Index = tree2Index +1;
i = end; i = end;
[] i+2 >= end -> [] i+2 >= end ->
/*-- last piece: use either a 3 input C-element --*/ /*-- last piece: use either a 3 input C-element --*/
C3Els[tree3Index].a = tmp[i]; and3s[tree3Index].a = tmp[i];
C3Els[tree3Index].b = tmp[i+1]; and3s[tree3Index].b = tmp[i+1];
C3Els[tree3Index].c = tmp[i+2]; and3s[tree3Index].c = tmp[i+2];
C3Els[tree3Index].y = tmp[end+j]; and3s[tree3Index].y = tmp[end+j];
tree3Index = tree3Index +1; tree3Index = tree3Index +1;
i = end; i = end;
[] else -> [] else ->
/*-- more to come; so use a two input C-element --*/ /*-- more to come; so use a two input C-element --*/
C2Els[tree2Index].a = tmp[i]; and2s[tree2Index].a = tmp[i];
C2Els[tree2Index].b = tmp[i+1]; and2s[tree2Index].b = tmp[i+1];
C2Els[tree2Index].y = tmp[end+j]; and2s[tree2Index].y = tmp[end+j];
tree2Index = tree2Index +1; tree2Index = tree2Index +1;
i = i + 2; i = i + 2;
] ]
@ -256,6 +267,8 @@ defproc andtree (bool? in[N]; bool! out; power supply)
] ]
out = tmp[end]; out = tmp[end];
]
} }
/* /*
@ -269,6 +282,10 @@ defproc ctree (bool? in[N]; bool! out; power supply)
{ N > 0 : "What?" }; { N > 0 : "What?" };
bool meaningless_var;
[N = 1 -> BUF_X1 b(.vss=supply.vss, .vdd = supply.vdd, .a = in[0], .y = out);
[] N > 1 ->
pint i, end, j; pint i, end, j;
i = 0; i = 0;
end = N-1; end = N-1;
@ -372,6 +389,11 @@ defproc ctree (bool? in[N]; bool! out; power supply)
] ]
out = tmp[end]; out = tmp[end];
]
} }
@ -380,16 +402,16 @@ defproc vtree (std::data::Mx1of2?<N> in; bool! out; power supply)
{ {
// OR layer for making OR between true and false of in (they are then sent to Ctree) // OR layer for making OR between true and false of in (they are then sent to Ctree)
OR2_X1 OR2_tf[N]; OR2_X1 OR2_tf[N];
ctree<N> myctree; ctree<N> ct;
(l:N: (l:N:
OR2_tf[l].a = in.d[l].t; OR2_tf[l].a = in.d[l].t;
OR2_tf[l].b = in.d[l].f; OR2_tf[l].b = in.d[l].f;
OR2_tf[l].y = myctree.in[l]; OR2_tf[l].y = ct.in[l];
OR2_tf[l].vdd = supply.vdd; OR2_tf[l].vdd = supply.vdd;
OR2_tf[l].vss = supply.vss; OR2_tf[l].vss = supply.vss;
) )
myctree.supply = supply; ct.supply = supply;
out = myctree.out; out = ct.out;
} }
export template<pint N> export template<pint N>
defproc sigbuf (bool? in; bool! out[N]; power supply) defproc sigbuf (bool? in; bool! out[N]; power supply)
@ -416,5 +438,8 @@ defproc sigbuf (bool? in; bool! out[N]; power supply)
] ]
(i:1..N-1:out[i]=out[0];) (i:1..N-1:out[i]=out[0];)
} }
}} }}

View File

@ -0,0 +1,232 @@
my_tree.in[1].r my_tree.at_cell.tmp[8].a my_tree.in[3].r my_tree.at_cell.tmp[5].a my_tree.at_cell.arbs[3].ack_cell1._y my_tree.fifo_to_tree[2].fifo_element[1]._out_a_B my_tree._in[1].a my_tree.fifo_to_tree[3].fifo_element[1]._out_a_B my_tree._in[3].a my_tree.fifo_to_tree[0].fifo_element[1]._out_a_B my_tree._in[2].a my_tree.at_cell.arbs[2].ack_cell2._y my_tree.at_cell.arbs[1].ack_cell2._y my_tree._in[4].a my_tree.out.a my_tree._in[0].a my_tree.at_cell.arbs[1].ack_cell1._y my_tree.at_cell.tmp[6].a my_tree.in[2].r my_tree.in[4].r my_tree.at_cell.arbs[2].ack_cell1._y my_tree.in[0].r my_tree.fifo_to_tree[1].fifo_element[1]._out_a_B my_tree.fifo_to_tree[4].fifo_element[1]._out_a_B my_tree.at_cell.arbs[0].ack_cell1._y my_tree.at_cell.arbs[3].ack_cell2._y my_tree.at_cell.arbs[0].ack_cell2._y
217204 my_tree.in[0].r : 0
217204 my_tree.out.a : 0
217204 my_tree.in[4].r : 0
217204 my_tree.in[2].r : 0
217204 my_tree.in[1].r : 0
217204 my_tree.in[3].r : 0
217205 my_tree.at_cell.arbs[3].ack_cell2._y : 1 [by my_tree.out.a:=0]
217216 my_tree._in[4].a : 0 [by my_tree.at_cell.arbs[3].ack_cell2._y:=1]
217586 my_tree.fifo_to_tree[4].fifo_element[1]._out_a_B : 1 [by my_tree._in[4].a:=0]
217752 my_tree.at_cell.arbs[3].ack_cell1._y : 1 [by my_tree.out.a:=0]
217819 my_tree.at_cell.tmp[8].a : 0 [by my_tree.at_cell.arbs[3].ack_cell1._y:=1]
217835 my_tree.at_cell.arbs[2].ack_cell1._y : 1 [by my_tree.at_cell.tmp[8].a:=0]
220460 my_tree.at_cell.arbs[2].ack_cell2._y : 1 [by my_tree.at_cell.tmp[8].a:=0]
220988 my_tree.at_cell.tmp[6].a : 0 [by my_tree.at_cell.arbs[2].ack_cell2._y:=1]
222397 my_tree.at_cell.tmp[5].a : 0 [by my_tree.at_cell.arbs[2].ack_cell1._y:=1]
223423 my_tree.at_cell.arbs[1].ack_cell2._y : 1 [by my_tree.at_cell.tmp[6].a:=0]
223425 my_tree._in[3].a : 0 [by my_tree.at_cell.arbs[1].ack_cell2._y:=1]
235438 my_tree.at_cell.arbs[0].ack_cell1._y : 1 [by my_tree.at_cell.tmp[5].a:=0]
235441 my_tree._in[0].a : 0 [by my_tree.at_cell.arbs[0].ack_cell1._y:=1]
235470 my_tree.fifo_to_tree[0].fifo_element[1]._out_a_B : 1 [by my_tree._in[0].a:=0]
246322 my_tree.at_cell.arbs[0].ack_cell2._y : 1 [by my_tree.at_cell.tmp[5].a:=0]
246639 my_tree._in[1].a : 0 [by my_tree.at_cell.arbs[0].ack_cell2._y:=1]
247868 my_tree.at_cell.arbs[1].ack_cell1._y : 1 [by my_tree.at_cell.tmp[6].a:=0]
248021 my_tree._in[2].a : 0 [by my_tree.at_cell.arbs[1].ack_cell1._y:=1]
248065 my_tree.fifo_to_tree[2].fifo_element[1]._out_a_B : 1 [by my_tree._in[2].a:=0]
248240 my_tree.fifo_to_tree[1].fifo_element[1]._out_a_B : 1 [by my_tree._in[1].a:=0]
284383 my_tree.fifo_to_tree[3].fifo_element[1]._out_a_B : 1 [by my_tree._in[3].a:=0]
-------------------------------------------------
[0] System initialized
284383 Reset : 0
287144 my_tree._reset_B : 1 [by Reset:=0]
287145 my_tree.fifo_to_tree[3].reset_buf._y : 0 [by my_tree._reset_B:=1]
287145 my_tree.fifo_to_tree[0].reset_buf._y : 0 [by my_tree._reset_B:=1]
287166 my_tree.fifo_to_tree[1].reset_buf._y : 0 [by my_tree._reset_B:=1]
287325 my_tree.fifo_to_tree[1]._reset_BX : 1 [by my_tree.fifo_to_tree[1].reset_buf._y:=0]
287361 my_tree.fifo_to_tree[2].reset_buf._y : 0 [by my_tree._reset_B:=1]
288648 my_tree.fifo_to_tree[2]._reset_BX : 1 [by my_tree.fifo_to_tree[2].reset_buf._y:=0]
288726 my_tree.fifo_to_tree[3]._reset_BX : 1 [by my_tree.fifo_to_tree[3].reset_buf._y:=0]
288871 my_tree.fifo_to_tree[3].reset_bufarray.buf1._y : 0 [by my_tree.fifo_to_tree[3]._reset_BX:=1]
290880 my_tree.fifo_to_tree[2].reset_bufarray.buf1._y : 0 [by my_tree.fifo_to_tree[2]._reset_BX:=1]
291703 my_tree.fifo_to_tree[3]._reset_BXX[0] : 1 [by my_tree.fifo_to_tree[3].reset_bufarray.buf1._y:=0]
291704 my_tree.fifo_to_tree[3].fifo_element[0].reset_buf._y : 0 [by my_tree.fifo_to_tree[3]._reset_BXX[0]:=1]
291866 my_tree.fifo_to_tree[3].fifo_element[0]._reset_BX : 1 [by my_tree.fifo_to_tree[3].fifo_element[0].reset_buf._y:=0]
296490 my_tree.fifo_to_tree[0]._reset_BX : 1 [by my_tree.fifo_to_tree[0].reset_buf._y:=0]
297234 my_tree.fifo_to_tree[2]._reset_BXX[0] : 1 [by my_tree.fifo_to_tree[2].reset_bufarray.buf1._y:=0]
297241 my_tree.fifo_to_tree[2].fifo_element[1].reset_buf._y : 0 [by my_tree.fifo_to_tree[2]._reset_BXX[0]:=1]
297248 my_tree.fifo_to_tree[2].fifo_element[0].reset_buf._y : 0 [by my_tree.fifo_to_tree[2]._reset_BXX[0]:=1]
297401 my_tree.fifo_to_tree[2].fifo_element[1]._reset_BX : 1 [by my_tree.fifo_to_tree[2].fifo_element[1].reset_buf._y:=0]
300827 my_tree.fifo_to_tree[4].reset_buf._y : 0 [by my_tree._reset_B:=1]
300828 my_tree.fifo_to_tree[4]._reset_BX : 1 [by my_tree.fifo_to_tree[4].reset_buf._y:=0]
300829 my_tree.fifo_to_tree[4].reset_bufarray.buf1._y : 0 [by my_tree.fifo_to_tree[4]._reset_BX:=1]
300830 my_tree.fifo_to_tree[4]._reset_BXX[0] : 1 [by my_tree.fifo_to_tree[4].reset_bufarray.buf1._y:=0]
301017 my_tree.fifo_to_tree[4].fifo_element[1].reset_buf._y : 0 [by my_tree.fifo_to_tree[4]._reset_BXX[0]:=1]
301018 my_tree.fifo_to_tree[4].fifo_element[1]._reset_BX : 1 [by my_tree.fifo_to_tree[4].fifo_element[1].reset_buf._y:=0]
303073 my_tree.fifo_to_tree[4].fifo_element[0].reset_buf._y : 0 [by my_tree.fifo_to_tree[4]._reset_BXX[0]:=1]
303859 my_tree.fifo_to_tree[0].reset_bufarray.buf1._y : 0 [by my_tree.fifo_to_tree[0]._reset_BX:=1]
307001 my_tree.fifo_to_tree[1].reset_bufarray.buf1._y : 0 [by my_tree.fifo_to_tree[1]._reset_BX:=1]
307002 my_tree.fifo_to_tree[1]._reset_BXX[0] : 1 [by my_tree.fifo_to_tree[1].reset_bufarray.buf1._y:=0]
307007 my_tree.fifo_to_tree[1].fifo_element[1].reset_buf._y : 0 [by my_tree.fifo_to_tree[1]._reset_BXX[0]:=1]
307255 my_tree.fifo_to_tree[4].fifo_element[0]._reset_BX : 1 [by my_tree.fifo_to_tree[4].fifo_element[0].reset_buf._y:=0]
307855 my_tree.fifo_to_tree[1].fifo_element[0].reset_buf._y : 0 [by my_tree.fifo_to_tree[1]._reset_BXX[0]:=1]
307856 my_tree.fifo_to_tree[1].fifo_element[0]._reset_BX : 1 [by my_tree.fifo_to_tree[1].fifo_element[0].reset_buf._y:=0]
307898 my_tree.fifo_to_tree[1].fifo_element[1]._reset_BX : 1 [by my_tree.fifo_to_tree[1].fifo_element[1].reset_buf._y:=0]
318805 my_tree.fifo_to_tree[2].fifo_element[0]._reset_BX : 1 [by my_tree.fifo_to_tree[2].fifo_element[0].reset_buf._y:=0]
330987 my_tree.fifo_to_tree[3].fifo_element[1].reset_buf._y : 0 [by my_tree.fifo_to_tree[3]._reset_BXX[0]:=1]
331004 my_tree.fifo_to_tree[3].fifo_element[1]._reset_BX : 1 [by my_tree.fifo_to_tree[3].fifo_element[1].reset_buf._y:=0]
338641 my_tree.fifo_to_tree[0]._reset_BXX[0] : 1 [by my_tree.fifo_to_tree[0].reset_bufarray.buf1._y:=0]
341214 my_tree.fifo_to_tree[0].fifo_element[0].reset_buf._y : 0 [by my_tree.fifo_to_tree[0]._reset_BXX[0]:=1]
341217 my_tree.fifo_to_tree[0].fifo_element[0]._reset_BX : 1 [by my_tree.fifo_to_tree[0].fifo_element[0].reset_buf._y:=0]
347002 my_tree.fifo_to_tree[0].fifo_element[1].reset_buf._y : 0 [by my_tree.fifo_to_tree[0]._reset_BXX[0]:=1]
347943 my_tree.fifo_to_tree[0].fifo_element[1]._reset_BX : 1 [by my_tree.fifo_to_tree[0].fifo_element[1].reset_buf._y:=0]
-------------------------------------------------
[1] System reset completed
347943 my_tree.in[0].r : 1
347943 my_tree.in[4].r : 1
347943 my_tree.in[2].r : 1
347944 my_tree.fifo_to_tree[4].fifo_element[0].buf_func._y : 0 [by my_tree.in[4].r:=1]
347985 my_tree.fifo_to_tree[2].fifo_element[0].buf_func._y : 0 [by my_tree.in[2].r:=1]
350761 my_tree.fifo_to_tree[4].fifo_element[1].in.r : 1 [by my_tree.fifo_to_tree[4].fifo_element[0].buf_func._y:=0]
350856 my_tree.fifo_to_tree[4].fifo_element[1].buf_func._y : 0 [by my_tree.fifo_to_tree[4].fifo_element[1].in.r:=1]
350864 my_tree._in[4].r : 1 [by my_tree.fifo_to_tree[4].fifo_element[1].buf_func._y:=0]
350898 my_tree.at_cell.arbs[3].arbiter._y2 : 0 [by my_tree._in[4].r:=1]
351096 my_tree.fifo_to_tree[4].fifo_element[0].inack_ctl._y : 0 [by my_tree.fifo_to_tree[4].fifo_element[1].in.r:=1]
351100 my_tree.in[4].a : 1 [by my_tree.fifo_to_tree[4].fifo_element[0].inack_ctl._y:=0]
351816 my_tree.at_cell.arbs[3]._y2_arb : 1 [by my_tree.at_cell.arbs[3].arbiter._y2:=0]
354214 my_tree.at_cell.arbs[3].or_cell._y : 0 [by my_tree.at_cell.arbs[3]._y2_arb:=1]
357429 my_tree.out.r : 1 [by my_tree.at_cell.arbs[3].or_cell._y:=0]
361718 my_tree.fifo_to_tree[2].fifo_element[1].in.r : 1 [by my_tree.fifo_to_tree[2].fifo_element[0].buf_func._y:=0]
361766 my_tree.fifo_to_tree[2].fifo_element[0].inack_ctl._y : 0 [by my_tree.fifo_to_tree[2].fifo_element[1].in.r:=1]
361769 my_tree.in[2].a : 1 [by my_tree.fifo_to_tree[2].fifo_element[0].inack_ctl._y:=0]
361947 my_tree.fifo_to_tree[2].fifo_element[0]._en : 0 [by my_tree.in[2].a:=1]
364751 my_tree.fifo_to_tree[4].fifo_element[1].inack_ctl._y : 0 [by my_tree._in[4].r:=1]
385728 my_tree.fifo_to_tree[4].fifo_element[1].in.a : 1 [by my_tree.fifo_to_tree[4].fifo_element[1].inack_ctl._y:=0]
391679 my_tree.fifo_to_tree[4].fifo_element[0]._out_a_B : 0 [by my_tree.fifo_to_tree[4].fifo_element[1].in.a:=1]
397478 my_tree.fifo_to_tree[4].fifo_element[0]._en : 0 [by my_tree.in[4].a:=1]
397627 my_tree.fifo_to_tree[4].fifo_element[1]._en : 0 [by my_tree.fifo_to_tree[4].fifo_element[1].in.a:=1]
406905 my_tree.fifo_to_tree[0].fifo_element[0].buf_func._y : 0 [by my_tree.in[0].r:=1]
407732 my_tree.fifo_to_tree[0].fifo_element[1].in.r : 1 [by my_tree.fifo_to_tree[0].fifo_element[0].buf_func._y:=0]
407905 my_tree.fifo_to_tree[0].fifo_element[1].buf_func._y : 0 [by my_tree.fifo_to_tree[0].fifo_element[1].in.r:=1]
407906 my_tree._in[0].r : 1 [by my_tree.fifo_to_tree[0].fifo_element[1].buf_func._y:=0]
407910 my_tree.fifo_to_tree[0].fifo_element[1].inack_ctl._y : 0 [by my_tree._in[0].r:=1]
407916 my_tree.fifo_to_tree[0].fifo_element[0].inack_ctl._y : 0 [by my_tree.fifo_to_tree[0].fifo_element[1].in.r:=1]
407979 my_tree.at_cell.arbs[0].arbiter._y1 : 0 [by my_tree._in[0].r:=1]
408012 my_tree.in[0].a : 1 [by my_tree.fifo_to_tree[0].fifo_element[0].inack_ctl._y:=0]
408013 my_tree.fifo_to_tree[0].fifo_element[0]._en : 0 [by my_tree.in[0].a:=1]
408115 my_tree.at_cell.arbs[0]._y1_arb : 1 [by my_tree.at_cell.arbs[0].arbiter._y1:=0]
408837 my_tree.fifo_to_tree[2].fifo_element[1].buf_func._y : 0 [by my_tree.fifo_to_tree[2].fifo_element[1].in.r:=1]
409078 my_tree._in[2].r : 1 [by my_tree.fifo_to_tree[2].fifo_element[1].buf_func._y:=0]
409090 my_tree.fifo_to_tree[2].fifo_element[1].inack_ctl._y : 0 [by my_tree._in[2].r:=1]
412990 my_tree.fifo_to_tree[2].fifo_element[1].in.a : 1 [by my_tree.fifo_to_tree[2].fifo_element[1].inack_ctl._y:=0]
412991 my_tree.fifo_to_tree[2].fifo_element[0]._out_a_B : 0 [by my_tree.fifo_to_tree[2].fifo_element[1].in.a:=1]
413037 my_tree.at_cell.arbs[1].arbiter._y1 : 0 [by my_tree._in[2].r:=1]
413047 my_tree.fifo_to_tree[2].fifo_element[0].buf_func._y : 1 [by my_tree.fifo_to_tree[2].fifo_element[0]._out_a_B:=0]
413048 my_tree.fifo_to_tree[2].fifo_element[1].in.r : 0 [by my_tree.fifo_to_tree[2].fifo_element[0].buf_func._y:=1]
414019 my_tree.fifo_to_tree[2].fifo_element[1]._en : 0 [by my_tree.fifo_to_tree[2].fifo_element[1].in.a:=1]
414056 my_tree.fifo_to_tree[2].fifo_element[1].inack_ctl._y : 1 [by my_tree.fifo_to_tree[2].fifo_element[1]._en:=0]
427161 my_tree.at_cell.arbs[0].or_cell._y : 0 [by my_tree.at_cell.arbs[0]._y1_arb:=1]
427162 my_tree.at_cell.tmp[5].r : 1 [by my_tree.at_cell.arbs[0].or_cell._y:=0]
430726 my_tree.at_cell.arbs[2].arbiter._y1 : 0 [by my_tree.at_cell.tmp[5].r:=1]
432418 my_tree.at_cell.arbs[2]._y1_arb : 1 [by my_tree.at_cell.arbs[2].arbiter._y1:=0]
432431 my_tree.at_cell.arbs[2].or_cell._y : 0 [by my_tree.at_cell.arbs[2]._y1_arb:=1]
436963 my_tree.fifo_to_tree[4].fifo_element[0].buf_func._y : 1 [by my_tree.fifo_to_tree[4].fifo_element[0]._en:=0]
437320 my_tree.fifo_to_tree[4].fifo_element[1].in.r : 0 [by my_tree.fifo_to_tree[4].fifo_element[0].buf_func._y:=1]
437345 my_tree.fifo_to_tree[4].fifo_element[1].inack_ctl._y : 1 [by my_tree.fifo_to_tree[4].fifo_element[1].in.r:=0]
437366 my_tree.fifo_to_tree[4].fifo_element[1].in.a : 0 [by my_tree.fifo_to_tree[4].fifo_element[1].inack_ctl._y:=1]
437367 my_tree.fifo_to_tree[4].fifo_element[0]._out_a_B : 1 [by my_tree.fifo_to_tree[4].fifo_element[1].in.a:=0]
437431 my_tree.fifo_to_tree[2].fifo_element[1].in.a : 0 [by my_tree.fifo_to_tree[2].fifo_element[1].inack_ctl._y:=1]
445198 my_tree.fifo_to_tree[0].fifo_element[1].in.a : 1 [by my_tree.fifo_to_tree[0].fifo_element[1].inack_ctl._y:=0]
445199 my_tree.fifo_to_tree[0].fifo_element[1]._en : 0 [by my_tree.fifo_to_tree[0].fifo_element[1].in.a:=1]
445199 my_tree.fifo_to_tree[0].fifo_element[0]._out_a_B : 0 [by my_tree.fifo_to_tree[0].fifo_element[1].in.a:=1]
445360 my_tree.fifo_to_tree[0].fifo_element[0].buf_func._y : 1 [by my_tree.fifo_to_tree[0].fifo_element[0]._out_a_B:=0]
446397 my_tree.fifo_to_tree[0].fifo_element[1].in.r : 0 [by my_tree.fifo_to_tree[0].fifo_element[0].buf_func._y:=1]
446402 my_tree.fifo_to_tree[0].fifo_element[1].inack_ctl._y : 1 [by my_tree.fifo_to_tree[0].fifo_element[1].in.r:=0]
446983 my_tree.fifo_to_tree[0].fifo_element[1].in.a : 0 [by my_tree.fifo_to_tree[0].fifo_element[1].inack_ctl._y:=1]
447079 my_tree.fifo_to_tree[2].fifo_element[0]._out_a_B : 1 [by my_tree.fifo_to_tree[2].fifo_element[1].in.a:=0]
447391 my_tree.fifo_to_tree[0].fifo_element[0]._out_a_B : 1 [by my_tree.fifo_to_tree[0].fifo_element[1].in.a:=0]
449415 my_tree.at_cell.tmp[8].r : 1 [by my_tree.at_cell.arbs[2].or_cell._y:=0]
458043 my_tree.at_cell.arbs[1]._y1_arb : 1 [by my_tree.at_cell.arbs[1].arbiter._y1:=0]
458054 my_tree.at_cell.arbs[1].or_cell._y : 0 [by my_tree.at_cell.arbs[1]._y1_arb:=1]
459101 my_tree.at_cell.tmp[6].r : 1 [by my_tree.at_cell.arbs[1].or_cell._y:=0]
459101 my_tree.out.a : 1
459115 my_tree.at_cell.arbs[3].ack_cell2._y : 0 [by my_tree.out.a:=1]
459133 my_tree._in[4].a : 1 [by my_tree.at_cell.arbs[3].ack_cell2._y:=0]
459137 my_tree.fifo_to_tree[4].fifo_element[1]._out_a_B : 0 [by my_tree._in[4].a:=1]
459241 my_tree.fifo_to_tree[4].fifo_element[1].buf_func._y : 1 [by my_tree.fifo_to_tree[4].fifo_element[1]._out_a_B:=0]
490685 my_tree._in[4].r : 0 [by my_tree.fifo_to_tree[4].fifo_element[1].buf_func._y:=1]
491889 my_tree.at_cell.arbs[3].arbiter._y2 : 1 [by my_tree._in[4].r:=0]
492117 my_tree.at_cell.arbs[3].arbiter._y1 : 0 [by my_tree.at_cell.arbs[3].arbiter._y2:=1]
492732 my_tree.at_cell.arbs[3]._y2_arb : 0 [by my_tree.at_cell.arbs[3].arbiter._y2:=1]
494191 my_tree.at_cell.arbs[3].or_cell._y : 1 [by my_tree.at_cell.arbs[3]._y2_arb:=0]
494261 my_tree.out.r : 0 [by my_tree.at_cell.arbs[3].or_cell._y:=1]
499140 my_tree.fifo_to_tree[4].fifo_element[1]._en : 1 [by my_tree._in[4].r:=0]
499140 my_tree.out.a : 0
549562 my_tree.at_cell.arbs[3].ack_cell2._y : 1 [by my_tree.out.a:=0]
549573 my_tree._in[4].a : 0 [by my_tree.at_cell.arbs[3].ack_cell2._y:=1]
549576 my_tree.at_cell.arbs[3]._y1_arb : 1 [by my_tree._in[4].a:=0]
549627 my_tree.fifo_to_tree[4].fifo_element[1]._out_a_B : 1 [by my_tree._in[4].a:=0]
550724 my_tree.at_cell.arbs[3].or_cell._y : 0 [by my_tree.at_cell.arbs[3]._y1_arb:=1]
551885 my_tree.out.r : 1 [by my_tree.at_cell.arbs[3].or_cell._y:=0]
551885 my_tree.out.a : 1
560537 my_tree.at_cell.arbs[3].ack_cell1._y : 0 [by my_tree.out.a:=1]
560618 my_tree.at_cell.tmp[8].a : 1 [by my_tree.at_cell.arbs[3].ack_cell1._y:=0]
571695 my_tree.at_cell.arbs[2].ack_cell1._y : 0 [by my_tree.at_cell.tmp[8].a:=1]
589678 my_tree.at_cell.tmp[5].a : 1 [by my_tree.at_cell.arbs[2].ack_cell1._y:=0]
589770 my_tree.at_cell.arbs[0].ack_cell1._y : 0 [by my_tree.at_cell.tmp[5].a:=1]
598081 my_tree._in[0].a : 1 [by my_tree.at_cell.arbs[0].ack_cell1._y:=0]
599825 my_tree.fifo_to_tree[0].fifo_element[1]._out_a_B : 0 [by my_tree._in[0].a:=1]
600438 my_tree.fifo_to_tree[0].fifo_element[1].buf_func._y : 1 [by my_tree.fifo_to_tree[0].fifo_element[1]._out_a_B:=0]
614460 my_tree._in[0].r : 0 [by my_tree.fifo_to_tree[0].fifo_element[1].buf_func._y:=1]
614505 my_tree.at_cell.arbs[0].arbiter._y1 : 1 [by my_tree._in[0].r:=0]
615457 my_tree.fifo_to_tree[0].fifo_element[1]._en : 1 [by my_tree._in[0].r:=0]
616154 my_tree.at_cell.arbs[0]._y1_arb : 0 [by my_tree.at_cell.arbs[0].arbiter._y1:=1]
616679 my_tree.at_cell.arbs[0].or_cell._y : 1 [by my_tree.at_cell.arbs[0]._y1_arb:=0]
617579 my_tree.at_cell.tmp[5].r : 0 [by my_tree.at_cell.arbs[0].or_cell._y:=1]
617631 my_tree.at_cell.arbs[2].arbiter._y1 : 1 [by my_tree.at_cell.tmp[5].r:=0]
617638 my_tree.at_cell.arbs[2].arbiter._y2 : 0 [by my_tree.at_cell.arbs[2].arbiter._y1:=1]
633243 my_tree.at_cell.arbs[2]._y1_arb : 0 [by my_tree.at_cell.arbs[2].arbiter._y1:=1]
639710 my_tree.at_cell.arbs[2].or_cell._y : 1 [by my_tree.at_cell.arbs[2]._y1_arb:=0]
639712 my_tree.at_cell.tmp[8].r : 0 [by my_tree.at_cell.arbs[2].or_cell._y:=1]
640066 my_tree.at_cell.arbs[3].arbiter._y1 : 1 [by my_tree.at_cell.tmp[8].r:=0]
640199 my_tree.at_cell.arbs[3]._y1_arb : 0 [by my_tree.at_cell.arbs[3].arbiter._y1:=1]
640200 my_tree.at_cell.arbs[3].or_cell._y : 1 [by my_tree.at_cell.arbs[3]._y1_arb:=0]
640204 my_tree.out.r : 0 [by my_tree.at_cell.arbs[3].or_cell._y:=1]
640204 my_tree.out.a : 0
640750 my_tree.at_cell.arbs[3].ack_cell1._y : 1 [by my_tree.out.a:=0]
686313 my_tree.at_cell.tmp[8].a : 0 [by my_tree.at_cell.arbs[3].ack_cell1._y:=1]
686314 my_tree.at_cell.arbs[2].ack_cell1._y : 1 [by my_tree.at_cell.tmp[8].a:=0]
698692 my_tree.at_cell.tmp[5].a : 0 [by my_tree.at_cell.arbs[2].ack_cell1._y:=1]
698771 my_tree.at_cell.arbs[2]._y2_arb : 1 [by my_tree.at_cell.tmp[5].a:=0]
698859 my_tree.at_cell.arbs[2].or_cell._y : 0 [by my_tree.at_cell.arbs[2]._y2_arb:=1]
701125 my_tree.at_cell.arbs[0].ack_cell1._y : 1 [by my_tree.at_cell.tmp[5].a:=0]
706641 my_tree.at_cell.tmp[8].r : 1 [by my_tree.at_cell.arbs[2].or_cell._y:=0]
706700 my_tree.at_cell.arbs[3].arbiter._y1 : 0 [by my_tree.at_cell.tmp[8].r:=1]
706730 my_tree.at_cell.arbs[3]._y1_arb : 1 [by my_tree.at_cell.arbs[3].arbiter._y1:=0]
708197 my_tree.at_cell.arbs[3].or_cell._y : 0 [by my_tree.at_cell.arbs[3]._y1_arb:=1]
729452 my_tree._in[0].a : 0 [by my_tree.at_cell.arbs[0].ack_cell1._y:=1]
748836 my_tree.fifo_to_tree[0].fifo_element[1]._out_a_B : 1 [by my_tree._in[0].a:=0]
767701 my_tree.out.r : 1 [by my_tree.at_cell.arbs[3].or_cell._y:=0]
767701 my_tree.out.a : 1
768386 my_tree.at_cell.arbs[3].ack_cell1._y : 0 [by my_tree.out.a:=1]
785101 my_tree.at_cell.tmp[8].a : 1 [by my_tree.at_cell.arbs[3].ack_cell1._y:=0]
785228 my_tree.at_cell.arbs[2].ack_cell2._y : 0 [by my_tree.at_cell.tmp[8].a:=1]
785397 my_tree.at_cell.tmp[6].a : 1 [by my_tree.at_cell.arbs[2].ack_cell2._y:=0]
785440 my_tree.at_cell.arbs[1].ack_cell1._y : 0 [by my_tree.at_cell.tmp[6].a:=1]
785452 my_tree._in[2].a : 1 [by my_tree.at_cell.arbs[1].ack_cell1._y:=0]
786731 my_tree.fifo_to_tree[2].fifo_element[1]._out_a_B : 0 [by my_tree._in[2].a:=1]
786964 my_tree.fifo_to_tree[2].fifo_element[1].buf_func._y : 1 [by my_tree.fifo_to_tree[2].fifo_element[1]._out_a_B:=0]
786967 my_tree._in[2].r : 0 [by my_tree.fifo_to_tree[2].fifo_element[1].buf_func._y:=1]
786968 my_tree.fifo_to_tree[2].fifo_element[1]._en : 1 [by my_tree._in[2].r:=0]
787005 my_tree.at_cell.arbs[1].arbiter._y1 : 1 [by my_tree._in[2].r:=0]
799757 my_tree.at_cell.arbs[1]._y1_arb : 0 [by my_tree.at_cell.arbs[1].arbiter._y1:=1]
799849 my_tree.at_cell.arbs[1].or_cell._y : 1 [by my_tree.at_cell.arbs[1]._y1_arb:=0]
802576 my_tree.at_cell.tmp[6].r : 0 [by my_tree.at_cell.arbs[1].or_cell._y:=1]
802578 my_tree.at_cell.arbs[2].arbiter._y2 : 1 [by my_tree.at_cell.tmp[6].r:=0]
802579 my_tree.at_cell.arbs[2]._y2_arb : 0 [by my_tree.at_cell.arbs[2].arbiter._y2:=1]
804080 my_tree.at_cell.arbs[2].or_cell._y : 1 [by my_tree.at_cell.arbs[2]._y2_arb:=0]
804082 my_tree.at_cell.tmp[8].r : 0 [by my_tree.at_cell.arbs[2].or_cell._y:=1]
804100 my_tree.at_cell.arbs[3].arbiter._y1 : 1 [by my_tree.at_cell.tmp[8].r:=0]
804219 my_tree.at_cell.arbs[3]._y1_arb : 0 [by my_tree.at_cell.arbs[3].arbiter._y1:=1]
809939 my_tree.at_cell.arbs[3].or_cell._y : 1 [by my_tree.at_cell.arbs[3]._y1_arb:=0]
809947 my_tree.out.r : 0 [by my_tree.at_cell.arbs[3].or_cell._y:=1]
809947 my_tree.out.a : 0
810001 my_tree.at_cell.arbs[3].ack_cell1._y : 1 [by my_tree.out.a:=0]
860539 my_tree.at_cell.tmp[8].a : 0 [by my_tree.at_cell.arbs[3].ack_cell1._y:=1]
860544 my_tree.at_cell.arbs[2].ack_cell2._y : 1 [by my_tree.at_cell.tmp[8].a:=0]
861611 my_tree.at_cell.tmp[6].a : 0 [by my_tree.at_cell.arbs[2].ack_cell2._y:=1]
861612 my_tree.at_cell.arbs[1].ack_cell1._y : 1 [by my_tree.at_cell.tmp[6].a:=0]
861750 my_tree._in[2].a : 0 [by my_tree.at_cell.arbs[1].ack_cell1._y:=1]
861751 my_tree.fifo_to_tree[2].fifo_element[1]._out_a_B : 1 [by my_tree._in[2].a:=0]
-------------------------------------------------
[3] Sent three inputs, received 3 outputs

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,64 @@
/*************************************************************************
*
* This file is part of ACT dataflow neuro library.
* It's the testing facility for cell_lib_std.act
*
* Copyright (c) 2022 University of Groningen - Ole Richter
* Copyright (c) 2022 University of Groningen - Hugh Greatorex
* Copyright (c) 2022 University of Groningen - Michele Mastella
* Copyright (c) 2022 University of Groningen - Madison Cotteret
*
* This source describes Open Hardware and is licensed under the CERN-OHL-W v2 or later
*
* You may redistribute and modify this documentation and make products
* using it under the terms of the CERN-OHL-W v2 (https:/cern.ch/cern-ohl).
* This documentation is distributed WITHOUT ANY EXPRESS OR IMPLIED
* WARRANTY, INCLUDING OF MERCHANTABILITY, SATISFACTORY QUALITY
* AND FITNESS FOR A PARTICULAR PURPOSE. Please see the CERN-OHL-W v2
* for applicable conditions.
*
* Source location: https://git.web.rug.nl/bics/actlib_dataflow_neuro
*
* As per CERN-OHL-W v2 section 4.1, should You produce hardware based on
* these sources, You must maintain the Source Location visible in its
* documentation.
*
**************************************************************************
*/
import "../../dataflow_neuro/primitives.act";
import "../../dataflow_neuro/coders.act";
import globals;
open tmpl::dataflow_neuro;
defproc arbiter_treee (a1of1 in[5]; a1of1 out)
{
//Low active Reset
bool _reset_B;
prs {
Reset => _reset_B-
}
a1of1 _in[5];
power _supply;
_supply.vdd = Vdd;
_supply.vss = GND;
fifo_t<2> fifo_to_tree[5];
(i:5:
fifo_to_tree[i].in = in[i];
fifo_to_tree[i].out = _in[i];
fifo_to_tree[i].supply = _supply;
fifo_to_tree[i].reset_B = _reset_B;
)
arbtree<5> at_cell(.in=_in, .out = out);
at_cell.supply = _supply;
}
arbiter_treee my_tree;

View File

@ -0,0 +1,64 @@
watchall
set Reset 1
set my_tree.in[0].r 0
set my_tree.in[1].r 0
set my_tree.in[2].r 0
set my_tree.in[3].r 0
set my_tree.in[4].r 0
set my_tree.out.a 0
cycle
assert my_tree.in[0].a 0
assert my_tree.in[1].a 0
assert my_tree.in[2].a 0
assert my_tree.in[3].a 0
assert my_tree.in[4].a 0
assert my_tree.out.r 0
system "echo '-------------------------------------------------'"
system "echo '[0] System initialized'"
set Reset 0
cycle
system "echo '-------------------------------------------------'"
system "echo '[1] System reset completed'"
set my_tree.in[0].r 1
set my_tree.in[2].r 1
set my_tree.in[4].r 1
cycle
assert my_tree.out.r 1
set my_tree.out.a 1
cycle
assert my_tree.out.r 0
set my_tree.out.a 0
cycle
assert my_tree.out.r 1
set my_tree.out.a 1
cycle
assert my_tree.out.r 0
set my_tree.out.a 0
cycle
assert my_tree.out.r 1
set my_tree.out.a 1
cycle
assert my_tree.out.r 0
set my_tree.out.a 0
cycle
system "echo '-------------------------------------------------'"
system "echo '[3] Sent three inputs, received 3 outputs'"

View File

@ -0,0 +1,85 @@
t.in[0] t.out t.in[2] t.in[3] t.at.tmp[6] t.at.tmp[5] t.at.tmp[8] t.in[4] t.at.arbs[1]._y t.in[1] t.at.arbs[2]._y t.at.arbs[3]._y t.at.arbs[0]._y
0
1
0 t.in[0] : 0
0 t.in[4] : 0
0 t.in[3] : 0
0 t.in[2] : 0
0 t.in[1] : 0
1 t.at.arbs[1]._y : 1 [by t.in[2]:=0]
7092 t.at.arbs[0]._y : 1 [by t.in[1]:=0]
7094 t.at.tmp[5] : 0 [by t.at.arbs[0]._y:=1]
10468 t.at.tmp[6] : 0 [by t.at.arbs[1]._y:=1]
15221 t.at.arbs[2]._y : 1 [by t.at.tmp[6]:=0]
16358 t.at.tmp[8] : 0 [by t.at.arbs[2]._y:=1]
16472 t.at.arbs[3]._y : 1 [by t.at.tmp[8]:=0]
81838 t.out : 0 [by t.at.arbs[3]._y:=1]
[] setting all low
[] setting bit 0 high
81838 t.in[0] : 1
83564 t.at.arbs[0]._y : 0 [by t.in[0]:=1]
83603 t.at.tmp[5] : 1 [by t.at.arbs[0]._y:=0]
83618 t.at.arbs[2]._y : 0 [by t.at.tmp[5]:=1]
84109 t.at.tmp[8] : 1 [by t.at.arbs[2]._y:=0]
84122 t.at.arbs[3]._y : 0 [by t.at.tmp[8]:=1]
84162 t.out : 1 [by t.at.arbs[3]._y:=0]
[] setting all low
84162 t.in[0] : 0
84577 t.at.arbs[0]._y : 1 [by t.in[0]:=0]
84597 t.at.tmp[5] : 0 [by t.at.arbs[0]._y:=1]
90658 t.at.arbs[2]._y : 1 [by t.at.tmp[5]:=0]
90705 t.at.tmp[8] : 0 [by t.at.arbs[2]._y:=1]
90721 t.at.arbs[3]._y : 1 [by t.at.tmp[8]:=0]
134819 t.out : 0 [by t.at.arbs[3]._y:=1]
[] setting bit 1 high
134819 t.in[1] : 1
148543 t.at.arbs[0]._y : 0 [by t.in[1]:=1]
148547 t.at.tmp[5] : 1 [by t.at.arbs[0]._y:=0]
157676 t.at.arbs[2]._y : 0 [by t.at.tmp[5]:=1]
157691 t.at.tmp[8] : 1 [by t.at.arbs[2]._y:=0]
200939 t.at.arbs[3]._y : 0 [by t.at.tmp[8]:=1]
237870 t.out : 1 [by t.at.arbs[3]._y:=0]
[] setting all low
237870 t.in[1] : 0
237925 t.at.arbs[0]._y : 1 [by t.in[1]:=0]
289578 t.at.tmp[5] : 0 [by t.at.arbs[0]._y:=1]
319358 t.at.arbs[2]._y : 1 [by t.at.tmp[5]:=0]
333207 t.at.tmp[8] : 0 [by t.at.arbs[2]._y:=1]
358019 t.at.arbs[3]._y : 1 [by t.at.tmp[8]:=0]
372362 t.out : 0 [by t.at.arbs[3]._y:=1]
[] setting bit 2 high
372362 t.in[2] : 1
372784 t.at.arbs[1]._y : 0 [by t.in[2]:=1]
421498 t.at.tmp[6] : 1 [by t.at.arbs[1]._y:=0]
421499 t.at.arbs[2]._y : 0 [by t.at.tmp[6]:=1]
421500 t.at.tmp[8] : 1 [by t.at.arbs[2]._y:=0]
441705 t.at.arbs[3]._y : 0 [by t.at.tmp[8]:=1]
441987 t.out : 1 [by t.at.arbs[3]._y:=0]
[] setting all low
441987 t.in[2] : 0
442755 t.at.arbs[1]._y : 1 [by t.in[2]:=0]
442758 t.at.tmp[6] : 0 [by t.at.arbs[1]._y:=1]
465199 t.at.arbs[2]._y : 1 [by t.at.tmp[6]:=0]
465750 t.at.tmp[8] : 0 [by t.at.arbs[2]._y:=1]
466821 t.at.arbs[3]._y : 1 [by t.at.tmp[8]:=0]
467775 t.out : 0 [by t.at.arbs[3]._y:=1]
[] setting bit 3 high
467775 t.in[3] : 1
468856 t.at.arbs[1]._y : 0 [by t.in[3]:=1]
523326 t.at.tmp[6] : 1 [by t.at.arbs[1]._y:=0]
524308 t.at.arbs[2]._y : 0 [by t.at.tmp[6]:=1]
524326 t.at.tmp[8] : 1 [by t.at.arbs[2]._y:=0]
528339 t.at.arbs[3]._y : 0 [by t.at.tmp[8]:=1]
532342 t.out : 1 [by t.at.arbs[3]._y:=0]
[] setting all low
532342 t.in[3] : 0
577243 t.at.arbs[1]._y : 1 [by t.in[3]:=0]
598827 t.at.tmp[6] : 0 [by t.at.arbs[1]._y:=1]
603587 t.at.arbs[2]._y : 1 [by t.at.tmp[6]:=0]
604089 t.at.tmp[8] : 0 [by t.at.arbs[2]._y:=1]
604292 t.at.arbs[3]._y : 1 [by t.at.tmp[8]:=0]
606146 t.out : 0 [by t.at.arbs[3]._y:=1]
[] setting bit 4 high
606146 t.in[4] : 1
606285 t.at.arbs[3]._y : 0 [by t.in[4]:=1]
642631 t.out : 1 [by t.at.arbs[3]._y:=0]

Binary file not shown.

View File

@ -0,0 +1,55 @@
= "GND" "GND"
= "Vdd" "Vdd"
= "Reset" "Reset"
"t.at.arbs[0].a"|"t.at.arbs[0].b"->"t.at.arbs[0]._y"-
~("t.at.arbs[0].a"|"t.at.arbs[0].b")->"t.at.arbs[0]._y"+
"t.at.arbs[0]._y"->"t.at.arbs[0].y"-
~("t.at.arbs[0]._y")->"t.at.arbs[0].y"+
"t.at.arbs[1].a"|"t.at.arbs[1].b"->"t.at.arbs[1]._y"-
~("t.at.arbs[1].a"|"t.at.arbs[1].b")->"t.at.arbs[1]._y"+
"t.at.arbs[1]._y"->"t.at.arbs[1].y"-
~("t.at.arbs[1]._y")->"t.at.arbs[1].y"+
"t.at.arbs[2].a"|"t.at.arbs[2].b"->"t.at.arbs[2]._y"-
~("t.at.arbs[2].a"|"t.at.arbs[2].b")->"t.at.arbs[2]._y"+
"t.at.arbs[2]._y"->"t.at.arbs[2].y"-
~("t.at.arbs[2]._y")->"t.at.arbs[2].y"+
"t.at.arbs[3].a"|"t.at.arbs[3].b"->"t.at.arbs[3]._y"-
~("t.at.arbs[3].a"|"t.at.arbs[3].b")->"t.at.arbs[3]._y"+
"t.at.arbs[3]._y"->"t.at.arbs[3].y"-
~("t.at.arbs[3]._y")->"t.at.arbs[3].y"+
= "t.at.tmp[5]" "t.at.arbs[2].a"
= "t.at.tmp[5]" "t.at.arbs[0].y"
= "t.at.tmp[6]" "t.at.arbs[2].b"
= "t.at.tmp[6]" "t.at.arbs[1].y"
= "t.at.tmp[8]" "t.at.arbs[3].a"
= "t.at.tmp[8]" "t.at.arbs[2].y"
= "t.at.supply.vdd" "t.at.arbs[3].vdd"
= "t.at.supply.vdd" "t.at.arbs[2].vdd"
= "t.at.supply.vdd" "t.at.arbs[1].vdd"
= "t.at.supply.vdd" "t.at.arbs[0].vdd"
= "t.at.supply.vss" "t.at.arbs[3].vss"
= "t.at.supply.vss" "t.at.arbs[2].vss"
= "t.at.supply.vss" "t.at.arbs[1].vss"
= "t.at.supply.vss" "t.at.arbs[0].vss"
= "t.at.in[0]" "t.at.arbs[0].a"
= "t.at.in[0]" "t.at.tmp[0]"
= "t.at.in[1]" "t.at.arbs[0].b"
= "t.at.in[1]" "t.at.tmp[1]"
= "t.at.in[2]" "t.at.arbs[1].a"
= "t.at.in[2]" "t.at.tmp[2]"
= "t.at.in[3]" "t.at.arbs[1].b"
= "t.at.in[3]" "t.at.tmp[3]"
= "t.at.in[4]" "t.at.arbs[3].b"
= "t.at.in[4]" "t.at.tmp[9]"
= "t.at.in[4]" "t.at.tmp[7]"
= "t.at.in[4]" "t.at.tmp[4]"
= "t.at.out" "t.at.arbs[3].y"
= "t.at.out" "t.at.tmp[10]"
= "Vdd" "t.at.supply.vdd"
= "GND" "t.at.supply.vss"
= "t.out" "t.at.out"
= "t.in[0]" "t.at.in[0]"
= "t.in[1]" "t.at.in[1]"
= "t.in[2]" "t.at.in[2]"
= "t.in[3]" "t.at.in[3]"
= "t.in[4]" "t.at.in[4]"

View File

@ -0,0 +1,41 @@
/*************************************************************************
*
* This file is part of ACT dataflow neuro library.
* It's the testing facility for cell_lib_std.act
*
* Copyright (c) 2022 University of Groningen - Ole Richter
* Copyright (c) 2022 University of Groningen - Hugh Greatorex
* Copyright (c) 2022 University of Groningen - Michele Mastella
* Copyright (c) 2022 University of Groningen - Madison Cotteret
*
* This source describes Open Hardware and is licensed under the CERN-OHL-W v2 or later
*
* You may redistribute and modify this documentation and make products
* using it under the terms of the CERN-OHL-W v2 (https:/cern.ch/cern-ohl).
* This documentation is distributed WITHOUT ANY EXPRESS OR IMPLIED
* WARRANTY, INCLUDING OF MERCHANTABILITY, SATISFACTORY QUALITY
* AND FITNESS FOR A PARTICULAR PURPOSE. Please see the CERN-OHL-W v2
* for applicable conditions.
*
* Source location: https://git.web.rug.nl/bics/actlib_dataflow_neuro
*
* As per CERN-OHL-W v2 section 4.1, should You produce hardware based on
* these sources, You must maintain the Source Location visible in its
* documentation.
*
**************************************************************************
*/
import "../../dataflow_neuro/treegates.act";
import globals;
open tmpl::dataflow_neuro;
defproc arbtree_5 (bool? in[5]; bool! out){
arbtree<5> at(.in=in, .out=out);
at.supply.vss = GND;
at.supply.vdd = Vdd;
}
arbtree_5 t;

View File

@ -0,0 +1,88 @@
watchall
system "echo '0'"
set t.in[0] 0
set t.in[1] 0
set t.in[2] 0
set t.in[3] 0
set t.in[4] 0
system "echo '1'"
cycle
mode run
# assert t.out 0
system "echo '[] setting all low'"
set t.in[0] 0
set t.in[1] 0
set t.in[2] 0
set t.in[3] 0
set t.in[4] 0
cycle
system "echo '[] setting bit 0 high'"
set t.in[0] 1
cycle
system "echo '[] setting all low'"
set t.in[0] 0
set t.in[1] 0
set t.in[2] 0
set t.in[3] 0
set t.in[4] 0
cycle
system "echo '[] setting bit 1 high'"
set t.in[0] 0
set t.in[1] 1
cycle
system "echo '[] setting all low'"
set t.in[0] 0
set t.in[1] 0
set t.in[2] 0
set t.in[3] 0
set t.in[4] 0
cycle
system "echo '[] setting bit 2 high'"
set t.in[1] 0
set t.in[2] 1
cycle
system "echo '[] setting all low'"
set t.in[0] 0
set t.in[1] 0
set t.in[2] 0
set t.in[3] 0
set t.in[4] 0
cycle
system "echo '[] setting bit 3 high'"
set t.in[2] 0
set t.in[3] 1
cycle
system "echo '[] setting all low'"
set t.in[0] 0
set t.in[1] 0
set t.in[2] 0
set t.in[3] 0
set t.in[4] 0
cycle
system "echo '[] setting bit 4 high'"
set t.in[3] 0
set t.in[4] 1
cycle

View File

@ -0,0 +1,355 @@
b.b.addr_buf.vc.ct.in[1] b.b.dly.dly[9].__y b.b.addr_buf.out_a_B_buf_f.buf2._y b.b.addr_buf.vc.OR2_tf[6]._y b.b.addr_buf.vc.ct.in[0] b.b.addr_buf.vc.ct.C2Els[1]._y b.dly_cfg[2] b.in.d.d[4].f b.b.addr_buf._out_a_BX_f[0] b.in.d.d[1].f b.b.dly._a[1] b.in.d.d[1].t b.b.addr_buf.vc.ct.tmp[8] b.in.d.d[6].t b.b.addr_buf.vc.ct.in[6] b.b.addr_buf.in_v_buf._y b.b.addr_buf._in_v b.dly_cfg[3] b.b.dly.dly[10].y b.b.dly.dly[6]._y b.in.d.d[3].t b.b.dly.dly[7].y b.in.d.d[4].t b.b.addr_buf.vc.ct.in[4] b.b.dly._a[3] b.b.dly.dly[5].y b.in.d.d[3].f b.in.v b.b.addr_buf.vc.ct.tmp[9] b.b.dly.dly[9].___y b.b.addr_buf._out_a_BX_t[0] b.b.addr_buf.vc.ct.in[2] b.b.dly.dly[14].___y b.in.d.d[0].f b.b.dly.mu2[0]._y b.b.dly.dly[6].___y b.b.dly.mu2[3]._y b.b.dly.and2[3]._y b.in.d.d[5].t b.b.dly.dly[14].__y b.b.dly.mu2[2]._y b.in.d.d[0].t b.in.d.d[6].f b.b.addr_buf._out_a_B b.in.d.d[2].t b.b.addr_buf.vc.ct.tmp[7] b.b.dly.dly[7]._y b.b.dly.out b.b.dly.dly[4].__y b.b.dly.dly[12].__y b.b.dly.dly[1].y b.b.dly.dly[14]._y b.b.addr_buf.vc.ct.in[5] b.b.addr_buf.vc.OR2_tf[4]._y b.b.dly.dly[3].a b.b.dly.mu2[3].b b.in.d.d[5].f b.dly_cfg[1] b.b.dly.dly[7].a b.b.dly.dly[8].y b.b.dly.dly[3].___y b.b.dly._a[2] b.b.addr_buf.vc.ct.C3Els[1]._y b.b.dly.dly[1].a b.in.d.d[2].f b.b.addr_buf.vc.ct.in[3] b.b.dly.dly[3]._y b.b.dly.dly[10].__y b.b.dly.dly[1]._y b.b.dly.dly[11]._y b.b.dly.and2[1]._y b.b.dly.dly[9].y b.b.addr_buf.out_a_B_buf_t.buf2._y b.b.dly.dly[13]._y b.b.addr_buf.vc.OR2_tf[3]._y b.b.dly.dly[5].___y b.b.dly.dly[13].__y b.b.dly.dly[11].__y b.b.dly.dly[13].y b.b.dly.dly[4]._y b.b.dly.dly[11].y b.b.dly.dly[7].___y b.b.dly.dly[8].__y b.b.dly.dly[4].___y b.b.dly.dly[8]._y b.dly_cfg[0] b.b.dly.dly[12].___y b.b.dly.dly[12].y b.b.addr_buf.vc.OR2_tf[2]._y b.b.dly.dly[6].y b.b.dly.dly[2].y b.b.dly.mu2[1]._s b.b.dly.dly[4].y b.b.dly.dly[13].___y b.b.addr_buf.vc.OR2_tf[5]._y b.b.dly.dly[12]._y b.b.dly.dly[2].___y b.b.dly.mu2[2]._s b.b.dly.dly[10].___y b.b.dly.dly[6].__y b.b.dly.dly[3].y b.b.dly.dly[5].__y b.b.dly.mu2[0]._s b.b.addr_buf.vc.OR2_tf[0]._y b.b.dly.mu2[1]._y b.b.dly.mu2[3]._s b.b.dly.dly[1].___y b.b.dly.dly[2]._y b.b.dly.dly[7].__y b.b.dly.dly[8].___y b.b.addr_buf.vc.ct.C2Els[0]._y b.b.dly.dly[5]._y b.b.addr_buf.vc.ct.C3Els[0]._y b.b.dly.dly[1].__y b.b.addr_buf.vc.OR2_tf[1]._y b.b.dly.and2[2]._y b.b.dly.dly[11].___y b.b.dly.dly[2].__y b.b.dly.dly[3].__y b.b.dly.dly[9]._y b.b.dly.dly[10]._y
175726 b.in.d.d[0].f : 0
175726 b.dly_cfg[3] : 0
175726 b.dly_cfg[2] : 0
175726 b.in.d.d[1].f : 0
175726 b.in.d.d[3].f : 0
175726 b.b.dly.out : 0
175726 b.in.d.d[6].t : 0
175726 b.in.d.d[2].t : 0
175726 b.dly_cfg[1] : 1
175726 b.dly_cfg[0] : 1
175726 b.in.d.d[6].f : 0
175726 b.in.d.d[5].t : 0
175726 b.in.d.d[0].t : 0
175726 Reset : 0
175726 b.in.d.d[2].f : 0
175726 b.in.d.d[5].f : 0
175726 b.in.d.d[4].t : 0
175726 b.in.d.d[1].t : 0
175726 b.in.d.d[4].f : 0
175726 b.in.d.d[3].t : 0
175727 b.b.dly.mu2[3]._s : 1 [by b.dly_cfg[3]:=0]
175730 b.b.addr_buf.vc.OR2_tf[5]._y : 1 [by b.in.d.d[5].f:=0]
175734 b.b.addr_buf.vc.OR2_tf[6]._y : 1 [by b.in.d.d[6].f:=0]
175760 b.b.addr_buf.vc.OR2_tf[0]._y : 1 [by b.in.d.d[0].t:=0]
175763 b.b.addr_buf.vc.ct.in[0] : 0 [by b.b.addr_buf.vc.OR2_tf[0]._y:=1]
175768 b.b.dly.and2[2]._y : 1 [by b.dly_cfg[2]:=0]
175782 b.b.addr_buf.vc.ct.in[6] : 0 [by b.b.addr_buf.vc.OR2_tf[6]._y:=1]
175821 b.b.dly.mu2[1]._s : 0 [by b.dly_cfg[1]:=1]
175946 b.b.dly.dly[3].a : 0 [by b.b.dly.and2[2]._y:=1]
176061 b.b.dly.mu2[0]._s : 0 [by b.dly_cfg[0]:=1]
176644 b.b.addr_buf.vc.OR2_tf[2]._y : 1 [by b.in.d.d[2].f:=0]
178124 b.b.addr_buf.vc.OR2_tf[4]._y : 1 [by b.in.d.d[4].f:=0]
178543 b.b.dly.mu2[2]._s : 1 [by b.dly_cfg[2]:=0]
178941 b.b.addr_buf.vc.OR2_tf[3]._y : 1 [by b.in.d.d[3].t:=0]
179768 b.b.addr_buf.vc.ct.in[3] : 0 [by b.b.addr_buf.vc.OR2_tf[3]._y:=1]
182595 b.b.addr_buf.vc.ct.in[2] : 0 [by b.b.addr_buf.vc.OR2_tf[2]._y:=1]
182768 b.b.addr_buf.vc.ct.C2Els[1]._y : 1 [by b.b.addr_buf.vc.ct.in[2]:=0]
182952 b.b.addr_buf.vc.ct.tmp[8] : 0 [by b.b.addr_buf.vc.ct.C2Els[1]._y:=1]
187960 b.b.dly.mu2[0]._y : 1 [by b.b.dly.mu2[0]._s:=0]
187961 b.b.dly._a[1] : 0 [by b.b.dly.mu2[0]._y:=1]
188034 b.b.dly.and2[1]._y : 1 [by b.b.dly._a[1]:=0]
188038 b.b.dly.dly[1].a : 0 [by b.b.dly.and2[1]._y:=1]
189459 b.b.addr_buf._out_a_B : 1 [by b.b.dly.out:=0]
189555 b.b.addr_buf.out_a_B_buf_t.buf2._y : 0 [by b.b.addr_buf._out_a_B:=1]
189556 b.b.addr_buf._out_a_BX_f[0] : 1 [by b.b.addr_buf.out_a_B_buf_t.buf2._y:=0]
189595 b.b.addr_buf.out_a_B_buf_f.buf2._y : 0 [by b.b.addr_buf._out_a_B:=1]
189613 b._reset_B : 1 [by Reset:=0]
189854 b.b.addr_buf.reset_buf._y : 0 [by b._reset_B:=1]
193813 b.b.addr_buf._reset_BX : 1 [by b.b.addr_buf.reset_buf._y:=0]
193825 b.b.addr_buf.reset_bufarray.buf2._y : 0 [by b.b.addr_buf._reset_BX:=1]
196923 b.b.dly.dly[3]._y : 1 [by b.b.dly.dly[3].a:=0]
197725 b.b.addr_buf._reset_BXX[0] : 1 [by b.b.addr_buf.reset_bufarray.buf2._y:=0]
197952 b.b.dly.dly[3].__y : 0 [by b.b.dly.dly[3]._y:=1]
197953 b.b.dly.dly[3].___y : 1 [by b.b.dly.dly[3].__y:=0]
198009 b.b.dly.dly[3].y : 0 [by b.b.dly.dly[3].___y:=1]
208641 b.b.addr_buf._out_a_BX_t[0] : 1 [by b.b.addr_buf.out_a_B_buf_f.buf2._y:=0]
217609 b.b.addr_buf.vc.ct.in[4] : 0 [by b.b.addr_buf.vc.OR2_tf[4]._y:=1]
222104 b.b.addr_buf.vc.OR2_tf[1]._y : 1 [by b.in.d.d[1].t:=0]
222105 b.b.addr_buf.vc.ct.in[1] : 0 [by b.b.addr_buf.vc.OR2_tf[1]._y:=1]
222142 b.b.addr_buf.vc.ct.C2Els[0]._y : 1 [by b.b.addr_buf.vc.ct.in[1]:=0]
222849 b.b.addr_buf.vc.ct.in[5] : 0 [by b.b.addr_buf.vc.OR2_tf[5]._y:=1]
222850 b.b.addr_buf.vc.ct.C3Els[0]._y : 1 [by b.b.addr_buf.vc.ct.in[5]:=0]
225326 b.b.dly.dly[1]._y : 1 [by b.b.dly.dly[1].a:=0]
226414 b.b.addr_buf.vc.ct.tmp[9] : 0 [by b.b.addr_buf.vc.ct.C3Els[0]._y:=1]
227018 b.b.dly.dly[1].__y : 0 [by b.b.dly.dly[1]._y:=1]
227031 b.b.dly.dly[1].___y : 1 [by b.b.dly.dly[1].__y:=0]
234688 b.b.dly.and2[3]._y : 1 [by b.dly_cfg[3]:=0]
235045 b.b.dly.dly[7].a : 0 [by b.b.dly.and2[3]._y:=1]
235070 b.b.dly.dly[7]._y : 1 [by b.b.dly.dly[7].a:=0]
235091 b.b.dly.dly[7].__y : 0 [by b.b.dly.dly[7]._y:=1]
235092 b.b.dly.dly[7].___y : 1 [by b.b.dly.dly[7].__y:=0]
243015 b.b.dly.dly[4]._y : 1 [by b.b.dly.dly[3].y:=0]
243016 b.b.dly.dly[4].__y : 0 [by b.b.dly.dly[4]._y:=1]
243017 b.b.dly.dly[4].___y : 1 [by b.b.dly.dly[4].__y:=0]
243178 b.b.dly.dly[4].y : 0 [by b.b.dly.dly[4].___y:=1]
244015 b.b.dly.dly[1].y : 0 [by b.b.dly.dly[1].___y:=1]
244020 b.b.dly.dly[2]._y : 1 [by b.b.dly.dly[1].y:=0]
244215 b.b.dly.dly[5]._y : 1 [by b.b.dly.dly[4].y:=0]
244601 b.b.dly.dly[2].__y : 0 [by b.b.dly.dly[2]._y:=1]
244612 b.b.dly.dly[2].___y : 1 [by b.b.dly.dly[2].__y:=0]
244623 b.b.dly.dly[5].__y : 0 [by b.b.dly.dly[5]._y:=1]
244637 b.b.dly.dly[5].___y : 1 [by b.b.dly.dly[5].__y:=0]
244655 b.b.dly.dly[5].y : 0 [by b.b.dly.dly[5].___y:=1]
244659 b.b.dly.dly[6]._y : 1 [by b.b.dly.dly[5].y:=0]
244740 b.b.dly.dly[7].y : 0 [by b.b.dly.dly[7].___y:=1]
244763 b.b.dly.dly[6].__y : 0 [by b.b.dly.dly[6]._y:=1]
245517 b.b.addr_buf.vc.ct.tmp[7] : 0 [by b.b.addr_buf.vc.ct.C2Els[0]._y:=1]
245659 b.b.dly.dly[2].y : 0 [by b.b.dly.dly[2].___y:=1]
245887 b.b.dly.mu2[1]._y : 1 [by b.b.dly.dly[2].y:=0]
245967 b.b.dly.dly[6].___y : 1 [by b.b.dly.dly[6].__y:=0]
246730 b.b.dly._a[2] : 0 [by b.b.dly.mu2[1]._y:=1]
246800 b.b.dly.mu2[2]._y : 1 [by b.b.dly._a[2]:=0]
247426 b.b.dly.dly[6].y : 0 [by b.b.dly.dly[6].___y:=1]
253972 b.b.addr_buf.vc.ct.C3Els[1]._y : 1 [by b.b.addr_buf.vc.ct.tmp[7]:=0]
253983 b.b.addr_buf._in_v : 0 [by b.b.addr_buf.vc.ct.C3Els[1]._y:=1]
253986 b.b.addr_buf.in_v_buf._y : 1 [by b.b.addr_buf._in_v:=0]
254040 b.in.v : 0 [by b.b.addr_buf.in_v_buf._y:=1]
276184 b.b.dly.dly[8]._y : 1 [by b.b.dly.dly[7].y:=0]
277332 b.b.dly.dly[8].__y : 0 [by b.b.dly.dly[8]._y:=1]
278493 b.b.dly.dly[8].___y : 1 [by b.b.dly.dly[8].__y:=0]
287145 b.b.dly.dly[8].y : 0 [by b.b.dly.dly[8].___y:=1]
287226 b.b.dly.dly[9]._y : 1 [by b.b.dly.dly[8].y:=0]
297222 b.b.dly._a[3] : 0 [by b.b.dly.mu2[2]._y:=1]
298303 b.b.dly.dly[9].__y : 0 [by b.b.dly.dly[9]._y:=1]
298395 b.b.dly.dly[9].___y : 1 [by b.b.dly.dly[9].__y:=0]
306706 b.b.dly.dly[9].y : 0 [by b.b.dly.dly[9].___y:=1]
308450 b.b.dly.dly[10]._y : 1 [by b.b.dly.dly[9].y:=0]
309063 b.b.dly.dly[10].__y : 0 [by b.b.dly.dly[10]._y:=1]
315205 b.b.dly.mu2[3]._y : 1 [by b.b.dly._a[3]:=0]
323085 b.b.dly.dly[10].___y : 1 [by b.b.dly.dly[10].__y:=0]
323130 b.b.dly.dly[10].y : 0 [by b.b.dly.dly[10].___y:=1]
324127 b.b.dly.dly[11]._y : 1 [by b.b.dly.dly[10].y:=0]
325776 b.b.dly.dly[11].__y : 0 [by b.b.dly.dly[11]._y:=1]
326301 b.b.dly.dly[11].___y : 1 [by b.b.dly.dly[11].__y:=0]
327201 b.b.dly.dly[11].y : 0 [by b.b.dly.dly[11].___y:=1]
327253 b.b.dly.dly[12]._y : 1 [by b.b.dly.dly[11].y:=0]
327260 b.b.dly.dly[12].__y : 0 [by b.b.dly.dly[12]._y:=1]
342872 b.b.dly.dly[12].___y : 1 [by b.b.dly.dly[12].__y:=0]
349339 b.b.dly.dly[12].y : 0 [by b.b.dly.dly[12].___y:=1]
349341 b.b.dly.dly[13]._y : 1 [by b.b.dly.dly[12].y:=0]
349695 b.b.dly.dly[13].__y : 0 [by b.b.dly.dly[13]._y:=1]
349828 b.b.dly.dly[13].___y : 1 [by b.b.dly.dly[13].__y:=0]
349829 b.b.dly.dly[13].y : 0 [by b.b.dly.dly[13].___y:=1]
349833 b.b.dly.dly[14]._y : 1 [by b.b.dly.dly[13].y:=0]
350379 b.b.dly.dly[14].__y : 0 [by b.b.dly.dly[14]._y:=1]
395942 b.b.dly.dly[14].___y : 1 [by b.b.dly.dly[14].__y:=0]
395943 b.b.dly.mu2[3].b : 0 [by b.b.dly.dly[14].___y:=1]
[] set Reset 1
395943 Reset : 1
408321 b._reset_B : 0 [by Reset:=1]
408400 b.b.addr_buf.reset_buf._y : 1 [by b._reset_B:=0]
410833 b.b.addr_buf._reset_BX : 0 [by b.b.addr_buf.reset_buf._y:=1]
410921 b.b.addr_buf.reset_bufarray.buf2._y : 1 [by b.b.addr_buf._reset_BX:=0]
418703 b.b.addr_buf._reset_BXX[0] : 0 [by b.b.addr_buf.reset_bufarray.buf2._y:=1]
[] set Reset 0
418703 Reset : 0
447030 b._reset_B : 1 [by Reset:=0]
447089 b.b.addr_buf.reset_buf._y : 0 [by b._reset_B:=1]
447119 b.b.addr_buf._reset_BX : 1 [by b.b.addr_buf.reset_buf._y:=0]
448586 b.b.addr_buf.reset_bufarray.buf2._y : 0 [by b.b.addr_buf._reset_BX:=1]
508090 b.b.addr_buf._reset_BXX[0] : 1 [by b.b.addr_buf.reset_bufarray.buf2._y:=0]
[] Sending packet in
508090 b.in.d.d[0].t : 1
508090 b.in.d.d[6].t : 1
508090 b.in.d.d[2].t : 1
508090 b.in.d.d[5].t : 1
508090 b.in.d.d[1].t : 1
508090 b.in.d.d[4].t : 1
508090 b.in.d.d[3].t : 1
508091 b.b.addr_buf.t_buf_func[4]._y : 0 [by b.in.d.d[4].t:=1]
508093 b.b.addr_buf.t_buf_func[1]._y : 0 [by b.in.d.d[1].t:=1]
508095 b.b.atree_x[2].in[1] : 1 [by b.b.addr_buf.t_buf_func[1]._y:=0]
508096 b.b.vtree_x.OR2_tf[1]._y : 0 [by b.b.atree_x[2].in[1]:=1]
508102 b.b.addr_buf.vc.OR2_tf[5]._y : 0 [by b.in.d.d[5].t:=1]
508104 b.b.addr_buf.vc.ct.in[5] : 1 [by b.b.addr_buf.vc.OR2_tf[5]._y:=0]
508128 b.b.addr_buf.vc.OR2_tf[4]._y : 0 [by b.in.d.d[4].t:=1]
508133 b.b.addr_buf.t_buf_func[2]._y : 0 [by b.in.d.d[2].t:=1]
508146 b.b.addr_buf.vc.ct.in[4] : 1 [by b.b.addr_buf.vc.OR2_tf[4]._y:=0]
508182 b.b.addr_buf.t_buf_func[3]._y : 0 [by b.in.d.d[3].t:=1]
508217 b.b.addr_buf.t_buf_func[6]._y : 0 [by b.in.d.d[6].t:=1]
508225 b.b.atree_y[8].in[3] : 1 [by b.b.addr_buf.t_buf_func[6]._y:=0]
508252 b.b.atree_x[4].in[2] : 1 [by b.b.addr_buf.t_buf_func[2]._y:=0]
508259 b.b.addr_buf.vc.OR2_tf[2]._y : 0 [by b.in.d.d[2].t:=1]
508264 b.b.addr_buf.vc.ct.in[2] : 1 [by b.b.addr_buf.vc.OR2_tf[2]._y:=0]
508279 b.b.vtree_y.OR2_tf[3]._y : 0 [by b.b.atree_y[8].in[3]:=1]
508323 b.b.addr_buf.vc.OR2_tf[1]._y : 0 [by b.in.d.d[1].t:=1]
508324 b.b.addr_buf.vc.ct.in[1] : 1 [by b.b.addr_buf.vc.OR2_tf[1]._y:=0]
508775 b.b.addr_buf.t_buf_func[0]._y : 0 [by b.in.d.d[0].t:=1]
508913 b.b.atree_x[1].in[0] : 1 [by b.b.addr_buf.t_buf_func[0]._y:=0]
508914 b.b.atree_x[7].and3s[0]._y : 0 [by b.b.atree_x[1].in[0]:=1]
508977 b.b.vtree_x.OR2_tf[0]._y : 0 [by b.b.atree_x[1].in[0]:=1]
508979 b.b.vtree_x.ct.in[0] : 1 [by b.b.vtree_x.OR2_tf[0]._y:=0]
509037 b.outx[7] : 1 [by b.b.atree_x[7].and3s[0]._y:=0]
509346 b.b.vtree_y.ct.in[3] : 1 [by b.b.vtree_y.OR2_tf[3]._y:=0]
509369 b.b.addr_buf.t_buf_func[5]._y : 0 [by b.in.d.d[5].t:=1]
509406 b.b.atree_y[4].in[2] : 1 [by b.b.addr_buf.t_buf_func[5]._y:=0]
509407 b.b.vtree_y.OR2_tf[2]._y : 0 [by b.b.atree_y[4].in[2]:=1]
509416 b.b.vtree_y.ct.in[2] : 1 [by b.b.vtree_y.OR2_tf[2]._y:=0]
509417 b.b.atree_y[14].and2s[1]._y : 0 [by b.b.atree_y[4].in[2]:=1]
509441 b.b.vtree_y.ct.C2Els[1]._y : 0 [by b.b.vtree_y.ct.in[2]:=1]
509457 b.b.atree_y[12].and2s[1]._y : 0 [by b.b.atree_y[4].in[2]:=1]
509549 b.b.atree_y[15].and2s[1]._y : 0 [by b.b.atree_y[4].in[2]:=1]
509597 b.b.vtree_x.ct.in[1] : 1 [by b.b.vtree_x.OR2_tf[1]._y:=0]
509602 b.b.atree_y[12].tmp[5] : 1 [by b.b.atree_y[12].and2s[1]._y:=0]
509848 b.b.atree_y[13].and2s[1]._y : 0 [by b.b.atree_y[4].in[2]:=1]
510078 b.b.atree_y[13].tmp[5] : 1 [by b.b.atree_y[13].and2s[1]._y:=0]
510818 b.b.atree_y[2].in[1] : 1 [by b.b.addr_buf.t_buf_func[4]._y:=0]
511509 b.b.vtree_y.OR2_tf[1]._y : 0 [by b.b.atree_y[2].in[1]:=1]
511523 b.b.vtree_y.ct.in[1] : 1 [by b.b.vtree_y.OR2_tf[1]._y:=0]
512962 b.b.vtree_y.ct.tmp[5] : 1 [by b.b.vtree_y.ct.C2Els[1]._y:=0]
513902 b.b.atree_y[1].in[0] : 1 [by b.b.addr_buf.t_buf_func[3]._y:=0]
513903 b.b.vtree_y.OR2_tf[0]._y : 0 [by b.b.atree_y[1].in[0]:=1]
513904 b.b.vtree_y.ct.in[0] : 1 [by b.b.vtree_y.OR2_tf[0]._y:=0]
513913 b.b.atree_y[11].and2s[0]._y : 0 [by b.b.atree_y[1].in[0]:=1]
514552 b.b.atree_y[11].tmp[4] : 1 [by b.b.atree_y[11].and2s[0]._y:=0]
515445 b.b.atree_y[15].and2s[0]._y : 0 [by b.b.atree_y[1].in[0]:=1]
515513 b.b.atree_y[3].and2s[0]._y : 0 [by b.b.atree_y[1].in[0]:=1]
515645 b.b.atree_y[3].tmp[4] : 1 [by b.b.atree_y[3].and2s[0]._y:=0]
517238 b.b.atree_y[15].tmp[4] : 1 [by b.b.atree_y[15].and2s[0]._y:=0]
519670 b.b.atree_y[14].tmp[5] : 1 [by b.b.atree_y[14].and2s[1]._y:=0]
520405 b.b.vtree_y.ct.C2Els[0]._y : 0 [by b.b.vtree_y.ct.in[0]:=1]
520406 b.b.vtree_y.ct.tmp[4] : 1 [by b.b.vtree_y.ct.C2Els[0]._y:=0]
520423 b.b.vtree_y.ct.C2Els[2]._y : 0 [by b.b.vtree_y.ct.tmp[4]:=1]
520575 b.b.C2el.c2 : 1 [by b.b.vtree_y.ct.C2Els[2]._y:=0]
520842 b.b.addr_buf.vc.OR2_tf[3]._y : 0 [by b.in.d.d[3].t:=1]
523825 b.b.addr_buf.vc.ct.in[3] : 1 [by b.b.addr_buf.vc.OR2_tf[3]._y:=0]
523828 b.b.addr_buf.vc.ct.C2Els[1]._y : 0 [by b.b.addr_buf.vc.ct.in[3]:=1]
524252 b.b.addr_buf.vc.ct.tmp[8] : 1 [by b.b.addr_buf.vc.ct.C2Els[1]._y:=0]
524805 b.b.addr_buf.vc.OR2_tf[6]._y : 0 [by b.in.d.d[6].t:=1]
524811 b.b.addr_buf.vc.ct.in[6] : 1 [by b.b.addr_buf.vc.OR2_tf[6]._y:=0]
525717 b.b.atree_y[15].tmp[5] : 1 [by b.b.atree_y[15].and2s[1]._y:=0]
527399 b.b.addr_buf.vc.ct.C3Els[0]._y : 0 [by b.b.addr_buf.vc.ct.in[6]:=1]
527474 b.b.addr_buf.vc.OR2_tf[0]._y : 0 [by b.in.d.d[0].t:=1]
528178 b.b.atree_y[15].and2s[2]._y : 0 [by b.b.atree_y[15].tmp[5]:=1]
528180 b.outy[15] : 1 [by b.b.atree_y[15].and2s[2]._y:=0]
528229 b.b.addr_buf.vc.ct.tmp[9] : 1 [by b.b.addr_buf.vc.ct.C3Els[0]._y:=0]
531414 b.b.atree_y[7].and2s[0]._y : 0 [by b.b.atree_y[1].in[0]:=1]
531608 b.b.atree_y[7].tmp[4] : 1 [by b.b.atree_y[7].and2s[0]._y:=0]
550406 b.b.addr_buf.vc.ct.in[0] : 1 [by b.b.addr_buf.vc.OR2_tf[0]._y:=0]
551009 b.b.addr_buf.vc.ct.C2Els[0]._y : 0 [by b.b.addr_buf.vc.ct.in[0]:=1]
551147 b.b.addr_buf.vc.ct.tmp[7] : 1 [by b.b.addr_buf.vc.ct.C2Els[0]._y:=0]
551164 b.b.addr_buf.vc.ct.C3Els[1]._y : 0 [by b.b.addr_buf.vc.ct.tmp[7]:=1]
551181 b.b.addr_buf._in_v : 1 [by b.b.addr_buf.vc.ct.C3Els[1]._y:=0]
551607 b.b.addr_buf.in_v_buf._y : 0 [by b.b.addr_buf._in_v:=1]
551608 b.in.v : 1 [by b.b.addr_buf.in_v_buf._y:=0]
558790 b.b.vtree_x.OR2_tf[2]._y : 0 [by b.b.atree_x[4].in[2]:=1]
558791 b.b.vtree_x.ct.in[2] : 1 [by b.b.vtree_x.OR2_tf[2]._y:=0]
559817 b.b.vtree_x.ct.C3Els[0]._y : 0 [by b.b.vtree_x.ct.in[2]:=1]
559818 b.b.C2el.c1 : 1 [by b.b.vtree_x.ct.C3Els[0]._y:=0]
559837 b.b.C2el._y : 0 [by b.b.C2el.c1:=1]
560005 b.b.C2el.y : 1 [by b.b.C2el._y:=0]
560166 b.b.addr_buf.inack_ctl._y : 0 [by b.b.C2el.y:=1]
560339 b.in.a : 1 [by b.b.addr_buf.inack_ctl._y:=0]
560544 b.b.dly.and2[0]._y : 0 [by b.b.C2el.y:=1]
562886 b.b.addr_buf._en : 0 [by b.in.a:=1]
562887 b.b.addr_buf.en_buf_f.buf2._y : 1 [by b.b.addr_buf._en:=0]
562887 b.b.addr_buf.en_buf_t.buf2._y : 1 [by b.b.addr_buf._en:=0]
563094 b.b.addr_buf._en_X_t[0] : 0 [by b.b.addr_buf.en_buf_t.buf2._y:=1]
563277 b.b.addr_buf._en_X_f[0] : 0 [by b.b.addr_buf.en_buf_f.buf2._y:=1]
575605 b.b.dly.dly[0].a : 1 [by b.b.dly.and2[0]._y:=0]
576438 b.b.dly.dly[0]._y : 0 [by b.b.dly.dly[0].a:=1]
576466 b.b.dly.dly[0].__y : 1 [by b.b.dly.dly[0]._y:=0]
576473 b.b.dly.dly[0].___y : 0 [by b.b.dly.dly[0].__y:=1]
576887 b.b.dly.dly[0].y : 1 [by b.b.dly.dly[0].___y:=0]
576891 b.b.dly.mu2[0]._y : 0 [by b.b.dly.dly[0].y:=1]
578670 b.b.dly._a[1] : 1 [by b.b.dly.mu2[0]._y:=0]
601544 b.b.dly.and2[1]._y : 0 [by b.b.dly._a[1]:=1]
601710 b.b.dly.dly[1].a : 1 [by b.b.dly.and2[1]._y:=0]
641580 b.b.dly.dly[1]._y : 0 [by b.b.dly.dly[1].a:=1]
650225 b.b.dly.dly[1].__y : 1 [by b.b.dly.dly[1]._y:=0]
651158 b.b.dly.dly[1].___y : 0 [by b.b.dly.dly[1].__y:=1]
652014 b.b.dly.dly[1].y : 1 [by b.b.dly.dly[1].___y:=0]
652153 b.b.dly.dly[2]._y : 0 [by b.b.dly.dly[1].y:=1]
678362 b.b.dly.dly[2].__y : 1 [by b.b.dly.dly[2]._y:=0]
678557 b.b.dly.dly[2].___y : 0 [by b.b.dly.dly[2].__y:=1]
678559 b.b.dly.dly[2].y : 1 [by b.b.dly.dly[2].___y:=0]
732008 b.b.dly.mu2[1]._y : 0 [by b.b.dly.dly[2].y:=1]
732014 b.b.dly._a[2] : 1 [by b.b.dly.mu2[1]._y:=0]
732268 b.b.dly.mu2[2]._y : 0 [by b.b.dly._a[2]:=1]
732276 b.b.dly._a[3] : 1 [by b.b.dly.mu2[2]._y:=0]
732277 b.b.dly.mu2[3]._y : 0 [by b.b.dly._a[3]:=1]
732283 b.b.dly.out : 1 [by b.b.dly.mu2[3]._y:=0]
783319 b.b.addr_buf._out_a_B : 0 [by b.b.dly.out:=1]
783545 b.b.addr_buf.out_a_B_buf_f.buf2._y : 1 [by b.b.addr_buf._out_a_B:=0]
784364 b.b.addr_buf._out_a_BX_t[0] : 0 [by b.b.addr_buf.out_a_B_buf_f.buf2._y:=1]
784365 b.b.addr_buf.t_buf_func[0]._y : 1 [by b.b.addr_buf._out_a_BX_t[0]:=0]
784366 b.b.addr_buf.t_buf_func[2]._y : 1 [by b.b.addr_buf._out_a_BX_t[0]:=0]
784370 b.b.addr_buf.t_buf_func[1]._y : 1 [by b.b.addr_buf._out_a_BX_t[0]:=0]
784379 b.b.addr_buf.t_buf_func[4]._y : 1 [by b.b.addr_buf._out_a_BX_t[0]:=0]
784458 b.b.atree_x[1].in[0] : 0 [by b.b.addr_buf.t_buf_func[0]._y:=1]
784471 b.b.addr_buf.t_buf_func[6]._y : 1 [by b.b.addr_buf._out_a_BX_t[0]:=0]
784472 b.b.atree_y[8].in[3] : 0 [by b.b.addr_buf.t_buf_func[6]._y:=1]
784473 b.b.atree_y[12].and2s[1]._y : 1 [by b.b.atree_y[8].in[3]:=0]
784473 b.b.vtree_y.OR2_tf[3]._y : 1 [by b.b.atree_y[8].in[3]:=0]
784474 b.b.vtree_y.ct.in[3] : 0 [by b.b.vtree_y.OR2_tf[3]._y:=1]
784479 b.b.atree_y[12].tmp[5] : 0 [by b.b.atree_y[12].and2s[1]._y:=1]
785137 b.b.atree_y[2].in[1] : 0 [by b.b.addr_buf.t_buf_func[4]._y:=1]
785144 b.b.vtree_y.OR2_tf[1]._y : 1 [by b.b.atree_y[2].in[1]:=0]
785159 b.b.atree_y[7].and2s[0]._y : 1 [by b.b.atree_y[2].in[1]:=0]
785172 b.b.atree_y[7].tmp[4] : 0 [by b.b.atree_y[7].and2s[0]._y:=1]
785174 b.b.vtree_x.OR2_tf[0]._y : 1 [by b.b.atree_x[1].in[0]:=0]
785209 b.b.vtree_y.ct.in[1] : 0 [by b.b.vtree_y.OR2_tf[1]._y:=1]
786018 b.b.atree_x[4].in[2] : 0 [by b.b.addr_buf.t_buf_func[2]._y:=1]
786122 b.b.vtree_x.OR2_tf[2]._y : 1 [by b.b.atree_x[4].in[2]:=0]
786163 b.b.vtree_x.ct.in[2] : 0 [by b.b.vtree_x.OR2_tf[2]._y:=1]
786212 b.b.atree_y[15].and2s[1]._y : 1 [by b.b.atree_y[8].in[3]:=0]
786213 b.b.atree_y[15].tmp[5] : 0 [by b.b.atree_y[15].and2s[1]._y:=1]
786214 b.b.atree_y[15].and2s[2]._y : 1 [by b.b.atree_y[15].tmp[5]:=0]
786298 b.b.vtree_x.ct.in[0] : 0 [by b.b.vtree_x.OR2_tf[0]._y:=1]
786409 b.b.addr_buf.out_a_B_buf_t.buf2._y : 1 [by b.b.addr_buf._out_a_B:=0]
787081 b.b.atree_x[7].and3s[0]._y : 1 [by b.b.atree_x[1].in[0]:=0]
787082 b.outx[7] : 0 [by b.b.atree_x[7].and3s[0]._y:=1]
787926 b.b.addr_buf.t_buf_func[3]._y : 1 [by b.b.addr_buf._out_a_BX_t[0]:=0]
788309 b.b.atree_x[2].in[1] : 0 [by b.b.addr_buf.t_buf_func[1]._y:=1]
791445 b.b.vtree_x.OR2_tf[1]._y : 1 [by b.b.atree_x[2].in[1]:=0]
792271 b.b.vtree_x.ct.in[1] : 0 [by b.b.vtree_x.OR2_tf[1]._y:=1]
794104 b.b.vtree_x.ct.C3Els[0]._y : 1 [by b.b.vtree_x.ct.in[1]:=0]
796624 b.b.atree_y[13].and2s[1]._y : 1 [by b.b.atree_y[8].in[3]:=0]
796682 b.b.atree_y[13].tmp[5] : 0 [by b.b.atree_y[13].and2s[1]._y:=1]
799581 b.b.addr_buf._out_a_BX_f[0] : 0 [by b.b.addr_buf.out_a_B_buf_t.buf2._y:=1]
805165 b.b.addr_buf.t_buf_func[5]._y : 1 [by b.b.addr_buf._out_a_BX_t[0]:=0]
806736 b.b.atree_y[3].and2s[0]._y : 1 [by b.b.atree_y[2].in[1]:=0]
807608 b.b.atree_y[4].in[2] : 0 [by b.b.addr_buf.t_buf_func[5]._y:=1]
807645 b.b.atree_y[11].and2s[0]._y : 1 [by b.b.atree_y[2].in[1]:=0]
807659 b.b.atree_y[11].tmp[4] : 0 [by b.b.atree_y[11].and2s[0]._y:=1]
807751 b.b.atree_y[1].in[0] : 0 [by b.b.addr_buf.t_buf_func[3]._y:=1]
808107 b.b.vtree_y.OR2_tf[0]._y : 1 [by b.b.atree_y[1].in[0]:=0]
810652 b.b.C2el.c1 : 0 [by b.b.vtree_x.ct.C3Els[0]._y:=1]
812671 b.b.atree_y[14].and2s[1]._y : 1 [by b.b.atree_y[8].in[3]:=0]
812776 b.b.atree_y[14].tmp[5] : 0 [by b.b.atree_y[14].and2s[1]._y:=1]
823509 b.b.atree_y[3].tmp[4] : 0 [by b.b.atree_y[3].and2s[0]._y:=1]
824626 b.b.atree_y[15].and2s[0]._y : 1 [by b.b.atree_y[2].in[1]:=0]
824735 b.b.atree_y[15].tmp[4] : 0 [by b.b.atree_y[15].and2s[0]._y:=1]
843945 b.b.vtree_y.ct.in[0] : 0 [by b.b.vtree_y.OR2_tf[0]._y:=1]
843946 b.b.vtree_y.ct.C2Els[0]._y : 1 [by b.b.vtree_y.ct.in[0]:=0]
843955 b.b.vtree_y.ct.tmp[4] : 0 [by b.b.vtree_y.ct.C2Els[0]._y:=1]
844807 b.b.vtree_y.OR2_tf[2]._y : 1 [by b.b.atree_y[4].in[2]:=0]
850592 b.outy[15] : 0 [by b.b.atree_y[15].and2s[2]._y:=1]
882760 b.b.vtree_y.ct.in[2] : 0 [by b.b.vtree_y.OR2_tf[2]._y:=1]
882761 b.b.vtree_y.ct.C2Els[1]._y : 1 [by b.b.vtree_y.ct.in[2]:=0]
919155 b.b.vtree_y.ct.tmp[5] : 0 [by b.b.vtree_y.ct.C2Els[1]._y:=1]
919156 b.b.vtree_y.ct.C2Els[2]._y : 1 [by b.b.vtree_y.ct.tmp[5]:=0]
922245 b.b.C2el.c2 : 0 [by b.b.vtree_y.ct.C2Els[2]._y:=1]
970971 b.b.C2el._y : 1 [by b.b.C2el.c2:=0]
971721 b.b.C2el.y : 0 [by b.b.C2el._y:=1]
978476 b.b.dly.and2[0]._y : 1 [by b.b.C2el.y:=0]
978527 b.b.dly.dly[0].a : 0 [by b.b.dly.and2[0]._y:=1]
978537 b.b.dly.dly[0]._y : 1 [by b.b.dly.dly[0].a:=0]
978857 b.b.dly.dly[0].__y : 0 [by b.b.dly.dly[0]._y:=1]
986439 b.b.dly.dly[0].___y : 1 [by b.b.dly.dly[0].__y:=0]
986440 b.b.dly.dly[0].y : 0 [by b.b.dly.dly[0].___y:=1]
986441 b.b.dly.mu2[0]._y : 1 [by b.b.dly.dly[0].y:=0]
988171 b.b.dly._a[1] : 0 [by b.b.dly.mu2[0]._y:=1]
989858 b.b.dly.and2[1]._y : 1 [by b.b.dly._a[1]:=0]
989873 b.b.dly.dly[1].a : 0 [by b.b.dly.and2[1]._y:=1]
1014147 b.b.dly.dly[1]._y : 1 [by b.b.dly.dly[1].a:=0]
1014601 b.b.dly.dly[1].__y : 0 [by b.b.dly.dly[1]._y:=1]
1014917 b.b.dly.dly[1].___y : 1 [by b.b.dly.dly[1].__y:=0]
1014918 b.b.dly.dly[1].y : 0 [by b.b.dly.dly[1].___y:=1]
1015301 b.b.dly.dly[2]._y : 1 [by b.b.dly.dly[1].y:=0]
1022764 b.b.dly.dly[2].__y : 0 [by b.b.dly.dly[2]._y:=1]
1022784 b.b.dly.dly[2].___y : 1 [by b.b.dly.dly[2].__y:=0]
1024107 b.b.dly.dly[2].y : 0 [by b.b.dly.dly[2].___y:=1]
1024194 b.b.dly.mu2[1]._y : 1 [by b.b.dly.dly[2].y:=0]
1030916 b.b.dly._a[2] : 0 [by b.b.dly.mu2[1]._y:=1]
1030928 b.b.dly.mu2[2]._y : 1 [by b.b.dly._a[2]:=0]
1031073 b.b.dly._a[3] : 0 [by b.b.dly.mu2[2]._y:=1]
1031974 b.b.dly.mu2[3]._y : 1 [by b.b.dly._a[3]:=0]
1033323 b.b.dly.out : 0 [by b.b.dly.mu2[3]._y:=1]
1033542 b.b.addr_buf._out_a_B : 1 [by b.b.dly.out:=0]
1041873 b.b.addr_buf.out_a_B_buf_t.buf2._y : 0 [by b.b.addr_buf._out_a_B:=1]
1041891 b.b.addr_buf._out_a_BX_f[0] : 1 [by b.b.addr_buf.out_a_B_buf_t.buf2._y:=0]
1065123 b.b.addr_buf.out_a_B_buf_f.buf2._y : 0 [by b.b.addr_buf._out_a_B:=1]
1067317 b.b.addr_buf._out_a_BX_t[0] : 1 [by b.b.addr_buf.out_a_B_buf_f.buf2._y:=0]

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,47 @@
/*************************************************************************
*
* This file is part of ACT dataflow neuro library.
* It's the testing facility for cell_lib_std.act
*
* Copyright (c) 2022 University of Groningen - Ole Richter
* Copyright (c) 2022 University of Groningen - Hugh Greatorex
* Copyright (c) 2022 University of Groningen - Michele Mastella
* Copyright (c) 2022 University of Groningen - Madison Cotteret
*
* This source describes Open Hardware and is licensed under the CERN-OHL-W v2 or later
*
* You may redistribute and modify this documentation and make products
* using it under the terms of the CERN-OHL-W v2 (https:/cern.ch/cern-ohl).
* This documentation is distributed WITHOUT ANY EXPRESS OR IMPLIED
* WARRANTY, INCLUDING OF MERCHANTABILITY, SATISFACTORY QUALITY
* AND FITNESS FOR A PARTICULAR PURPOSE. Please see the CERN-OHL-W v2
* for applicable conditions.
*
* Source location: https://git.web.rug.nl/bics/actlib_dataflow_neuro
*
* As per CERN-OHL-W v2 section 4.1, should You produce hardware based on
* these sources, You must maintain the Source Location visible in its
* documentation.
*
**************************************************************************
*/
import "../../dataflow_neuro/coders.act";
import globals;
open tmpl::dataflow_neuro;
defproc decoder_2d_dly_8_16(avMx1of2<3+4> in; bool? outx[8], outy[16], dly_cfg[4])
{
bool _reset_B;
prs {
Reset => _reset_B-
}
decoder_2d_dly<3,4,8,16,4> b(.in = in, .outx = outx, .outy = outy, .dly_cfg = dly_cfg);
b.supply.vdd = Vdd;
b.supply.vss = GND;
b.reset_B = _reset_B;
}
decoder_2d_dly_8_16 b;

View File

@ -0,0 +1,59 @@
watchall
set-qdi-channel-neutral "b.in" 7
set b.b.addr_buf.out.a 0
set Reset 0
# Set delay config lines
set b.dly_cfg[0] 1
set b.dly_cfg[1] 1
set b.dly_cfg[2] 0
set b.dly_cfg[3] 0
cycle
system "echo '[] set Reset 1'"
set Reset 1
cycle
system "echo '[] set Reset 0'"
set Reset 0
mode run
cycle
system "echo '[] Sending packet in'"
set-qdi-channel-valid "b.in" 7 127
cycle
assert b.in.a 1
assert b.in.v 1
# system "echo '[]' Setting ack from DLY high"
# set b.b.addr_buf.out.a 1
cycle
assert b.outx[0] 0
assert b.outx[1] 0
assert b.outx[2] 0
assert b.outx[3] 0
assert b.outx[4] 0
assert b.outx[5] 0
assert b.outx[6] 0
assert b.outx[7] 0
assert b.outy[0] 0
assert b.outy[1] 0
assert b.outy[2] 0
assert b.outy[3] 0
assert b.outy[4] 0
assert b.outy[5] 0
assert b.outy[6] 0
assert b.outy[7] 0
assert b.outy[8] 0
assert b.outy[9] 0
assert b.outy[10] 0
assert b.outy[11] 0
assert b.outy[12] 0
assert b.outy[13] 0
assert b.outy[14] 0
assert b.outy[15] 0

View File

@ -0,0 +1,351 @@
t.de.dly.dly[2].y t.de.dly.dly[4].y t.de.addr_buf._in_v t.de.dly._a[2] t.in.d.d[1].f t.de.dly.mu2[3].b t.de.dly.dly[3].y t.de.dly.dly[7].y t.de.dly.dly[3].___y t.in.d.d[0].t t.dly_cfg[1] t.de.dly.dly[13].__y t.de.dly.dly[1]._y t.de.dly.dly[13]._y t.de.addr_buf._out_a_BX_t[0] t.de.dly.dly[7].a t.de.dly.mu2[3]._y t.de.dly.dly[3].a t.in.d.d[0].f t.de.dly.dly[5]._y t.de.dly.dly[7].__y t.de.addr_buf._out_a_B t.de.dly.dly[3].__y t.dly_cfg[2] t.de.dly.dly[2].__y t.de.dly.dly[8].___y t.de.addr_buf._out_a_BX_f[0] t.de.addr_buf.vc.ct.in[0] t.de.dly.dly[13].___y t.de.dly.dly[1].a t.in.d.d[1].t t.in.v t.de.dly.dly[5].__y t.in.d.d[2].t t.de.addr_buf.in_v_buf._y t.de.dly.dly[9].y t.dly_cfg[0] t.in.d.d[2].f t.de.dly.out t.de.dly.mu2[2]._y t.dly_cfg[3] t.de.dly.dly[10]._y t.de.dly.dly[9].__y t.de.dly.and2[3]._y t.de.dly._a[3] t.de.addr_buf.vc.OR2_tf[1]._y t.de.addr_buf.vc.ct.in[2] t.de.dly.dly[5].y t.de.dly.dly[11].___y t.de.dly.dly[4].__y t.de.dly.and2[1]._y t.de.dly.dly[6].___y t.de.dly.dly[10].y t.de.dly.dly[11]._y t.de.dly.dly[10].__y t.de.dly.dly[12].__y t.de.dly.dly[1].__y t.de.addr_buf.vc.ct.in[1] t.de.addr_buf.out_a_B_buf_f.buf1._y t.de.dly._a[1] t.de.dly.dly[14].__y t.de.dly.dly[6].y t.de.dly.dly[11].y t.de.dly.dly[7]._y t.de.addr_buf.vc.ct.C3Els[0]._y t.de.dly.mu2[1]._y t.de.dly.dly[9]._y t.de.dly.dly[5].___y t.de.dly.dly[14]._y t.de.dly.and2[2]._y t.de.dly.dly[8].y t.de.dly.dly[9].___y t.de.dly.mu2[0]._s t.de.dly.mu2[1]._s t.de.dly.dly[2]._y t.de.dly.dly[8].__y t.de.dly.dly[12].___y t.de.dly.dly[13].y t.de.dly.dly[10].___y t.de.dly.dly[1].y t.de.dly.dly[1].___y t.de.dly.dly[2].___y t.de.addr_buf.out_a_B_buf_t.buf1._y t.de.dly.dly[4]._y t.de.dly.dly[8]._y t.de.dly.dly[4].___y t.de.dly.dly[12].y t.de.dly.dly[6].__y t.de.dly.dly[7].___y t.de.addr_buf.vc.OR2_tf[2]._y t.de.dly.dly[3]._y t.de.dly.dly[14].___y t.de.dly.mu2[3]._s t.de.dly.dly[11].__y t.de.dly.dly[6]._y t.de.addr_buf.vc.OR2_tf[0]._y t.de.dly.mu2[2]._s t.de.dly.mu2[0]._y t.de.dly.dly[12]._y
244317 t.in.d.d[0].f : 0
244317 t.dly_cfg[3] : 1
244317 t.dly_cfg[2] : 1
244317 t.in.d.d[1].f : 0
244317 Reset : 0
244317 t.dly_cfg[1] : 1
244317 t.in.d.d[2].t : 0
244317 t.in.d.d[0].t : 0
244317 t.dly_cfg[0] : 1
244317 t.in.d.d[2].f : 0
244317 t.in.d.d[1].t : 0
244318 t._reset_B : 1 [by Reset:=0]
244404 t.de.dly.mu2[3]._s : 0 [by t.dly_cfg[3]:=1]
244495 t.de.addr_buf.vc.OR2_tf[1]._y : 1 [by t.in.d.d[1].t:=0]
244611 t.de.dly.mu2[2]._s : 0 [by t.dly_cfg[2]:=1]
244659 t.de.addr_buf.vc.ct.in[1] : 0 [by t.de.addr_buf.vc.OR2_tf[1]._y:=1]
244907 t.de.addr_buf.vc.OR2_tf[2]._y : 1 [by t.in.d.d[2].f:=0]
245121 t.de.addr_buf.reset_buf._y : 0 [by t._reset_B:=1]
245143 t.de.addr_buf._reset_BX : 1 [by t.de.addr_buf.reset_buf._y:=0]
245526 t.de.dly.mu2[0]._s : 0 [by t.dly_cfg[0]:=1]
245990 t.de.addr_buf.reset_bufarray.buf1._y : 0 [by t.de.addr_buf._reset_BX:=1]
246123 t.de.dly.mu2[1]._s : 0 [by t.dly_cfg[1]:=1]
246123 t.de.addr_buf._reset_BXX[0] : 1 [by t.de.addr_buf.reset_bufarray.buf1._y:=0]
246324 t.de.addr_buf.vc.OR2_tf[0]._y : 1 [by t.in.d.d[0].t:=0]
247102 t.de.addr_buf.vc.ct.in[2] : 0 [by t.de.addr_buf.vc.OR2_tf[2]._y:=1]
261986 t.de.addr_buf.vc.ct.in[0] : 0 [by t.de.addr_buf.vc.OR2_tf[0]._y:=1]
262345 t.de.addr_buf.vc.ct.C3Els[0]._y : 1 [by t.de.addr_buf.vc.ct.in[0]:=0]
275654 t.de.dly.mu2[0]._y : 1 [by t.de.dly.mu2[0]._s:=0]
275875 t.de.dly._a[1] : 0 [by t.de.dly.mu2[0]._y:=1]
275882 t.de.dly.and2[1]._y : 1 [by t.de.dly._a[1]:=0]
275912 t.de.dly.dly[1].a : 0 [by t.de.dly.and2[1]._y:=1]
276461 t.de.addr_buf._in_v : 0 [by t.de.addr_buf.vc.ct.C3Els[0]._y:=1]
282625 t.de.dly.dly[1]._y : 1 [by t.de.dly.dly[1].a:=0]
282716 t.de.dly.dly[1].__y : 0 [by t.de.dly.dly[1]._y:=1]
284905 t.de.dly.dly[1].___y : 1 [by t.de.dly.dly[1].__y:=0]
284912 t.de.dly.dly[1].y : 0 [by t.de.dly.dly[1].___y:=1]
287699 t.de.dly.dly[2]._y : 1 [by t.de.dly.dly[1].y:=0]
287805 t.de.dly.dly[2].__y : 0 [by t.de.dly.dly[2]._y:=1]
287883 t.de.dly.dly[2].___y : 1 [by t.de.dly.dly[2].__y:=0]
288158 t.de.dly.dly[2].y : 0 [by t.de.dly.dly[2].___y:=1]
307154 t.de.dly.mu2[1]._y : 1 [by t.de.dly.dly[2].y:=0]
307609 t.de.dly._a[2] : 0 [by t.de.dly.mu2[1]._y:=1]
307621 t.de.dly.and2[2]._y : 1 [by t.de.dly._a[2]:=0]
308025 t.de.dly.dly[3].a : 0 [by t.de.dly.and2[2]._y:=1]
308037 t.de.dly.dly[3]._y : 1 [by t.de.dly.dly[3].a:=0]
313953 t.de.dly.dly[3].__y : 0 [by t.de.dly.dly[3]._y:=1]
318229 t.de.dly.dly[3].___y : 1 [by t.de.dly.dly[3].__y:=0]
321128 t.de.dly.dly[3].y : 0 [by t.de.dly.dly[3].___y:=1]
325423 t.de.dly.dly[4]._y : 1 [by t.de.dly.dly[3].y:=0]
325425 t.de.dly.dly[4].__y : 0 [by t.de.dly.dly[4]._y:=1]
329960 t.de.dly.dly[4].___y : 1 [by t.de.dly.dly[4].__y:=0]
331209 t.de.dly.dly[4].y : 0 [by t.de.dly.dly[4].___y:=1]
333922 t.de.addr_buf.in_v_buf._y : 1 [by t.de.addr_buf._in_v:=0]
334088 t.in.v : 0 [by t.de.addr_buf.in_v_buf._y:=1]
334708 t.de.dly.dly[5]._y : 1 [by t.de.dly.dly[4].y:=0]
334783 t.de.dly.dly[5].__y : 0 [by t.de.dly.dly[5]._y:=1]
335128 t.de.dly.dly[5].___y : 1 [by t.de.dly.dly[5].__y:=0]
335266 t.de.dly.dly[5].y : 0 [by t.de.dly.dly[5].___y:=1]
340529 t.de.dly.dly[6]._y : 1 [by t.de.dly.dly[5].y:=0]
340531 t.de.dly.dly[6].__y : 0 [by t.de.dly.dly[6]._y:=1]
384448 t.de.dly.dly[6].___y : 1 [by t.de.dly.dly[6].__y:=0]
384449 t.de.dly.dly[6].y : 0 [by t.de.dly.dly[6].___y:=1]
384997 t.de.dly.mu2[2]._y : 1 [by t.de.dly.dly[6].y:=0]
385008 t.de.dly._a[3] : 0 [by t.de.dly.mu2[2]._y:=1]
385378 t.de.dly.and2[3]._y : 1 [by t.de.dly._a[3]:=0]
385445 t.de.dly.dly[7].a : 0 [by t.de.dly.and2[3]._y:=1]
388086 t.de.dly.dly[7]._y : 1 [by t.de.dly.dly[7].a:=0]
388102 t.de.dly.dly[7].__y : 0 [by t.de.dly.dly[7]._y:=1]
392664 t.de.dly.dly[7].___y : 1 [by t.de.dly.dly[7].__y:=0]
393192 t.de.dly.dly[7].y : 0 [by t.de.dly.dly[7].___y:=1]
395627 t.de.dly.dly[8]._y : 1 [by t.de.dly.dly[7].y:=0]
422507 t.de.dly.dly[8].__y : 0 [by t.de.dly.dly[8]._y:=1]
446432 t.de.dly.dly[8].___y : 1 [by t.de.dly.dly[8].__y:=0]
459473 t.de.dly.dly[8].y : 0 [by t.de.dly.dly[8].___y:=1]
459475 t.de.dly.dly[9]._y : 1 [by t.de.dly.dly[8].y:=0]
520433 t.de.dly.dly[9].__y : 0 [by t.de.dly.dly[9]._y:=1]
520436 t.de.dly.dly[9].___y : 1 [by t.de.dly.dly[9].__y:=0]
520465 t.de.dly.dly[9].y : 0 [by t.de.dly.dly[9].___y:=1]
520782 t.de.dly.dly[10]._y : 1 [by t.de.dly.dly[9].y:=0]
522383 t.de.dly.dly[10].__y : 0 [by t.de.dly.dly[10]._y:=1]
522536 t.de.dly.dly[10].___y : 1 [by t.de.dly.dly[10].__y:=0]
522580 t.de.dly.dly[10].y : 0 [by t.de.dly.dly[10].___y:=1]
525341 t.de.dly.dly[11]._y : 1 [by t.de.dly.dly[10].y:=0]
539024 t.de.dly.dly[11].__y : 0 [by t.de.dly.dly[11]._y:=1]
539025 t.de.dly.dly[11].___y : 1 [by t.de.dly.dly[11].__y:=0]
539242 t.de.dly.dly[11].y : 0 [by t.de.dly.dly[11].___y:=1]
539264 t.de.dly.dly[12]._y : 1 [by t.de.dly.dly[11].y:=0]
539265 t.de.dly.dly[12].__y : 0 [by t.de.dly.dly[12]._y:=1]
540846 t.de.dly.dly[12].___y : 1 [by t.de.dly.dly[12].__y:=0]
550191 t.de.dly.dly[12].y : 0 [by t.de.dly.dly[12].___y:=1]
550350 t.de.dly.dly[13]._y : 1 [by t.de.dly.dly[12].y:=0]
570026 t.de.dly.dly[13].__y : 0 [by t.de.dly.dly[13]._y:=1]
571313 t.de.dly.dly[13].___y : 1 [by t.de.dly.dly[13].__y:=0]
573545 t.de.dly.dly[13].y : 0 [by t.de.dly.dly[13].___y:=1]
573690 t.de.dly.dly[14]._y : 1 [by t.de.dly.dly[13].y:=0]
576522 t.de.dly.dly[14].__y : 0 [by t.de.dly.dly[14]._y:=1]
582876 t.de.dly.dly[14].___y : 1 [by t.de.dly.dly[14].__y:=0]
582877 t.de.dly.mu2[3].b : 0 [by t.de.dly.dly[14].___y:=1]
622161 t.de.dly.mu2[3]._y : 1 [by t.de.dly.mu2[3].b:=0]
622323 t.de.dly.out : 0 [by t.de.dly.mu2[3]._y:=1]
629692 t.de.addr_buf._out_a_B : 1 [by t.de.dly.out:=0]
629699 t.de.addr_buf.out_a_B_buf_f.buf1._y : 0 [by t.de.addr_buf._out_a_B:=1]
629706 t.de.addr_buf.out_a_B_buf_t.buf1._y : 0 [by t.de.addr_buf._out_a_B:=1]
629859 t.de.addr_buf._out_a_BX_t[0] : 1 [by t.de.addr_buf.out_a_B_buf_f.buf1._y:=0]
651263 t.de.addr_buf._out_a_BX_f[0] : 1 [by t.de.addr_buf.out_a_B_buf_t.buf1._y:=0]
[] set Reset 1
651263 Reset : 1
651264 t._reset_B : 0 [by Reset:=1]
651265 t.de.addr_buf.reset_buf._y : 1 [by t._reset_B:=0]
651266 t.de.addr_buf._reset_BX : 0 [by t.de.addr_buf.reset_buf._y:=1]
653509 t.de.addr_buf.reset_bufarray.buf1._y : 1 [by t.de.addr_buf._reset_BX:=0]
653696 t.de.addr_buf._reset_BXX[0] : 0 [by t.de.addr_buf.reset_bufarray.buf1._y:=1]
[] set Reset 0
653696 Reset : 0
653697 t._reset_B : 1 [by Reset:=0]
657879 t.de.addr_buf.reset_buf._y : 0 [by t._reset_B:=1]
692661 t.de.addr_buf._reset_BX : 1 [by t.de.addr_buf.reset_buf._y:=0]
692662 t.de.addr_buf.reset_bufarray.buf1._y : 0 [by t.de.addr_buf._reset_BX:=1]
693515 t.de.addr_buf._reset_BXX[0] : 1 [by t.de.addr_buf.reset_bufarray.buf1._y:=0]
[] Sending packet in
693515 t.in.d.d[0].t : 1
693515 t.in.d.d[2].t : 1
693515 t.in.d.d[1].t : 1
693516 t.de.addr_buf.vc.OR2_tf[2]._y : 0 [by t.in.d.d[2].t:=1]
693519 t.de.addr_buf.vc.ct.in[2] : 1 [by t.de.addr_buf.vc.OR2_tf[2]._y:=0]
693520 t.de.addr_buf.vc.OR2_tf[0]._y : 0 [by t.in.d.d[0].t:=1]
693532 t.de.addr_buf.t_buf_func[2]._y : 0 [by t.in.d.d[2].t:=1]
694406 t.de.addr_buf.t_buf_func[0]._y : 0 [by t.in.d.d[0].t:=1]
694407 t.de.atree_x[1].in[0] : 1 [by t.de.addr_buf.t_buf_func[0]._y:=0]
694449 t.de.atree_x[1].b._y : 0 [by t.de.atree_x[1].in[0]:=1]
694461 t.de.addr_buf.vc.ct.in[0] : 1 [by t.de.addr_buf.vc.OR2_tf[0]._y:=0]
696088 t.de.addr_buf.vc.OR2_tf[1]._y : 0 [by t.in.d.d[1].t:=1]
696183 t.de.addr_buf.vc.ct.in[1] : 1 [by t.de.addr_buf.vc.OR2_tf[1]._y:=0]
696518 t.de.addr_buf.vc.ct.C3Els[0]._y : 0 [by t.de.addr_buf.vc.ct.in[1]:=1]
696526 t.de.addr_buf._in_v : 1 [by t.de.addr_buf.vc.ct.C3Els[0]._y:=0]
696560 t.de.addr_buf.in_v_buf._y : 0 [by t.de.addr_buf._in_v:=1]
697224 t.de.vtree_x.OR2_tf[0]._y : 0 [by t.de.atree_x[1].in[0]:=1]
698142 t.de.vtree_x.ct.in[0] : 1 [by t.de.vtree_x.OR2_tf[0]._y:=0]
698146 t.de.vtree_x.ct.b._y : 0 [by t.de.vtree_x.ct.in[0]:=1]
701876 t.de.addr_buf.t_buf_func[1]._y : 0 [by t.in.d.d[1].t:=1]
704274 t.de.atree_y[1].in[0] : 1 [by t.de.addr_buf.t_buf_func[1]._y:=0]
707489 t.de.vtree_y.OR2_tf[0]._y : 0 [by t.de.atree_y[1].in[0]:=1]
708182 t.ag.inx[1] : 1 [by t.de.atree_x[1].b._y:=0]
710447 t.in.v : 1 [by t.de.addr_buf.in_v_buf._y:=0]
744524 t.de.C2el.c1 : 1 [by t.de.vtree_x.ct.b._y:=0]
752494 t.de.atree_y[2].in[1] : 1 [by t.de.addr_buf.t_buf_func[2]._y:=0]
752497 t.de.vtree_y.OR2_tf[1]._y : 0 [by t.de.atree_y[2].in[1]:=1]
752542 t.de.atree_y[3].and2s[0]._y : 0 [by t.de.atree_y[2].in[1]:=1]
752675 t.de.vtree_y.ct.in[1] : 1 [by t.de.vtree_y.OR2_tf[1]._y:=0]
754608 t.de.vtree_y.ct.in[0] : 1 [by t.de.vtree_y.OR2_tf[0]._y:=0]
766507 t.de.vtree_y.ct.C2Els[0]._y : 0 [by t.de.vtree_y.ct.in[0]:=1]
772458 t.de.C2el.c2 : 1 [by t.de.vtree_y.ct.C2Els[0]._y:=0]
773519 t.ag.iny[3] : 1 [by t.de.atree_y[3].and2s[0]._y:=0]
774346 t.ag.ands[7]._y : 0 [by t.ag.iny[3]:=1]
774519 t.out[7] : 1 [by t.ag.ands[7]._y:=0]
811943 t.de.C2el._y : 0 [by t.de.C2el.c2:=1]
812127 t.de.C2el.y : 1 [by t.de.C2el._y:=0]
812128 t.de.dly.and2[0]._y : 0 [by t.de.C2el.y:=1]
812132 t.de.dly.dly[0].a : 1 [by t.de.dly.and2[0]._y:=0]
812200 t.de.addr_buf.inack_ctl._y : 0 [by t.de.C2el.y:=1]
812296 t.in.a : 1 [by t.de.addr_buf.inack_ctl._y:=0]
812432 t.de.addr_buf._en : 0 [by t.in.a:=1]
812433 t.de.addr_buf.en_buf_f.buf1._y : 1 [by t.de.addr_buf._en:=0]
812674 t.de.addr_buf._en_X_f[0] : 0 [by t.de.addr_buf.en_buf_f.buf1._y:=1]
831478 t.de.addr_buf.en_buf_t.buf1._y : 1 [by t.de.addr_buf._en:=0]
835437 t.de.addr_buf._en_X_t[0] : 0 [by t.de.addr_buf.en_buf_t.buf1._y:=1]
849420 t.de.dly.dly[0]._y : 0 [by t.de.dly.dly[0].a:=1]
849432 t.de.dly.dly[0].__y : 1 [by t.de.dly.dly[0]._y:=0]
853332 t.de.dly.dly[0].___y : 0 [by t.de.dly.dly[0].__y:=1]
854361 t.de.dly.dly[0].y : 1 [by t.de.dly.dly[0].___y:=0]
854362 t.de.dly.mu2[0]._y : 0 [by t.de.dly.dly[0].y:=1]
854418 t.de.dly._a[1] : 1 [by t.de.dly.mu2[0]._y:=0]
899424 t.de.dly.and2[1]._y : 0 [by t.de.dly._a[1]:=1]
899425 t.de.dly.dly[1].a : 1 [by t.de.dly.and2[1]._y:=0]
899462 t.de.dly.dly[1]._y : 0 [by t.de.dly.dly[1].a:=1]
922837 t.de.dly.dly[1].__y : 1 [by t.de.dly.dly[1]._y:=0]
922838 t.de.dly.dly[1].___y : 0 [by t.de.dly.dly[1].__y:=1]
926402 t.de.dly.dly[1].y : 1 [by t.de.dly.dly[1].___y:=0]
928094 t.de.dly.dly[2]._y : 0 [by t.de.dly.dly[1].y:=1]
928107 t.de.dly.dly[2].__y : 1 [by t.de.dly.dly[2]._y:=0]
945091 t.de.dly.dly[2].___y : 0 [by t.de.dly.dly[2].__y:=1]
945448 t.de.dly.dly[2].y : 1 [by t.de.dly.dly[2].___y:=0]
945473 t.de.dly.mu2[1]._y : 0 [by t.de.dly.dly[2].y:=1]
945494 t.de.dly._a[2] : 1 [by t.de.dly.mu2[1]._y:=0]
945495 t.de.dly.and2[2]._y : 0 [by t.de.dly._a[2]:=1]
955143 t.de.dly.dly[3].a : 1 [by t.de.dly.and2[2]._y:=0]
955144 t.de.dly.dly[3]._y : 0 [by t.de.dly.dly[3].a:=1]
955145 t.de.dly.dly[3].__y : 1 [by t.de.dly.dly[3]._y:=0]
955306 t.de.dly.dly[3].___y : 0 [by t.de.dly.dly[3].__y:=1]
956343 t.de.dly.dly[3].y : 1 [by t.de.dly.dly[3].___y:=0]
956348 t.de.dly.dly[4]._y : 0 [by t.de.dly.dly[3].y:=1]
956929 t.de.dly.dly[4].__y : 1 [by t.de.dly.dly[4]._y:=0]
957337 t.de.dly.dly[4].___y : 0 [by t.de.dly.dly[4].__y:=1]
957348 t.de.dly.dly[4].y : 1 [by t.de.dly.dly[4].___y:=0]
958395 t.de.dly.dly[5]._y : 0 [by t.de.dly.dly[4].y:=1]
958409 t.de.dly.dly[5].__y : 1 [by t.de.dly.dly[5]._y:=0]
958427 t.de.dly.dly[5].___y : 0 [by t.de.dly.dly[5].__y:=1]
958431 t.de.dly.dly[5].y : 1 [by t.de.dly.dly[5].___y:=0]
958535 t.de.dly.dly[6]._y : 0 [by t.de.dly.dly[5].y:=1]
989979 t.de.dly.dly[6].__y : 1 [by t.de.dly.dly[6]._y:=0]
991183 t.de.dly.dly[6].___y : 0 [by t.de.dly.dly[6].__y:=1]
999638 t.de.dly.dly[6].y : 1 [by t.de.dly.dly[6].___y:=0]
999866 t.de.dly.mu2[2]._y : 0 [by t.de.dly.dly[6].y:=1]
1000709 t.de.dly._a[3] : 1 [by t.de.dly.mu2[2]._y:=0]
1002168 t.de.dly.and2[3]._y : 0 [by t.de.dly._a[3]:=1]
1002238 t.de.dly.dly[7].a : 1 [by t.de.dly.and2[3]._y:=0]
1052660 t.de.dly.dly[7]._y : 0 [by t.de.dly.dly[7].a:=1]
1052671 t.de.dly.dly[7].__y : 1 [by t.de.dly.dly[7]._y:=0]
1052674 t.de.dly.dly[7].___y : 0 [by t.de.dly.dly[7].__y:=1]
1052728 t.de.dly.dly[7].y : 1 [by t.de.dly.dly[7].___y:=0]
1053876 t.de.dly.dly[8]._y : 0 [by t.de.dly.dly[7].y:=1]
1055037 t.de.dly.dly[8].__y : 1 [by t.de.dly.dly[8]._y:=0]
1063689 t.de.dly.dly[8].___y : 0 [by t.de.dly.dly[8].__y:=1]
1063770 t.de.dly.dly[8].y : 1 [by t.de.dly.dly[8].___y:=0]
1074847 t.de.dly.dly[9]._y : 0 [by t.de.dly.dly[8].y:=1]
1092830 t.de.dly.dly[9].__y : 1 [by t.de.dly.dly[9]._y:=0]
1092922 t.de.dly.dly[9].___y : 0 [by t.de.dly.dly[9].__y:=1]
1101233 t.de.dly.dly[9].y : 1 [by t.de.dly.dly[9].___y:=0]
1102977 t.de.dly.dly[10]._y : 0 [by t.de.dly.dly[9].y:=1]
1103590 t.de.dly.dly[10].__y : 1 [by t.de.dly.dly[10]._y:=0]
1117612 t.de.dly.dly[10].___y : 0 [by t.de.dly.dly[10].__y:=1]
1117657 t.de.dly.dly[10].y : 1 [by t.de.dly.dly[10].___y:=0]
1118654 t.de.dly.dly[11]._y : 0 [by t.de.dly.dly[10].y:=1]
1120303 t.de.dly.dly[11].__y : 1 [by t.de.dly.dly[11]._y:=0]
1120828 t.de.dly.dly[11].___y : 0 [by t.de.dly.dly[11].__y:=1]
1121728 t.de.dly.dly[11].y : 1 [by t.de.dly.dly[11].___y:=0]
1121780 t.de.dly.dly[12]._y : 0 [by t.de.dly.dly[11].y:=1]
1121787 t.de.dly.dly[12].__y : 1 [by t.de.dly.dly[12]._y:=0]
1137399 t.de.dly.dly[12].___y : 0 [by t.de.dly.dly[12].__y:=1]
1143866 t.de.dly.dly[12].y : 1 [by t.de.dly.dly[12].___y:=0]
1143868 t.de.dly.dly[13]._y : 0 [by t.de.dly.dly[12].y:=1]
1144222 t.de.dly.dly[13].__y : 1 [by t.de.dly.dly[13]._y:=0]
1144355 t.de.dly.dly[13].___y : 0 [by t.de.dly.dly[13].__y:=1]
1144356 t.de.dly.dly[13].y : 1 [by t.de.dly.dly[13].___y:=0]
1144360 t.de.dly.dly[14]._y : 0 [by t.de.dly.dly[13].y:=1]
1144906 t.de.dly.dly[14].__y : 1 [by t.de.dly.dly[14]._y:=0]
1190469 t.de.dly.dly[14].___y : 0 [by t.de.dly.dly[14].__y:=1]
1190470 t.de.dly.mu2[3].b : 1 [by t.de.dly.dly[14].___y:=0]
1202848 t.de.dly.mu2[3]._y : 0 [by t.de.dly.mu2[3].b:=1]
1202927 t.de.dly.out : 1 [by t.de.dly.mu2[3]._y:=0]
1205360 t.de.addr_buf._out_a_B : 0 [by t.de.dly.out:=1]
1205448 t.de.addr_buf.out_a_B_buf_t.buf1._y : 1 [by t.de.addr_buf._out_a_B:=0]
1213142 t.de.addr_buf.out_a_B_buf_f.buf1._y : 1 [by t.de.addr_buf._out_a_B:=0]
1213201 t.de.addr_buf._out_a_BX_t[0] : 0 [by t.de.addr_buf.out_a_B_buf_f.buf1._y:=1]
1213231 t.de.addr_buf.t_buf_func[0]._y : 1 [by t.de.addr_buf._out_a_BX_t[0]:=0]
1214668 t.de.addr_buf.t_buf_func[1]._y : 1 [by t.de.addr_buf._out_a_BX_t[0]:=0]
1215353 t.de.atree_y[1].in[0] : 0 [by t.de.addr_buf.t_buf_func[1]._y:=1]
1215480 t.de.vtree_y.OR2_tf[0]._y : 1 [by t.de.atree_y[1].in[0]:=0]
1215649 t.de.vtree_y.ct.in[0] : 0 [by t.de.vtree_y.OR2_tf[0]._y:=1]
1232068 t.de.atree_y[3].and2s[0]._y : 1 [by t.de.atree_y[1].in[0]:=0]
1232111 t.ag.iny[3] : 0 [by t.de.atree_y[3].and2s[0]._y:=1]
1232123 t.ag.ands[7]._y : 1 [by t.ag.iny[3]:=0]
1232615 t.de.atree_x[1].in[0] : 0 [by t.de.addr_buf.t_buf_func[0]._y:=1]
1232618 t.de.vtree_x.OR2_tf[0]._y : 1 [by t.de.atree_x[1].in[0]:=0]
1232656 t.de.vtree_x.ct.in[0] : 0 [by t.de.vtree_x.OR2_tf[0]._y:=1]
1232657 t.de.vtree_x.ct.b._y : 1 [by t.de.vtree_x.ct.in[0]:=0]
1232848 t.de.atree_x[1].b._y : 1 [by t.de.atree_x[1].in[0]:=0]
1232940 t.ag.inx[1] : 0 [by t.de.atree_x[1].b._y:=1]
1233402 t.out[7] : 0 [by t.ag.ands[7]._y:=1]
1233775 t.de.addr_buf._out_a_BX_f[0] : 0 [by t.de.addr_buf.out_a_B_buf_t.buf1._y:=1]
1245409 t.de.C2el.c1 : 0 [by t.de.vtree_x.ct.b._y:=1]
1272705 t.de.addr_buf.t_buf_func[2]._y : 1 [by t.de.addr_buf._out_a_BX_t[0]:=0]
1275432 t.de.atree_y[2].in[1] : 0 [by t.de.addr_buf.t_buf_func[2]._y:=1]
1275434 t.de.vtree_y.OR2_tf[1]._y : 1 [by t.de.atree_y[2].in[1]:=0]
1275435 t.de.vtree_y.ct.in[1] : 0 [by t.de.vtree_y.OR2_tf[1]._y:=1]
1276936 t.de.vtree_y.ct.C2Els[0]._y : 1 [by t.de.vtree_y.ct.in[1]:=0]
1276938 t.de.C2el.c2 : 0 [by t.de.vtree_y.ct.C2Els[0]._y:=1]
1276956 t.de.C2el._y : 1 [by t.de.C2el.c2:=0]
1277075 t.de.C2el.y : 0 [by t.de.C2el._y:=1]
1282795 t.de.dly.and2[0]._y : 1 [by t.de.C2el.y:=0]
1282803 t.de.dly.dly[0].a : 0 [by t.de.dly.and2[0]._y:=1]
1282857 t.de.dly.dly[0]._y : 1 [by t.de.dly.dly[0].a:=0]
1333395 t.de.dly.dly[0].__y : 0 [by t.de.dly.dly[0]._y:=1]
1333400 t.de.dly.dly[0].___y : 1 [by t.de.dly.dly[0].__y:=0]
1334467 t.de.dly.dly[0].y : 0 [by t.de.dly.dly[0].___y:=1]
1334468 t.de.dly.mu2[0]._y : 1 [by t.de.dly.dly[0].y:=0]
1334606 t.de.dly._a[1] : 0 [by t.de.dly.mu2[0]._y:=1]
1334607 t.de.dly.and2[1]._y : 1 [by t.de.dly._a[1]:=0]
1334671 t.de.dly.dly[1].a : 0 [by t.de.dly.and2[1]._y:=1]
1334794 t.de.dly.dly[1]._y : 1 [by t.de.dly.dly[1].a:=0]
1334796 t.de.dly.dly[1].__y : 0 [by t.de.dly.dly[1]._y:=1]
1334833 t.de.dly.dly[1].___y : 1 [by t.de.dly.dly[1].__y:=0]
1334976 t.de.dly.dly[1].y : 0 [by t.de.dly.dly[1].___y:=1]
1335027 t.de.dly.dly[2]._y : 1 [by t.de.dly.dly[1].y:=0]
1335469 t.de.dly.dly[2].__y : 0 [by t.de.dly.dly[2]._y:=1]
1335480 t.de.dly.dly[2].___y : 1 [by t.de.dly.dly[2].__y:=0]
1335481 t.de.dly.dly[2].y : 0 [by t.de.dly.dly[2].___y:=1]
1335490 t.de.dly.mu2[1]._y : 1 [by t.de.dly.dly[2].y:=0]
1335515 t.de.dly._a[2] : 0 [by t.de.dly.mu2[1]._y:=1]
1345768 t.de.dly.and2[2]._y : 1 [by t.de.dly._a[2]:=0]
1349289 t.de.dly.dly[3].a : 0 [by t.de.dly.and2[2]._y:=1]
1349434 t.de.dly.dly[3]._y : 1 [by t.de.dly.dly[3].a:=0]
1365602 t.de.dly.dly[3].__y : 0 [by t.de.dly.dly[3]._y:=1]
1365832 t.de.dly.dly[3].___y : 1 [by t.de.dly.dly[3].__y:=0]
1366523 t.de.dly.dly[3].y : 0 [by t.de.dly.dly[3].___y:=1]
1366537 t.de.dly.dly[4]._y : 1 [by t.de.dly.dly[3].y:=0]
1368080 t.de.dly.dly[4].__y : 0 [by t.de.dly.dly[4]._y:=1]
1369691 t.de.dly.dly[4].___y : 1 [by t.de.dly.dly[4].__y:=0]
1387203 t.de.dly.dly[4].y : 0 [by t.de.dly.dly[4].___y:=1]
1387214 t.de.dly.dly[5]._y : 1 [by t.de.dly.dly[4].y:=0]
1387215 t.de.dly.dly[5].__y : 0 [by t.de.dly.dly[5]._y:=1]
1387216 t.de.dly.dly[5].___y : 1 [by t.de.dly.dly[5].__y:=0]
1393717 t.de.dly.dly[5].y : 0 [by t.de.dly.dly[5].___y:=1]
1394356 t.de.dly.dly[6]._y : 1 [by t.de.dly.dly[5].y:=0]
1396149 t.de.dly.dly[6].__y : 0 [by t.de.dly.dly[6]._y:=1]
1396281 t.de.dly.dly[6].___y : 1 [by t.de.dly.dly[6].__y:=0]
1396282 t.de.dly.dly[6].y : 0 [by t.de.dly.dly[6].___y:=1]
1396299 t.de.dly.mu2[2]._y : 1 [by t.de.dly.dly[6].y:=0]
1396451 t.de.dly._a[3] : 0 [by t.de.dly.mu2[2]._y:=1]
1399434 t.de.dly.and2[3]._y : 1 [by t.de.dly._a[3]:=0]
1399437 t.de.dly.dly[7].a : 0 [by t.de.dly.and2[3]._y:=1]
1399861 t.de.dly.dly[7]._y : 1 [by t.de.dly.dly[7].a:=0]
1399867 t.de.dly.dly[7].__y : 0 [by t.de.dly.dly[7]._y:=1]
1402455 t.de.dly.dly[7].___y : 1 [by t.de.dly.dly[7].__y:=0]
1404916 t.de.dly.dly[7].y : 0 [by t.de.dly.dly[7].___y:=1]
1405746 t.de.dly.dly[8]._y : 1 [by t.de.dly.dly[7].y:=0]
1428678 t.de.dly.dly[8].__y : 0 [by t.de.dly.dly[8]._y:=1]
1428680 t.de.dly.dly[8].___y : 1 [by t.de.dly.dly[8].__y:=0]
1428874 t.de.dly.dly[8].y : 0 [by t.de.dly.dly[8].___y:=1]
1429477 t.de.dly.dly[9]._y : 1 [by t.de.dly.dly[8].y:=0]
1429615 t.de.dly.dly[9].__y : 0 [by t.de.dly.dly[9]._y:=1]
1429632 t.de.dly.dly[9].___y : 1 [by t.de.dly.dly[9].__y:=0]
1429649 t.de.dly.dly[9].y : 0 [by t.de.dly.dly[9].___y:=1]
1430075 t.de.dly.dly[10]._y : 1 [by t.de.dly.dly[9].y:=0]
1430076 t.de.dly.dly[10].__y : 0 [by t.de.dly.dly[10]._y:=1]
1430077 t.de.dly.dly[10].___y : 1 [by t.de.dly.dly[10].__y:=0]
1431103 t.de.dly.dly[10].y : 0 [by t.de.dly.dly[10].___y:=1]
1431104 t.de.dly.dly[11]._y : 1 [by t.de.dly.dly[10].y:=0]
1431123 t.de.dly.dly[11].__y : 0 [by t.de.dly.dly[11]._y:=1]
1431291 t.de.dly.dly[11].___y : 1 [by t.de.dly.dly[11].__y:=0]
1431830 t.de.dly.dly[11].y : 0 [by t.de.dly.dly[11].___y:=1]
1431991 t.de.dly.dly[12]._y : 1 [by t.de.dly.dly[11].y:=0]
1432164 t.de.dly.dly[12].__y : 0 [by t.de.dly.dly[12]._y:=1]
1434711 t.de.dly.dly[12].___y : 1 [by t.de.dly.dly[12].__y:=0]
1449772 t.de.dly.dly[12].y : 0 [by t.de.dly.dly[12].___y:=1]
1449773 t.de.dly.dly[13]._y : 1 [by t.de.dly.dly[12].y:=0]
1449774 t.de.dly.dly[13].__y : 0 [by t.de.dly.dly[13]._y:=1]
1450164 t.de.dly.dly[13].___y : 1 [by t.de.dly.dly[13].__y:=0]
1450371 t.de.dly.dly[13].y : 0 [by t.de.dly.dly[13].___y:=1]
1451204 t.de.dly.dly[14]._y : 1 [by t.de.dly.dly[13].y:=0]
1451232 t.de.dly.dly[14].__y : 0 [by t.de.dly.dly[14]._y:=1]
1451239 t.de.dly.dly[14].___y : 1 [by t.de.dly.dly[14].__y:=0]
1451653 t.de.dly.mu2[3].b : 0 [by t.de.dly.dly[14].___y:=1]
1451657 t.de.dly.mu2[3]._y : 1 [by t.de.dly.mu2[3].b:=0]
1453436 t.de.dly.out : 0 [by t.de.dly.mu2[3]._y:=1]
1476310 t.de.addr_buf._out_a_B : 1 [by t.de.dly.out:=0]
1476476 t.de.addr_buf.out_a_B_buf_t.buf1._y : 0 [by t.de.addr_buf._out_a_B:=1]
1485121 t.de.addr_buf._out_a_BX_f[0] : 1 [by t.de.addr_buf.out_a_B_buf_t.buf1._y:=0]
1516180 t.de.addr_buf.out_a_B_buf_f.buf1._y : 0 [by t.de.addr_buf._out_a_B:=1]
1517113 t.de.addr_buf._out_a_BX_t[0] : 1 [by t.de.addr_buf.out_a_B_buf_f.buf1._y:=0]

Binary file not shown.

View File

@ -0,0 +1,948 @@
= "GND" "GND"
= "Vdd" "Vdd"
= "Reset" "Reset"
"Reset"->"t._reset_B"-
~("Reset")->"t._reset_B"+
= "t._reset_B" "t.de.reset_B"
= "t.ag.iny[0]" "t.ag.ands[1].b"
= "t.ag.iny[0]" "t.ag.ands[0].b"
= "t.ag.iny[1]" "t.ag.ands[3].b"
= "t.ag.iny[1]" "t.ag.ands[2].b"
= "t.ag.iny[2]" "t.ag.ands[5].b"
= "t.ag.iny[2]" "t.ag.ands[4].b"
= "t.ag.iny[3]" "t.ag.ands[7].b"
= "t.ag.iny[3]" "t.ag.ands[6].b"
= "t.ag.inx[0]" "t.ag.ands[6].a"
= "t.ag.inx[0]" "t.ag.ands[4].a"
= "t.ag.inx[0]" "t.ag.ands[2].a"
= "t.ag.inx[0]" "t.ag.ands[0].a"
= "t.ag.inx[1]" "t.ag.ands[7].a"
= "t.ag.inx[1]" "t.ag.ands[5].a"
= "t.ag.inx[1]" "t.ag.ands[3].a"
= "t.ag.inx[1]" "t.ag.ands[1].a"
"t.ag.ands[0].a"&"t.ag.ands[0].b"->"t.ag.ands[0]._y"-
~("t.ag.ands[0].a"&"t.ag.ands[0].b")->"t.ag.ands[0]._y"+
"t.ag.ands[0]._y"->"t.ag.ands[0].y"-
~("t.ag.ands[0]._y")->"t.ag.ands[0].y"+
"t.ag.ands[1].a"&"t.ag.ands[1].b"->"t.ag.ands[1]._y"-
~("t.ag.ands[1].a"&"t.ag.ands[1].b")->"t.ag.ands[1]._y"+
"t.ag.ands[1]._y"->"t.ag.ands[1].y"-
~("t.ag.ands[1]._y")->"t.ag.ands[1].y"+
"t.ag.ands[2].a"&"t.ag.ands[2].b"->"t.ag.ands[2]._y"-
~("t.ag.ands[2].a"&"t.ag.ands[2].b")->"t.ag.ands[2]._y"+
"t.ag.ands[2]._y"->"t.ag.ands[2].y"-
~("t.ag.ands[2]._y")->"t.ag.ands[2].y"+
"t.ag.ands[3].a"&"t.ag.ands[3].b"->"t.ag.ands[3]._y"-
~("t.ag.ands[3].a"&"t.ag.ands[3].b")->"t.ag.ands[3]._y"+
"t.ag.ands[3]._y"->"t.ag.ands[3].y"-
~("t.ag.ands[3]._y")->"t.ag.ands[3].y"+
"t.ag.ands[4].a"&"t.ag.ands[4].b"->"t.ag.ands[4]._y"-
~("t.ag.ands[4].a"&"t.ag.ands[4].b")->"t.ag.ands[4]._y"+
"t.ag.ands[4]._y"->"t.ag.ands[4].y"-
~("t.ag.ands[4]._y")->"t.ag.ands[4].y"+
"t.ag.ands[5].a"&"t.ag.ands[5].b"->"t.ag.ands[5]._y"-
~("t.ag.ands[5].a"&"t.ag.ands[5].b")->"t.ag.ands[5]._y"+
"t.ag.ands[5]._y"->"t.ag.ands[5].y"-
~("t.ag.ands[5]._y")->"t.ag.ands[5].y"+
"t.ag.ands[6].a"&"t.ag.ands[6].b"->"t.ag.ands[6]._y"-
~("t.ag.ands[6].a"&"t.ag.ands[6].b")->"t.ag.ands[6]._y"+
"t.ag.ands[6]._y"->"t.ag.ands[6].y"-
~("t.ag.ands[6]._y")->"t.ag.ands[6].y"+
"t.ag.ands[7].a"&"t.ag.ands[7].b"->"t.ag.ands[7]._y"-
~("t.ag.ands[7].a"&"t.ag.ands[7].b")->"t.ag.ands[7]._y"+
"t.ag.ands[7]._y"->"t.ag.ands[7].y"-
~("t.ag.ands[7]._y")->"t.ag.ands[7].y"+
= "t.ag.supply.vdd" "t.ag.ands[7].vdd"
= "t.ag.supply.vdd" "t.ag.ands[6].vdd"
= "t.ag.supply.vdd" "t.ag.ands[5].vdd"
= "t.ag.supply.vdd" "t.ag.ands[4].vdd"
= "t.ag.supply.vdd" "t.ag.ands[3].vdd"
= "t.ag.supply.vdd" "t.ag.ands[2].vdd"
= "t.ag.supply.vdd" "t.ag.ands[1].vdd"
= "t.ag.supply.vdd" "t.ag.ands[0].vdd"
= "t.ag.supply.vss" "t.ag.ands[7].vss"
= "t.ag.supply.vss" "t.ag.ands[6].vss"
= "t.ag.supply.vss" "t.ag.ands[5].vss"
= "t.ag.supply.vss" "t.ag.ands[4].vss"
= "t.ag.supply.vss" "t.ag.ands[3].vss"
= "t.ag.supply.vss" "t.ag.ands[2].vss"
= "t.ag.supply.vss" "t.ag.ands[1].vss"
= "t.ag.supply.vss" "t.ag.ands[0].vss"
= "t.ag.out[0]" "t.ag.ands[0].y"
= "t.ag.out[1]" "t.ag.ands[1].y"
= "t.ag.out[2]" "t.ag.ands[2].y"
= "t.ag.out[3]" "t.ag.ands[3].y"
= "t.ag.out[4]" "t.ag.ands[4].y"
= "t.ag.out[5]" "t.ag.ands[5].y"
= "t.ag.out[6]" "t.ag.ands[6].y"
= "t.ag.out[7]" "t.ag.ands[7].y"
= "t.ag.inx[0]" "t.de.outx[0]"
= "t.ag.inx[1]" "t.de.outx[1]"
= "t.ag.iny[0]" "t.de.outy[0]"
= "t.ag.iny[1]" "t.de.outy[1]"
= "t.ag.iny[2]" "t.de.outy[2]"
= "t.ag.iny[3]" "t.de.outy[3]"
= "Vdd" "t.ag.supply.vdd"
= "GND" "t.ag.supply.vss"
"t.de.atree_x[0].b.a"->"t.de.atree_x[0].b._y"-
~("t.de.atree_x[0].b.a")->"t.de.atree_x[0].b._y"+
"t.de.atree_x[0].b._y"->"t.de.atree_x[0].b.y"-
~("t.de.atree_x[0].b._y")->"t.de.atree_x[0].b.y"+
= "t.de.atree_x[0].supply.vdd" "t.de.atree_x[0].b.vdd"
= "t.de.atree_x[0].supply.vss" "t.de.atree_x[0].b.vss"
= "t.de.atree_x[0].out" "t.de.atree_x[0].b.y"
= "t.de.atree_x[0].in[0]" "t.de.atree_x[0].b.a"
"t.de.atree_x[1].b.a"->"t.de.atree_x[1].b._y"-
~("t.de.atree_x[1].b.a")->"t.de.atree_x[1].b._y"+
"t.de.atree_x[1].b._y"->"t.de.atree_x[1].b.y"-
~("t.de.atree_x[1].b._y")->"t.de.atree_x[1].b.y"+
= "t.de.atree_x[1].supply.vdd" "t.de.atree_x[1].b.vdd"
= "t.de.atree_x[1].supply.vss" "t.de.atree_x[1].b.vss"
= "t.de.atree_x[1].out" "t.de.atree_x[1].b.y"
= "t.de.atree_x[1].in[0]" "t.de.atree_x[1].b.a"
= "t.de.atree_x[1].in[0]" "t.de.addr_buf.out.d.d[0].t"
= "t.de.atree_x[1].in[0]" "t.de.addr_buf.out.d.d[0].d[1]"
= "t.de.atree_x[1].in[0]" "t.de.vtree_x.in.d[0].t"
= "t.de.atree_x[1].in[0]" "t.de.vtree_x.in.d[0].d[1]"
= "t.de.atree_x[0].in[0]" "t.de.addr_buf.out.d.d[0].f"
= "t.de.atree_x[0].in[0]" "t.de.addr_buf.out.d.d[0].d[0]"
= "t.de.atree_x[0].in[0]" "t.de.vtree_x.in.d[0].f"
= "t.de.atree_x[0].in[0]" "t.de.vtree_x.in.d[0].d[0]"
= "t.de.dly_cfg[0]" "t.de.dly.s[0]"
= "t.de.dly_cfg[1]" "t.de.dly.s[1]"
= "t.de.dly_cfg[2]" "t.de.dly.s[2]"
= "t.de.dly_cfg[3]" "t.de.dly.s[3]"
= "t.de.supply.vss" "t.de.atree_y[3].supply.vss"
= "t.de.supply.vdd" "t.de.atree_y[3].supply.vdd"
= "t.de.supply.vss" "t.de.atree_y[2].supply.vss"
= "t.de.supply.vdd" "t.de.atree_y[2].supply.vdd"
= "t.de.supply.vss" "t.de.atree_y[1].supply.vss"
= "t.de.supply.vdd" "t.de.atree_y[1].supply.vdd"
= "t.de.supply.vss" "t.de.atree_y[0].supply.vss"
= "t.de.supply.vdd" "t.de.atree_y[0].supply.vdd"
= "t.de.supply.vss" "t.de.atree_x[1].supply.vss"
= "t.de.supply.vdd" "t.de.atree_x[1].supply.vdd"
= "t.de.supply.vss" "t.de.atree_x[0].supply.vss"
= "t.de.supply.vdd" "t.de.atree_x[0].supply.vdd"
= "t.de.supply.vss" "t.de.dly.supply.vss"
= "t.de.supply.vdd" "t.de.dly.supply.vdd"
= "t.de.supply.vss" "t.de.vtree_y.supply.vss"
= "t.de.supply.vdd" "t.de.vtree_y.supply.vdd"
= "t.de.supply.vss" "t.de.vtree_x.supply.vss"
= "t.de.supply.vdd" "t.de.vtree_x.supply.vdd"
= "t.de.supply.vss" "t.de.addr_buf.supply.vss"
= "t.de.supply.vdd" "t.de.addr_buf.supply.vdd"
= "t.de.supply.vdd" "t.de.C2el.vdd"
= "t.de.supply.vss" "t.de.C2el.vss"
~"t.de.C2el.c1"&~"t.de.C2el.c2"->"t.de.C2el._y"+
"t.de.C2el.c1"&"t.de.C2el.c2"->"t.de.C2el._y"-
"t.de.C2el._y"->"t.de.C2el.y"-
~("t.de.C2el._y")->"t.de.C2el.y"+
= "t.de.C2el.c1" "t.de.vtree_x.out"
= "t.de.C2el.c2" "t.de.vtree_y.out"
"t.de.dly.and2[0].a"&"t.de.dly.and2[0].b"->"t.de.dly.and2[0]._y"-
~("t.de.dly.and2[0].a"&"t.de.dly.and2[0].b")->"t.de.dly.and2[0]._y"+
"t.de.dly.and2[0]._y"->"t.de.dly.and2[0].y"-
~("t.de.dly.and2[0]._y")->"t.de.dly.and2[0].y"+
"t.de.dly.and2[1].a"&"t.de.dly.and2[1].b"->"t.de.dly.and2[1]._y"-
~("t.de.dly.and2[1].a"&"t.de.dly.and2[1].b")->"t.de.dly.and2[1]._y"+
"t.de.dly.and2[1]._y"->"t.de.dly.and2[1].y"-
~("t.de.dly.and2[1]._y")->"t.de.dly.and2[1].y"+
"t.de.dly.and2[2].a"&"t.de.dly.and2[2].b"->"t.de.dly.and2[2]._y"-
~("t.de.dly.and2[2].a"&"t.de.dly.and2[2].b")->"t.de.dly.and2[2]._y"+
"t.de.dly.and2[2]._y"->"t.de.dly.and2[2].y"-
~("t.de.dly.and2[2]._y")->"t.de.dly.and2[2].y"+
"t.de.dly.and2[3].a"&"t.de.dly.and2[3].b"->"t.de.dly.and2[3]._y"-
~("t.de.dly.and2[3].a"&"t.de.dly.and2[3].b")->"t.de.dly.and2[3]._y"+
"t.de.dly.and2[3]._y"->"t.de.dly.and2[3].y"-
~("t.de.dly.and2[3]._y")->"t.de.dly.and2[3].y"+
= "t.de.dly.s[0]" "t.de.dly.mu2[0].s"
= "t.de.dly.s[0]" "t.de.dly.and2[0].b"
= "t.de.dly.s[1]" "t.de.dly.mu2[1].s"
= "t.de.dly.s[1]" "t.de.dly.and2[1].b"
= "t.de.dly.s[2]" "t.de.dly.mu2[2].s"
= "t.de.dly.s[2]" "t.de.dly.and2[2].b"
= "t.de.dly.s[3]" "t.de.dly.mu2[3].s"
= "t.de.dly.s[3]" "t.de.dly.and2[3].b"
= "t.de.dly.supply.vdd" "t.de.dly.dly[14].vdd"
= "t.de.dly.supply.vdd" "t.de.dly.dly[13].vdd"
= "t.de.dly.supply.vdd" "t.de.dly.dly[12].vdd"
= "t.de.dly.supply.vdd" "t.de.dly.dly[11].vdd"
= "t.de.dly.supply.vdd" "t.de.dly.dly[10].vdd"
= "t.de.dly.supply.vdd" "t.de.dly.dly[9].vdd"
= "t.de.dly.supply.vdd" "t.de.dly.dly[8].vdd"
= "t.de.dly.supply.vdd" "t.de.dly.dly[7].vdd"
= "t.de.dly.supply.vdd" "t.de.dly.dly[6].vdd"
= "t.de.dly.supply.vdd" "t.de.dly.dly[5].vdd"
= "t.de.dly.supply.vdd" "t.de.dly.dly[4].vdd"
= "t.de.dly.supply.vdd" "t.de.dly.dly[3].vdd"
= "t.de.dly.supply.vdd" "t.de.dly.dly[2].vdd"
= "t.de.dly.supply.vdd" "t.de.dly.dly[1].vdd"
= "t.de.dly.supply.vdd" "t.de.dly.dly[0].vdd"
= "t.de.dly.supply.vdd" "t.de.dly.mu2[3].vdd"
= "t.de.dly.supply.vdd" "t.de.dly.mu2[2].vdd"
= "t.de.dly.supply.vdd" "t.de.dly.mu2[1].vdd"
= "t.de.dly.supply.vdd" "t.de.dly.mu2[0].vdd"
= "t.de.dly.supply.vdd" "t.de.dly.and2[3].vdd"
= "t.de.dly.supply.vdd" "t.de.dly.and2[2].vdd"
= "t.de.dly.supply.vdd" "t.de.dly.and2[1].vdd"
= "t.de.dly.supply.vdd" "t.de.dly.and2[0].vdd"
= "t.de.dly.supply.vss" "t.de.dly.dly[14].vss"
= "t.de.dly.supply.vss" "t.de.dly.dly[13].vss"
= "t.de.dly.supply.vss" "t.de.dly.dly[12].vss"
= "t.de.dly.supply.vss" "t.de.dly.dly[11].vss"
= "t.de.dly.supply.vss" "t.de.dly.dly[10].vss"
= "t.de.dly.supply.vss" "t.de.dly.dly[9].vss"
= "t.de.dly.supply.vss" "t.de.dly.dly[8].vss"
= "t.de.dly.supply.vss" "t.de.dly.dly[7].vss"
= "t.de.dly.supply.vss" "t.de.dly.dly[6].vss"
= "t.de.dly.supply.vss" "t.de.dly.dly[5].vss"
= "t.de.dly.supply.vss" "t.de.dly.dly[4].vss"
= "t.de.dly.supply.vss" "t.de.dly.dly[3].vss"
= "t.de.dly.supply.vss" "t.de.dly.dly[2].vss"
= "t.de.dly.supply.vss" "t.de.dly.dly[1].vss"
= "t.de.dly.supply.vss" "t.de.dly.dly[0].vss"
= "t.de.dly.supply.vss" "t.de.dly.mu2[3].vss"
= "t.de.dly.supply.vss" "t.de.dly.mu2[2].vss"
= "t.de.dly.supply.vss" "t.de.dly.mu2[1].vss"
= "t.de.dly.supply.vss" "t.de.dly.mu2[0].vss"
= "t.de.dly.supply.vss" "t.de.dly.and2[3].vss"
= "t.de.dly.supply.vss" "t.de.dly.and2[2].vss"
= "t.de.dly.supply.vss" "t.de.dly.and2[1].vss"
= "t.de.dly.supply.vss" "t.de.dly.and2[0].vss"
"t.de.dly.mu2[0].s"->"t.de.dly.mu2[0]._s"-
~("t.de.dly.mu2[0].s")->"t.de.dly.mu2[0]._s"+
~"t.de.dly.mu2[0].a"&~"t.de.dly.mu2[0].s"|~"t.de.dly.mu2[0].b"&~"t.de.dly.mu2[0]._s"->"t.de.dly.mu2[0]._y"+
"t.de.dly.mu2[0].a"&"t.de.dly.mu2[0]._s"|"t.de.dly.mu2[0].b"&"t.de.dly.mu2[0].s"->"t.de.dly.mu2[0]._y"-
"t.de.dly.mu2[0]._y"->"t.de.dly.mu2[0].y"-
~("t.de.dly.mu2[0]._y")->"t.de.dly.mu2[0].y"+
"t.de.dly.mu2[1].s"->"t.de.dly.mu2[1]._s"-
~("t.de.dly.mu2[1].s")->"t.de.dly.mu2[1]._s"+
~"t.de.dly.mu2[1].a"&~"t.de.dly.mu2[1].s"|~"t.de.dly.mu2[1].b"&~"t.de.dly.mu2[1]._s"->"t.de.dly.mu2[1]._y"+
"t.de.dly.mu2[1].a"&"t.de.dly.mu2[1]._s"|"t.de.dly.mu2[1].b"&"t.de.dly.mu2[1].s"->"t.de.dly.mu2[1]._y"-
"t.de.dly.mu2[1]._y"->"t.de.dly.mu2[1].y"-
~("t.de.dly.mu2[1]._y")->"t.de.dly.mu2[1].y"+
"t.de.dly.mu2[2].s"->"t.de.dly.mu2[2]._s"-
~("t.de.dly.mu2[2].s")->"t.de.dly.mu2[2]._s"+
~"t.de.dly.mu2[2].a"&~"t.de.dly.mu2[2].s"|~"t.de.dly.mu2[2].b"&~"t.de.dly.mu2[2]._s"->"t.de.dly.mu2[2]._y"+
"t.de.dly.mu2[2].a"&"t.de.dly.mu2[2]._s"|"t.de.dly.mu2[2].b"&"t.de.dly.mu2[2].s"->"t.de.dly.mu2[2]._y"-
"t.de.dly.mu2[2]._y"->"t.de.dly.mu2[2].y"-
~("t.de.dly.mu2[2]._y")->"t.de.dly.mu2[2].y"+
"t.de.dly.mu2[3].s"->"t.de.dly.mu2[3]._s"-
~("t.de.dly.mu2[3].s")->"t.de.dly.mu2[3]._s"+
~"t.de.dly.mu2[3].a"&~"t.de.dly.mu2[3].s"|~"t.de.dly.mu2[3].b"&~"t.de.dly.mu2[3]._s"->"t.de.dly.mu2[3]._y"+
"t.de.dly.mu2[3].a"&"t.de.dly.mu2[3]._s"|"t.de.dly.mu2[3].b"&"t.de.dly.mu2[3].s"->"t.de.dly.mu2[3]._y"-
"t.de.dly.mu2[3]._y"->"t.de.dly.mu2[3].y"-
~("t.de.dly.mu2[3]._y")->"t.de.dly.mu2[3].y"+
"t.de.dly.dly[0].a"->"t.de.dly.dly[0]._y"-
~("t.de.dly.dly[0].a")->"t.de.dly.dly[0]._y"+
"t.de.dly.dly[0]._y"->"t.de.dly.dly[0].__y"-
~("t.de.dly.dly[0]._y")->"t.de.dly.dly[0].__y"+
"t.de.dly.dly[0].__y"->"t.de.dly.dly[0].___y"-
~("t.de.dly.dly[0].__y")->"t.de.dly.dly[0].___y"+
"t.de.dly.dly[0].___y"->"t.de.dly.dly[0].y"-
~("t.de.dly.dly[0].___y")->"t.de.dly.dly[0].y"+
"t.de.dly.dly[1].a"->"t.de.dly.dly[1]._y"-
~("t.de.dly.dly[1].a")->"t.de.dly.dly[1]._y"+
"t.de.dly.dly[1]._y"->"t.de.dly.dly[1].__y"-
~("t.de.dly.dly[1]._y")->"t.de.dly.dly[1].__y"+
"t.de.dly.dly[1].__y"->"t.de.dly.dly[1].___y"-
~("t.de.dly.dly[1].__y")->"t.de.dly.dly[1].___y"+
"t.de.dly.dly[1].___y"->"t.de.dly.dly[1].y"-
~("t.de.dly.dly[1].___y")->"t.de.dly.dly[1].y"+
"t.de.dly.dly[2].a"->"t.de.dly.dly[2]._y"-
~("t.de.dly.dly[2].a")->"t.de.dly.dly[2]._y"+
"t.de.dly.dly[2]._y"->"t.de.dly.dly[2].__y"-
~("t.de.dly.dly[2]._y")->"t.de.dly.dly[2].__y"+
"t.de.dly.dly[2].__y"->"t.de.dly.dly[2].___y"-
~("t.de.dly.dly[2].__y")->"t.de.dly.dly[2].___y"+
"t.de.dly.dly[2].___y"->"t.de.dly.dly[2].y"-
~("t.de.dly.dly[2].___y")->"t.de.dly.dly[2].y"+
"t.de.dly.dly[3].a"->"t.de.dly.dly[3]._y"-
~("t.de.dly.dly[3].a")->"t.de.dly.dly[3]._y"+
"t.de.dly.dly[3]._y"->"t.de.dly.dly[3].__y"-
~("t.de.dly.dly[3]._y")->"t.de.dly.dly[3].__y"+
"t.de.dly.dly[3].__y"->"t.de.dly.dly[3].___y"-
~("t.de.dly.dly[3].__y")->"t.de.dly.dly[3].___y"+
"t.de.dly.dly[3].___y"->"t.de.dly.dly[3].y"-
~("t.de.dly.dly[3].___y")->"t.de.dly.dly[3].y"+
"t.de.dly.dly[4].a"->"t.de.dly.dly[4]._y"-
~("t.de.dly.dly[4].a")->"t.de.dly.dly[4]._y"+
"t.de.dly.dly[4]._y"->"t.de.dly.dly[4].__y"-
~("t.de.dly.dly[4]._y")->"t.de.dly.dly[4].__y"+
"t.de.dly.dly[4].__y"->"t.de.dly.dly[4].___y"-
~("t.de.dly.dly[4].__y")->"t.de.dly.dly[4].___y"+
"t.de.dly.dly[4].___y"->"t.de.dly.dly[4].y"-
~("t.de.dly.dly[4].___y")->"t.de.dly.dly[4].y"+
"t.de.dly.dly[5].a"->"t.de.dly.dly[5]._y"-
~("t.de.dly.dly[5].a")->"t.de.dly.dly[5]._y"+
"t.de.dly.dly[5]._y"->"t.de.dly.dly[5].__y"-
~("t.de.dly.dly[5]._y")->"t.de.dly.dly[5].__y"+
"t.de.dly.dly[5].__y"->"t.de.dly.dly[5].___y"-
~("t.de.dly.dly[5].__y")->"t.de.dly.dly[5].___y"+
"t.de.dly.dly[5].___y"->"t.de.dly.dly[5].y"-
~("t.de.dly.dly[5].___y")->"t.de.dly.dly[5].y"+
"t.de.dly.dly[6].a"->"t.de.dly.dly[6]._y"-
~("t.de.dly.dly[6].a")->"t.de.dly.dly[6]._y"+
"t.de.dly.dly[6]._y"->"t.de.dly.dly[6].__y"-
~("t.de.dly.dly[6]._y")->"t.de.dly.dly[6].__y"+
"t.de.dly.dly[6].__y"->"t.de.dly.dly[6].___y"-
~("t.de.dly.dly[6].__y")->"t.de.dly.dly[6].___y"+
"t.de.dly.dly[6].___y"->"t.de.dly.dly[6].y"-
~("t.de.dly.dly[6].___y")->"t.de.dly.dly[6].y"+
"t.de.dly.dly[7].a"->"t.de.dly.dly[7]._y"-
~("t.de.dly.dly[7].a")->"t.de.dly.dly[7]._y"+
"t.de.dly.dly[7]._y"->"t.de.dly.dly[7].__y"-
~("t.de.dly.dly[7]._y")->"t.de.dly.dly[7].__y"+
"t.de.dly.dly[7].__y"->"t.de.dly.dly[7].___y"-
~("t.de.dly.dly[7].__y")->"t.de.dly.dly[7].___y"+
"t.de.dly.dly[7].___y"->"t.de.dly.dly[7].y"-
~("t.de.dly.dly[7].___y")->"t.de.dly.dly[7].y"+
"t.de.dly.dly[8].a"->"t.de.dly.dly[8]._y"-
~("t.de.dly.dly[8].a")->"t.de.dly.dly[8]._y"+
"t.de.dly.dly[8]._y"->"t.de.dly.dly[8].__y"-
~("t.de.dly.dly[8]._y")->"t.de.dly.dly[8].__y"+
"t.de.dly.dly[8].__y"->"t.de.dly.dly[8].___y"-
~("t.de.dly.dly[8].__y")->"t.de.dly.dly[8].___y"+
"t.de.dly.dly[8].___y"->"t.de.dly.dly[8].y"-
~("t.de.dly.dly[8].___y")->"t.de.dly.dly[8].y"+
"t.de.dly.dly[9].a"->"t.de.dly.dly[9]._y"-
~("t.de.dly.dly[9].a")->"t.de.dly.dly[9]._y"+
"t.de.dly.dly[9]._y"->"t.de.dly.dly[9].__y"-
~("t.de.dly.dly[9]._y")->"t.de.dly.dly[9].__y"+
"t.de.dly.dly[9].__y"->"t.de.dly.dly[9].___y"-
~("t.de.dly.dly[9].__y")->"t.de.dly.dly[9].___y"+
"t.de.dly.dly[9].___y"->"t.de.dly.dly[9].y"-
~("t.de.dly.dly[9].___y")->"t.de.dly.dly[9].y"+
"t.de.dly.dly[10].a"->"t.de.dly.dly[10]._y"-
~("t.de.dly.dly[10].a")->"t.de.dly.dly[10]._y"+
"t.de.dly.dly[10]._y"->"t.de.dly.dly[10].__y"-
~("t.de.dly.dly[10]._y")->"t.de.dly.dly[10].__y"+
"t.de.dly.dly[10].__y"->"t.de.dly.dly[10].___y"-
~("t.de.dly.dly[10].__y")->"t.de.dly.dly[10].___y"+
"t.de.dly.dly[10].___y"->"t.de.dly.dly[10].y"-
~("t.de.dly.dly[10].___y")->"t.de.dly.dly[10].y"+
"t.de.dly.dly[11].a"->"t.de.dly.dly[11]._y"-
~("t.de.dly.dly[11].a")->"t.de.dly.dly[11]._y"+
"t.de.dly.dly[11]._y"->"t.de.dly.dly[11].__y"-
~("t.de.dly.dly[11]._y")->"t.de.dly.dly[11].__y"+
"t.de.dly.dly[11].__y"->"t.de.dly.dly[11].___y"-
~("t.de.dly.dly[11].__y")->"t.de.dly.dly[11].___y"+
"t.de.dly.dly[11].___y"->"t.de.dly.dly[11].y"-
~("t.de.dly.dly[11].___y")->"t.de.dly.dly[11].y"+
"t.de.dly.dly[12].a"->"t.de.dly.dly[12]._y"-
~("t.de.dly.dly[12].a")->"t.de.dly.dly[12]._y"+
"t.de.dly.dly[12]._y"->"t.de.dly.dly[12].__y"-
~("t.de.dly.dly[12]._y")->"t.de.dly.dly[12].__y"+
"t.de.dly.dly[12].__y"->"t.de.dly.dly[12].___y"-
~("t.de.dly.dly[12].__y")->"t.de.dly.dly[12].___y"+
"t.de.dly.dly[12].___y"->"t.de.dly.dly[12].y"-
~("t.de.dly.dly[12].___y")->"t.de.dly.dly[12].y"+
"t.de.dly.dly[13].a"->"t.de.dly.dly[13]._y"-
~("t.de.dly.dly[13].a")->"t.de.dly.dly[13]._y"+
"t.de.dly.dly[13]._y"->"t.de.dly.dly[13].__y"-
~("t.de.dly.dly[13]._y")->"t.de.dly.dly[13].__y"+
"t.de.dly.dly[13].__y"->"t.de.dly.dly[13].___y"-
~("t.de.dly.dly[13].__y")->"t.de.dly.dly[13].___y"+
"t.de.dly.dly[13].___y"->"t.de.dly.dly[13].y"-
~("t.de.dly.dly[13].___y")->"t.de.dly.dly[13].y"+
"t.de.dly.dly[14].a"->"t.de.dly.dly[14]._y"-
~("t.de.dly.dly[14].a")->"t.de.dly.dly[14]._y"+
"t.de.dly.dly[14]._y"->"t.de.dly.dly[14].__y"-
~("t.de.dly.dly[14]._y")->"t.de.dly.dly[14].__y"+
"t.de.dly.dly[14].__y"->"t.de.dly.dly[14].___y"-
~("t.de.dly.dly[14].__y")->"t.de.dly.dly[14].___y"+
"t.de.dly.dly[14].___y"->"t.de.dly.dly[14].y"-
~("t.de.dly.dly[14].___y")->"t.de.dly.dly[14].y"+
= "t.de.dly.dly[14].y" "t.de.dly.mu2[3].b"
= "t.de.dly.dly[14].a" "t.de.dly.dly[13].y"
= "t.de.dly.dly[13].a" "t.de.dly.dly[12].y"
= "t.de.dly.dly[12].a" "t.de.dly.dly[11].y"
= "t.de.dly.dly[11].a" "t.de.dly.dly[10].y"
= "t.de.dly.dly[10].a" "t.de.dly.dly[9].y"
= "t.de.dly.dly[9].a" "t.de.dly.dly[8].y"
= "t.de.dly.dly[8].a" "t.de.dly.dly[7].y"
= "t.de.dly.dly[7].a" "t.de.dly.and2[3].y"
= "t.de.dly.dly[6].y" "t.de.dly.mu2[2].b"
= "t.de.dly.dly[6].a" "t.de.dly.dly[5].y"
= "t.de.dly.dly[5].a" "t.de.dly.dly[4].y"
= "t.de.dly.dly[4].a" "t.de.dly.dly[3].y"
= "t.de.dly.dly[3].a" "t.de.dly.and2[2].y"
= "t.de.dly.dly[2].y" "t.de.dly.mu2[1].b"
= "t.de.dly.dly[2].a" "t.de.dly.dly[1].y"
= "t.de.dly.dly[1].a" "t.de.dly.and2[1].y"
= "t.de.dly.dly[0].y" "t.de.dly.mu2[0].b"
= "t.de.dly.dly[0].a" "t.de.dly.and2[0].y"
= "t.de.dly._a[1]" "t.de.dly.mu2[1].a"
= "t.de.dly._a[1]" "t.de.dly.and2[1].a"
= "t.de.dly._a[1]" "t.de.dly.mu2[0].y"
= "t.de.dly._a[2]" "t.de.dly.mu2[2].a"
= "t.de.dly._a[2]" "t.de.dly.and2[2].a"
= "t.de.dly._a[2]" "t.de.dly.mu2[1].y"
= "t.de.dly._a[3]" "t.de.dly.mu2[3].a"
= "t.de.dly._a[3]" "t.de.dly.and2[3].a"
= "t.de.dly._a[3]" "t.de.dly.mu2[2].y"
= "t.de.dly.out" "t.de.dly.mu2[3].y"
= "t.de.dly.out" "t.de.dly._a[4]"
= "t.de.dly.in" "t.de.dly.mu2[0].a"
= "t.de.dly.in" "t.de.dly.and2[0].a"
= "t.de.dly.in" "t.de.dly._a[0]"
= "t.de.dly.out" "t.de.addr_buf.out.a"
= "t.de.dly.in" "t.de.addr_buf.out.v"
= "t.de.dly.in" "t.de.C2el.y"
= "t.de.atree_y[0].supply.vdd" "t.de.atree_y[0].and2s[0].vdd"
= "t.de.atree_y[0].supply.vss" "t.de.atree_y[0].and2s[0].vss"
"t.de.atree_y[0].and2s[0].a"&"t.de.atree_y[0].and2s[0].b"->"t.de.atree_y[0].and2s[0]._y"-
~("t.de.atree_y[0].and2s[0].a"&"t.de.atree_y[0].and2s[0].b")->"t.de.atree_y[0].and2s[0]._y"+
"t.de.atree_y[0].and2s[0]._y"->"t.de.atree_y[0].and2s[0].y"-
~("t.de.atree_y[0].and2s[0]._y")->"t.de.atree_y[0].and2s[0].y"+
= "t.de.atree_y[0].in[0]" "t.de.atree_y[0].and2s[0].a"
= "t.de.atree_y[0].in[0]" "t.de.atree_y[0].tmp[0]"
= "t.de.atree_y[0].in[1]" "t.de.atree_y[0].and2s[0].b"
= "t.de.atree_y[0].in[1]" "t.de.atree_y[0].tmp[1]"
= "t.de.atree_y[0].out" "t.de.atree_y[0].and2s[0].y"
= "t.de.atree_y[0].out" "t.de.atree_y[0].tmp[2]"
= "t.de.atree_y[1].supply.vdd" "t.de.atree_y[1].and2s[0].vdd"
= "t.de.atree_y[1].supply.vss" "t.de.atree_y[1].and2s[0].vss"
"t.de.atree_y[1].and2s[0].a"&"t.de.atree_y[1].and2s[0].b"->"t.de.atree_y[1].and2s[0]._y"-
~("t.de.atree_y[1].and2s[0].a"&"t.de.atree_y[1].and2s[0].b")->"t.de.atree_y[1].and2s[0]._y"+
"t.de.atree_y[1].and2s[0]._y"->"t.de.atree_y[1].and2s[0].y"-
~("t.de.atree_y[1].and2s[0]._y")->"t.de.atree_y[1].and2s[0].y"+
= "t.de.atree_y[1].in[0]" "t.de.atree_y[1].and2s[0].a"
= "t.de.atree_y[1].in[0]" "t.de.atree_y[1].tmp[0]"
= "t.de.atree_y[1].in[1]" "t.de.atree_y[1].and2s[0].b"
= "t.de.atree_y[1].in[1]" "t.de.atree_y[1].tmp[1]"
= "t.de.atree_y[1].out" "t.de.atree_y[1].and2s[0].y"
= "t.de.atree_y[1].out" "t.de.atree_y[1].tmp[2]"
= "t.de.atree_y[2].supply.vdd" "t.de.atree_y[2].and2s[0].vdd"
= "t.de.atree_y[2].supply.vss" "t.de.atree_y[2].and2s[0].vss"
"t.de.atree_y[2].and2s[0].a"&"t.de.atree_y[2].and2s[0].b"->"t.de.atree_y[2].and2s[0]._y"-
~("t.de.atree_y[2].and2s[0].a"&"t.de.atree_y[2].and2s[0].b")->"t.de.atree_y[2].and2s[0]._y"+
"t.de.atree_y[2].and2s[0]._y"->"t.de.atree_y[2].and2s[0].y"-
~("t.de.atree_y[2].and2s[0]._y")->"t.de.atree_y[2].and2s[0].y"+
= "t.de.atree_y[2].in[0]" "t.de.atree_y[2].and2s[0].a"
= "t.de.atree_y[2].in[0]" "t.de.atree_y[2].tmp[0]"
= "t.de.atree_y[2].in[1]" "t.de.atree_y[2].and2s[0].b"
= "t.de.atree_y[2].in[1]" "t.de.atree_y[2].tmp[1]"
= "t.de.atree_y[2].out" "t.de.atree_y[2].and2s[0].y"
= "t.de.atree_y[2].out" "t.de.atree_y[2].tmp[2]"
= "t.de.atree_y[3].supply.vdd" "t.de.atree_y[3].and2s[0].vdd"
= "t.de.atree_y[3].supply.vss" "t.de.atree_y[3].and2s[0].vss"
"t.de.atree_y[3].and2s[0].a"&"t.de.atree_y[3].and2s[0].b"->"t.de.atree_y[3].and2s[0]._y"-
~("t.de.atree_y[3].and2s[0].a"&"t.de.atree_y[3].and2s[0].b")->"t.de.atree_y[3].and2s[0]._y"+
"t.de.atree_y[3].and2s[0]._y"->"t.de.atree_y[3].and2s[0].y"-
~("t.de.atree_y[3].and2s[0]._y")->"t.de.atree_y[3].and2s[0].y"+
= "t.de.atree_y[3].in[0]" "t.de.atree_y[3].and2s[0].a"
= "t.de.atree_y[3].in[0]" "t.de.atree_y[3].tmp[0]"
= "t.de.atree_y[3].in[1]" "t.de.atree_y[3].and2s[0].b"
= "t.de.atree_y[3].in[1]" "t.de.atree_y[3].tmp[1]"
= "t.de.atree_y[3].out" "t.de.atree_y[3].and2s[0].y"
= "t.de.atree_y[3].out" "t.de.atree_y[3].tmp[2]"
= "t.de.atree_y[3].in[0]" "t.de.addr_buf.out.d.d[1].t"
= "t.de.atree_y[3].in[0]" "t.de.addr_buf.out.d.d[1].d[1]"
= "t.de.atree_y[3].in[0]" "t.de.vtree_y.in.d[0].t"
= "t.de.atree_y[3].in[0]" "t.de.vtree_y.in.d[0].d[1]"
= "t.de.atree_y[3].in[0]" "t.de.atree_y[1].in[0]"
= "t.de.atree_y[3].in[1]" "t.de.addr_buf.out.d.d[2].t"
= "t.de.atree_y[3].in[1]" "t.de.addr_buf.out.d.d[2].d[1]"
= "t.de.atree_y[3].in[1]" "t.de.vtree_y.in.d[1].t"
= "t.de.atree_y[3].in[1]" "t.de.vtree_y.in.d[1].d[1]"
= "t.de.atree_y[3].in[1]" "t.de.atree_y[2].in[1]"
= "t.de.atree_y[2].in[0]" "t.de.addr_buf.out.d.d[1].f"
= "t.de.atree_y[2].in[0]" "t.de.addr_buf.out.d.d[1].d[0]"
= "t.de.atree_y[2].in[0]" "t.de.vtree_y.in.d[0].f"
= "t.de.atree_y[2].in[0]" "t.de.vtree_y.in.d[0].d[0]"
= "t.de.atree_y[2].in[0]" "t.de.atree_y[0].in[0]"
= "t.de.atree_y[1].in[1]" "t.de.addr_buf.out.d.d[2].f"
= "t.de.atree_y[1].in[1]" "t.de.addr_buf.out.d.d[2].d[0]"
= "t.de.atree_y[1].in[1]" "t.de.vtree_y.in.d[1].f"
= "t.de.atree_y[1].in[1]" "t.de.vtree_y.in.d[1].d[0]"
= "t.de.atree_y[1].in[1]" "t.de.atree_y[0].in[1]"
= "t.de.in.d.d[0].d[0]" "t.de.in.d.d[0].f"
= "t.de.in.d.d[0].d[1]" "t.de.in.d.d[0].t"
= "t.de.in.d.d[1].d[0]" "t.de.in.d.d[1].f"
= "t.de.in.d.d[1].d[1]" "t.de.in.d.d[1].t"
= "t.de.in.d.d[2].d[0]" "t.de.in.d.d[2].f"
= "t.de.in.d.d[2].d[1]" "t.de.in.d.d[2].t"
= "t.de.in.d.d[2].d[0]" "t.de.in.d.d[2].f"
= "t.de.in.d.d[2].d[1]" "t.de.in.d.d[2].t"
= "t.de.in.d.d[1].d[0]" "t.de.in.d.d[1].f"
= "t.de.in.d.d[1].d[1]" "t.de.in.d.d[1].t"
= "t.de.in.d.d[0].d[0]" "t.de.in.d.d[0].f"
= "t.de.in.d.d[0].d[1]" "t.de.in.d.d[0].t"
= "t.de.in.d.d[2].d[0]" "t.de.in.d.d[2].f"
= "t.de.in.d.d[2].d[1]" "t.de.in.d.d[2].t"
= "t.de.in.d.d[1].d[0]" "t.de.in.d.d[1].f"
= "t.de.in.d.d[1].d[1]" "t.de.in.d.d[1].t"
= "t.de.in.d.d[0].d[0]" "t.de.in.d.d[0].f"
= "t.de.in.d.d[0].d[1]" "t.de.in.d.d[0].t"
= "t.de.in.v" "t.de.addr_buf.in.v"
= "t.de.in.a" "t.de.addr_buf.in.a"
= "t.de.in.d.d[0].f" "t.de.addr_buf.in.d.d[0].f"
= "t.de.in.d.d[0].t" "t.de.addr_buf.in.d.d[0].t"
= "t.de.in.d.d[0].d[0]" "t.de.addr_buf.in.d.d[0].d[0]"
= "t.de.in.d.d[0].d[1]" "t.de.addr_buf.in.d.d[0].d[1]"
= "t.de.in.d.d[1].f" "t.de.addr_buf.in.d.d[1].f"
= "t.de.in.d.d[1].t" "t.de.addr_buf.in.d.d[1].t"
= "t.de.in.d.d[1].d[0]" "t.de.addr_buf.in.d.d[1].d[0]"
= "t.de.in.d.d[1].d[1]" "t.de.addr_buf.in.d.d[1].d[1]"
= "t.de.in.d.d[2].f" "t.de.addr_buf.in.d.d[2].f"
= "t.de.in.d.d[2].t" "t.de.addr_buf.in.d.d[2].t"
= "t.de.in.d.d[2].d[0]" "t.de.addr_buf.in.d.d[2].d[0]"
= "t.de.in.d.d[2].d[1]" "t.de.addr_buf.in.d.d[2].d[1]"
= "t.de.in.d.d[2].d[0]" "t.de.in.d.d[2].f"
= "t.de.in.d.d[2].d[1]" "t.de.in.d.d[2].t"
= "t.de.in.d.d[1].d[0]" "t.de.in.d.d[1].f"
= "t.de.in.d.d[1].d[1]" "t.de.in.d.d[1].t"
= "t.de.in.d.d[0].d[0]" "t.de.in.d.d[0].f"
= "t.de.in.d.d[0].d[1]" "t.de.in.d.d[0].t"
~"t.de.vtree_y.ct.C2Els[0].c1"&~"t.de.vtree_y.ct.C2Els[0].c2"->"t.de.vtree_y.ct.C2Els[0]._y"+
"t.de.vtree_y.ct.C2Els[0].c1"&"t.de.vtree_y.ct.C2Els[0].c2"->"t.de.vtree_y.ct.C2Els[0]._y"-
"t.de.vtree_y.ct.C2Els[0]._y"->"t.de.vtree_y.ct.C2Els[0].y"-
~("t.de.vtree_y.ct.C2Els[0]._y")->"t.de.vtree_y.ct.C2Els[0].y"+
= "t.de.vtree_y.ct.supply.vdd" "t.de.vtree_y.ct.C2Els[0].vdd"
= "t.de.vtree_y.ct.supply.vss" "t.de.vtree_y.ct.C2Els[0].vss"
= "t.de.vtree_y.ct.in[0]" "t.de.vtree_y.ct.C2Els[0].c1"
= "t.de.vtree_y.ct.in[0]" "t.de.vtree_y.ct.tmp[0]"
= "t.de.vtree_y.ct.in[1]" "t.de.vtree_y.ct.C2Els[0].c2"
= "t.de.vtree_y.ct.in[1]" "t.de.vtree_y.ct.tmp[1]"
= "t.de.vtree_y.ct.out" "t.de.vtree_y.ct.C2Els[0].y"
= "t.de.vtree_y.ct.out" "t.de.vtree_y.ct.tmp[2]"
= "t.de.vtree_y.ct.in[0]" "t.de.vtree_y.OR2_tf[0].y"
= "t.de.vtree_y.ct.in[1]" "t.de.vtree_y.OR2_tf[1].y"
"t.de.vtree_y.OR2_tf[0].a"|"t.de.vtree_y.OR2_tf[0].b"->"t.de.vtree_y.OR2_tf[0]._y"-
~("t.de.vtree_y.OR2_tf[0].a"|"t.de.vtree_y.OR2_tf[0].b")->"t.de.vtree_y.OR2_tf[0]._y"+
"t.de.vtree_y.OR2_tf[0]._y"->"t.de.vtree_y.OR2_tf[0].y"-
~("t.de.vtree_y.OR2_tf[0]._y")->"t.de.vtree_y.OR2_tf[0].y"+
"t.de.vtree_y.OR2_tf[1].a"|"t.de.vtree_y.OR2_tf[1].b"->"t.de.vtree_y.OR2_tf[1]._y"-
~("t.de.vtree_y.OR2_tf[1].a"|"t.de.vtree_y.OR2_tf[1].b")->"t.de.vtree_y.OR2_tf[1]._y"+
"t.de.vtree_y.OR2_tf[1]._y"->"t.de.vtree_y.OR2_tf[1].y"-
~("t.de.vtree_y.OR2_tf[1]._y")->"t.de.vtree_y.OR2_tf[1].y"+
= "t.de.vtree_y.supply.vss" "t.de.vtree_y.ct.supply.vss"
= "t.de.vtree_y.supply.vdd" "t.de.vtree_y.ct.supply.vdd"
= "t.de.vtree_y.supply.vdd" "t.de.vtree_y.OR2_tf[1].vdd"
= "t.de.vtree_y.supply.vdd" "t.de.vtree_y.OR2_tf[0].vdd"
= "t.de.vtree_y.supply.vss" "t.de.vtree_y.OR2_tf[1].vss"
= "t.de.vtree_y.supply.vss" "t.de.vtree_y.OR2_tf[0].vss"
= "t.de.vtree_y.out" "t.de.vtree_y.ct.out"
= "t.de.vtree_y.in.d[0].d[0]" "t.de.vtree_y.in.d[0].f"
= "t.de.vtree_y.in.d[0].d[1]" "t.de.vtree_y.in.d[0].t"
= "t.de.vtree_y.in.d[1].d[0]" "t.de.vtree_y.in.d[1].f"
= "t.de.vtree_y.in.d[1].d[1]" "t.de.vtree_y.in.d[1].t"
= "t.de.vtree_y.in.d[1].d[0]" "t.de.vtree_y.in.d[1].f"
= "t.de.vtree_y.in.d[1].d[1]" "t.de.vtree_y.in.d[1].t"
= "t.de.vtree_y.in.d[0].d[0]" "t.de.vtree_y.in.d[0].f"
= "t.de.vtree_y.in.d[0].d[1]" "t.de.vtree_y.in.d[0].t"
= "t.de.vtree_y.in.d[1].d[0]" "t.de.vtree_y.OR2_tf[1].b"
= "t.de.vtree_y.in.d[1].d[0]" "t.de.vtree_y.in.d[1].f"
= "t.de.vtree_y.in.d[1].d[1]" "t.de.vtree_y.OR2_tf[1].a"
= "t.de.vtree_y.in.d[1].d[1]" "t.de.vtree_y.in.d[1].t"
= "t.de.vtree_y.in.d[0].d[0]" "t.de.vtree_y.OR2_tf[0].b"
= "t.de.vtree_y.in.d[0].d[0]" "t.de.vtree_y.in.d[0].f"
= "t.de.vtree_y.in.d[0].d[1]" "t.de.vtree_y.OR2_tf[0].a"
= "t.de.vtree_y.in.d[0].d[1]" "t.de.vtree_y.in.d[0].t"
= "t.de.outy[0]" "t.de.atree_y[0].out"
= "t.de.outy[1]" "t.de.atree_y[1].out"
= "t.de.outy[2]" "t.de.atree_y[2].out"
= "t.de.outy[3]" "t.de.atree_y[3].out"
= "t.de.outx[0]" "t.de.atree_x[0].out"
= "t.de.outx[1]" "t.de.atree_x[1].out"
= "t.de.reset_B" "t.de.addr_buf.reset_B"
"t.de.addr_buf.out_a_B_buf_t.buf1.a"->"t.de.addr_buf.out_a_B_buf_t.buf1._y"-
~("t.de.addr_buf.out_a_B_buf_t.buf1.a")->"t.de.addr_buf.out_a_B_buf_t.buf1._y"+
"t.de.addr_buf.out_a_B_buf_t.buf1._y"->"t.de.addr_buf.out_a_B_buf_t.buf1.y"-
~("t.de.addr_buf.out_a_B_buf_t.buf1._y")->"t.de.addr_buf.out_a_B_buf_t.buf1.y"+
= "t.de.addr_buf.out_a_B_buf_t.supply.vdd" "t.de.addr_buf.out_a_B_buf_t.buf1.vdd"
= "t.de.addr_buf.out_a_B_buf_t.supply.vss" "t.de.addr_buf.out_a_B_buf_t.buf1.vss"
= "t.de.addr_buf.out_a_B_buf_t.out[0]" "t.de.addr_buf.out_a_B_buf_t.out[2]"
= "t.de.addr_buf.out_a_B_buf_t.out[0]" "t.de.addr_buf.out_a_B_buf_t.out[1]"
= "t.de.addr_buf.out_a_B_buf_t.out[0]" "t.de.addr_buf.out_a_B_buf_t.buf1.y"
= "t.de.addr_buf.out_a_B_buf_t.in" "t.de.addr_buf.out_a_B_buf_t.buf1.a"
= "t.de.addr_buf._en_X_f[0]" "t.de.addr_buf.en_buf_f.out[0]"
= "t.de.addr_buf._en_X_f[1]" "t.de.addr_buf.en_buf_f.out[1]"
= "t.de.addr_buf._en_X_f[2]" "t.de.addr_buf.en_buf_f.out[2]"
= "t.de.addr_buf._en_X_f[0]" "t.de.addr_buf.f_buf_func[2].c1"
= "t.de.addr_buf._en_X_f[0]" "t.de.addr_buf.f_buf_func[1].c1"
= "t.de.addr_buf._en_X_f[0]" "t.de.addr_buf.f_buf_func[0].c1"
= "t.de.addr_buf._en_X_f[0]" "t.de.addr_buf._en_X_f[2]"
= "t.de.addr_buf._en_X_f[0]" "t.de.addr_buf._en_X_f[1]"
~"t.de.addr_buf.inack_ctl.c1"&~"t.de.addr_buf.inack_ctl.c2"&~"t.de.addr_buf.inack_ctl.c3"|~"t.de.addr_buf.inack_ctl.pr_B"->"t.de.addr_buf.inack_ctl._y"+
"t.de.addr_buf.inack_ctl.c1"&"t.de.addr_buf.inack_ctl.c2"&"t.de.addr_buf.inack_ctl.c3"&"t.de.addr_buf.inack_ctl.sr_B"->"t.de.addr_buf.inack_ctl._y"-
"t.de.addr_buf.inack_ctl._y"->"t.de.addr_buf.inack_ctl.y"-
~("t.de.addr_buf.inack_ctl._y")->"t.de.addr_buf.inack_ctl.y"+
"t.de.addr_buf.reset_bufarray.buf1.a"->"t.de.addr_buf.reset_bufarray.buf1._y"-
~("t.de.addr_buf.reset_bufarray.buf1.a")->"t.de.addr_buf.reset_bufarray.buf1._y"+
"t.de.addr_buf.reset_bufarray.buf1._y"->"t.de.addr_buf.reset_bufarray.buf1.y"-
~("t.de.addr_buf.reset_bufarray.buf1._y")->"t.de.addr_buf.reset_bufarray.buf1.y"+
= "t.de.addr_buf.reset_bufarray.supply.vdd" "t.de.addr_buf.reset_bufarray.buf1.vdd"
= "t.de.addr_buf.reset_bufarray.supply.vss" "t.de.addr_buf.reset_bufarray.buf1.vss"
= "t.de.addr_buf.reset_bufarray.out[0]" "t.de.addr_buf.reset_bufarray.out[2]"
= "t.de.addr_buf.reset_bufarray.out[0]" "t.de.addr_buf.reset_bufarray.out[1]"
= "t.de.addr_buf.reset_bufarray.out[0]" "t.de.addr_buf.reset_bufarray.buf1.y"
= "t.de.addr_buf.reset_bufarray.in" "t.de.addr_buf.reset_bufarray.buf1.a"
"t.de.addr_buf.in_v_buf.a"->"t.de.addr_buf.in_v_buf._y"-
~("t.de.addr_buf.in_v_buf.a")->"t.de.addr_buf.in_v_buf._y"+
"t.de.addr_buf.in_v_buf._y"->"t.de.addr_buf.in_v_buf.y"-
~("t.de.addr_buf.in_v_buf._y")->"t.de.addr_buf.in_v_buf.y"+
"t.de.addr_buf.out_a_inv.a"->"t.de.addr_buf.out_a_inv.y"-
~("t.de.addr_buf.out_a_inv.a")->"t.de.addr_buf.out_a_inv.y"+
= "t.de.addr_buf.supply.vss" "t.de.addr_buf.en_buf_f.supply.vss"
= "t.de.addr_buf.supply.vdd" "t.de.addr_buf.en_buf_f.supply.vdd"
= "t.de.addr_buf.supply.vss" "t.de.addr_buf.en_buf_t.supply.vss"
= "t.de.addr_buf.supply.vdd" "t.de.addr_buf.en_buf_t.supply.vdd"
= "t.de.addr_buf.supply.vss" "t.de.addr_buf.vc.supply.vss"
= "t.de.addr_buf.supply.vdd" "t.de.addr_buf.vc.supply.vdd"
= "t.de.addr_buf.supply.vdd" "t.de.addr_buf.t_buf_func[2].vdd"
= "t.de.addr_buf.supply.vdd" "t.de.addr_buf.f_buf_func[2].vdd"
= "t.de.addr_buf.supply.vdd" "t.de.addr_buf.t_buf_func[1].vdd"
= "t.de.addr_buf.supply.vdd" "t.de.addr_buf.f_buf_func[1].vdd"
= "t.de.addr_buf.supply.vdd" "t.de.addr_buf.t_buf_func[0].vdd"
= "t.de.addr_buf.supply.vdd" "t.de.addr_buf.f_buf_func[0].vdd"
= "t.de.addr_buf.supply.vdd" "t.de.addr_buf.in_v_buf.vdd"
= "t.de.addr_buf.supply.vdd" "t.de.addr_buf.reset_buf.vdd"
= "t.de.addr_buf.supply.vdd" "t.de.addr_buf.en_ctl.vdd"
= "t.de.addr_buf.supply.vdd" "t.de.addr_buf.inack_ctl.vdd"
= "t.de.addr_buf.supply.vss" "t.de.addr_buf.t_buf_func[2].vss"
= "t.de.addr_buf.supply.vss" "t.de.addr_buf.f_buf_func[2].vss"
= "t.de.addr_buf.supply.vss" "t.de.addr_buf.t_buf_func[1].vss"
= "t.de.addr_buf.supply.vss" "t.de.addr_buf.f_buf_func[1].vss"
= "t.de.addr_buf.supply.vss" "t.de.addr_buf.t_buf_func[0].vss"
= "t.de.addr_buf.supply.vss" "t.de.addr_buf.f_buf_func[0].vss"
= "t.de.addr_buf.supply.vss" "t.de.addr_buf.in_v_buf.vss"
= "t.de.addr_buf.supply.vss" "t.de.addr_buf.reset_buf.vss"
= "t.de.addr_buf.supply.vss" "t.de.addr_buf.en_ctl.vss"
= "t.de.addr_buf.supply.vss" "t.de.addr_buf.inack_ctl.vss"
~"t.de.addr_buf.vc.ct.C3Els[0].c1"&~"t.de.addr_buf.vc.ct.C3Els[0].c2"&~"t.de.addr_buf.vc.ct.C3Els[0].c3"->"t.de.addr_buf.vc.ct.C3Els[0]._y"+
"t.de.addr_buf.vc.ct.C3Els[0].c1"&"t.de.addr_buf.vc.ct.C3Els[0].c2"&"t.de.addr_buf.vc.ct.C3Els[0].c3"->"t.de.addr_buf.vc.ct.C3Els[0]._y"-
"t.de.addr_buf.vc.ct.C3Els[0]._y"->"t.de.addr_buf.vc.ct.C3Els[0].y"-
~("t.de.addr_buf.vc.ct.C3Els[0]._y")->"t.de.addr_buf.vc.ct.C3Els[0].y"+
= "t.de.addr_buf.vc.ct.supply.vdd" "t.de.addr_buf.vc.ct.C3Els[0].vdd"
= "t.de.addr_buf.vc.ct.supply.vss" "t.de.addr_buf.vc.ct.C3Els[0].vss"
= "t.de.addr_buf.vc.ct.in[0]" "t.de.addr_buf.vc.ct.C3Els[0].c1"
= "t.de.addr_buf.vc.ct.in[0]" "t.de.addr_buf.vc.ct.tmp[0]"
= "t.de.addr_buf.vc.ct.in[1]" "t.de.addr_buf.vc.ct.C3Els[0].c2"
= "t.de.addr_buf.vc.ct.in[1]" "t.de.addr_buf.vc.ct.tmp[1]"
= "t.de.addr_buf.vc.ct.in[2]" "t.de.addr_buf.vc.ct.C3Els[0].c3"
= "t.de.addr_buf.vc.ct.in[2]" "t.de.addr_buf.vc.ct.tmp[2]"
= "t.de.addr_buf.vc.ct.out" "t.de.addr_buf.vc.ct.C3Els[0].y"
= "t.de.addr_buf.vc.ct.out" "t.de.addr_buf.vc.ct.tmp[3]"
= "t.de.addr_buf.vc.ct.in[0]" "t.de.addr_buf.vc.OR2_tf[0].y"
= "t.de.addr_buf.vc.ct.in[1]" "t.de.addr_buf.vc.OR2_tf[1].y"
= "t.de.addr_buf.vc.ct.in[2]" "t.de.addr_buf.vc.OR2_tf[2].y"
"t.de.addr_buf.vc.OR2_tf[0].a"|"t.de.addr_buf.vc.OR2_tf[0].b"->"t.de.addr_buf.vc.OR2_tf[0]._y"-
~("t.de.addr_buf.vc.OR2_tf[0].a"|"t.de.addr_buf.vc.OR2_tf[0].b")->"t.de.addr_buf.vc.OR2_tf[0]._y"+
"t.de.addr_buf.vc.OR2_tf[0]._y"->"t.de.addr_buf.vc.OR2_tf[0].y"-
~("t.de.addr_buf.vc.OR2_tf[0]._y")->"t.de.addr_buf.vc.OR2_tf[0].y"+
"t.de.addr_buf.vc.OR2_tf[1].a"|"t.de.addr_buf.vc.OR2_tf[1].b"->"t.de.addr_buf.vc.OR2_tf[1]._y"-
~("t.de.addr_buf.vc.OR2_tf[1].a"|"t.de.addr_buf.vc.OR2_tf[1].b")->"t.de.addr_buf.vc.OR2_tf[1]._y"+
"t.de.addr_buf.vc.OR2_tf[1]._y"->"t.de.addr_buf.vc.OR2_tf[1].y"-
~("t.de.addr_buf.vc.OR2_tf[1]._y")->"t.de.addr_buf.vc.OR2_tf[1].y"+
"t.de.addr_buf.vc.OR2_tf[2].a"|"t.de.addr_buf.vc.OR2_tf[2].b"->"t.de.addr_buf.vc.OR2_tf[2]._y"-
~("t.de.addr_buf.vc.OR2_tf[2].a"|"t.de.addr_buf.vc.OR2_tf[2].b")->"t.de.addr_buf.vc.OR2_tf[2]._y"+
"t.de.addr_buf.vc.OR2_tf[2]._y"->"t.de.addr_buf.vc.OR2_tf[2].y"-
~("t.de.addr_buf.vc.OR2_tf[2]._y")->"t.de.addr_buf.vc.OR2_tf[2].y"+
= "t.de.addr_buf.vc.supply.vss" "t.de.addr_buf.vc.ct.supply.vss"
= "t.de.addr_buf.vc.supply.vdd" "t.de.addr_buf.vc.ct.supply.vdd"
= "t.de.addr_buf.vc.supply.vdd" "t.de.addr_buf.vc.OR2_tf[2].vdd"
= "t.de.addr_buf.vc.supply.vdd" "t.de.addr_buf.vc.OR2_tf[1].vdd"
= "t.de.addr_buf.vc.supply.vdd" "t.de.addr_buf.vc.OR2_tf[0].vdd"
= "t.de.addr_buf.vc.supply.vss" "t.de.addr_buf.vc.OR2_tf[2].vss"
= "t.de.addr_buf.vc.supply.vss" "t.de.addr_buf.vc.OR2_tf[1].vss"
= "t.de.addr_buf.vc.supply.vss" "t.de.addr_buf.vc.OR2_tf[0].vss"
= "t.de.addr_buf.vc.out" "t.de.addr_buf.vc.ct.out"
= "t.de.addr_buf.vc.in.d[0].d[0]" "t.de.addr_buf.vc.in.d[0].f"
= "t.de.addr_buf.vc.in.d[0].d[1]" "t.de.addr_buf.vc.in.d[0].t"
= "t.de.addr_buf.vc.in.d[1].d[0]" "t.de.addr_buf.vc.in.d[1].f"
= "t.de.addr_buf.vc.in.d[1].d[1]" "t.de.addr_buf.vc.in.d[1].t"
= "t.de.addr_buf.vc.in.d[2].d[0]" "t.de.addr_buf.vc.in.d[2].f"
= "t.de.addr_buf.vc.in.d[2].d[1]" "t.de.addr_buf.vc.in.d[2].t"
= "t.de.addr_buf.vc.in.d[2].d[0]" "t.de.addr_buf.vc.in.d[2].f"
= "t.de.addr_buf.vc.in.d[2].d[1]" "t.de.addr_buf.vc.in.d[2].t"
= "t.de.addr_buf.vc.in.d[1].d[0]" "t.de.addr_buf.vc.in.d[1].f"
= "t.de.addr_buf.vc.in.d[1].d[1]" "t.de.addr_buf.vc.in.d[1].t"
= "t.de.addr_buf.vc.in.d[0].d[0]" "t.de.addr_buf.vc.in.d[0].f"
= "t.de.addr_buf.vc.in.d[0].d[1]" "t.de.addr_buf.vc.in.d[0].t"
= "t.de.addr_buf.vc.in.d[2].d[0]" "t.de.addr_buf.vc.OR2_tf[2].b"
= "t.de.addr_buf.vc.in.d[2].d[0]" "t.de.addr_buf.vc.in.d[2].f"
= "t.de.addr_buf.vc.in.d[2].d[1]" "t.de.addr_buf.vc.OR2_tf[2].a"
= "t.de.addr_buf.vc.in.d[2].d[1]" "t.de.addr_buf.vc.in.d[2].t"
= "t.de.addr_buf.vc.in.d[1].d[0]" "t.de.addr_buf.vc.OR2_tf[1].b"
= "t.de.addr_buf.vc.in.d[1].d[0]" "t.de.addr_buf.vc.in.d[1].f"
= "t.de.addr_buf.vc.in.d[1].d[1]" "t.de.addr_buf.vc.OR2_tf[1].a"
= "t.de.addr_buf.vc.in.d[1].d[1]" "t.de.addr_buf.vc.in.d[1].t"
= "t.de.addr_buf.vc.in.d[0].d[0]" "t.de.addr_buf.vc.OR2_tf[0].b"
= "t.de.addr_buf.vc.in.d[0].d[0]" "t.de.addr_buf.vc.in.d[0].f"
= "t.de.addr_buf.vc.in.d[0].d[1]" "t.de.addr_buf.vc.OR2_tf[0].a"
= "t.de.addr_buf.vc.in.d[0].d[1]" "t.de.addr_buf.vc.in.d[0].t"
= "t.de.addr_buf._out_a_BX_f[0]" "t.de.addr_buf.out_a_B_buf_t.out[0]"
= "t.de.addr_buf._out_a_BX_f[1]" "t.de.addr_buf.out_a_B_buf_t.out[1]"
= "t.de.addr_buf._out_a_BX_f[2]" "t.de.addr_buf.out_a_B_buf_t.out[2]"
= "t.de.addr_buf._out_a_BX_f[0]" "t.de.addr_buf.f_buf_func[2].c2"
= "t.de.addr_buf._out_a_BX_f[0]" "t.de.addr_buf.f_buf_func[1].c2"
= "t.de.addr_buf._out_a_BX_f[0]" "t.de.addr_buf.f_buf_func[0].c2"
= "t.de.addr_buf._out_a_BX_f[0]" "t.de.addr_buf._out_a_BX_f[2]"
= "t.de.addr_buf._out_a_BX_f[0]" "t.de.addr_buf._out_a_BX_f[1]"
"t.de.addr_buf.out_a_B_buf_f.buf1.a"->"t.de.addr_buf.out_a_B_buf_f.buf1._y"-
~("t.de.addr_buf.out_a_B_buf_f.buf1.a")->"t.de.addr_buf.out_a_B_buf_f.buf1._y"+
"t.de.addr_buf.out_a_B_buf_f.buf1._y"->"t.de.addr_buf.out_a_B_buf_f.buf1.y"-
~("t.de.addr_buf.out_a_B_buf_f.buf1._y")->"t.de.addr_buf.out_a_B_buf_f.buf1.y"+
= "t.de.addr_buf.out_a_B_buf_f.supply.vdd" "t.de.addr_buf.out_a_B_buf_f.buf1.vdd"
= "t.de.addr_buf.out_a_B_buf_f.supply.vss" "t.de.addr_buf.out_a_B_buf_f.buf1.vss"
= "t.de.addr_buf.out_a_B_buf_f.out[0]" "t.de.addr_buf.out_a_B_buf_f.out[2]"
= "t.de.addr_buf.out_a_B_buf_f.out[0]" "t.de.addr_buf.out_a_B_buf_f.out[1]"
= "t.de.addr_buf.out_a_B_buf_f.out[0]" "t.de.addr_buf.out_a_B_buf_f.buf1.y"
= "t.de.addr_buf.out_a_B_buf_f.in" "t.de.addr_buf.out_a_B_buf_f.buf1.a"
= "t.de.addr_buf._en" "t.de.addr_buf.en_buf_f.in"
= "t.de.addr_buf._en" "t.de.addr_buf.en_buf_t.in"
= "t.de.addr_buf._en" "t.de.addr_buf.en_ctl.y"
= "t.de.addr_buf._en" "t.de.addr_buf.inack_ctl.c1"
~"t.de.addr_buf.en_ctl.p1"&~"t.de.addr_buf.en_ctl.c1"->"t.de.addr_buf.en_ctl.y"+
"t.de.addr_buf.en_ctl.c1"->"t.de.addr_buf.en_ctl.y"-
= "t.de.addr_buf.out.d.d[0].d[0]" "t.de.addr_buf.out.d.d[0].f"
= "t.de.addr_buf.out.d.d[0].d[1]" "t.de.addr_buf.out.d.d[0].t"
= "t.de.addr_buf.out.d.d[1].d[0]" "t.de.addr_buf.out.d.d[1].f"
= "t.de.addr_buf.out.d.d[1].d[1]" "t.de.addr_buf.out.d.d[1].t"
= "t.de.addr_buf.out.d.d[2].d[0]" "t.de.addr_buf.out.d.d[2].f"
= "t.de.addr_buf.out.d.d[2].d[1]" "t.de.addr_buf.out.d.d[2].t"
= "t.de.addr_buf.out.d.d[2].d[0]" "t.de.addr_buf.out.d.d[2].f"
= "t.de.addr_buf.out.d.d[2].d[1]" "t.de.addr_buf.out.d.d[2].t"
= "t.de.addr_buf.out.d.d[1].d[0]" "t.de.addr_buf.out.d.d[1].f"
= "t.de.addr_buf.out.d.d[1].d[1]" "t.de.addr_buf.out.d.d[1].t"
= "t.de.addr_buf.out.d.d[0].d[0]" "t.de.addr_buf.out.d.d[0].f"
= "t.de.addr_buf.out.d.d[0].d[1]" "t.de.addr_buf.out.d.d[0].t"
= "t.de.addr_buf.out.d.d[2].d[0]" "t.de.addr_buf.out.d.d[2].f"
= "t.de.addr_buf.out.d.d[2].d[1]" "t.de.addr_buf.out.d.d[2].t"
= "t.de.addr_buf.out.d.d[1].d[0]" "t.de.addr_buf.out.d.d[1].f"
= "t.de.addr_buf.out.d.d[1].d[1]" "t.de.addr_buf.out.d.d[1].t"
= "t.de.addr_buf.out.d.d[0].d[0]" "t.de.addr_buf.out.d.d[0].f"
= "t.de.addr_buf.out.d.d[0].d[1]" "t.de.addr_buf.out.d.d[0].t"
= "t.de.addr_buf.out.a" "t.de.addr_buf.out_a_inv.a"
= "t.de.addr_buf.out.v" "t.de.addr_buf.en_ctl.p1"
= "t.de.addr_buf.out.v" "t.de.addr_buf.inack_ctl.c3"
= "t.de.addr_buf.out.d.d[2].d[0]" "t.de.addr_buf.f_buf_func[2].y"
= "t.de.addr_buf.out.d.d[2].d[0]" "t.de.addr_buf.out.d.d[2].f"
= "t.de.addr_buf.out.d.d[2].d[1]" "t.de.addr_buf.t_buf_func[2].y"
= "t.de.addr_buf.out.d.d[2].d[1]" "t.de.addr_buf.out.d.d[2].t"
= "t.de.addr_buf.out.d.d[1].d[0]" "t.de.addr_buf.f_buf_func[1].y"
= "t.de.addr_buf.out.d.d[1].d[0]" "t.de.addr_buf.out.d.d[1].f"
= "t.de.addr_buf.out.d.d[1].d[1]" "t.de.addr_buf.t_buf_func[1].y"
= "t.de.addr_buf.out.d.d[1].d[1]" "t.de.addr_buf.out.d.d[1].t"
= "t.de.addr_buf.out.d.d[0].d[0]" "t.de.addr_buf.f_buf_func[0].y"
= "t.de.addr_buf.out.d.d[0].d[0]" "t.de.addr_buf.out.d.d[0].f"
= "t.de.addr_buf.out.d.d[0].d[1]" "t.de.addr_buf.t_buf_func[0].y"
= "t.de.addr_buf.out.d.d[0].d[1]" "t.de.addr_buf.out.d.d[0].t"
= "t.de.addr_buf.in.d.d[0].d[0]" "t.de.addr_buf.in.d.d[0].f"
= "t.de.addr_buf.in.d.d[0].d[1]" "t.de.addr_buf.in.d.d[0].t"
= "t.de.addr_buf.in.d.d[1].d[0]" "t.de.addr_buf.in.d.d[1].f"
= "t.de.addr_buf.in.d.d[1].d[1]" "t.de.addr_buf.in.d.d[1].t"
= "t.de.addr_buf.in.d.d[2].d[0]" "t.de.addr_buf.in.d.d[2].f"
= "t.de.addr_buf.in.d.d[2].d[1]" "t.de.addr_buf.in.d.d[2].t"
= "t.de.addr_buf.in.d.d[2].d[0]" "t.de.addr_buf.in.d.d[2].f"
= "t.de.addr_buf.in.d.d[2].d[1]" "t.de.addr_buf.in.d.d[2].t"
= "t.de.addr_buf.in.d.d[1].d[0]" "t.de.addr_buf.in.d.d[1].f"
= "t.de.addr_buf.in.d.d[1].d[1]" "t.de.addr_buf.in.d.d[1].t"
= "t.de.addr_buf.in.d.d[0].d[0]" "t.de.addr_buf.in.d.d[0].f"
= "t.de.addr_buf.in.d.d[0].d[1]" "t.de.addr_buf.in.d.d[0].t"
= "t.de.addr_buf.in.d.d[2].d[0]" "t.de.addr_buf.in.d.d[2].f"
= "t.de.addr_buf.in.d.d[2].d[1]" "t.de.addr_buf.in.d.d[2].t"
= "t.de.addr_buf.in.d.d[1].d[0]" "t.de.addr_buf.in.d.d[1].f"
= "t.de.addr_buf.in.d.d[1].d[1]" "t.de.addr_buf.in.d.d[1].t"
= "t.de.addr_buf.in.d.d[0].d[0]" "t.de.addr_buf.in.d.d[0].f"
= "t.de.addr_buf.in.d.d[0].d[1]" "t.de.addr_buf.in.d.d[0].t"
= "t.de.addr_buf.in.d.d[0].f" "t.de.addr_buf.vc.in.d[0].f"
= "t.de.addr_buf.in.d.d[0].t" "t.de.addr_buf.vc.in.d[0].t"
= "t.de.addr_buf.in.d.d[0].d[0]" "t.de.addr_buf.vc.in.d[0].d[0]"
= "t.de.addr_buf.in.d.d[0].d[1]" "t.de.addr_buf.vc.in.d[0].d[1]"
= "t.de.addr_buf.in.d.d[1].f" "t.de.addr_buf.vc.in.d[1].f"
= "t.de.addr_buf.in.d.d[1].t" "t.de.addr_buf.vc.in.d[1].t"
= "t.de.addr_buf.in.d.d[1].d[0]" "t.de.addr_buf.vc.in.d[1].d[0]"
= "t.de.addr_buf.in.d.d[1].d[1]" "t.de.addr_buf.vc.in.d[1].d[1]"
= "t.de.addr_buf.in.d.d[2].f" "t.de.addr_buf.vc.in.d[2].f"
= "t.de.addr_buf.in.d.d[2].t" "t.de.addr_buf.vc.in.d[2].t"
= "t.de.addr_buf.in.d.d[2].d[0]" "t.de.addr_buf.vc.in.d[2].d[0]"
= "t.de.addr_buf.in.d.d[2].d[1]" "t.de.addr_buf.vc.in.d[2].d[1]"
= "t.de.addr_buf.in.a" "t.de.addr_buf.en_ctl.c1"
= "t.de.addr_buf.in.a" "t.de.addr_buf.inack_ctl.y"
= "t.de.addr_buf.in.v" "t.de.addr_buf.in_v_buf.y"
= "t.de.addr_buf.in.v" "t.de.addr_buf.inack_ctl.c2"
= "t.de.addr_buf.in.d.d[2].d[0]" "t.de.addr_buf.f_buf_func[2].n1"
= "t.de.addr_buf.in.d.d[2].d[0]" "t.de.addr_buf.in.d.d[2].f"
= "t.de.addr_buf.in.d.d[2].d[1]" "t.de.addr_buf.t_buf_func[2].n1"
= "t.de.addr_buf.in.d.d[2].d[1]" "t.de.addr_buf.in.d.d[2].t"
= "t.de.addr_buf.in.d.d[1].d[0]" "t.de.addr_buf.f_buf_func[1].n1"
= "t.de.addr_buf.in.d.d[1].d[0]" "t.de.addr_buf.in.d.d[1].f"
= "t.de.addr_buf.in.d.d[1].d[1]" "t.de.addr_buf.t_buf_func[1].n1"
= "t.de.addr_buf.in.d.d[1].d[1]" "t.de.addr_buf.in.d.d[1].t"
= "t.de.addr_buf.in.d.d[0].d[0]" "t.de.addr_buf.f_buf_func[0].n1"
= "t.de.addr_buf.in.d.d[0].d[0]" "t.de.addr_buf.in.d.d[0].f"
= "t.de.addr_buf.in.d.d[0].d[1]" "t.de.addr_buf.t_buf_func[0].n1"
= "t.de.addr_buf.in.d.d[0].d[1]" "t.de.addr_buf.in.d.d[0].t"
"t.de.addr_buf.reset_buf.a"->"t.de.addr_buf.reset_buf._y"-
~("t.de.addr_buf.reset_buf.a")->"t.de.addr_buf.reset_buf._y"+
"t.de.addr_buf.reset_buf._y"->"t.de.addr_buf.reset_buf.y"-
~("t.de.addr_buf.reset_buf._y")->"t.de.addr_buf.reset_buf.y"+
= "t.de.addr_buf._in_v" "t.de.addr_buf.in_v_buf.a"
= "t.de.addr_buf._in_v" "t.de.addr_buf.vc.out"
= "t.de.addr_buf._reset_BX" "t.de.addr_buf.reset_bufarray.in"
= "t.de.addr_buf._reset_BX" "t.de.addr_buf.reset_buf.y"
= "t.de.addr_buf._reset_BX" "t.de.addr_buf.inack_ctl.sr_B"
= "t.de.addr_buf._reset_BX" "t.de.addr_buf.inack_ctl.pr_B"
= "t.de.addr_buf.reset_B" "t.de.addr_buf.reset_buf.a"
= "t.de.addr_buf._out_a_BX_t[0]" "t.de.addr_buf.out_a_B_buf_f.out[0]"
= "t.de.addr_buf._out_a_BX_t[1]" "t.de.addr_buf.out_a_B_buf_f.out[1]"
= "t.de.addr_buf._out_a_BX_t[2]" "t.de.addr_buf.out_a_B_buf_f.out[2]"
= "t.de.addr_buf._out_a_BX_t[0]" "t.de.addr_buf.t_buf_func[2].c2"
= "t.de.addr_buf._out_a_BX_t[0]" "t.de.addr_buf.t_buf_func[1].c2"
= "t.de.addr_buf._out_a_BX_t[0]" "t.de.addr_buf.t_buf_func[0].c2"
= "t.de.addr_buf._out_a_BX_t[0]" "t.de.addr_buf._out_a_BX_t[2]"
= "t.de.addr_buf._out_a_BX_t[0]" "t.de.addr_buf._out_a_BX_t[1]"
"t.de.addr_buf.en_buf_f.buf1.a"->"t.de.addr_buf.en_buf_f.buf1._y"-
~("t.de.addr_buf.en_buf_f.buf1.a")->"t.de.addr_buf.en_buf_f.buf1._y"+
"t.de.addr_buf.en_buf_f.buf1._y"->"t.de.addr_buf.en_buf_f.buf1.y"-
~("t.de.addr_buf.en_buf_f.buf1._y")->"t.de.addr_buf.en_buf_f.buf1.y"+
= "t.de.addr_buf.en_buf_f.supply.vdd" "t.de.addr_buf.en_buf_f.buf1.vdd"
= "t.de.addr_buf.en_buf_f.supply.vss" "t.de.addr_buf.en_buf_f.buf1.vss"
= "t.de.addr_buf.en_buf_f.out[0]" "t.de.addr_buf.en_buf_f.out[2]"
= "t.de.addr_buf.en_buf_f.out[0]" "t.de.addr_buf.en_buf_f.out[1]"
= "t.de.addr_buf.en_buf_f.out[0]" "t.de.addr_buf.en_buf_f.buf1.y"
= "t.de.addr_buf.en_buf_f.in" "t.de.addr_buf.en_buf_f.buf1.a"
"t.de.addr_buf.en_buf_t.buf1.a"->"t.de.addr_buf.en_buf_t.buf1._y"-
~("t.de.addr_buf.en_buf_t.buf1.a")->"t.de.addr_buf.en_buf_t.buf1._y"+
"t.de.addr_buf.en_buf_t.buf1._y"->"t.de.addr_buf.en_buf_t.buf1.y"-
~("t.de.addr_buf.en_buf_t.buf1._y")->"t.de.addr_buf.en_buf_t.buf1.y"+
= "t.de.addr_buf.en_buf_t.supply.vdd" "t.de.addr_buf.en_buf_t.buf1.vdd"
= "t.de.addr_buf.en_buf_t.supply.vss" "t.de.addr_buf.en_buf_t.buf1.vss"
= "t.de.addr_buf.en_buf_t.out[0]" "t.de.addr_buf.en_buf_t.out[2]"
= "t.de.addr_buf.en_buf_t.out[0]" "t.de.addr_buf.en_buf_t.out[1]"
= "t.de.addr_buf.en_buf_t.out[0]" "t.de.addr_buf.en_buf_t.buf1.y"
= "t.de.addr_buf.en_buf_t.in" "t.de.addr_buf.en_buf_t.buf1.a"
= "t.de.addr_buf._out_a_B" "t.de.addr_buf.out_a_B_buf_t.in"
= "t.de.addr_buf._out_a_B" "t.de.addr_buf.out_a_B_buf_f.in"
= "t.de.addr_buf._out_a_B" "t.de.addr_buf.out_a_inv.y"
= "t.de.addr_buf._reset_BXX[0]" "t.de.addr_buf.reset_bufarray.out[0]"
= "t.de.addr_buf._reset_BXX[1]" "t.de.addr_buf.reset_bufarray.out[1]"
= "t.de.addr_buf._reset_BXX[2]" "t.de.addr_buf.reset_bufarray.out[2]"
= "t.de.addr_buf._reset_BXX[0]" "t.de.addr_buf.f_buf_func[2].sr_B"
= "t.de.addr_buf._reset_BXX[0]" "t.de.addr_buf.f_buf_func[2].pr_B"
= "t.de.addr_buf._reset_BXX[0]" "t.de.addr_buf.t_buf_func[2].sr_B"
= "t.de.addr_buf._reset_BXX[0]" "t.de.addr_buf.t_buf_func[2].pr_B"
= "t.de.addr_buf._reset_BXX[0]" "t.de.addr_buf.f_buf_func[1].sr_B"
= "t.de.addr_buf._reset_BXX[0]" "t.de.addr_buf.f_buf_func[1].pr_B"
= "t.de.addr_buf._reset_BXX[0]" "t.de.addr_buf.t_buf_func[1].sr_B"
= "t.de.addr_buf._reset_BXX[0]" "t.de.addr_buf.t_buf_func[1].pr_B"
= "t.de.addr_buf._reset_BXX[0]" "t.de.addr_buf.f_buf_func[0].sr_B"
= "t.de.addr_buf._reset_BXX[0]" "t.de.addr_buf.f_buf_func[0].pr_B"
= "t.de.addr_buf._reset_BXX[0]" "t.de.addr_buf.t_buf_func[0].sr_B"
= "t.de.addr_buf._reset_BXX[0]" "t.de.addr_buf.t_buf_func[0].pr_B"
= "t.de.addr_buf._reset_BXX[0]" "t.de.addr_buf._reset_BXX[2]"
= "t.de.addr_buf._reset_BXX[0]" "t.de.addr_buf._reset_BXX[1]"
~"t.de.addr_buf.t_buf_func[0].c1"&~"t.de.addr_buf.t_buf_func[0].c2"|~"t.de.addr_buf.t_buf_func[0].pr_B"->"t.de.addr_buf.t_buf_func[0]._y"+
"t.de.addr_buf.t_buf_func[0].c1"&"t.de.addr_buf.t_buf_func[0].c2"&"t.de.addr_buf.t_buf_func[0].n1"&"t.de.addr_buf.t_buf_func[0].sr_B"->"t.de.addr_buf.t_buf_func[0]._y"-
"t.de.addr_buf.t_buf_func[0]._y"->"t.de.addr_buf.t_buf_func[0].y"-
~("t.de.addr_buf.t_buf_func[0]._y")->"t.de.addr_buf.t_buf_func[0].y"+
~"t.de.addr_buf.t_buf_func[1].c1"&~"t.de.addr_buf.t_buf_func[1].c2"|~"t.de.addr_buf.t_buf_func[1].pr_B"->"t.de.addr_buf.t_buf_func[1]._y"+
"t.de.addr_buf.t_buf_func[1].c1"&"t.de.addr_buf.t_buf_func[1].c2"&"t.de.addr_buf.t_buf_func[1].n1"&"t.de.addr_buf.t_buf_func[1].sr_B"->"t.de.addr_buf.t_buf_func[1]._y"-
"t.de.addr_buf.t_buf_func[1]._y"->"t.de.addr_buf.t_buf_func[1].y"-
~("t.de.addr_buf.t_buf_func[1]._y")->"t.de.addr_buf.t_buf_func[1].y"+
~"t.de.addr_buf.t_buf_func[2].c1"&~"t.de.addr_buf.t_buf_func[2].c2"|~"t.de.addr_buf.t_buf_func[2].pr_B"->"t.de.addr_buf.t_buf_func[2]._y"+
"t.de.addr_buf.t_buf_func[2].c1"&"t.de.addr_buf.t_buf_func[2].c2"&"t.de.addr_buf.t_buf_func[2].n1"&"t.de.addr_buf.t_buf_func[2].sr_B"->"t.de.addr_buf.t_buf_func[2]._y"-
"t.de.addr_buf.t_buf_func[2]._y"->"t.de.addr_buf.t_buf_func[2].y"-
~("t.de.addr_buf.t_buf_func[2]._y")->"t.de.addr_buf.t_buf_func[2].y"+
~"t.de.addr_buf.f_buf_func[0].c1"&~"t.de.addr_buf.f_buf_func[0].c2"|~"t.de.addr_buf.f_buf_func[0].pr_B"->"t.de.addr_buf.f_buf_func[0]._y"+
"t.de.addr_buf.f_buf_func[0].c1"&"t.de.addr_buf.f_buf_func[0].c2"&"t.de.addr_buf.f_buf_func[0].n1"&"t.de.addr_buf.f_buf_func[0].sr_B"->"t.de.addr_buf.f_buf_func[0]._y"-
"t.de.addr_buf.f_buf_func[0]._y"->"t.de.addr_buf.f_buf_func[0].y"-
~("t.de.addr_buf.f_buf_func[0]._y")->"t.de.addr_buf.f_buf_func[0].y"+
~"t.de.addr_buf.f_buf_func[1].c1"&~"t.de.addr_buf.f_buf_func[1].c2"|~"t.de.addr_buf.f_buf_func[1].pr_B"->"t.de.addr_buf.f_buf_func[1]._y"+
"t.de.addr_buf.f_buf_func[1].c1"&"t.de.addr_buf.f_buf_func[1].c2"&"t.de.addr_buf.f_buf_func[1].n1"&"t.de.addr_buf.f_buf_func[1].sr_B"->"t.de.addr_buf.f_buf_func[1]._y"-
"t.de.addr_buf.f_buf_func[1]._y"->"t.de.addr_buf.f_buf_func[1].y"-
~("t.de.addr_buf.f_buf_func[1]._y")->"t.de.addr_buf.f_buf_func[1].y"+
~"t.de.addr_buf.f_buf_func[2].c1"&~"t.de.addr_buf.f_buf_func[2].c2"|~"t.de.addr_buf.f_buf_func[2].pr_B"->"t.de.addr_buf.f_buf_func[2]._y"+
"t.de.addr_buf.f_buf_func[2].c1"&"t.de.addr_buf.f_buf_func[2].c2"&"t.de.addr_buf.f_buf_func[2].n1"&"t.de.addr_buf.f_buf_func[2].sr_B"->"t.de.addr_buf.f_buf_func[2]._y"-
"t.de.addr_buf.f_buf_func[2]._y"->"t.de.addr_buf.f_buf_func[2].y"-
~("t.de.addr_buf.f_buf_func[2]._y")->"t.de.addr_buf.f_buf_func[2].y"+
= "t.de.addr_buf._en_X_t[0]" "t.de.addr_buf.en_buf_t.out[0]"
= "t.de.addr_buf._en_X_t[1]" "t.de.addr_buf.en_buf_t.out[1]"
= "t.de.addr_buf._en_X_t[2]" "t.de.addr_buf.en_buf_t.out[2]"
= "t.de.addr_buf._en_X_t[0]" "t.de.addr_buf.t_buf_func[2].c1"
= "t.de.addr_buf._en_X_t[0]" "t.de.addr_buf.t_buf_func[1].c1"
= "t.de.addr_buf._en_X_t[0]" "t.de.addr_buf.t_buf_func[0].c1"
= "t.de.addr_buf._en_X_t[0]" "t.de.addr_buf._en_X_t[2]"
= "t.de.addr_buf._en_X_t[0]" "t.de.addr_buf._en_X_t[1]"
"t.de.vtree_x.ct.b.a"->"t.de.vtree_x.ct.b._y"-
~("t.de.vtree_x.ct.b.a")->"t.de.vtree_x.ct.b._y"+
"t.de.vtree_x.ct.b._y"->"t.de.vtree_x.ct.b.y"-
~("t.de.vtree_x.ct.b._y")->"t.de.vtree_x.ct.b.y"+
= "t.de.vtree_x.ct.supply.vdd" "t.de.vtree_x.ct.b.vdd"
= "t.de.vtree_x.ct.supply.vss" "t.de.vtree_x.ct.b.vss"
= "t.de.vtree_x.ct.out" "t.de.vtree_x.ct.b.y"
= "t.de.vtree_x.ct.in[0]" "t.de.vtree_x.ct.b.a"
= "t.de.vtree_x.ct.in[0]" "t.de.vtree_x.OR2_tf[0].y"
"t.de.vtree_x.OR2_tf[0].a"|"t.de.vtree_x.OR2_tf[0].b"->"t.de.vtree_x.OR2_tf[0]._y"-
~("t.de.vtree_x.OR2_tf[0].a"|"t.de.vtree_x.OR2_tf[0].b")->"t.de.vtree_x.OR2_tf[0]._y"+
"t.de.vtree_x.OR2_tf[0]._y"->"t.de.vtree_x.OR2_tf[0].y"-
~("t.de.vtree_x.OR2_tf[0]._y")->"t.de.vtree_x.OR2_tf[0].y"+
= "t.de.vtree_x.supply.vss" "t.de.vtree_x.ct.supply.vss"
= "t.de.vtree_x.supply.vdd" "t.de.vtree_x.ct.supply.vdd"
= "t.de.vtree_x.supply.vdd" "t.de.vtree_x.OR2_tf[0].vdd"
= "t.de.vtree_x.supply.vss" "t.de.vtree_x.OR2_tf[0].vss"
= "t.de.vtree_x.out" "t.de.vtree_x.ct.out"
= "t.de.vtree_x.in.d[0].d[0]" "t.de.vtree_x.in.d[0].f"
= "t.de.vtree_x.in.d[0].d[1]" "t.de.vtree_x.in.d[0].t"
= "t.de.vtree_x.in.d[0].d[0]" "t.de.vtree_x.in.d[0].f"
= "t.de.vtree_x.in.d[0].d[1]" "t.de.vtree_x.in.d[0].t"
= "t.de.vtree_x.in.d[0].d[0]" "t.de.vtree_x.OR2_tf[0].b"
= "t.de.vtree_x.in.d[0].d[0]" "t.de.vtree_x.in.d[0].f"
= "t.de.vtree_x.in.d[0].d[1]" "t.de.vtree_x.OR2_tf[0].a"
= "t.de.vtree_x.in.d[0].d[1]" "t.de.vtree_x.in.d[0].t"
= "Vdd" "t.de.supply.vdd"
= "GND" "t.de.supply.vss"
= "t.dly_cfg[0]" "t.de.dly_cfg[0]"
= "t.dly_cfg[1]" "t.de.dly_cfg[1]"
= "t.dly_cfg[2]" "t.de.dly_cfg[2]"
= "t.dly_cfg[3]" "t.de.dly_cfg[3]"
= "t.out[0]" "t.ag.out[0]"
= "t.out[1]" "t.ag.out[1]"
= "t.out[2]" "t.ag.out[2]"
= "t.out[3]" "t.ag.out[3]"
= "t.out[4]" "t.ag.out[4]"
= "t.out[5]" "t.ag.out[5]"
= "t.out[6]" "t.ag.out[6]"
= "t.out[7]" "t.ag.out[7]"
= "t.in.d.d[0].d[0]" "t.in.d.d[0].f"
= "t.in.d.d[0].d[1]" "t.in.d.d[0].t"
= "t.in.d.d[1].d[0]" "t.in.d.d[1].f"
= "t.in.d.d[1].d[1]" "t.in.d.d[1].t"
= "t.in.d.d[2].d[0]" "t.in.d.d[2].f"
= "t.in.d.d[2].d[1]" "t.in.d.d[2].t"
= "t.in.d.d[2].d[0]" "t.in.d.d[2].f"
= "t.in.d.d[2].d[1]" "t.in.d.d[2].t"
= "t.in.d.d[1].d[0]" "t.in.d.d[1].f"
= "t.in.d.d[1].d[1]" "t.in.d.d[1].t"
= "t.in.d.d[0].d[0]" "t.in.d.d[0].f"
= "t.in.d.d[0].d[1]" "t.in.d.d[0].t"
= "t.in.d.d[2].d[0]" "t.in.d.d[2].f"
= "t.in.d.d[2].d[1]" "t.in.d.d[2].t"
= "t.in.d.d[1].d[0]" "t.in.d.d[1].f"
= "t.in.d.d[1].d[1]" "t.in.d.d[1].t"
= "t.in.d.d[0].d[0]" "t.in.d.d[0].f"
= "t.in.d.d[0].d[1]" "t.in.d.d[0].t"
= "t.in.v" "t.de.in.v"
= "t.in.a" "t.de.in.a"
= "t.in.d.d[0].f" "t.de.in.d.d[0].f"
= "t.in.d.d[0].t" "t.de.in.d.d[0].t"
= "t.in.d.d[0].d[0]" "t.de.in.d.d[0].d[0]"
= "t.in.d.d[0].d[1]" "t.de.in.d.d[0].d[1]"
= "t.in.d.d[1].f" "t.de.in.d.d[1].f"
= "t.in.d.d[1].t" "t.de.in.d.d[1].t"
= "t.in.d.d[1].d[0]" "t.de.in.d.d[1].d[0]"
= "t.in.d.d[1].d[1]" "t.de.in.d.d[1].d[1]"
= "t.in.d.d[2].f" "t.de.in.d.d[2].f"
= "t.in.d.d[2].t" "t.de.in.d.d[2].t"
= "t.in.d.d[2].d[0]" "t.de.in.d.d[2].d[0]"
= "t.in.d.d[2].d[1]" "t.de.in.d.d[2].d[1]"
= "t.in.d.d[2].d[0]" "t.in.d.d[2].f"
= "t.in.d.d[2].d[1]" "t.in.d.d[2].t"
= "t.in.d.d[1].d[0]" "t.in.d.d[1].f"
= "t.in.d.d[1].d[1]" "t.in.d.d[1].t"
= "t.in.d.d[0].d[0]" "t.in.d.d[0].f"
= "t.in.d.d[0].d[1]" "t.in.d.d[0].t"

View File

@ -0,0 +1,52 @@
/*************************************************************************
*
* This file is part of ACT dataflow neuro library.
* It's the testing facility for cell_lib_std.act
*
* Copyright (c) 2022 University of Groningen - Ole Richter
* Copyright (c) 2022 University of Groningen - Hugh Greatorex
* Copyright (c) 2022 University of Groningen - Michele Mastella
* Copyright (c) 2022 University of Groningen - Madison Cotteret
*
* This source describes Open Hardware and is licensed under the CERN-OHL-W v2 or later
*
* You may redistribute and modify this documentation and make products
* using it under the terms of the CERN-OHL-W v2 (https:/cern.ch/cern-ohl).
* This documentation is distributed WITHOUT ANY EXPRESS OR IMPLIED
* WARRANTY, INCLUDING OF MERCHANTABILITY, SATISFACTORY QUALITY
* AND FITNESS FOR A PARTICULAR PURPOSE. Please see the CERN-OHL-W v2
* for applicable conditions.
*
* Source location: https://git.web.rug.nl/bics/actlib_dataflow_neuro
*
* As per CERN-OHL-W v2 section 4.1, should You produce hardware based on
* these sources, You must maintain the Source Location visible in its
* documentation.
*
**************************************************************************
*/
import "../../dataflow_neuro/coders.act";
import globals;
open tmpl::dataflow_neuro;
defproc decoder_2d_dly_and_2_4(avMx1of2<1+2> in; bool? out[2*4], dly_cfg[4])
{
bool _reset_B;
prs {
Reset => _reset_B-
}
decoder_2d_dly<1,2,2,4,4> de(.in = in, .dly_cfg = dly_cfg);
de.supply.vdd = Vdd;
de.supply.vss = GND;
de.reset_B = _reset_B;
and_grid<2,4> ag(.inx = de.outx, .iny = de.outy, .out = out);
ag.supply.vdd = Vdd;
ag.supply.vss = GND;
}
decoder_2d_dly_and_2_4 t;

View File

@ -0,0 +1,57 @@
watchall
set-qdi-channel-neutral "t.in" 3
set Reset 0
# Set delay config lines
set t.dly_cfg[0] 1
set t.dly_cfg[1] 1
set t.dly_cfg[2] 1
set t.dly_cfg[3] 1
cycle
system "echo '[] set Reset 1'"
set Reset 1
cycle
system "echo '[] set Reset 0'"
set Reset 0
mode run
cycle
system "echo '[] Sending packet in'"
set-qdi-channel-valid "t.in" 3 7
cycle
assert t.in.a 1
assert t.in.v 1
# system "echo '[]' Setting ack from DLY high"
# set b.b.addr_buf.out.a 1
# cycle
# assert b.outx[0] 0
# assert b.outx[1] 0
# assert b.outx[2] 0
# assert b.outx[3] 0
# assert b.outx[4] 0
# assert b.outx[5] 0
# assert b.outx[6] 0
# assert b.outx[7] 0
# assert b.outy[0] 0
# assert b.outy[1] 0
# assert b.outy[2] 0
# assert b.outy[3] 0
# assert b.outy[4] 0
# assert b.outy[5] 0
# assert b.outy[6] 0
# assert b.outy[7] 0
# assert b.outy[8] 0
# assert b.outy[9] 0
# assert b.outy[10] 0
# assert b.outy[11] 0
# assert b.outy[12] 0
# assert b.outy[13] 0
# assert b.outy[14] 0
# assert b.outy[15] 0