merged buf_s into primitives

This commit is contained in:
alexmadison 2022-03-01 10:09:08 +01:00
commit a8b1710f65
16 changed files with 2358 additions and 51 deletions

View File

@ -116,7 +116,7 @@ namespace tmpl {
//validity
bool _in_v;
ctree<N> vc(.in=in.d,.out=_in_v,.supply=supply);
vtree<N> vc(.in=in.d,.out=_in_v,.supply=supply);
BUF_X4 in_v_buf(.a=_in_v, .y=in.v,.vdd=supply.vdd,.vss=supply.vss);
//function
@ -225,7 +225,7 @@ namespace tmpl {
sigbuf<N> c_buf_f(.in=cond.d.d[0].f, .out=_c_f_buf);
OR2_X1 c_f_c_t_or(.a=cond.d.d[0].t, .b=cond.d.d[0].f, .y=_c_v,.vdd=supply.vdd,.vss=supply.vss);
ctree<N> vc(.in=in.d,.out=_in_v,.supply=supply);
vtree<N> vc(.in=in.d,.out=_in_v,.supply=supply);
A_2C_B_X1 c_el(.c1=_c_v, .c2=_in_v, .y=_in_c_v_,.vdd=supply.vdd,.vss=supply.vss);
BUF_X4 in_v_buf(.a=_in_v, .y=in.v,.vdd=supply.vdd,.vss=supply.vss);
@ -309,7 +309,7 @@ namespace tmpl {
//validity
bool _in_v;
ctree<N> vc(.in=in.d,.out=_in_v,.supply=supply);
vtree<N> vc(.in=in.d,.out=_in_v,.supply=supply);
BUF_X4 in_v_buf(.a=_in_v, .y=in.v,.vdd=supply.vdd,.vss=supply.vss);
//function
@ -394,7 +394,7 @@ namespace tmpl {
// OR2_X1 c_f_c_t_or(.a=cond.d.d[0].f, .b=cond.d.d[0].t, .y=_c_v,.vdd=supply.vdd,.vss=supply.vss);
// ]
// ctree<N> vc(.in=in.d,.out=_in_v,.supply=supply);
// vtree<N> vc(.in=in.d,.out=_in_v,.supply=supply);
// A_2C_B_X1 c_el(.c1=_c_v, .c2=_in_v, .y=_in_c_v_,.vdd=supply.vdd,.vss=supply.vss);
// BUF_X4 in_v_buf(.a=_in_v, .y=in.v,.vdd=supply.vdd,.vss=supply.vss);
@ -445,33 +445,6 @@ namespace tmpl {
// token_buf.pr_B ;
// token_buf.sr_b ;
// }
// export template<pint N>
// defproc merge (avMx1of2<N> in1; avMx1of2<N> in2; avMx1of2<N> out ; bool? reset_B; power supply) {
// //control
// bool _en, _reset_BX,_reset_BXX[N];
// A_4C_RB_X4 in1ack_ctl(.c1=in1arb,.c2=_en,.c3=in1.v,.c4=out.v,.y=in1.a,.pr_B=_reset_BX,.sr_B=_reset_BX,.vdd=supply.vdd,.vss=supply.vss);
// A_4C_RB_X4 in2ack_ctl(.c1=in2arb,.c2=_en,.c3=in2.v,.c4=out.v,.y=in2.a,.pr_B=_reset_BX,.sr_B=_reset_BX,.vdd=supply.vdd,.vss=supply.vss);
// A_4P_1N1N en_ctl(.p1 = in1.a,.p2=in2.a,.p3=out_a_X,.p4 = out.v, .n1 = in1.a,.y = _en,.vdd=supply.vdd,.vss=supply.vss);
// //reset_buffers
// 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);
// //validity
// bool _in1_v,_in2_v;
// a1of1 _in1_temp,_in2_temp,_out_temp;
// ctree<N> vc1(.in=in1.d,.out=in1.v,.supply=supply);
// ctree<N> vc2(.in=in2.d,.out=in2.v,.supply=supply);
// arbiter_handshake validity_arb(.in1 = _in1_temp,.in2 = _in2_temp,.out =_out_temp)
// _in1_temp.r = in1.v
// _in2_temp.r = in2.v
// _in1_temp.a =
// _in1_temp.a =
// _out_temp.r = _out_temp.a
//function
// }
export
defproc arbiter_handshake(a1of1 in1; a1of1 in2; a1of1 out; power supply)
{
@ -502,6 +475,74 @@ namespace tmpl {
BUF_X1 reset_buf(.a=reset_B, .y=_reset_BX,.vdd=supply.vdd,.vss=supply.vss);
}
export template<pint N>
defproc merge (avMx1of2<N> in1; avMx1of2<N> in2; avMx1of2<N> out ; bool? reset_B; power supply) {
//control
bool _in1_a_B,_in2_a_B,_en, _reset_BX,_reset_BXX[2*N];
bool _in1_arb,_in2_arb,_out_a_X[2*N+1];
A_4C_RB_X4 in1ack_ctl(.c1=_in1_arb,.c2=_en,.c3=in1.v,.c4=out.v,.y=in1.a,.pr_B=_reset_BX,.sr_B=_reset_BX,.vdd=supply.vdd,.vss=supply.vss);
A_4C_RB_X4 in2ack_ctl(.c1=_in2_arb,.c2=_en,.c3=in2.v,.c4=out.v,.y=in2.a,.pr_B=_reset_BX,.sr_B=_reset_BX,.vdd=supply.vdd,.vss=supply.vss);
A_4P1N1N_X1 en_ctl(.p1 = in1.a,.p2=in2.a,.p3=_out_a_X[N],.p4 = out.v, .n1 = in1.a,.y = _en,.vdd=supply.vdd,.vss=supply.vss);
INV_X1 in1ack_ctl_inv(.a=in1.a,.y=_in1_a_B,.vdd=supply.vdd,.vss=supply.vss);
INV_X1 in2ack_ctl_inv(.a=in2.a,.y=_in2_a_B,.vdd=supply.vdd,.vss=supply.vss);
//reset_buffers
BUF_X1 reset_buf(.a=reset_B, .y=_reset_BX,.vdd=supply.vdd,.vss=supply.vss);
sigbuf<N*2> reset_bufarray(.in=_reset_BX, .out=_reset_BXX);
//validity
a1of1 _in1_temp,_in2_temp,_out_temp;
bool _in1_arb2function,_in2_arb2function;
bool _in1_arb2function_X[2*N],_in2_arb2function_X[2*N];
vtree<N> vc1(.in=in1.d,.out=in1.v,.supply=supply);
vtree<N> vc2(.in=in2.d,.out=in2.v,.supply=supply);
arbiter_handshake validity_arb(.in1 = _in1_temp,.in2 = _in2_temp,.out =_out_temp);
_in1_temp.r = in1.v;
_in2_temp.r = in2.v;
_in1_temp.a = _in1_arb;
_in1_temp.a = _in2_arb;
_out_temp.r = _out_temp.a;
AND2_X1 AND_arb1(.a = _in2_a_B,.b = _in1_arb, .y = _in1_arb2function);
AND2_X1 AND_arb2(.a = _in1_a_B,.b = _in2_arb, .y = _in2_arb2function);
sigbuf<2*N> arb2function1(.in = _in1_arb2function,.out = _in1_arb2function_X);
sigbuf<2*N> arb2function2(.in = _in2_arb2function,.out = _in2_arb2function_X);
//function
A_2C2N2N_R_X1 merge_func_t[N];
A_2C2N2N_R_X1 merge_func_f[N];
sigbuf<N*2+1> buf_out_a(.in = out.a,.out = _out_a_X);
buf_out_a.supply=supply;
buf_out_a.supply=supply;
(i:N:
merge_func_t[i].c1 = _en;
merge_func_t[i].c2 = _out_a_X[i];
merge_func_t[i].n1 = _in1_arb2function_X[i];
merge_func_t[i].n2 = in1.d.d[i].t;
merge_func_t[i].n3 = _in2_arb2function_X[i];
merge_func_t[i].n4 = in2.d.d[i].t;
merge_func_t[i].y = out.d.d[i].t;
merge_func_t[i].vdd=supply.vdd;
merge_func_t[i].vss=supply.vss;
merge_func_t[i].pr_B = _reset_BXX[i+N-1];
merge_func_t[i].sr_B = _reset_BXX[i+N-1];
merge_func_f[i].c1 = _en;
merge_func_f[i].c2 = _out_a_X[i+N-1];
merge_func_f[i].n1 = _in1_arb2function_X[i+N-1];
merge_func_f[i].n2 = in1.d.d[i].f;
merge_func_f[i].n3 = _in2_arb2function_X[i+N-1];
merge_func_f[i].n4 = in2.d.d[i].f;
merge_func_f[i].y = out.d.d[i].f;
merge_func_f[i].vdd=supply.vdd;
merge_func_f[i].vss=supply.vss;
merge_func_f[i].pr_B = _reset_BXX[i];
merge_func_f[i].sr_B = _reset_BXX[i];
)
}
export
defproc buffer_t(a1of1 in; a1of1 out; bool? reset_B; power supply)
{

View File

@ -151,7 +151,7 @@ defproc ortree (bool? in[N]; bool! out; power supply)
* C-elements
*/
export template<pint N>
defproc ctree (std::data::Mx1of2?<N> in; bool! out; power supply)
defproc ctree (bool? in[N]; bool! out; power supply)
{
bool tout;
@ -187,19 +187,11 @@ defproc ctree (std::data::Mx1of2?<N> in; bool! out; power supply)
/* array that holds ALL the nodes in the completion tree */
bool tmp[end+1];
// OR layer for making OR between true and false of in (they are then sent to Ctree)
OR2_X1 OR2_tf[N];
// Connecting the first nodes to the input
(l:N:
OR2_tf[l].a = in.d[l].t;
OR2_tf[l].b = in.d[l].f;
OR2_tf[l].y = tmp[l];
// OR2_tf[i].a = supply.vdd;
// OR2_tf[i].b = supply.vdd;
// OR2_tf[i].y = supply.vdd;
OR2_tf[l].vdd = supply.vdd;
OR2_tf[l].vss = supply.vss;
)
//(k:N:tmp[k] = in[k];)
tmp[l] = in[l];
)
/* array to hold the actual C-elments, either A2C or A3C */
[lenTree2Count > 0 ->
@ -271,6 +263,22 @@ defproc ctree (std::data::Mx1of2?<N> in; bool! out; power supply)
}
export template<pint N>
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)
OR2_X1 OR2_tf[N];
ctree<N> myctree;
(l:N:
OR2_tf[l].a = in.d[l].t;
OR2_tf[l].b = in.d[l].f;
OR2_tf[l].y = myctree.in[l];
OR2_tf[l].vdd = supply.vdd;
OR2_tf[l].vss = supply.vss;
)
myctree.supply = supply;
out = myctree.out;
}
export template<pint N>
defproc sigbuf (bool? in; bool! out[N]; power supply)
{

View File

@ -0,0 +1,39 @@
a._v a.a a.u a.v a._u a.b
reset done
0 a.a : 0
0 a.b : 0
1 a._u : 1 [by a.a:=0]
7092 a._v : 1 [by a.b:=0]
7094 a.v : 0 [by a._v:=1]
10468 a.u : 0 [by a._u:=1]
step 1.1 finished
10468 a.a : 1
10468 a.b : 1
15221 a._u : 0 [by a.a:=1]
15335 a.u : 1 [by a._u:=0]
step 1.2 finished
15335 a.a : 0
15335 a.b : 0
80701 a._u : 1 [by a.a:=0]
82427 a.u : 0 [by a._u:=1]
step 2.1 finished
82427 a.a : 1
82427 a.b : 1
82466 a._u : 0 [by a.a:=1]
82957 a.u : 1 [by a._u:=0]
step 2.2 finished
82957 a.a : 0
82957 a.b : 0
82970 a._u : 1 [by a.a:=0]
83010 a.u : 0 [by a._u:=1]
step 3.1 finished
83010 a.b : 1
83425 a._v : 0 [by a.b:=1]
83445 a.v : 1 [by a._v:=0]
step 3.2 finished

Binary file not shown.

View File

@ -0,0 +1,18 @@
defproc arbiter (bool a, b, u, v)
{
bool _u, _v;
prs {
[keeper=0] a & _v -> _u-
[keeper=0] ~a | ~_v -> _u+
[keeper=0] b & _u -> _v-
[keeper=0] ~b | ~_u -> _v+
[keeper=0] _u => u-
[keeper=0] _v => v-
}
spec {
mk_excllo(_u, _v)
}
}
arbiter a;

View File

@ -0,0 +1,39 @@
watchall
cycle
system "echo 'reset done'"
set a.a 0
set a.b 0
advance 1000000
status X
mode run
system "echo 'step 1.1 finished'"
set a.a 1
set a.b 1
advance 1000000
status X
mode run
system "echo 'step 1.2 finished'"
set a.a 0
set a.b 0
advance 1000000
status X
mode run
system "echo 'step 2.1 finished'"
set a.a 1
set a.b 1
advance 1000000
status X
mode run
system "echo 'step 2.2 finished'"
set a.a 0
set a.b 0
advance 1000000
status X
mode run
system "echo 'step 3.1 finished'"
set a.a 0
set a.b 1
advance 1000000
status X
mode run
system "echo 'step 3.2 finished'"

View File

@ -1,3 +1,4 @@
t.ctree_test.tmp[22] t.ctree_test.C2Els[0]._y t.ctree_test.tmp[17] t.in[14] t.in[4] t.in[2] t.in[8] t.in[13] t.ctree_test.tmp[21] t.ctree_test.tmp[23] t.out t.in[12] t.in[6] t.in[7] t.in[10] t.in[5] t.ctree_test.tmp[19] t.ctree_test.tmp[18] t.ctree_test.C3Els[0]._y t.in[3] t.ctree_test.tmp[24] t.ctree_test.C3Els[2]._y t.ctree_test.C2Els[4]._y t.in[0] t.in[1] t.ctree_test.tmp[15] t.ctree_test.tmp[16] t.in[11] t.ctree_test.tmp[20] t.ctree_test.C2Els[7]._y t.in[9] t.ctree_test.C2Els[2]._y t.ctree_test.C2Els[1]._y t.ctree_test.C2Els[6]._y t.ctree_test.C2Els[5]._y t.ctree_test.C2Els[3]._y t.ctree_test.C3Els[1]._y
0
1
[0] starting test all 1
[1] starting test all 0
[2] testing state holding

View File

@ -1,5 +1,5 @@
system "echo '0'"
system "echo '[0] starting test all 1'"
set t.in[0] 1
set t.in[1] 1
@ -16,12 +16,47 @@ set t.in[11] 1
set t.in[12] 1
set t.in[13] 1
set t.in[14] 1
system "echo '1'"
cycle
mode run
assert t.out 1
system "echo '[1] starting test all 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
set t.in[5] 0
set t.in[6] 0
set t.in[7] 0
set t.in[8] 0
set t.in[9] 0
set t.in[10] 0
set t.in[11] 0
set t.in[12] 0
set t.in[13] 0
set t.in[14] 0
cycle
mode run
assert t.out 0
system "echo '[2] testing state holding'"
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
set t.in[5] 1
set t.in[6] 0
set t.in[7] 0
set t.in[8] 0
set t.in[9] 0
set t.in[10] 0
set t.in[11] 0
set t.in[12] 0
set t.in[13] 0
set t.in[14] 0
cycle
mode run
assert t.out 0

View File

@ -0,0 +1,50 @@
my_merge.my_merge._out_temp.a my_merge.my_merge.buf_out_a.buf6._y my_merge.my_merge._out_a_X[0] my_merge.my_merge.vc1.myctree.tmp[8] my_merge.my_merge.merge_func_f[5].n2 my_merge.my_merge.vc1.myctree.tmp[9] my_merge.my_merge.merge_func_t[4].n2 my_merge.my_merge.validity_arb._y1_arb my_merge.my_merge.vc2.myctree.tmp[7] my_merge.my_merge._en my_merge.my_merge.vc1.myctree.tmp[7] my_merge.my_merge.vc1.OR2_tf[5].y my_merge.my_merge.vc1.OR2_tf[4].y my_merge.my_merge._in1_arb my_merge.my_merge.vc1.OR2_tf[3].y my_merge.my_merge.merge_func_f[4].n2 my_merge.my_merge.AND_arb2._y my_merge.my_merge.merge_func_t[4].n4 my_merge.my_merge.merge_func_f[2].n4 my_merge.my_merge.vc2.myctree.tmp[8] my_merge.my_merge._in1_arb2function_X[0] my_merge.my_merge.vc2.OR2_tf[0].y my_merge.my_merge._in2_arb2function_X[0] my_merge.my_merge.merge_func_f[0].n2 my_merge.my_merge.merge_func_t[0].n4 my_merge.my_merge.vc2.OR2_tf[6]._y my_merge.my_merge.merge_func_f[2].n2 my_merge.in1.v my_merge.my_merge.merge_func_t[1].n4 my_merge.out.v my_merge.my_merge.merge_func_t[1].n2 my_merge.my_merge.merge_func_t[2].n4 my_merge.my_merge.merge_func_t[5].n2 my_merge.my_merge.vc2.OR2_tf[1].y my_merge.my_merge.merge_func_t[3].n4 my_merge.my_merge.merge_func_f[5].n4 my_merge.my_merge.vc2.OR2_tf[6].y my_merge.my_merge.merge_func_f[1].n4 my_merge.my_merge.merge_func_f[3].n4 my_merge.my_merge._in2_arb2function my_merge.my_merge.vc2.OR2_tf[5].y my_merge.my_merge.merge_func_f[4].n4 my_merge.my_merge.merge_func_t[6].n2 my_merge.my_merge._in2_temp.a my_merge.my_merge.merge_func_f[6].n4 my_merge.my_merge.merge_func_f[1].n2 my_merge.my_merge.merge_func_t[6].n4 my_merge.my_merge.vc2.OR2_tf[3].y my_merge.my_merge.merge_func_f[0].n4 my_merge.in2.v my_merge.my_merge.merge_func_t[0].n2 my_merge.my_merge.merge_func_t[3].n2 my_merge.my_merge.merge_func_f[3].n2 my_merge.my_merge.vc1.myctree.C2Els[1]._y my_merge.my_merge.vc1.OR2_tf[2].y my_merge.my_merge.merge_func_f[6].n2 my_merge.my_merge.vc1.OR2_tf[0].y my_merge.my_merge._in1_arb2function my_merge.my_merge.vc1.OR2_tf[4]._y my_merge.my_merge.vc2.OR2_tf[2].y my_merge.my_merge.en_ctl.n2 my_merge.my_merge.validity_arb.arbiter._y1 my_merge.my_merge.merge_func_t[2].n2 my_merge.my_merge.vc1.myctree.C3Els[0]._y my_merge.my_merge.validity_arb._y2_arb my_merge.my_merge.vc1.OR2_tf[3]._y my_merge.my_merge.vc1.OR2_tf[6].y my_merge.my_merge.vc2.OR2_tf[3]._y my_merge.out.a my_merge.my_merge.vc1.myctree.C3Els[1]._y my_merge.my_merge.vc2.myctree.C3Els[0]._y my_merge.my_merge.merge_func_t[5].n4 my_merge.my_merge.vc1.OR2_tf[6]._y my_merge.my_merge.arb2function1.buf4._y my_merge.my_merge.vc2.myctree.tmp[9] my_merge.my_merge.vc1.OR2_tf[1]._y my_merge.my_merge.vc1.OR2_tf[1].y my_merge.my_merge.validity_arb.arbiter._y2 my_merge.my_merge.vc1.OR2_tf[2]._y my_merge.my_merge.AND_arb1._y my_merge.my_merge.vc1.OR2_tf[5]._y my_merge.my_merge.vc2.OR2_tf[4].y my_merge.my_merge.vc1.OR2_tf[0]._y my_merge.my_merge.validity_arb.ack_cell2._y my_merge.my_merge.vc2.OR2_tf[5]._y my_merge.my_merge.vc2.OR2_tf[0]._y my_merge.my_merge.validity_arb.ack_cell1._y my_merge.my_merge.vc2.OR2_tf[4]._y my_merge.my_merge.arb2function2.buf4._y my_merge.my_merge.vc2.myctree.C2Els[1]._y my_merge.my_merge.vc2.OR2_tf[1]._y my_merge.my_merge.vc1.myctree.C2Els[0]._y my_merge.my_merge.vc2.OR2_tf[2]._y my_merge.my_merge.validity_arb.or_cell._y my_merge.my_merge.vc2.myctree.C3Els[1]._y my_merge.my_merge.vc2.myctree.C2Els[0]._y
Node `my_fork.in.d.d[0].f' not found
Node `my_fork.out1.a' not found
Node `my_fork.out1.v' not found
Node `my_fork.out2.a' not found
Node `my_fork.out2.v' not found
System initialized
83042 Reset : 0
119973 my_merge._reset_B : 1 [by Reset:=0]
120028 my_merge.my_merge.reset_buf._y : 0 [by my_merge._reset_B:=1]
171681 my_merge.my_merge._reset_BX : 1 [by my_merge.my_merge.reset_buf._y:=0]
185530 my_merge.my_merge.in1ack_ctl._y : X [by my_merge.my_merge._reset_BX:=1]
196493 my_merge.my_merge.in2ack_ctl._y : X [by my_merge.my_merge._reset_BX:=1]
196915 my_merge.in2.a : X [by my_merge.my_merge.in2ack_ctl._y:=X]
199873 my_merge.in1.a : X [by my_merge.my_merge.in1ack_ctl._y:=X]
199874 my_merge.my_merge._in1_a_B : X [by my_merge.in1.a:=X]
201461 my_merge.my_merge.reset_bufarray.buf4._y : 0 [by my_merge.my_merge._reset_BX:=1]
201462 my_merge.my_merge._reset_BXX[0] : 1 [by my_merge.my_merge.reset_bufarray.buf4._y:=0]
201465 my_merge.my_merge.merge_func_f[3].y : X [by my_merge.my_merge._reset_BXX[0]:=1]
201480 my_merge.my_merge.merge_func_t[4].y : X [by my_merge.my_merge._reset_BXX[0]:=1]
201744 my_merge.my_merge.merge_func_f[5].y : X [by my_merge.my_merge._reset_BXX[0]:=1]
202013 my_merge.my_merge.merge_func_f[1].y : X [by my_merge.my_merge._reset_BXX[0]:=1]
202230 my_merge.my_merge.merge_func_f[4].y : X [by my_merge.my_merge._reset_BXX[0]:=1]
202416 my_merge.my_merge.merge_func_t[0].y : X [by my_merge.my_merge._reset_BXX[0]:=1]
202444 my_merge.my_merge.merge_func_t[3].y : X [by my_merge.my_merge._reset_BXX[0]:=1]
202533 my_merge.my_merge.merge_func_f[0].y : X [by my_merge.my_merge._reset_BXX[0]:=1]
202543 my_merge.my_merge.merge_func_t[1].y : X [by my_merge.my_merge._reset_BXX[0]:=1]
205465 my_merge.my_merge.merge_func_t[6].y : X [by my_merge.my_merge._reset_BXX[0]:=1]
205475 my_merge.my_merge.merge_func_t[5].y : X [by my_merge.my_merge._reset_BXX[0]:=1]
221667 my_merge.my_merge.merge_func_f[6].y : X [by my_merge.my_merge._reset_BXX[0]:=1]
223903 my_merge.my_merge.merge_func_f[2].y : X [by my_merge.my_merge._reset_BXX[0]:=1]
245629 my_merge.my_merge._in2_a_B : X [by my_merge.in2.a:=X]
255932 my_merge.my_merge.merge_func_t[2].y : X [by my_merge.my_merge._reset_BXX[0]:=1]
System reset completed
my_merge.my_merge.merge_func_f[0].y my_merge.my_merge._out_temp.a my_merge.my_merge.buf_out_a.buf6._y my_merge.my_merge._out_a_X[0] my_merge.my_merge._in2_a_B my_merge.my_merge.vc1.myctree.tmp[8] my_merge.my_merge.merge_func_f[5].n2 my_merge.my_merge.vc1.myctree.tmp[9] my_merge.my_merge.merge_func_t[4].n2 my_merge.my_merge.validity_arb._y1_arb my_merge.my_merge.vc2.myctree.tmp[7] my_merge.my_merge._en my_merge.my_merge.vc1.myctree.tmp[7] my_merge.in1.a my_merge.my_merge.vc1.OR2_tf[5].y my_merge.my_merge.merge_func_t[3].y my_merge.my_merge.vc1.OR2_tf[4].y my_merge.my_merge._in1_arb my_merge.my_merge.vc1.OR2_tf[3].y my_merge.my_merge.merge_func_t[5].y my_merge.my_merge.merge_func_f[4].n2 my_merge.my_merge.AND_arb2._y my_merge.my_merge.merge_func_t[4].n4 my_merge.my_merge.merge_func_f[2].n4 my_merge.my_merge.vc2.myctree.tmp[8] my_merge.my_merge._in1_arb2function_X[0] my_merge.my_merge.vc2.OR2_tf[0].y my_merge.my_merge._in2_arb2function_X[0] my_merge.my_merge.merge_func_f[0].n2 my_merge.my_merge.merge_func_t[0].n4 my_merge.my_merge.vc2.OR2_tf[6]._y my_merge.my_merge.merge_func_f[5].y my_merge.my_merge.merge_func_f[2].n2 my_merge.in1.v my_merge.my_merge.merge_func_t[1].n4 my_merge.out.v my_merge.my_merge.merge_func_t[1].n2 my_merge.my_merge.merge_func_t[2].n4 my_merge.my_merge.merge_func_t[5].n2 my_merge.my_merge.vc2.OR2_tf[1].y my_merge.my_merge.merge_func_f[1].y my_merge.my_merge.merge_func_t[3].n4 my_merge.my_merge.merge_func_f[4].y my_merge.my_merge._in1_a_B my_merge.my_merge.merge_func_t[0].y my_merge.my_merge.merge_func_t[1].y my_merge.my_merge.merge_func_f[5].n4 my_merge.my_merge.vc2.OR2_tf[6].y my_merge.my_merge.merge_func_f[1].n4 my_merge.my_merge.merge_func_f[3].n4 my_merge.my_merge._in2_arb2function my_merge.my_merge.merge_func_t[4].y my_merge.my_merge.vc2.OR2_tf[5].y my_merge.my_merge.merge_func_f[6].y my_merge.my_merge.merge_func_f[4].n4 my_merge.my_merge.merge_func_t[6].n2 my_merge.my_merge._in2_temp.a my_merge.my_merge.merge_func_f[6].n4 my_merge.my_merge.merge_func_f[3].y my_merge.my_merge.merge_func_f[1].n2 my_merge.my_merge.merge_func_t[6].n4 my_merge.my_merge.vc2.OR2_tf[3].y my_merge.my_merge.merge_func_f[0].n4 my_merge.in2.v my_merge.my_merge.merge_func_t[0].n2 my_merge.my_merge.merge_func_t[3].n2 my_merge.my_merge.merge_func_f[3].n2 my_merge.my_merge.vc1.myctree.C2Els[1]._y my_merge.my_merge.vc1.OR2_tf[2].y my_merge.my_merge.merge_func_f[6].n2 my_merge.my_merge.vc1.OR2_tf[0].y my_merge.my_merge._in1_arb2function my_merge.my_merge.vc1.OR2_tf[4]._y my_merge.my_merge.vc2.OR2_tf[2].y my_merge.my_merge.merge_func_t[6].y my_merge.my_merge.en_ctl.n2 my_merge.my_merge.merge_func_f[2].y my_merge.my_merge.validity_arb.arbiter._y1 my_merge.in2.a my_merge.my_merge.merge_func_t[2].n2 my_merge.my_merge.in2ack_ctl._y my_merge.my_merge.vc1.myctree.C3Els[0]._y my_merge.my_merge.validity_arb._y2_arb my_merge.my_merge.vc1.OR2_tf[3]._y my_merge.my_merge.vc1.OR2_tf[6].y my_merge.my_merge.in1ack_ctl._y my_merge.my_merge.vc2.OR2_tf[3]._y my_merge.out.a my_merge.my_merge.vc1.myctree.C3Els[1]._y my_merge.my_merge.vc2.myctree.C3Els[0]._y my_merge.my_merge.merge_func_t[5].n4 my_merge.my_merge.vc1.OR2_tf[6]._y my_merge.my_merge.arb2function1.buf4._y my_merge.my_merge.vc2.myctree.tmp[9] my_merge.my_merge.vc1.OR2_tf[1]._y my_merge.my_merge.merge_func_t[2].y my_merge.my_merge.vc1.OR2_tf[1].y my_merge.my_merge.validity_arb.arbiter._y2 my_merge.my_merge.vc1.OR2_tf[2]._y my_merge.my_merge.AND_arb1._y my_merge.my_merge.vc1.OR2_tf[5]._y my_merge.my_merge.vc2.OR2_tf[4].y my_merge.my_merge.vc1.OR2_tf[0]._y my_merge.my_merge.validity_arb.ack_cell2._y my_merge.my_merge.vc2.OR2_tf[5]._y my_merge.my_merge.vc2.OR2_tf[0]._y my_merge.my_merge.validity_arb.ack_cell1._y my_merge.my_merge.vc2.OR2_tf[4]._y my_merge.my_merge.arb2function2.buf4._y my_merge.my_merge.vc2.myctree.C2Els[1]._y my_merge.my_merge.vc2.OR2_tf[1]._y my_merge.my_merge.vc1.myctree.C2Els[0]._y my_merge.my_merge.vc2.OR2_tf[2]._y my_merge.my_merge.validity_arb.or_cell._y my_merge.my_merge.vc2.myctree.C3Els[1]._y my_merge.my_merge.vc2.myctree.C2Els[0]._y
Node `my_fork.out1.d.d[0].f' not found
Node `my_fork.out2.d.d[0].f' not found
Output neutral checked
Node `my_fork.in.d.d[0].f' not found
Node `my_fork.in.v' not found
Node `my_fork.in.a' not found
Node `my_fork.out1.d.d[0].f' not found
Node `my_fork.out2.d.d[0].f' not found
Node `my_fork.out1.v' not found
Node `my_fork.out2.v' not found
Node `my_fork.in.a' not found
Node `my_fork.in.d.d[0].f' not found
Finished
Node `my_fork.out1.a' not found
Node `my_fork.out1.a' not found

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,49 @@
/*************************************************************************
*
* 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 globals;
open tmpl::dataflow_neuro;
defproc merge_7 (avMx1of2<7> in1; avMx1of2<7> in2; avMx1of2<7> out; avMx1of2<1> cond){
merge<7> my_merge(.in1=in1, .in2=in2,.out = out);
//Low active Reset
bool _reset_B;
prs {
Reset => _reset_B-
}
my_merge.supply.vss = GND;
my_merge.supply.vdd = Vdd;
my_merge.reset_B = _reset_B;
}
merge_7 my_merge;

View File

@ -0,0 +1,35 @@
watchall
set-qdi-channel-neutral "my_fork.in" 15
set my_fork.out1.a 0
set my_fork.out1.v 0
set my_fork.out2.a 0
set my_fork.out2.v 0
cycle
system "echo 'System initialized'"
set Reset 0
cycle
system "echo 'System reset completed'"
status X
mode run
assert-qdi-channel-neutral "my_fork.out1" 15
assert-qdi-channel-neutral "my_fork.out2" 15
cycle
system "echo 'Output neutral checked'"
set-qdi-channel-valid "my_fork.in" 15 5
cycle
assert my_fork.in.v 1
assert my_fork.in.a 0
assert-qdi-channel-valid "my_fork.out1" 15 5
assert-qdi-channel-valid "my_fork.out2" 15 5
set my_fork.out1.v 1
set my_fork.out2.v 1
cycle
assert my_fork.in.a 1
set-qdi-channel-neutral "my_fork.in" 15
cycle
set my_fork.out1.a 1
set my_fork.out1.a 1
system "echo 'Finished'"

View File

@ -0,0 +1,6 @@
t.in.d[13].t t.in.d[9].t t.in.d[1].t t.vtree_test.myctree.C2Els[6]._y t.in.d[14].f t.vtree_test.OR2_tf[7].y t.in.d[6].f t.in.d[7].t t.vtree_test.myctree.C2Els[5]._y t.in.d[3].t t.in.d[12].t t.out t.in.d[7].f t.in.d[5].f t.in.d[12].f t.in.d[14].t t.in.d[3].f t.in.d[10].t t.in.d[4].f t.in.d[0].t t.vtree_test.OR2_tf[8].y t.vtree_test.OR2_tf[0].y t.vtree_test.myctree.C2Els[0]._y t.vtree_test.OR2_tf[11].y t.vtree_test.myctree.tmp[16] t.in.d[2].t t.in.d[11].t t.in.d[1].f t.vtree_test.myctree.tmp[19] t.in.d[9].f t.vtree_test.OR2_tf[14].y t.vtree_test.myctree.tmp[21] t.vtree_test.myctree.tmp[17] t.vtree_test.myctree.tmp[15] t.in.d[8].t t.in.d[4].t t.in.d[0].f t.vtree_test.OR2_tf[6].y t.vtree_test.OR2_tf[12].y t.vtree_test.OR2_tf[4].y t.vtree_test.OR2_tf[6]._y t.vtree_test.OR2_tf[10].y t.vtree_test.OR2_tf[13].y t.vtree_test.myctree.tmp[23] t.vtree_test.OR2_tf[9].y t.vtree_test.OR2_tf[5].y t.vtree_test.myctree.tmp[22] t.in.d[5].t t.vtree_test.OR2_tf[2].y t.in.d[13].f t.vtree_test.OR2_tf[3]._y t.vtree_test.OR2_tf[3].y t.in.d[10].f t.vtree_test.myctree.C2Els[2]._y t.in.d[8].f t.vtree_test.OR2_tf[14]._y t.vtree_test.myctree.C2Els[7]._y t.vtree_test.myctree.tmp[24] t.vtree_test.myctree.tmp[18] t.vtree_test.myctree.tmp[20] t.in.d[6].t t.vtree_test.OR2_tf[1].y t.vtree_test.OR2_tf[7]._y t.vtree_test.OR2_tf[13]._y t.vtree_test.OR2_tf[10]._y t.vtree_test.OR2_tf[4]._y t.in.d[11].f t.vtree_test.OR2_tf[0]._y t.in.d[2].f t.vtree_test.myctree.C3Els[0]._y t.vtree_test.OR2_tf[11]._y t.vtree_test.OR2_tf[9]._y t.vtree_test.OR2_tf[5]._y t.vtree_test.myctree.C3Els[2]._y t.vtree_test.OR2_tf[8]._y t.vtree_test.myctree.C2Els[3]._y t.vtree_test.myctree.C3Els[1]._y t.vtree_test.OR2_tf[2]._y t.vtree_test.OR2_tf[12]._y t.vtree_test.myctree.C2Els[4]._y t.vtree_test.OR2_tf[1]._y t.vtree_test.myctree.C2Els[1]._y
[0] starting test true high
[1] cleaning input
[2] starting test false high
[2] testing state holding
WRONG ASSERT: "t.out" has value 1 and not 0.

View File

@ -0,0 +1,502 @@
= "GND" "GND"
= "Vdd" "Vdd"
= "Reset" "Reset"
~"t.vtree_test.myctree.C2Els[0].c1"&~"t.vtree_test.myctree.C2Els[0].c2"->"t.vtree_test.myctree.C2Els[0]._y"+
"t.vtree_test.myctree.C2Els[0].c1"&"t.vtree_test.myctree.C2Els[0].c2"->"t.vtree_test.myctree.C2Els[0]._y"-
"t.vtree_test.myctree.C2Els[0]._y"->"t.vtree_test.myctree.C2Els[0].y"-
~("t.vtree_test.myctree.C2Els[0]._y")->"t.vtree_test.myctree.C2Els[0].y"+
~"t.vtree_test.myctree.C2Els[1].c1"&~"t.vtree_test.myctree.C2Els[1].c2"->"t.vtree_test.myctree.C2Els[1]._y"+
"t.vtree_test.myctree.C2Els[1].c1"&"t.vtree_test.myctree.C2Els[1].c2"->"t.vtree_test.myctree.C2Els[1]._y"-
"t.vtree_test.myctree.C2Els[1]._y"->"t.vtree_test.myctree.C2Els[1].y"-
~("t.vtree_test.myctree.C2Els[1]._y")->"t.vtree_test.myctree.C2Els[1].y"+
~"t.vtree_test.myctree.C2Els[2].c1"&~"t.vtree_test.myctree.C2Els[2].c2"->"t.vtree_test.myctree.C2Els[2]._y"+
"t.vtree_test.myctree.C2Els[2].c1"&"t.vtree_test.myctree.C2Els[2].c2"->"t.vtree_test.myctree.C2Els[2]._y"-
"t.vtree_test.myctree.C2Els[2]._y"->"t.vtree_test.myctree.C2Els[2].y"-
~("t.vtree_test.myctree.C2Els[2]._y")->"t.vtree_test.myctree.C2Els[2].y"+
~"t.vtree_test.myctree.C2Els[3].c1"&~"t.vtree_test.myctree.C2Els[3].c2"->"t.vtree_test.myctree.C2Els[3]._y"+
"t.vtree_test.myctree.C2Els[3].c1"&"t.vtree_test.myctree.C2Els[3].c2"->"t.vtree_test.myctree.C2Els[3]._y"-
"t.vtree_test.myctree.C2Els[3]._y"->"t.vtree_test.myctree.C2Els[3].y"-
~("t.vtree_test.myctree.C2Els[3]._y")->"t.vtree_test.myctree.C2Els[3].y"+
~"t.vtree_test.myctree.C2Els[4].c1"&~"t.vtree_test.myctree.C2Els[4].c2"->"t.vtree_test.myctree.C2Els[4]._y"+
"t.vtree_test.myctree.C2Els[4].c1"&"t.vtree_test.myctree.C2Els[4].c2"->"t.vtree_test.myctree.C2Els[4]._y"-
"t.vtree_test.myctree.C2Els[4]._y"->"t.vtree_test.myctree.C2Els[4].y"-
~("t.vtree_test.myctree.C2Els[4]._y")->"t.vtree_test.myctree.C2Els[4].y"+
~"t.vtree_test.myctree.C2Els[5].c1"&~"t.vtree_test.myctree.C2Els[5].c2"->"t.vtree_test.myctree.C2Els[5]._y"+
"t.vtree_test.myctree.C2Els[5].c1"&"t.vtree_test.myctree.C2Els[5].c2"->"t.vtree_test.myctree.C2Els[5]._y"-
"t.vtree_test.myctree.C2Els[5]._y"->"t.vtree_test.myctree.C2Els[5].y"-
~("t.vtree_test.myctree.C2Els[5]._y")->"t.vtree_test.myctree.C2Els[5].y"+
~"t.vtree_test.myctree.C2Els[6].c1"&~"t.vtree_test.myctree.C2Els[6].c2"->"t.vtree_test.myctree.C2Els[6]._y"+
"t.vtree_test.myctree.C2Els[6].c1"&"t.vtree_test.myctree.C2Els[6].c2"->"t.vtree_test.myctree.C2Els[6]._y"-
"t.vtree_test.myctree.C2Els[6]._y"->"t.vtree_test.myctree.C2Els[6].y"-
~("t.vtree_test.myctree.C2Els[6]._y")->"t.vtree_test.myctree.C2Els[6].y"+
~"t.vtree_test.myctree.C2Els[7].c1"&~"t.vtree_test.myctree.C2Els[7].c2"->"t.vtree_test.myctree.C2Els[7]._y"+
"t.vtree_test.myctree.C2Els[7].c1"&"t.vtree_test.myctree.C2Els[7].c2"->"t.vtree_test.myctree.C2Els[7]._y"-
"t.vtree_test.myctree.C2Els[7]._y"->"t.vtree_test.myctree.C2Els[7].y"-
~("t.vtree_test.myctree.C2Els[7]._y")->"t.vtree_test.myctree.C2Els[7].y"+
~"t.vtree_test.myctree.C3Els[0].c1"&~"t.vtree_test.myctree.C3Els[0].c2"&~"t.vtree_test.myctree.C3Els[0].c3"->"t.vtree_test.myctree.C3Els[0]._y"+
"t.vtree_test.myctree.C3Els[0].c1"&"t.vtree_test.myctree.C3Els[0].c2"&"t.vtree_test.myctree.C3Els[0].c3"->"t.vtree_test.myctree.C3Els[0]._y"-
"t.vtree_test.myctree.C3Els[0]._y"->"t.vtree_test.myctree.C3Els[0].y"-
~("t.vtree_test.myctree.C3Els[0]._y")->"t.vtree_test.myctree.C3Els[0].y"+
~"t.vtree_test.myctree.C3Els[1].c1"&~"t.vtree_test.myctree.C3Els[1].c2"&~"t.vtree_test.myctree.C3Els[1].c3"->"t.vtree_test.myctree.C3Els[1]._y"+
"t.vtree_test.myctree.C3Els[1].c1"&"t.vtree_test.myctree.C3Els[1].c2"&"t.vtree_test.myctree.C3Els[1].c3"->"t.vtree_test.myctree.C3Els[1]._y"-
"t.vtree_test.myctree.C3Els[1]._y"->"t.vtree_test.myctree.C3Els[1].y"-
~("t.vtree_test.myctree.C3Els[1]._y")->"t.vtree_test.myctree.C3Els[1].y"+
~"t.vtree_test.myctree.C3Els[2].c1"&~"t.vtree_test.myctree.C3Els[2].c2"&~"t.vtree_test.myctree.C3Els[2].c3"->"t.vtree_test.myctree.C3Els[2]._y"+
"t.vtree_test.myctree.C3Els[2].c1"&"t.vtree_test.myctree.C3Els[2].c2"&"t.vtree_test.myctree.C3Els[2].c3"->"t.vtree_test.myctree.C3Els[2]._y"-
"t.vtree_test.myctree.C3Els[2]._y"->"t.vtree_test.myctree.C3Els[2].y"-
~("t.vtree_test.myctree.C3Els[2]._y")->"t.vtree_test.myctree.C3Els[2].y"+
= "t.vtree_test.myctree.tmp[15]" "t.vtree_test.myctree.C2Els[6].c1"
= "t.vtree_test.myctree.tmp[15]" "t.vtree_test.myctree.C2Els[0].y"
= "t.vtree_test.myctree.tmp[16]" "t.vtree_test.myctree.C2Els[6].c2"
= "t.vtree_test.myctree.tmp[16]" "t.vtree_test.myctree.C2Els[1].y"
= "t.vtree_test.myctree.tmp[17]" "t.vtree_test.myctree.C2Els[7].c1"
= "t.vtree_test.myctree.tmp[17]" "t.vtree_test.myctree.C2Els[2].y"
= "t.vtree_test.myctree.tmp[18]" "t.vtree_test.myctree.C2Els[7].c2"
= "t.vtree_test.myctree.tmp[18]" "t.vtree_test.myctree.C2Els[3].y"
= "t.vtree_test.myctree.tmp[19]" "t.vtree_test.myctree.C3Els[1].c1"
= "t.vtree_test.myctree.tmp[19]" "t.vtree_test.myctree.C2Els[4].y"
= "t.vtree_test.myctree.tmp[20]" "t.vtree_test.myctree.C3Els[1].c2"
= "t.vtree_test.myctree.tmp[20]" "t.vtree_test.myctree.C2Els[5].y"
= "t.vtree_test.myctree.tmp[21]" "t.vtree_test.myctree.C3Els[1].c3"
= "t.vtree_test.myctree.tmp[21]" "t.vtree_test.myctree.C3Els[0].y"
= "t.vtree_test.myctree.tmp[22]" "t.vtree_test.myctree.C3Els[2].c1"
= "t.vtree_test.myctree.tmp[22]" "t.vtree_test.myctree.C2Els[6].y"
= "t.vtree_test.myctree.tmp[23]" "t.vtree_test.myctree.C3Els[2].c2"
= "t.vtree_test.myctree.tmp[23]" "t.vtree_test.myctree.C2Els[7].y"
= "t.vtree_test.myctree.tmp[24]" "t.vtree_test.myctree.C3Els[2].c3"
= "t.vtree_test.myctree.tmp[24]" "t.vtree_test.myctree.C3Els[1].y"
= "t.vtree_test.myctree.supply.vdd" "t.vtree_test.myctree.C3Els[2].vdd"
= "t.vtree_test.myctree.supply.vdd" "t.vtree_test.myctree.C3Els[1].vdd"
= "t.vtree_test.myctree.supply.vdd" "t.vtree_test.myctree.C3Els[0].vdd"
= "t.vtree_test.myctree.supply.vdd" "t.vtree_test.myctree.C2Els[7].vdd"
= "t.vtree_test.myctree.supply.vdd" "t.vtree_test.myctree.C2Els[6].vdd"
= "t.vtree_test.myctree.supply.vdd" "t.vtree_test.myctree.C2Els[5].vdd"
= "t.vtree_test.myctree.supply.vdd" "t.vtree_test.myctree.C2Els[4].vdd"
= "t.vtree_test.myctree.supply.vdd" "t.vtree_test.myctree.C2Els[3].vdd"
= "t.vtree_test.myctree.supply.vdd" "t.vtree_test.myctree.C2Els[2].vdd"
= "t.vtree_test.myctree.supply.vdd" "t.vtree_test.myctree.C2Els[1].vdd"
= "t.vtree_test.myctree.supply.vdd" "t.vtree_test.myctree.C2Els[0].vdd"
= "t.vtree_test.myctree.supply.vss" "t.vtree_test.myctree.C3Els[2].vss"
= "t.vtree_test.myctree.supply.vss" "t.vtree_test.myctree.C3Els[1].vss"
= "t.vtree_test.myctree.supply.vss" "t.vtree_test.myctree.C3Els[0].vss"
= "t.vtree_test.myctree.supply.vss" "t.vtree_test.myctree.C2Els[7].vss"
= "t.vtree_test.myctree.supply.vss" "t.vtree_test.myctree.C2Els[6].vss"
= "t.vtree_test.myctree.supply.vss" "t.vtree_test.myctree.C2Els[5].vss"
= "t.vtree_test.myctree.supply.vss" "t.vtree_test.myctree.C2Els[4].vss"
= "t.vtree_test.myctree.supply.vss" "t.vtree_test.myctree.C2Els[3].vss"
= "t.vtree_test.myctree.supply.vss" "t.vtree_test.myctree.C2Els[2].vss"
= "t.vtree_test.myctree.supply.vss" "t.vtree_test.myctree.C2Els[1].vss"
= "t.vtree_test.myctree.supply.vss" "t.vtree_test.myctree.C2Els[0].vss"
= "t.vtree_test.myctree.in[0]" "t.vtree_test.myctree.C2Els[0].c1"
= "t.vtree_test.myctree.in[0]" "t.vtree_test.myctree.tmp[0]"
= "t.vtree_test.myctree.in[1]" "t.vtree_test.myctree.C2Els[0].c2"
= "t.vtree_test.myctree.in[1]" "t.vtree_test.myctree.tmp[1]"
= "t.vtree_test.myctree.in[2]" "t.vtree_test.myctree.C2Els[1].c1"
= "t.vtree_test.myctree.in[2]" "t.vtree_test.myctree.tmp[2]"
= "t.vtree_test.myctree.in[3]" "t.vtree_test.myctree.C2Els[1].c2"
= "t.vtree_test.myctree.in[3]" "t.vtree_test.myctree.tmp[3]"
= "t.vtree_test.myctree.in[4]" "t.vtree_test.myctree.C2Els[2].c1"
= "t.vtree_test.myctree.in[4]" "t.vtree_test.myctree.tmp[4]"
= "t.vtree_test.myctree.in[5]" "t.vtree_test.myctree.C2Els[2].c2"
= "t.vtree_test.myctree.in[5]" "t.vtree_test.myctree.tmp[5]"
= "t.vtree_test.myctree.in[6]" "t.vtree_test.myctree.C2Els[3].c1"
= "t.vtree_test.myctree.in[6]" "t.vtree_test.myctree.tmp[6]"
= "t.vtree_test.myctree.in[7]" "t.vtree_test.myctree.C2Els[3].c2"
= "t.vtree_test.myctree.in[7]" "t.vtree_test.myctree.tmp[7]"
= "t.vtree_test.myctree.in[8]" "t.vtree_test.myctree.C2Els[4].c1"
= "t.vtree_test.myctree.in[8]" "t.vtree_test.myctree.tmp[8]"
= "t.vtree_test.myctree.in[9]" "t.vtree_test.myctree.C2Els[4].c2"
= "t.vtree_test.myctree.in[9]" "t.vtree_test.myctree.tmp[9]"
= "t.vtree_test.myctree.in[10]" "t.vtree_test.myctree.C2Els[5].c1"
= "t.vtree_test.myctree.in[10]" "t.vtree_test.myctree.tmp[10]"
= "t.vtree_test.myctree.in[11]" "t.vtree_test.myctree.C2Els[5].c2"
= "t.vtree_test.myctree.in[11]" "t.vtree_test.myctree.tmp[11]"
= "t.vtree_test.myctree.in[12]" "t.vtree_test.myctree.C3Els[0].c1"
= "t.vtree_test.myctree.in[12]" "t.vtree_test.myctree.tmp[12]"
= "t.vtree_test.myctree.in[13]" "t.vtree_test.myctree.C3Els[0].c2"
= "t.vtree_test.myctree.in[13]" "t.vtree_test.myctree.tmp[13]"
= "t.vtree_test.myctree.in[14]" "t.vtree_test.myctree.C3Els[0].c3"
= "t.vtree_test.myctree.in[14]" "t.vtree_test.myctree.tmp[14]"
= "t.vtree_test.myctree.out" "t.vtree_test.myctree.C3Els[2].y"
= "t.vtree_test.myctree.out" "t.vtree_test.myctree.tmp[25]"
"t.vtree_test.OR2_tf[0].a"|"t.vtree_test.OR2_tf[0].b"->"t.vtree_test.OR2_tf[0]._y"-
~("t.vtree_test.OR2_tf[0].a"|"t.vtree_test.OR2_tf[0].b")->"t.vtree_test.OR2_tf[0]._y"+
"t.vtree_test.OR2_tf[0]._y"->"t.vtree_test.OR2_tf[0].y"-
~("t.vtree_test.OR2_tf[0]._y")->"t.vtree_test.OR2_tf[0].y"+
"t.vtree_test.OR2_tf[1].a"|"t.vtree_test.OR2_tf[1].b"->"t.vtree_test.OR2_tf[1]._y"-
~("t.vtree_test.OR2_tf[1].a"|"t.vtree_test.OR2_tf[1].b")->"t.vtree_test.OR2_tf[1]._y"+
"t.vtree_test.OR2_tf[1]._y"->"t.vtree_test.OR2_tf[1].y"-
~("t.vtree_test.OR2_tf[1]._y")->"t.vtree_test.OR2_tf[1].y"+
"t.vtree_test.OR2_tf[2].a"|"t.vtree_test.OR2_tf[2].b"->"t.vtree_test.OR2_tf[2]._y"-
~("t.vtree_test.OR2_tf[2].a"|"t.vtree_test.OR2_tf[2].b")->"t.vtree_test.OR2_tf[2]._y"+
"t.vtree_test.OR2_tf[2]._y"->"t.vtree_test.OR2_tf[2].y"-
~("t.vtree_test.OR2_tf[2]._y")->"t.vtree_test.OR2_tf[2].y"+
"t.vtree_test.OR2_tf[3].a"|"t.vtree_test.OR2_tf[3].b"->"t.vtree_test.OR2_tf[3]._y"-
~("t.vtree_test.OR2_tf[3].a"|"t.vtree_test.OR2_tf[3].b")->"t.vtree_test.OR2_tf[3]._y"+
"t.vtree_test.OR2_tf[3]._y"->"t.vtree_test.OR2_tf[3].y"-
~("t.vtree_test.OR2_tf[3]._y")->"t.vtree_test.OR2_tf[3].y"+
"t.vtree_test.OR2_tf[4].a"|"t.vtree_test.OR2_tf[4].b"->"t.vtree_test.OR2_tf[4]._y"-
~("t.vtree_test.OR2_tf[4].a"|"t.vtree_test.OR2_tf[4].b")->"t.vtree_test.OR2_tf[4]._y"+
"t.vtree_test.OR2_tf[4]._y"->"t.vtree_test.OR2_tf[4].y"-
~("t.vtree_test.OR2_tf[4]._y")->"t.vtree_test.OR2_tf[4].y"+
"t.vtree_test.OR2_tf[5].a"|"t.vtree_test.OR2_tf[5].b"->"t.vtree_test.OR2_tf[5]._y"-
~("t.vtree_test.OR2_tf[5].a"|"t.vtree_test.OR2_tf[5].b")->"t.vtree_test.OR2_tf[5]._y"+
"t.vtree_test.OR2_tf[5]._y"->"t.vtree_test.OR2_tf[5].y"-
~("t.vtree_test.OR2_tf[5]._y")->"t.vtree_test.OR2_tf[5].y"+
"t.vtree_test.OR2_tf[6].a"|"t.vtree_test.OR2_tf[6].b"->"t.vtree_test.OR2_tf[6]._y"-
~("t.vtree_test.OR2_tf[6].a"|"t.vtree_test.OR2_tf[6].b")->"t.vtree_test.OR2_tf[6]._y"+
"t.vtree_test.OR2_tf[6]._y"->"t.vtree_test.OR2_tf[6].y"-
~("t.vtree_test.OR2_tf[6]._y")->"t.vtree_test.OR2_tf[6].y"+
"t.vtree_test.OR2_tf[7].a"|"t.vtree_test.OR2_tf[7].b"->"t.vtree_test.OR2_tf[7]._y"-
~("t.vtree_test.OR2_tf[7].a"|"t.vtree_test.OR2_tf[7].b")->"t.vtree_test.OR2_tf[7]._y"+
"t.vtree_test.OR2_tf[7]._y"->"t.vtree_test.OR2_tf[7].y"-
~("t.vtree_test.OR2_tf[7]._y")->"t.vtree_test.OR2_tf[7].y"+
"t.vtree_test.OR2_tf[8].a"|"t.vtree_test.OR2_tf[8].b"->"t.vtree_test.OR2_tf[8]._y"-
~("t.vtree_test.OR2_tf[8].a"|"t.vtree_test.OR2_tf[8].b")->"t.vtree_test.OR2_tf[8]._y"+
"t.vtree_test.OR2_tf[8]._y"->"t.vtree_test.OR2_tf[8].y"-
~("t.vtree_test.OR2_tf[8]._y")->"t.vtree_test.OR2_tf[8].y"+
"t.vtree_test.OR2_tf[9].a"|"t.vtree_test.OR2_tf[9].b"->"t.vtree_test.OR2_tf[9]._y"-
~("t.vtree_test.OR2_tf[9].a"|"t.vtree_test.OR2_tf[9].b")->"t.vtree_test.OR2_tf[9]._y"+
"t.vtree_test.OR2_tf[9]._y"->"t.vtree_test.OR2_tf[9].y"-
~("t.vtree_test.OR2_tf[9]._y")->"t.vtree_test.OR2_tf[9].y"+
"t.vtree_test.OR2_tf[10].a"|"t.vtree_test.OR2_tf[10].b"->"t.vtree_test.OR2_tf[10]._y"-
~("t.vtree_test.OR2_tf[10].a"|"t.vtree_test.OR2_tf[10].b")->"t.vtree_test.OR2_tf[10]._y"+
"t.vtree_test.OR2_tf[10]._y"->"t.vtree_test.OR2_tf[10].y"-
~("t.vtree_test.OR2_tf[10]._y")->"t.vtree_test.OR2_tf[10].y"+
"t.vtree_test.OR2_tf[11].a"|"t.vtree_test.OR2_tf[11].b"->"t.vtree_test.OR2_tf[11]._y"-
~("t.vtree_test.OR2_tf[11].a"|"t.vtree_test.OR2_tf[11].b")->"t.vtree_test.OR2_tf[11]._y"+
"t.vtree_test.OR2_tf[11]._y"->"t.vtree_test.OR2_tf[11].y"-
~("t.vtree_test.OR2_tf[11]._y")->"t.vtree_test.OR2_tf[11].y"+
"t.vtree_test.OR2_tf[12].a"|"t.vtree_test.OR2_tf[12].b"->"t.vtree_test.OR2_tf[12]._y"-
~("t.vtree_test.OR2_tf[12].a"|"t.vtree_test.OR2_tf[12].b")->"t.vtree_test.OR2_tf[12]._y"+
"t.vtree_test.OR2_tf[12]._y"->"t.vtree_test.OR2_tf[12].y"-
~("t.vtree_test.OR2_tf[12]._y")->"t.vtree_test.OR2_tf[12].y"+
"t.vtree_test.OR2_tf[13].a"|"t.vtree_test.OR2_tf[13].b"->"t.vtree_test.OR2_tf[13]._y"-
~("t.vtree_test.OR2_tf[13].a"|"t.vtree_test.OR2_tf[13].b")->"t.vtree_test.OR2_tf[13]._y"+
"t.vtree_test.OR2_tf[13]._y"->"t.vtree_test.OR2_tf[13].y"-
~("t.vtree_test.OR2_tf[13]._y")->"t.vtree_test.OR2_tf[13].y"+
"t.vtree_test.OR2_tf[14].a"|"t.vtree_test.OR2_tf[14].b"->"t.vtree_test.OR2_tf[14]._y"-
~("t.vtree_test.OR2_tf[14].a"|"t.vtree_test.OR2_tf[14].b")->"t.vtree_test.OR2_tf[14]._y"+
"t.vtree_test.OR2_tf[14]._y"->"t.vtree_test.OR2_tf[14].y"-
~("t.vtree_test.OR2_tf[14]._y")->"t.vtree_test.OR2_tf[14].y"+
= "t.vtree_test.OR2_tf[14].y" "t.vtree_test.myctree.in[14]"
= "t.vtree_test.OR2_tf[13].y" "t.vtree_test.myctree.in[13]"
= "t.vtree_test.OR2_tf[12].y" "t.vtree_test.myctree.in[12]"
= "t.vtree_test.OR2_tf[11].y" "t.vtree_test.myctree.in[11]"
= "t.vtree_test.OR2_tf[10].y" "t.vtree_test.myctree.in[10]"
= "t.vtree_test.OR2_tf[9].y" "t.vtree_test.myctree.in[9]"
= "t.vtree_test.OR2_tf[8].y" "t.vtree_test.myctree.in[8]"
= "t.vtree_test.OR2_tf[7].y" "t.vtree_test.myctree.in[7]"
= "t.vtree_test.OR2_tf[6].y" "t.vtree_test.myctree.in[6]"
= "t.vtree_test.OR2_tf[5].y" "t.vtree_test.myctree.in[5]"
= "t.vtree_test.OR2_tf[4].y" "t.vtree_test.myctree.in[4]"
= "t.vtree_test.OR2_tf[3].y" "t.vtree_test.myctree.in[3]"
= "t.vtree_test.OR2_tf[2].y" "t.vtree_test.myctree.in[2]"
= "t.vtree_test.OR2_tf[1].y" "t.vtree_test.myctree.in[1]"
= "t.vtree_test.OR2_tf[0].y" "t.vtree_test.myctree.in[0]"
= "t.vtree_test.supply.vss" "t.vtree_test.myctree.supply.vss"
= "t.vtree_test.supply.vdd" "t.vtree_test.myctree.supply.vdd"
= "t.vtree_test.supply.vdd" "t.vtree_test.OR2_tf[14].vdd"
= "t.vtree_test.supply.vdd" "t.vtree_test.OR2_tf[13].vdd"
= "t.vtree_test.supply.vdd" "t.vtree_test.OR2_tf[12].vdd"
= "t.vtree_test.supply.vdd" "t.vtree_test.OR2_tf[11].vdd"
= "t.vtree_test.supply.vdd" "t.vtree_test.OR2_tf[10].vdd"
= "t.vtree_test.supply.vdd" "t.vtree_test.OR2_tf[9].vdd"
= "t.vtree_test.supply.vdd" "t.vtree_test.OR2_tf[8].vdd"
= "t.vtree_test.supply.vdd" "t.vtree_test.OR2_tf[7].vdd"
= "t.vtree_test.supply.vdd" "t.vtree_test.OR2_tf[6].vdd"
= "t.vtree_test.supply.vdd" "t.vtree_test.OR2_tf[5].vdd"
= "t.vtree_test.supply.vdd" "t.vtree_test.OR2_tf[4].vdd"
= "t.vtree_test.supply.vdd" "t.vtree_test.OR2_tf[3].vdd"
= "t.vtree_test.supply.vdd" "t.vtree_test.OR2_tf[2].vdd"
= "t.vtree_test.supply.vdd" "t.vtree_test.OR2_tf[1].vdd"
= "t.vtree_test.supply.vdd" "t.vtree_test.OR2_tf[0].vdd"
= "t.vtree_test.supply.vss" "t.vtree_test.OR2_tf[14].vss"
= "t.vtree_test.supply.vss" "t.vtree_test.OR2_tf[13].vss"
= "t.vtree_test.supply.vss" "t.vtree_test.OR2_tf[12].vss"
= "t.vtree_test.supply.vss" "t.vtree_test.OR2_tf[11].vss"
= "t.vtree_test.supply.vss" "t.vtree_test.OR2_tf[10].vss"
= "t.vtree_test.supply.vss" "t.vtree_test.OR2_tf[9].vss"
= "t.vtree_test.supply.vss" "t.vtree_test.OR2_tf[8].vss"
= "t.vtree_test.supply.vss" "t.vtree_test.OR2_tf[7].vss"
= "t.vtree_test.supply.vss" "t.vtree_test.OR2_tf[6].vss"
= "t.vtree_test.supply.vss" "t.vtree_test.OR2_tf[5].vss"
= "t.vtree_test.supply.vss" "t.vtree_test.OR2_tf[4].vss"
= "t.vtree_test.supply.vss" "t.vtree_test.OR2_tf[3].vss"
= "t.vtree_test.supply.vss" "t.vtree_test.OR2_tf[2].vss"
= "t.vtree_test.supply.vss" "t.vtree_test.OR2_tf[1].vss"
= "t.vtree_test.supply.vss" "t.vtree_test.OR2_tf[0].vss"
= "t.vtree_test.out" "t.vtree_test.myctree.out"
= "t.vtree_test.in.d[0].d[0]" "t.vtree_test.in.d[0].f"
= "t.vtree_test.in.d[0].d[1]" "t.vtree_test.in.d[0].t"
= "t.vtree_test.in.d[1].d[0]" "t.vtree_test.in.d[1].f"
= "t.vtree_test.in.d[1].d[1]" "t.vtree_test.in.d[1].t"
= "t.vtree_test.in.d[2].d[0]" "t.vtree_test.in.d[2].f"
= "t.vtree_test.in.d[2].d[1]" "t.vtree_test.in.d[2].t"
= "t.vtree_test.in.d[3].d[0]" "t.vtree_test.in.d[3].f"
= "t.vtree_test.in.d[3].d[1]" "t.vtree_test.in.d[3].t"
= "t.vtree_test.in.d[4].d[0]" "t.vtree_test.in.d[4].f"
= "t.vtree_test.in.d[4].d[1]" "t.vtree_test.in.d[4].t"
= "t.vtree_test.in.d[5].d[0]" "t.vtree_test.in.d[5].f"
= "t.vtree_test.in.d[5].d[1]" "t.vtree_test.in.d[5].t"
= "t.vtree_test.in.d[6].d[0]" "t.vtree_test.in.d[6].f"
= "t.vtree_test.in.d[6].d[1]" "t.vtree_test.in.d[6].t"
= "t.vtree_test.in.d[7].d[0]" "t.vtree_test.in.d[7].f"
= "t.vtree_test.in.d[7].d[1]" "t.vtree_test.in.d[7].t"
= "t.vtree_test.in.d[8].d[0]" "t.vtree_test.in.d[8].f"
= "t.vtree_test.in.d[8].d[1]" "t.vtree_test.in.d[8].t"
= "t.vtree_test.in.d[9].d[0]" "t.vtree_test.in.d[9].f"
= "t.vtree_test.in.d[9].d[1]" "t.vtree_test.in.d[9].t"
= "t.vtree_test.in.d[10].d[0]" "t.vtree_test.in.d[10].f"
= "t.vtree_test.in.d[10].d[1]" "t.vtree_test.in.d[10].t"
= "t.vtree_test.in.d[11].d[0]" "t.vtree_test.in.d[11].f"
= "t.vtree_test.in.d[11].d[1]" "t.vtree_test.in.d[11].t"
= "t.vtree_test.in.d[12].d[0]" "t.vtree_test.in.d[12].f"
= "t.vtree_test.in.d[12].d[1]" "t.vtree_test.in.d[12].t"
= "t.vtree_test.in.d[13].d[0]" "t.vtree_test.in.d[13].f"
= "t.vtree_test.in.d[13].d[1]" "t.vtree_test.in.d[13].t"
= "t.vtree_test.in.d[14].d[0]" "t.vtree_test.in.d[14].f"
= "t.vtree_test.in.d[14].d[1]" "t.vtree_test.in.d[14].t"
= "t.vtree_test.in.d[14].d[0]" "t.vtree_test.in.d[14].f"
= "t.vtree_test.in.d[14].d[1]" "t.vtree_test.in.d[14].t"
= "t.vtree_test.in.d[13].d[0]" "t.vtree_test.in.d[13].f"
= "t.vtree_test.in.d[13].d[1]" "t.vtree_test.in.d[13].t"
= "t.vtree_test.in.d[12].d[0]" "t.vtree_test.in.d[12].f"
= "t.vtree_test.in.d[12].d[1]" "t.vtree_test.in.d[12].t"
= "t.vtree_test.in.d[11].d[0]" "t.vtree_test.in.d[11].f"
= "t.vtree_test.in.d[11].d[1]" "t.vtree_test.in.d[11].t"
= "t.vtree_test.in.d[10].d[0]" "t.vtree_test.in.d[10].f"
= "t.vtree_test.in.d[10].d[1]" "t.vtree_test.in.d[10].t"
= "t.vtree_test.in.d[9].d[0]" "t.vtree_test.in.d[9].f"
= "t.vtree_test.in.d[9].d[1]" "t.vtree_test.in.d[9].t"
= "t.vtree_test.in.d[8].d[0]" "t.vtree_test.in.d[8].f"
= "t.vtree_test.in.d[8].d[1]" "t.vtree_test.in.d[8].t"
= "t.vtree_test.in.d[7].d[0]" "t.vtree_test.in.d[7].f"
= "t.vtree_test.in.d[7].d[1]" "t.vtree_test.in.d[7].t"
= "t.vtree_test.in.d[6].d[0]" "t.vtree_test.in.d[6].f"
= "t.vtree_test.in.d[6].d[1]" "t.vtree_test.in.d[6].t"
= "t.vtree_test.in.d[5].d[0]" "t.vtree_test.in.d[5].f"
= "t.vtree_test.in.d[5].d[1]" "t.vtree_test.in.d[5].t"
= "t.vtree_test.in.d[4].d[0]" "t.vtree_test.in.d[4].f"
= "t.vtree_test.in.d[4].d[1]" "t.vtree_test.in.d[4].t"
= "t.vtree_test.in.d[3].d[0]" "t.vtree_test.in.d[3].f"
= "t.vtree_test.in.d[3].d[1]" "t.vtree_test.in.d[3].t"
= "t.vtree_test.in.d[2].d[0]" "t.vtree_test.in.d[2].f"
= "t.vtree_test.in.d[2].d[1]" "t.vtree_test.in.d[2].t"
= "t.vtree_test.in.d[1].d[0]" "t.vtree_test.in.d[1].f"
= "t.vtree_test.in.d[1].d[1]" "t.vtree_test.in.d[1].t"
= "t.vtree_test.in.d[0].d[0]" "t.vtree_test.in.d[0].f"
= "t.vtree_test.in.d[0].d[1]" "t.vtree_test.in.d[0].t"
= "t.vtree_test.in.d[14].d[0]" "t.vtree_test.OR2_tf[14].b"
= "t.vtree_test.in.d[14].d[0]" "t.vtree_test.in.d[14].f"
= "t.vtree_test.in.d[14].d[1]" "t.vtree_test.OR2_tf[14].a"
= "t.vtree_test.in.d[14].d[1]" "t.vtree_test.in.d[14].t"
= "t.vtree_test.in.d[13].d[0]" "t.vtree_test.OR2_tf[13].b"
= "t.vtree_test.in.d[13].d[0]" "t.vtree_test.in.d[13].f"
= "t.vtree_test.in.d[13].d[1]" "t.vtree_test.OR2_tf[13].a"
= "t.vtree_test.in.d[13].d[1]" "t.vtree_test.in.d[13].t"
= "t.vtree_test.in.d[12].d[0]" "t.vtree_test.OR2_tf[12].b"
= "t.vtree_test.in.d[12].d[0]" "t.vtree_test.in.d[12].f"
= "t.vtree_test.in.d[12].d[1]" "t.vtree_test.OR2_tf[12].a"
= "t.vtree_test.in.d[12].d[1]" "t.vtree_test.in.d[12].t"
= "t.vtree_test.in.d[11].d[0]" "t.vtree_test.OR2_tf[11].b"
= "t.vtree_test.in.d[11].d[0]" "t.vtree_test.in.d[11].f"
= "t.vtree_test.in.d[11].d[1]" "t.vtree_test.OR2_tf[11].a"
= "t.vtree_test.in.d[11].d[1]" "t.vtree_test.in.d[11].t"
= "t.vtree_test.in.d[10].d[0]" "t.vtree_test.OR2_tf[10].b"
= "t.vtree_test.in.d[10].d[0]" "t.vtree_test.in.d[10].f"
= "t.vtree_test.in.d[10].d[1]" "t.vtree_test.OR2_tf[10].a"
= "t.vtree_test.in.d[10].d[1]" "t.vtree_test.in.d[10].t"
= "t.vtree_test.in.d[9].d[0]" "t.vtree_test.OR2_tf[9].b"
= "t.vtree_test.in.d[9].d[0]" "t.vtree_test.in.d[9].f"
= "t.vtree_test.in.d[9].d[1]" "t.vtree_test.OR2_tf[9].a"
= "t.vtree_test.in.d[9].d[1]" "t.vtree_test.in.d[9].t"
= "t.vtree_test.in.d[8].d[0]" "t.vtree_test.OR2_tf[8].b"
= "t.vtree_test.in.d[8].d[0]" "t.vtree_test.in.d[8].f"
= "t.vtree_test.in.d[8].d[1]" "t.vtree_test.OR2_tf[8].a"
= "t.vtree_test.in.d[8].d[1]" "t.vtree_test.in.d[8].t"
= "t.vtree_test.in.d[7].d[0]" "t.vtree_test.OR2_tf[7].b"
= "t.vtree_test.in.d[7].d[0]" "t.vtree_test.in.d[7].f"
= "t.vtree_test.in.d[7].d[1]" "t.vtree_test.OR2_tf[7].a"
= "t.vtree_test.in.d[7].d[1]" "t.vtree_test.in.d[7].t"
= "t.vtree_test.in.d[6].d[0]" "t.vtree_test.OR2_tf[6].b"
= "t.vtree_test.in.d[6].d[0]" "t.vtree_test.in.d[6].f"
= "t.vtree_test.in.d[6].d[1]" "t.vtree_test.OR2_tf[6].a"
= "t.vtree_test.in.d[6].d[1]" "t.vtree_test.in.d[6].t"
= "t.vtree_test.in.d[5].d[0]" "t.vtree_test.OR2_tf[5].b"
= "t.vtree_test.in.d[5].d[0]" "t.vtree_test.in.d[5].f"
= "t.vtree_test.in.d[5].d[1]" "t.vtree_test.OR2_tf[5].a"
= "t.vtree_test.in.d[5].d[1]" "t.vtree_test.in.d[5].t"
= "t.vtree_test.in.d[4].d[0]" "t.vtree_test.OR2_tf[4].b"
= "t.vtree_test.in.d[4].d[0]" "t.vtree_test.in.d[4].f"
= "t.vtree_test.in.d[4].d[1]" "t.vtree_test.OR2_tf[4].a"
= "t.vtree_test.in.d[4].d[1]" "t.vtree_test.in.d[4].t"
= "t.vtree_test.in.d[3].d[0]" "t.vtree_test.OR2_tf[3].b"
= "t.vtree_test.in.d[3].d[0]" "t.vtree_test.in.d[3].f"
= "t.vtree_test.in.d[3].d[1]" "t.vtree_test.OR2_tf[3].a"
= "t.vtree_test.in.d[3].d[1]" "t.vtree_test.in.d[3].t"
= "t.vtree_test.in.d[2].d[0]" "t.vtree_test.OR2_tf[2].b"
= "t.vtree_test.in.d[2].d[0]" "t.vtree_test.in.d[2].f"
= "t.vtree_test.in.d[2].d[1]" "t.vtree_test.OR2_tf[2].a"
= "t.vtree_test.in.d[2].d[1]" "t.vtree_test.in.d[2].t"
= "t.vtree_test.in.d[1].d[0]" "t.vtree_test.OR2_tf[1].b"
= "t.vtree_test.in.d[1].d[0]" "t.vtree_test.in.d[1].f"
= "t.vtree_test.in.d[1].d[1]" "t.vtree_test.OR2_tf[1].a"
= "t.vtree_test.in.d[1].d[1]" "t.vtree_test.in.d[1].t"
= "t.vtree_test.in.d[0].d[0]" "t.vtree_test.OR2_tf[0].b"
= "t.vtree_test.in.d[0].d[0]" "t.vtree_test.in.d[0].f"
= "t.vtree_test.in.d[0].d[1]" "t.vtree_test.OR2_tf[0].a"
= "t.vtree_test.in.d[0].d[1]" "t.vtree_test.in.d[0].t"
= "Vdd" "t.vtree_test.supply.vdd"
= "GND" "t.vtree_test.supply.vss"
= "t.out" "t.vtree_test.out"
= "t.in.d[0].d[0]" "t.in.d[0].f"
= "t.in.d[0].d[1]" "t.in.d[0].t"
= "t.in.d[1].d[0]" "t.in.d[1].f"
= "t.in.d[1].d[1]" "t.in.d[1].t"
= "t.in.d[2].d[0]" "t.in.d[2].f"
= "t.in.d[2].d[1]" "t.in.d[2].t"
= "t.in.d[3].d[0]" "t.in.d[3].f"
= "t.in.d[3].d[1]" "t.in.d[3].t"
= "t.in.d[4].d[0]" "t.in.d[4].f"
= "t.in.d[4].d[1]" "t.in.d[4].t"
= "t.in.d[5].d[0]" "t.in.d[5].f"
= "t.in.d[5].d[1]" "t.in.d[5].t"
= "t.in.d[6].d[0]" "t.in.d[6].f"
= "t.in.d[6].d[1]" "t.in.d[6].t"
= "t.in.d[7].d[0]" "t.in.d[7].f"
= "t.in.d[7].d[1]" "t.in.d[7].t"
= "t.in.d[8].d[0]" "t.in.d[8].f"
= "t.in.d[8].d[1]" "t.in.d[8].t"
= "t.in.d[9].d[0]" "t.in.d[9].f"
= "t.in.d[9].d[1]" "t.in.d[9].t"
= "t.in.d[10].d[0]" "t.in.d[10].f"
= "t.in.d[10].d[1]" "t.in.d[10].t"
= "t.in.d[11].d[0]" "t.in.d[11].f"
= "t.in.d[11].d[1]" "t.in.d[11].t"
= "t.in.d[12].d[0]" "t.in.d[12].f"
= "t.in.d[12].d[1]" "t.in.d[12].t"
= "t.in.d[13].d[0]" "t.in.d[13].f"
= "t.in.d[13].d[1]" "t.in.d[13].t"
= "t.in.d[14].d[0]" "t.in.d[14].f"
= "t.in.d[14].d[1]" "t.in.d[14].t"
= "t.in.d[14].d[0]" "t.in.d[14].f"
= "t.in.d[14].d[1]" "t.in.d[14].t"
= "t.in.d[13].d[0]" "t.in.d[13].f"
= "t.in.d[13].d[1]" "t.in.d[13].t"
= "t.in.d[12].d[0]" "t.in.d[12].f"
= "t.in.d[12].d[1]" "t.in.d[12].t"
= "t.in.d[11].d[0]" "t.in.d[11].f"
= "t.in.d[11].d[1]" "t.in.d[11].t"
= "t.in.d[10].d[0]" "t.in.d[10].f"
= "t.in.d[10].d[1]" "t.in.d[10].t"
= "t.in.d[9].d[0]" "t.in.d[9].f"
= "t.in.d[9].d[1]" "t.in.d[9].t"
= "t.in.d[8].d[0]" "t.in.d[8].f"
= "t.in.d[8].d[1]" "t.in.d[8].t"
= "t.in.d[7].d[0]" "t.in.d[7].f"
= "t.in.d[7].d[1]" "t.in.d[7].t"
= "t.in.d[6].d[0]" "t.in.d[6].f"
= "t.in.d[6].d[1]" "t.in.d[6].t"
= "t.in.d[5].d[0]" "t.in.d[5].f"
= "t.in.d[5].d[1]" "t.in.d[5].t"
= "t.in.d[4].d[0]" "t.in.d[4].f"
= "t.in.d[4].d[1]" "t.in.d[4].t"
= "t.in.d[3].d[0]" "t.in.d[3].f"
= "t.in.d[3].d[1]" "t.in.d[3].t"
= "t.in.d[2].d[0]" "t.in.d[2].f"
= "t.in.d[2].d[1]" "t.in.d[2].t"
= "t.in.d[1].d[0]" "t.in.d[1].f"
= "t.in.d[1].d[1]" "t.in.d[1].t"
= "t.in.d[0].d[0]" "t.in.d[0].f"
= "t.in.d[0].d[1]" "t.in.d[0].t"
= "t.in.d[0].f" "t.vtree_test.in.d[0].f"
= "t.in.d[0].t" "t.vtree_test.in.d[0].t"
= "t.in.d[0].d[0]" "t.vtree_test.in.d[0].d[0]"
= "t.in.d[0].d[1]" "t.vtree_test.in.d[0].d[1]"
= "t.in.d[1].f" "t.vtree_test.in.d[1].f"
= "t.in.d[1].t" "t.vtree_test.in.d[1].t"
= "t.in.d[1].d[0]" "t.vtree_test.in.d[1].d[0]"
= "t.in.d[1].d[1]" "t.vtree_test.in.d[1].d[1]"
= "t.in.d[2].f" "t.vtree_test.in.d[2].f"
= "t.in.d[2].t" "t.vtree_test.in.d[2].t"
= "t.in.d[2].d[0]" "t.vtree_test.in.d[2].d[0]"
= "t.in.d[2].d[1]" "t.vtree_test.in.d[2].d[1]"
= "t.in.d[3].f" "t.vtree_test.in.d[3].f"
= "t.in.d[3].t" "t.vtree_test.in.d[3].t"
= "t.in.d[3].d[0]" "t.vtree_test.in.d[3].d[0]"
= "t.in.d[3].d[1]" "t.vtree_test.in.d[3].d[1]"
= "t.in.d[4].f" "t.vtree_test.in.d[4].f"
= "t.in.d[4].t" "t.vtree_test.in.d[4].t"
= "t.in.d[4].d[0]" "t.vtree_test.in.d[4].d[0]"
= "t.in.d[4].d[1]" "t.vtree_test.in.d[4].d[1]"
= "t.in.d[5].f" "t.vtree_test.in.d[5].f"
= "t.in.d[5].t" "t.vtree_test.in.d[5].t"
= "t.in.d[5].d[0]" "t.vtree_test.in.d[5].d[0]"
= "t.in.d[5].d[1]" "t.vtree_test.in.d[5].d[1]"
= "t.in.d[6].f" "t.vtree_test.in.d[6].f"
= "t.in.d[6].t" "t.vtree_test.in.d[6].t"
= "t.in.d[6].d[0]" "t.vtree_test.in.d[6].d[0]"
= "t.in.d[6].d[1]" "t.vtree_test.in.d[6].d[1]"
= "t.in.d[7].f" "t.vtree_test.in.d[7].f"
= "t.in.d[7].t" "t.vtree_test.in.d[7].t"
= "t.in.d[7].d[0]" "t.vtree_test.in.d[7].d[0]"
= "t.in.d[7].d[1]" "t.vtree_test.in.d[7].d[1]"
= "t.in.d[8].f" "t.vtree_test.in.d[8].f"
= "t.in.d[8].t" "t.vtree_test.in.d[8].t"
= "t.in.d[8].d[0]" "t.vtree_test.in.d[8].d[0]"
= "t.in.d[8].d[1]" "t.vtree_test.in.d[8].d[1]"
= "t.in.d[9].f" "t.vtree_test.in.d[9].f"
= "t.in.d[9].t" "t.vtree_test.in.d[9].t"
= "t.in.d[9].d[0]" "t.vtree_test.in.d[9].d[0]"
= "t.in.d[9].d[1]" "t.vtree_test.in.d[9].d[1]"
= "t.in.d[10].f" "t.vtree_test.in.d[10].f"
= "t.in.d[10].t" "t.vtree_test.in.d[10].t"
= "t.in.d[10].d[0]" "t.vtree_test.in.d[10].d[0]"
= "t.in.d[10].d[1]" "t.vtree_test.in.d[10].d[1]"
= "t.in.d[11].f" "t.vtree_test.in.d[11].f"
= "t.in.d[11].t" "t.vtree_test.in.d[11].t"
= "t.in.d[11].d[0]" "t.vtree_test.in.d[11].d[0]"
= "t.in.d[11].d[1]" "t.vtree_test.in.d[11].d[1]"
= "t.in.d[12].f" "t.vtree_test.in.d[12].f"
= "t.in.d[12].t" "t.vtree_test.in.d[12].t"
= "t.in.d[12].d[0]" "t.vtree_test.in.d[12].d[0]"
= "t.in.d[12].d[1]" "t.vtree_test.in.d[12].d[1]"
= "t.in.d[13].f" "t.vtree_test.in.d[13].f"
= "t.in.d[13].t" "t.vtree_test.in.d[13].t"
= "t.in.d[13].d[0]" "t.vtree_test.in.d[13].d[0]"
= "t.in.d[13].d[1]" "t.vtree_test.in.d[13].d[1]"
= "t.in.d[14].f" "t.vtree_test.in.d[14].f"
= "t.in.d[14].t" "t.vtree_test.in.d[14].t"
= "t.in.d[14].d[0]" "t.vtree_test.in.d[14].d[0]"
= "t.in.d[14].d[1]" "t.vtree_test.in.d[14].d[1]"
= "t.in.d[14].d[0]" "t.in.d[14].f"
= "t.in.d[14].d[1]" "t.in.d[14].t"
= "t.in.d[13].d[0]" "t.in.d[13].f"
= "t.in.d[13].d[1]" "t.in.d[13].t"
= "t.in.d[12].d[0]" "t.in.d[12].f"
= "t.in.d[12].d[1]" "t.in.d[12].t"
= "t.in.d[11].d[0]" "t.in.d[11].f"
= "t.in.d[11].d[1]" "t.in.d[11].t"
= "t.in.d[10].d[0]" "t.in.d[10].f"
= "t.in.d[10].d[1]" "t.in.d[10].t"
= "t.in.d[9].d[0]" "t.in.d[9].f"
= "t.in.d[9].d[1]" "t.in.d[9].t"
= "t.in.d[8].d[0]" "t.in.d[8].f"
= "t.in.d[8].d[1]" "t.in.d[8].t"
= "t.in.d[7].d[0]" "t.in.d[7].f"
= "t.in.d[7].d[1]" "t.in.d[7].t"
= "t.in.d[6].d[0]" "t.in.d[6].f"
= "t.in.d[6].d[1]" "t.in.d[6].t"
= "t.in.d[5].d[0]" "t.in.d[5].f"
= "t.in.d[5].d[1]" "t.in.d[5].t"
= "t.in.d[4].d[0]" "t.in.d[4].f"
= "t.in.d[4].d[1]" "t.in.d[4].t"
= "t.in.d[3].d[0]" "t.in.d[3].f"
= "t.in.d[3].d[1]" "t.in.d[3].t"
= "t.in.d[2].d[0]" "t.in.d[2].f"
= "t.in.d[2].d[1]" "t.in.d[2].t"
= "t.in.d[1].d[0]" "t.in.d[1].f"
= "t.in.d[1].d[1]" "t.in.d[1].t"
= "t.in.d[0].d[0]" "t.in.d[0].f"
= "t.in.d[0].d[1]" "t.in.d[0].t"

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 vtree_15 (std::data::Mx1of2?<15> in; bool! out){
vtree<15> vtree_test(.in=in, .out=out);
vtree_test.supply.vss = GND;
vtree_test.supply.vdd = Vdd;
}
vtree_15 t;

View File

@ -0,0 +1,108 @@
system "echo '[0] starting test true high'"
set t.in.d[0].t 1
set t.in.d[1].t 1
set t.in.d[2].t 1
set t.in.d[3].t 1
set t.in.d[4].t 1
set t.in.d[5].t 1
set t.in.d[6].t 1
set t.in.d[7].t 1
set t.in.d[8].t 1
set t.in.d[9].t 1
set t.in.d[10].t 1
set t.in.d[11].t 1
set t.in.d[12].t 1
set t.in.d[13].t 1
set t.in.d[14].t 1
set t.in.d[0].f 0
set t.in.d[1].f 0
set t.in.d[2].f 0
set t.in.d[3].f 0
set t.in.d[4].f 0
set t.in.d[5].f 0
set t.in.d[6].f 0
set t.in.d[7].f 0
set t.in.d[8].f 0
set t.in.d[9].f 0
set t.in.d[10].f 0
set t.in.d[11].f 0
set t.in.d[12].f 0
set t.in.d[13].f 0
set t.in.d[14].f 0
cycle
mode run
assert t.out 1
system "echo '[1] cleaning input'"
set t.in.d[0].t 0
set t.in.d[1].t 0
set t.in.d[2].t 0
set t.in.d[3].t 0
set t.in.d[4].t 0
set t.in.d[5].t 0
set t.in.d[6].t 0
set t.in.d[7].t 0
set t.in.d[8].t 0
set t.in.d[9].t 0
set t.in.d[10].t 0
set t.in.d[11].t 0
set t.in.d[12].t 0
set t.in.d[13].t 0
set t.in.d[14].t 0
set t.in.d[0].f 0
set t.in.d[1].f 0
set t.in.d[2].f 0
set t.in.d[3].f 0
set t.in.d[4].f 0
set t.in.d[5].f 0
set t.in.d[6].f 0
set t.in.d[7].f 0
set t.in.d[8].f 0
set t.in.d[9].f 0
set t.in.d[10].f 0
set t.in.d[11].f 0
set t.in.d[12].f 0
set t.in.d[13].f 0
set t.in.d[14].f 0
cycle
mode run
assert t.out 0
system "echo '[2] starting test false high'"
set t.in.d[0].t 0
set t.in.d[1].t 0
set t.in.d[2].t 0
set t.in.d[3].t 0
set t.in.d[4].t 0
set t.in.d[5].t 0
set t.in.d[6].t 0
set t.in.d[7].t 0
set t.in.d[8].t 0
set t.in.d[9].t 0
set t.in.d[10].t 0
set t.in.d[11].t 0
set t.in.d[12].t 0
set t.in.d[13].t 0
set t.in.d[14].t 0
set t.in.d[0].f 1
set t.in.d[1].f 1
set t.in.d[2].f 1
set t.in.d[3].f 1
set t.in.d[4].f 1
set t.in.d[5].f 1
set t.in.d[6].f 1
set t.in.d[7].f 1
set t.in.d[8].f 1
set t.in.d[9].f 1
set t.in.d[10].f 1
set t.in.d[11].f 1
set t.in.d[12].f 1
set t.in.d[13].f 1
set t.in.d[14].f 1
cycle
mode run
assert t.out 1