diff --git a/dataflow_neuro/treegates.act b/dataflow_neuro/treegates.act index 093dd6c..c7d13ca 100644 --- a/dataflow_neuro/treegates.act +++ b/dataflow_neuro/treegates.act @@ -153,6 +153,8 @@ defproc ctree (bool? in[N]; bool! out; power supply) end = N-1; pint lenTree2Count, lenTree3Count; + lenTree2Count = 0; + lenTree3Count = 0; /* Pre"calculate" the number of C cells required, look below if confused */ *[ i != end -> j = 0; @@ -237,6 +239,9 @@ defproc ctree (bool? in[N]; bool! out; power supply) end = end+j; j = 0; ] + + out = tmp[end]; + } export template diff --git a/test/unit_tests/primitive_instantiate/run/prsim.out b/test/unit_tests/primitive_instantiate/run/prsim.out index f5bec95..17cdbe6 100644 --- a/test/unit_tests/primitive_instantiate/run/prsim.out +++ b/test/unit_tests/primitive_instantiate/run/prsim.out @@ -1 +1,3 @@ -buff_test.out buff_test.buf1._y buff_test.in +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 diff --git a/test/unit_tests/primitive_instantiate/run/test.prs b/test/unit_tests/primitive_instantiate/run/test.prs index 070fe1b..b0db3b2 100644 --- a/test/unit_tests/primitive_instantiate/run/test.prs +++ b/test/unit_tests/primitive_instantiate/run/test.prs @@ -1,8 +1,138 @@ -"buff_test.buf1.a"->"buff_test.buf1._y"- -~("buff_test.buf1.a")->"buff_test.buf1._y"+ -"buff_test.buf1._y"->"buff_test.buf1.y"- -~("buff_test.buf1._y")->"buff_test.buf1.y"+ -= "buff_test.supply.vdd" "buff_test.buf1.vdd" -= "buff_test.supply.vss" "buff_test.buf1.vss" -= "buff_test.out" "buff_test.buf1.y" -= "buff_test.in" "buff_test.buf1.a" += "GND" "GND" += "Vdd" "Vdd" +~"t.ctree_test.C2Els[0].c1"&~"t.ctree_test.C2Els[0].c2"->"t.ctree_test.C2Els[0]._y"+ +"t.ctree_test.C2Els[0].c1"&"t.ctree_test.C2Els[0].c2"->"t.ctree_test.C2Els[0]._y"- +"t.ctree_test.C2Els[0]._y"->"t.ctree_test.C2Els[0].y"- +~("t.ctree_test.C2Els[0]._y")->"t.ctree_test.C2Els[0].y"+ +~"t.ctree_test.C2Els[1].c1"&~"t.ctree_test.C2Els[1].c2"->"t.ctree_test.C2Els[1]._y"+ +"t.ctree_test.C2Els[1].c1"&"t.ctree_test.C2Els[1].c2"->"t.ctree_test.C2Els[1]._y"- +"t.ctree_test.C2Els[1]._y"->"t.ctree_test.C2Els[1].y"- +~("t.ctree_test.C2Els[1]._y")->"t.ctree_test.C2Els[1].y"+ +~"t.ctree_test.C2Els[2].c1"&~"t.ctree_test.C2Els[2].c2"->"t.ctree_test.C2Els[2]._y"+ +"t.ctree_test.C2Els[2].c1"&"t.ctree_test.C2Els[2].c2"->"t.ctree_test.C2Els[2]._y"- +"t.ctree_test.C2Els[2]._y"->"t.ctree_test.C2Els[2].y"- +~("t.ctree_test.C2Els[2]._y")->"t.ctree_test.C2Els[2].y"+ +~"t.ctree_test.C2Els[3].c1"&~"t.ctree_test.C2Els[3].c2"->"t.ctree_test.C2Els[3]._y"+ +"t.ctree_test.C2Els[3].c1"&"t.ctree_test.C2Els[3].c2"->"t.ctree_test.C2Els[3]._y"- +"t.ctree_test.C2Els[3]._y"->"t.ctree_test.C2Els[3].y"- +~("t.ctree_test.C2Els[3]._y")->"t.ctree_test.C2Els[3].y"+ +~"t.ctree_test.C2Els[4].c1"&~"t.ctree_test.C2Els[4].c2"->"t.ctree_test.C2Els[4]._y"+ +"t.ctree_test.C2Els[4].c1"&"t.ctree_test.C2Els[4].c2"->"t.ctree_test.C2Els[4]._y"- +"t.ctree_test.C2Els[4]._y"->"t.ctree_test.C2Els[4].y"- +~("t.ctree_test.C2Els[4]._y")->"t.ctree_test.C2Els[4].y"+ +~"t.ctree_test.C2Els[5].c1"&~"t.ctree_test.C2Els[5].c2"->"t.ctree_test.C2Els[5]._y"+ +"t.ctree_test.C2Els[5].c1"&"t.ctree_test.C2Els[5].c2"->"t.ctree_test.C2Els[5]._y"- +"t.ctree_test.C2Els[5]._y"->"t.ctree_test.C2Els[5].y"- +~("t.ctree_test.C2Els[5]._y")->"t.ctree_test.C2Els[5].y"+ +~"t.ctree_test.C2Els[6].c1"&~"t.ctree_test.C2Els[6].c2"->"t.ctree_test.C2Els[6]._y"+ +"t.ctree_test.C2Els[6].c1"&"t.ctree_test.C2Els[6].c2"->"t.ctree_test.C2Els[6]._y"- +"t.ctree_test.C2Els[6]._y"->"t.ctree_test.C2Els[6].y"- +~("t.ctree_test.C2Els[6]._y")->"t.ctree_test.C2Els[6].y"+ +~"t.ctree_test.C2Els[7].c1"&~"t.ctree_test.C2Els[7].c2"->"t.ctree_test.C2Els[7]._y"+ +"t.ctree_test.C2Els[7].c1"&"t.ctree_test.C2Els[7].c2"->"t.ctree_test.C2Els[7]._y"- +"t.ctree_test.C2Els[7]._y"->"t.ctree_test.C2Els[7].y"- +~("t.ctree_test.C2Els[7]._y")->"t.ctree_test.C2Els[7].y"+ +~"t.ctree_test.C3Els[0].c1"&~"t.ctree_test.C3Els[0].c2"&~"t.ctree_test.C3Els[0].c3"->"t.ctree_test.C3Els[0]._y"+ +"t.ctree_test.C3Els[0].c1"&"t.ctree_test.C3Els[0].c2"&"t.ctree_test.C3Els[0].c3"->"t.ctree_test.C3Els[0]._y"- +"t.ctree_test.C3Els[0]._y"->"t.ctree_test.C3Els[0].y"- +~("t.ctree_test.C3Els[0]._y")->"t.ctree_test.C3Els[0].y"+ +~"t.ctree_test.C3Els[1].c1"&~"t.ctree_test.C3Els[1].c2"&~"t.ctree_test.C3Els[1].c3"->"t.ctree_test.C3Els[1]._y"+ +"t.ctree_test.C3Els[1].c1"&"t.ctree_test.C3Els[1].c2"&"t.ctree_test.C3Els[1].c3"->"t.ctree_test.C3Els[1]._y"- +"t.ctree_test.C3Els[1]._y"->"t.ctree_test.C3Els[1].y"- +~("t.ctree_test.C3Els[1]._y")->"t.ctree_test.C3Els[1].y"+ +~"t.ctree_test.C3Els[2].c1"&~"t.ctree_test.C3Els[2].c2"&~"t.ctree_test.C3Els[2].c3"->"t.ctree_test.C3Els[2]._y"+ +"t.ctree_test.C3Els[2].c1"&"t.ctree_test.C3Els[2].c2"&"t.ctree_test.C3Els[2].c3"->"t.ctree_test.C3Els[2]._y"- +"t.ctree_test.C3Els[2]._y"->"t.ctree_test.C3Els[2].y"- +~("t.ctree_test.C3Els[2]._y")->"t.ctree_test.C3Els[2].y"+ += "t.ctree_test.tmp[15]" "t.ctree_test.C2Els[6].c1" += "t.ctree_test.tmp[15]" "t.ctree_test.C2Els[0].y" += "t.ctree_test.tmp[16]" "t.ctree_test.C2Els[6].c2" += "t.ctree_test.tmp[16]" "t.ctree_test.C2Els[1].y" += "t.ctree_test.tmp[17]" "t.ctree_test.C2Els[7].c1" += "t.ctree_test.tmp[17]" "t.ctree_test.C2Els[2].y" += "t.ctree_test.tmp[18]" "t.ctree_test.C2Els[7].c2" += "t.ctree_test.tmp[18]" "t.ctree_test.C2Els[3].y" += "t.ctree_test.tmp[19]" "t.ctree_test.C3Els[1].c1" += "t.ctree_test.tmp[19]" "t.ctree_test.C2Els[4].y" += "t.ctree_test.tmp[20]" "t.ctree_test.C3Els[1].c2" += "t.ctree_test.tmp[20]" "t.ctree_test.C2Els[5].y" += "t.ctree_test.tmp[21]" "t.ctree_test.C3Els[1].c3" += "t.ctree_test.tmp[21]" "t.ctree_test.C3Els[0].y" += "t.ctree_test.tmp[22]" "t.ctree_test.C3Els[2].c1" += "t.ctree_test.tmp[22]" "t.ctree_test.C2Els[6].y" += "t.ctree_test.tmp[23]" "t.ctree_test.C3Els[2].c2" += "t.ctree_test.tmp[23]" "t.ctree_test.C2Els[7].y" += "t.ctree_test.tmp[24]" "t.ctree_test.C3Els[2].c3" += "t.ctree_test.tmp[24]" "t.ctree_test.C3Els[1].y" += "t.ctree_test.supply.vdd" "t.ctree_test.C3Els[2].vdd" += "t.ctree_test.supply.vdd" "t.ctree_test.C3Els[1].vdd" += "t.ctree_test.supply.vdd" "t.ctree_test.C3Els[0].vdd" += "t.ctree_test.supply.vdd" "t.ctree_test.C2Els[7].vdd" += "t.ctree_test.supply.vdd" "t.ctree_test.C2Els[6].vdd" += "t.ctree_test.supply.vdd" "t.ctree_test.C2Els[5].vdd" += "t.ctree_test.supply.vdd" "t.ctree_test.C2Els[4].vdd" += "t.ctree_test.supply.vdd" "t.ctree_test.C2Els[3].vdd" += "t.ctree_test.supply.vdd" "t.ctree_test.C2Els[2].vdd" += "t.ctree_test.supply.vdd" "t.ctree_test.C2Els[1].vdd" += "t.ctree_test.supply.vdd" "t.ctree_test.C2Els[0].vdd" += "t.ctree_test.supply.vss" "t.ctree_test.C3Els[2].vss" += "t.ctree_test.supply.vss" "t.ctree_test.C3Els[1].vss" += "t.ctree_test.supply.vss" "t.ctree_test.C3Els[0].vss" += "t.ctree_test.supply.vss" "t.ctree_test.C2Els[7].vss" += "t.ctree_test.supply.vss" "t.ctree_test.C2Els[6].vss" += "t.ctree_test.supply.vss" "t.ctree_test.C2Els[5].vss" += "t.ctree_test.supply.vss" "t.ctree_test.C2Els[4].vss" += "t.ctree_test.supply.vss" "t.ctree_test.C2Els[3].vss" += "t.ctree_test.supply.vss" "t.ctree_test.C2Els[2].vss" += "t.ctree_test.supply.vss" "t.ctree_test.C2Els[1].vss" += "t.ctree_test.supply.vss" "t.ctree_test.C2Els[0].vss" += "t.ctree_test.in[0]" "t.ctree_test.C2Els[0].c1" += "t.ctree_test.in[0]" "t.ctree_test.tmp[0]" += "t.ctree_test.in[1]" "t.ctree_test.C2Els[0].c2" += "t.ctree_test.in[1]" "t.ctree_test.tmp[1]" += "t.ctree_test.in[2]" "t.ctree_test.C2Els[1].c1" += "t.ctree_test.in[2]" "t.ctree_test.tmp[2]" += "t.ctree_test.in[3]" "t.ctree_test.C2Els[1].c2" += "t.ctree_test.in[3]" "t.ctree_test.tmp[3]" += "t.ctree_test.in[4]" "t.ctree_test.C2Els[2].c1" += "t.ctree_test.in[4]" "t.ctree_test.tmp[4]" += "t.ctree_test.in[5]" "t.ctree_test.C2Els[2].c2" += "t.ctree_test.in[5]" "t.ctree_test.tmp[5]" += "t.ctree_test.in[6]" "t.ctree_test.C2Els[3].c1" += "t.ctree_test.in[6]" "t.ctree_test.tmp[6]" += "t.ctree_test.in[7]" "t.ctree_test.C2Els[3].c2" += "t.ctree_test.in[7]" "t.ctree_test.tmp[7]" += "t.ctree_test.in[8]" "t.ctree_test.C2Els[4].c1" += "t.ctree_test.in[8]" "t.ctree_test.tmp[8]" += "t.ctree_test.in[9]" "t.ctree_test.C2Els[4].c2" += "t.ctree_test.in[9]" "t.ctree_test.tmp[9]" += "t.ctree_test.in[10]" "t.ctree_test.C2Els[5].c1" += "t.ctree_test.in[10]" "t.ctree_test.tmp[10]" += "t.ctree_test.in[11]" "t.ctree_test.C2Els[5].c2" += "t.ctree_test.in[11]" "t.ctree_test.tmp[11]" += "t.ctree_test.in[12]" "t.ctree_test.C3Els[0].c1" += "t.ctree_test.in[12]" "t.ctree_test.tmp[12]" += "t.ctree_test.in[13]" "t.ctree_test.C3Els[0].c2" += "t.ctree_test.in[13]" "t.ctree_test.tmp[13]" += "t.ctree_test.in[14]" "t.ctree_test.C3Els[0].c3" += "t.ctree_test.in[14]" "t.ctree_test.tmp[14]" += "t.ctree_test.out" "t.ctree_test.C3Els[2].y" += "t.ctree_test.out" "t.ctree_test.tmp[25]" += "Vdd" "t.ctree_test.supply.vdd" += "GND" "t.ctree_test.supply.vss" += "t.out" "t.ctree_test.out" += "t.in[0]" "t.ctree_test.in[0]" += "t.in[1]" "t.ctree_test.in[1]" += "t.in[2]" "t.ctree_test.in[2]" += "t.in[3]" "t.ctree_test.in[3]" += "t.in[4]" "t.ctree_test.in[4]" += "t.in[5]" "t.ctree_test.in[5]" += "t.in[6]" "t.ctree_test.in[6]" += "t.in[7]" "t.ctree_test.in[7]" += "t.in[8]" "t.ctree_test.in[8]" += "t.in[9]" "t.ctree_test.in[9]" += "t.in[10]" "t.ctree_test.in[10]" += "t.in[11]" "t.ctree_test.in[11]" += "t.in[12]" "t.ctree_test.in[12]" += "t.in[13]" "t.ctree_test.in[13]" += "t.in[14]" "t.ctree_test.in[14]" diff --git a/test/unit_tests/primitive_instantiate/test.act b/test/unit_tests/primitive_instantiate/test.act index 865677d..fc98a31 100644 --- a/test/unit_tests/primitive_instantiate/test.act +++ b/test/unit_tests/primitive_instantiate/test.act @@ -26,9 +26,23 @@ ************************************************************************** */ +//import "../../dataflow_neuro/treegates.act"; + +//open tmpl::dataflow_neuro; + +//sigbuf<3> buff_test; + + import "../../dataflow_neuro/treegates.act"; +import globals; open tmpl::dataflow_neuro; -sigbuf<3> buff_test; +defproc ctree_15 (bool? in[15]; bool! out){ + ctree<15> ctree_test(.in=in, .out=out); + ctree_test.supply.vss = GND; + ctree_test.supply.vdd = Vdd; +} + +ctree_15 t; diff --git a/test/unit_tests/primitive_instantiate/test.prsim b/test/unit_tests/primitive_instantiate/test.prsim index e69de29..6d6deee 100644 --- a/test/unit_tests/primitive_instantiate/test.prsim +++ b/test/unit_tests/primitive_instantiate/test.prsim @@ -0,0 +1,26 @@ + +system "echo '0'" + +set t.in[0] 1 +set t.in[1] 1 +set t.in[2] 1 +set t.in[3] 1 +set t.in[4] 1 +set t.in[5] 1 +set t.in[6] 1 +set t.in[7] 1 +set t.in[8] 1 +set t.in[9] 1 +set t.in[10] 1 +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 + +