From 19bbe2c26093c98285240fbba1bb486523300197 Mon Sep 17 00:00:00 2001 From: Stefan Holst Date: Sun, 9 Jul 2023 21:34:01 +0900 Subject: [PATCH] update intro --- examples/Introduction.ipynb | 855 +++++++++++++++++++++++------------- 1 file changed, 540 insertions(+), 315 deletions(-) diff --git a/examples/Introduction.ipynb b/examples/Introduction.ipynb index 6695290..8811b5b 100644 --- a/examples/Introduction.ipynb +++ b/examples/Introduction.ipynb @@ -25,9 +25,10 @@ "outputs": [], "source": [ "from kyupy import bench, verilog\n", + "from kyupy.techlib import SAED32\n", "\n", "# load a file\n", - "b15 = verilog.load('../tests/b15_2ig.v.gz')\n", + "b15 = verilog.load('../tests/b15_2ig.v.gz', tlib=SAED32)\n", "\n", "# ... or specify the circuit as string \n", "adder = bench.parse('''\n", @@ -120,6 +121,38 @@ "cell_type": "code", "execution_count": 5, "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'__node__': 14,\n", + " '__cell__': 6,\n", + " '__fork__': 8,\n", + " '__io__': 3,\n", + " '__line__': 17,\n", + " 'DFF': 1,\n", + " '__dff__': 1,\n", + " 'XOR': 2,\n", + " '__comb__': 5,\n", + " 'AND': 2,\n", + " 'OR': 1,\n", + " '__latch__': 0,\n", + " '__seq__': 1}" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "adder.stats" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, "outputs": [ { "data": { @@ -163,7 +196,7 @@ " '__seq__': 417}" ] }, - "execution_count": 5, + "execution_count": 6, "metadata": {}, "output_type": "execute_result" } @@ -172,36 +205,52 @@ "b15.stats" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Kyupy's simulator supports a certain set of 1, 2, 3, and 4-input gates. To map a circuit to these gates, we create a copy and resolve the SAED32 library cells." + ] + }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "{'__node__': 14,\n", - " '__cell__': 6,\n", - " '__fork__': 8,\n", - " '__io__': 3,\n", - " '__line__': 17,\n", - " 'DFF': 1,\n", - " '__dff__': 1,\n", - " 'XOR': 2,\n", - " '__comb__': 5,\n", - " 'AND': 2,\n", - " 'OR': 1,\n", + "{'__node__': 22819,\n", + " '__cell__': 11653,\n", + " '__fork__': 11166,\n", + " '__io__': 111,\n", + " '__line__': 33313,\n", + " 'output': 71,\n", + " 'input': 40,\n", + " '__const1__': 1,\n", + " '__comb__': 11125,\n", + " 'BUF1': 526,\n", + " 'INV1': 897,\n", + " 'AND2': 1464,\n", + " 'OR2': 1095,\n", + " 'NOR2': 114,\n", + " 'MUX21': 417,\n", + " 'DFF': 417,\n", + " '__dff__': 417,\n", + " 'NAND2': 6611,\n", " '__latch__': 0,\n", - " '__seq__': 1}" + " '__seq__': 417}" ] }, - "execution_count": 6, + "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "adder.stats" + "b15_prim = b15.copy()\n", + "b15_prim.resolve_tlib_cells(SAED32)\n", + "b15_prim.stats" ] }, { @@ -217,7 +266,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 8, "metadata": {}, "outputs": [ { @@ -231,7 +280,7 @@ " 'cout': 13:OR\"cout\" <15 <16 >14}" ] }, - "execution_count": 7, + "execution_count": 8, "metadata": {}, "output_type": "execute_result" } @@ -242,7 +291,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 9, "metadata": {}, "outputs": [ { @@ -258,7 +307,7 @@ " 'axbacin': 12:__fork__\"axbacin\" <11 >16}" ] }, - "execution_count": 8, + "execution_count": 9, "metadata": {}, "output_type": "execute_result" } @@ -276,7 +325,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 10, "metadata": {}, "outputs": [ { @@ -285,7 +334,7 @@ "6:XOR\"axb\" <3 <4 >2" ] }, - "execution_count": 9, + "execution_count": 10, "metadata": {}, "output_type": "execute_result" } @@ -296,7 +345,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 11, "metadata": {}, "outputs": [ { @@ -305,7 +354,7 @@ "7:__fork__\"axb\" <2 >6 >12" ] }, - "execution_count": 10, + "execution_count": 11, "metadata": {}, "output_type": "execute_result" } @@ -328,7 +377,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 12, "metadata": {}, "outputs": [ { @@ -337,7 +386,7 @@ "(6, 'XOR', 'axb')" ] }, - "execution_count": 11, + "execution_count": 12, "metadata": {}, "output_type": "execute_result" } @@ -361,7 +410,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 13, "metadata": {}, "outputs": [ { @@ -370,7 +419,7 @@ "(7, '__fork__', 'axb')" ] }, - "execution_count": 12, + "execution_count": 13, "metadata": {}, "output_type": "execute_result" } @@ -392,7 +441,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 14, "metadata": {}, "outputs": [ { @@ -414,7 +463,7 @@ " 13:OR\"cout\" <15 <16 >14]" ] }, - "execution_count": 13, + "execution_count": 14, "metadata": {}, "output_type": "execute_result" } @@ -425,7 +474,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 15, "metadata": {}, "outputs": [ { @@ -434,7 +483,7 @@ "(6:XOR\"axb\" <3 <4 >2, 7:__fork__\"axb\" <2 >6 >12)" ] }, - "execution_count": 14, + "execution_count": 15, "metadata": {}, "output_type": "execute_result" } @@ -454,7 +503,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 16, "metadata": {}, "outputs": [], "source": [ @@ -470,7 +519,7 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 17, "metadata": { "tags": [] }, @@ -481,7 +530,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 18, "metadata": {}, "outputs": [ { @@ -490,7 +539,7 @@ "[0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0]" ] }, - "execution_count": 17, + "execution_count": 18, "metadata": {}, "output_type": "execute_result" } @@ -516,7 +565,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 19, "metadata": {}, "outputs": [ { @@ -525,7 +574,7 @@ "[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]" ] }, - "execution_count": 18, + "execution_count": 19, "metadata": {}, "output_type": "execute_result" } @@ -543,7 +592,7 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 20, "metadata": {}, "outputs": [ { @@ -552,7 +601,7 @@ "(6:XOR\"axb\" <3 <4 >2, 7:__fork__\"axb\" <2 >6 >12)" ] }, - "execution_count": 19, + "execution_count": 20, "metadata": {}, "output_type": "execute_result" } @@ -574,7 +623,7 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 21, "metadata": {}, "outputs": [ { @@ -583,7 +632,7 @@ "([3, 4], [2])" ] }, - "execution_count": 20, + "execution_count": 21, "metadata": {}, "output_type": "execute_result" } @@ -601,7 +650,7 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 22, "metadata": {}, "outputs": [ { @@ -610,7 +659,7 @@ "(0, 0, 1)" ] }, - "execution_count": 21, + "execution_count": 22, "metadata": {}, "output_type": "execute_result" } @@ -630,7 +679,7 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 23, "metadata": {}, "outputs": [ { @@ -639,7 +688,7 @@ "[0:__fork__\"a\" >3 >9, 1:__fork__\"b\" >4 >10, 2:__fork__\"s\" <5]" ] }, - "execution_count": 22, + "execution_count": 23, "metadata": {}, "output_type": "execute_result" } @@ -661,7 +710,7 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 24, "metadata": {}, "outputs": [ { @@ -670,7 +719,7 @@ "[0:__fork__\"a\" >3 >9, 1:__fork__\"b\" >4 >10, 2:__fork__\"s\" <5, 4:DFF\"cin\" <1 >0]" ] }, - "execution_count": 23, + "execution_count": 24, "metadata": {}, "output_type": "execute_result" } @@ -690,7 +739,7 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 25, "metadata": {}, "outputs": [ { @@ -699,7 +748,7 @@ "6:XOR\"axb\" <3 <4 >2" ] }, - "execution_count": 24, + "execution_count": 25, "metadata": {}, "output_type": "execute_result" } @@ -710,7 +759,7 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": 26, "metadata": {}, "outputs": [ { @@ -729,7 +778,7 @@ }, { "cell_type": "code", - "execution_count": 26, + "execution_count": 27, "metadata": {}, "outputs": [ { @@ -738,7 +787,7 @@ "'cout'" ] }, - "execution_count": 26, + "execution_count": 27, "metadata": {}, "output_type": "execute_result" } @@ -756,7 +805,7 @@ }, { "cell_type": "code", - "execution_count": 27, + "execution_count": 28, "metadata": {}, "outputs": [ { @@ -785,7 +834,7 @@ " 21405:output\"Address[14]\" <31980])" ] }, - "execution_count": 27, + "execution_count": 28, "metadata": {}, "output_type": "execute_result" } @@ -803,7 +852,7 @@ }, { "cell_type": "code", - "execution_count": 28, + "execution_count": 29, "metadata": {}, "outputs": [ { @@ -812,7 +861,7 @@ "528" ] }, - "execution_count": 28, + "execution_count": 29, "metadata": {}, "output_type": "execute_result" } @@ -830,7 +879,7 @@ }, { "cell_type": "code", - "execution_count": 29, + "execution_count": 30, "metadata": {}, "outputs": [ { @@ -839,7 +888,7 @@ "107" ] }, - "execution_count": 29, + "execution_count": 30, "metadata": {}, "output_type": "execute_result" } @@ -850,7 +899,7 @@ }, { "cell_type": "code", - "execution_count": 30, + "execution_count": 31, "metadata": {}, "outputs": [ { @@ -888,7 +937,7 @@ " 4]" ] }, - "execution_count": 30, + "execution_count": 31, "metadata": {}, "output_type": "execute_result" } @@ -906,7 +955,7 @@ }, { "cell_type": "code", - "execution_count": 31, + "execution_count": 32, "metadata": {}, "outputs": [ { @@ -930,7 +979,7 @@ " [469, 468, 470, 467, 471, 466, 472, 465]]" ] }, - "execution_count": 31, + "execution_count": 32, "metadata": {}, "output_type": "execute_result" } @@ -941,7 +990,7 @@ }, { "cell_type": "code", - "execution_count": 32, + "execution_count": 33, "metadata": {}, "outputs": [ { @@ -949,149 +998,149 @@ "output_type": "stream", "text": [ "---------------\n", - "1385:SDFFARX1_RVT\"InstQueue_reg_0__0_\" <12704 <12706 <12705 <12707 <12708 >702\n", - "1383:SDFFARX1_RVT\"InstQueue_reg_0__1_\" <12699 <12701 <12700 <12702 <12703 >701\n", - "1387:SDFFARX1_RVT\"InstQueue_reg_0__2_\" <12709 <12711 <12710 <12712 <12713 >703\n", - "1381:SDFFARX1_RVT\"InstQueue_reg_0__3_\" <12694 <12696 <12695 <12697 <12698 >700\n", - "1389:SDFFARX1_RVT\"InstQueue_reg_0__4_\" <12714 <12716 <12715 <12717 <12718 >704\n", - "1379:SDFFARX1_RVT\"InstQueue_reg_0__5_\" <12689 <12691 <12690 <12692 <12693 >699\n", - "1391:SDFFARX1_RVT\"InstQueue_reg_0__6_\" <12719 <12721 <12720 <12722 <12723 >705\n", - "1377:SDFFARX1_RVT\"InstQueue_reg_0__7_\" <12684 <12686 <12685 <12687 <12688 >698\n", + "1385:SDFFARX1_RVT\"InstQueue_reg_0__0_\" <12704 <12707 <12708 <12706 <12705 >702\n", + "1383:SDFFARX1_RVT\"InstQueue_reg_0__1_\" <12699 <12702 <12703 <12701 <12700 >701\n", + "1387:SDFFARX1_RVT\"InstQueue_reg_0__2_\" <12709 <12712 <12713 <12711 <12710 >703\n", + "1381:SDFFARX1_RVT\"InstQueue_reg_0__3_\" <12694 <12697 <12698 <12696 <12695 >700\n", + "1389:SDFFARX1_RVT\"InstQueue_reg_0__4_\" <12714 <12717 <12718 <12716 <12715 >704\n", + "1379:SDFFARX1_RVT\"InstQueue_reg_0__5_\" <12689 <12692 <12693 <12691 <12690 >699\n", + "1391:SDFFARX1_RVT\"InstQueue_reg_0__6_\" <12719 <12722 <12723 <12721 <12720 >705\n", + "1377:SDFFARX1_RVT\"InstQueue_reg_0__7_\" <12684 <12687 <12688 <12686 <12685 >698\n", "---------------\n", - "1401:SDFFARX1_RVT\"InstQueue_reg_1__0_\" <12744 <12746 <12745 <12747 <12748 >710\n", - "1399:SDFFARX1_RVT\"InstQueue_reg_1__1_\" <12739 <12741 <12740 <12742 <12743 >709\n", - "1403:SDFFARX1_RVT\"InstQueue_reg_1__2_\" <12749 <12751 <12750 <12752 <12753 >711\n", - "1397:SDFFARX1_RVT\"InstQueue_reg_1__3_\" <12734 <12736 <12735 <12737 <12738 >708\n", - "1405:SDFFARX1_RVT\"InstQueue_reg_1__4_\" <12754 <12756 <12755 <12757 <12758 >712\n", - "1395:SDFFARX1_RVT\"InstQueue_reg_1__5_\" <12729 <12731 <12730 <12732 <12733 >707\n", - "1407:SDFFARX1_RVT\"InstQueue_reg_1__6_\" <12759 <12761 <12760 <12762 <12763 >713\n", - "1393:SDFFARX1_RVT\"InstQueue_reg_1__7_\" <12724 <12726 <12725 <12727 <12728 >706\n", + "1401:SDFFARX1_RVT\"InstQueue_reg_1__0_\" <12744 <12747 <12748 <12746 <12745 >710\n", + "1399:SDFFARX1_RVT\"InstQueue_reg_1__1_\" <12739 <12742 <12743 <12741 <12740 >709\n", + "1403:SDFFARX1_RVT\"InstQueue_reg_1__2_\" <12749 <12752 <12753 <12751 <12750 >711\n", + "1397:SDFFARX1_RVT\"InstQueue_reg_1__3_\" <12734 <12737 <12738 <12736 <12735 >708\n", + "1405:SDFFARX1_RVT\"InstQueue_reg_1__4_\" <12754 <12757 <12758 <12756 <12755 >712\n", + "1395:SDFFARX1_RVT\"InstQueue_reg_1__5_\" <12729 <12732 <12733 <12731 <12730 >707\n", + "1407:SDFFARX1_RVT\"InstQueue_reg_1__6_\" <12759 <12762 <12763 <12761 <12760 >713\n", + "1393:SDFFARX1_RVT\"InstQueue_reg_1__7_\" <12724 <12727 <12728 <12726 <12725 >706\n", "---------------\n", - "1417:SDFFARX1_RVT\"InstQueue_reg_2__0_\" <12784 <12786 <12785 <12787 <12788 >718\n", - "1415:SDFFARX1_RVT\"InstQueue_reg_2__1_\" <12779 <12781 <12780 <12782 <12783 >717\n", - "1419:SDFFARX1_RVT\"InstQueue_reg_2__2_\" <12789 <12791 <12790 <12792 <12793 >719\n", - "1413:SDFFARX1_RVT\"InstQueue_reg_2__3_\" <12774 <12776 <12775 <12777 <12778 >716\n", - "1421:SDFFARX1_RVT\"InstQueue_reg_2__4_\" <12794 <12796 <12795 <12797 <12798 >720\n", - "1411:SDFFARX1_RVT\"InstQueue_reg_2__5_\" <12769 <12771 <12770 <12772 <12773 >715\n", - "1423:SDFFARX1_RVT\"InstQueue_reg_2__6_\" <12799 <12801 <12800 <12802 <12803 >721\n", - "1409:SDFFARX1_RVT\"InstQueue_reg_2__7_\" <12764 <12766 <12765 <12767 <12768 >714\n", + "1417:SDFFARX1_RVT\"InstQueue_reg_2__0_\" <12784 <12787 <12788 <12786 <12785 >718\n", + "1415:SDFFARX1_RVT\"InstQueue_reg_2__1_\" <12779 <12782 <12783 <12781 <12780 >717\n", + "1419:SDFFARX1_RVT\"InstQueue_reg_2__2_\" <12789 <12792 <12793 <12791 <12790 >719\n", + "1413:SDFFARX1_RVT\"InstQueue_reg_2__3_\" <12774 <12777 <12778 <12776 <12775 >716\n", + "1421:SDFFARX1_RVT\"InstQueue_reg_2__4_\" <12794 <12797 <12798 <12796 <12795 >720\n", + "1411:SDFFARX1_RVT\"InstQueue_reg_2__5_\" <12769 <12772 <12773 <12771 <12770 >715\n", + "1423:SDFFARX1_RVT\"InstQueue_reg_2__6_\" <12799 <12802 <12803 <12801 <12800 >721\n", + "1409:SDFFARX1_RVT\"InstQueue_reg_2__7_\" <12764 <12767 <12768 <12766 <12765 >714\n", "---------------\n", - "1433:SDFFARX1_RVT\"InstQueue_reg_3__0_\" <12824 <12826 <12825 <12827 <12828 >726\n", - "1431:SDFFARX1_RVT\"InstQueue_reg_3__1_\" <12819 <12821 <12820 <12822 <12823 >725\n", - "1435:SDFFARX1_RVT\"InstQueue_reg_3__2_\" <12829 <12831 <12830 <12832 <12833 >727\n", - "1429:SDFFARX1_RVT\"InstQueue_reg_3__3_\" <12814 <12816 <12815 <12817 <12818 >724\n", - "1437:SDFFARX1_RVT\"InstQueue_reg_3__4_\" <12834 <12836 <12835 <12837 <12838 >728\n", - "1427:SDFFARX1_RVT\"InstQueue_reg_3__5_\" <12809 <12811 <12810 <12812 <12813 >723\n", - "1439:SDFFARX1_RVT\"InstQueue_reg_3__6_\" <12839 <12841 <12840 <12842 <12843 >729\n", - "1425:SDFFARX1_RVT\"InstQueue_reg_3__7_\" <12804 <12806 <12805 <12807 <12808 >722\n", + "1433:SDFFARX1_RVT\"InstQueue_reg_3__0_\" <12824 <12827 <12828 <12826 <12825 >726\n", + "1431:SDFFARX1_RVT\"InstQueue_reg_3__1_\" <12819 <12822 <12823 <12821 <12820 >725\n", + "1435:SDFFARX1_RVT\"InstQueue_reg_3__2_\" <12829 <12832 <12833 <12831 <12830 >727\n", + "1429:SDFFARX1_RVT\"InstQueue_reg_3__3_\" <12814 <12817 <12818 <12816 <12815 >724\n", + "1437:SDFFARX1_RVT\"InstQueue_reg_3__4_\" <12834 <12837 <12838 <12836 <12835 >728\n", + "1427:SDFFARX1_RVT\"InstQueue_reg_3__5_\" <12809 <12812 <12813 <12811 <12810 >723\n", + "1439:SDFFARX1_RVT\"InstQueue_reg_3__6_\" <12839 <12842 <12843 <12841 <12840 >729\n", + "1425:SDFFARX1_RVT\"InstQueue_reg_3__7_\" <12804 <12807 <12808 <12806 <12805 >722\n", "---------------\n", - "1449:SDFFARX1_RVT\"InstQueue_reg_4__0_\" <12864 <12866 <12865 <12867 <12868 >734\n", - "1447:SDFFARX1_RVT\"InstQueue_reg_4__1_\" <12859 <12861 <12860 <12862 <12863 >733\n", - "1451:SDFFARX1_RVT\"InstQueue_reg_4__2_\" <12869 <12871 <12870 <12872 <12873 >735\n", - "1445:SDFFARX1_RVT\"InstQueue_reg_4__3_\" <12854 <12856 <12855 <12857 <12858 >732\n", - "1453:SDFFARX1_RVT\"InstQueue_reg_4__4_\" <12874 <12876 <12875 <12877 <12878 >736\n", - "1443:SDFFARX1_RVT\"InstQueue_reg_4__5_\" <12849 <12851 <12850 <12852 <12853 >731\n", - "1455:SDFFARX1_RVT\"InstQueue_reg_4__6_\" <12879 <12881 <12880 <12882 <12883 >737\n", - "1441:SDFFARX1_RVT\"InstQueue_reg_4__7_\" <12844 <12846 <12845 <12847 <12848 >730\n", + "1449:SDFFARX1_RVT\"InstQueue_reg_4__0_\" <12864 <12867 <12868 <12866 <12865 >734\n", + "1447:SDFFARX1_RVT\"InstQueue_reg_4__1_\" <12859 <12862 <12863 <12861 <12860 >733\n", + "1451:SDFFARX1_RVT\"InstQueue_reg_4__2_\" <12869 <12872 <12873 <12871 <12870 >735\n", + "1445:SDFFARX1_RVT\"InstQueue_reg_4__3_\" <12854 <12857 <12858 <12856 <12855 >732\n", + "1453:SDFFARX1_RVT\"InstQueue_reg_4__4_\" <12874 <12877 <12878 <12876 <12875 >736\n", + "1443:SDFFARX1_RVT\"InstQueue_reg_4__5_\" <12849 <12852 <12853 <12851 <12850 >731\n", + "1455:SDFFARX1_RVT\"InstQueue_reg_4__6_\" <12879 <12882 <12883 <12881 <12880 >737\n", + "1441:SDFFARX1_RVT\"InstQueue_reg_4__7_\" <12844 <12847 <12848 <12846 <12845 >730\n", "---------------\n", - "1465:SDFFARX1_RVT\"InstQueue_reg_5__0_\" <12904 <12906 <12905 <12907 <12908 >742\n", - "1463:SDFFARX1_RVT\"InstQueue_reg_5__1_\" <12899 <12901 <12900 <12902 <12903 >741\n", - "1467:SDFFARX1_RVT\"InstQueue_reg_5__2_\" <12909 <12911 <12910 <12912 <12913 >743\n", - "1461:SDFFARX1_RVT\"InstQueue_reg_5__3_\" <12894 <12896 <12895 <12897 <12898 >740\n", - "1469:SDFFARX1_RVT\"InstQueue_reg_5__4_\" <12914 <12916 <12915 <12917 <12918 >744\n", - "1459:SDFFARX1_RVT\"InstQueue_reg_5__5_\" <12889 <12891 <12890 <12892 <12893 >739\n", - "1471:SDFFARX1_RVT\"InstQueue_reg_5__6_\" <12919 <12921 <12920 <12922 <12923 >745\n", - "1457:SDFFARX1_RVT\"InstQueue_reg_5__7_\" <12884 <12886 <12885 <12887 <12888 >738\n", + "1465:SDFFARX1_RVT\"InstQueue_reg_5__0_\" <12904 <12907 <12908 <12906 <12905 >742\n", + "1463:SDFFARX1_RVT\"InstQueue_reg_5__1_\" <12899 <12902 <12903 <12901 <12900 >741\n", + "1467:SDFFARX1_RVT\"InstQueue_reg_5__2_\" <12909 <12912 <12913 <12911 <12910 >743\n", + "1461:SDFFARX1_RVT\"InstQueue_reg_5__3_\" <12894 <12897 <12898 <12896 <12895 >740\n", + "1469:SDFFARX1_RVT\"InstQueue_reg_5__4_\" <12914 <12917 <12918 <12916 <12915 >744\n", + "1459:SDFFARX1_RVT\"InstQueue_reg_5__5_\" <12889 <12892 <12893 <12891 <12890 >739\n", + "1471:SDFFARX1_RVT\"InstQueue_reg_5__6_\" <12919 <12922 <12923 <12921 <12920 >745\n", + "1457:SDFFARX1_RVT\"InstQueue_reg_5__7_\" <12884 <12887 <12888 <12886 <12885 >738\n", "---------------\n", - "1481:SDFFARX1_RVT\"InstQueue_reg_6__0_\" <12944 <12946 <12945 <12947 <12948 >750\n", - "1479:SDFFARX1_RVT\"InstQueue_reg_6__1_\" <12939 <12941 <12940 <12942 <12943 >749\n", - "1483:SDFFARX1_RVT\"InstQueue_reg_6__2_\" <12949 <12951 <12950 <12952 <12953 >751\n", - "1477:SDFFARX1_RVT\"InstQueue_reg_6__3_\" <12934 <12936 <12935 <12937 <12938 >748\n", - "1485:SDFFARX1_RVT\"InstQueue_reg_6__4_\" <12954 <12956 <12955 <12957 <12958 >752\n", - "1475:SDFFARX1_RVT\"InstQueue_reg_6__5_\" <12929 <12931 <12930 <12932 <12933 >747\n", - "1487:SDFFARX1_RVT\"InstQueue_reg_6__6_\" <12959 <12961 <12960 <12962 <12963 >753\n", - "1473:SDFFARX1_RVT\"InstQueue_reg_6__7_\" <12924 <12926 <12925 <12927 <12928 >746\n", + "1481:SDFFARX1_RVT\"InstQueue_reg_6__0_\" <12944 <12947 <12948 <12946 <12945 >750\n", + "1479:SDFFARX1_RVT\"InstQueue_reg_6__1_\" <12939 <12942 <12943 <12941 <12940 >749\n", + "1483:SDFFARX1_RVT\"InstQueue_reg_6__2_\" <12949 <12952 <12953 <12951 <12950 >751\n", + "1477:SDFFARX1_RVT\"InstQueue_reg_6__3_\" <12934 <12937 <12938 <12936 <12935 >748\n", + "1485:SDFFARX1_RVT\"InstQueue_reg_6__4_\" <12954 <12957 <12958 <12956 <12955 >752\n", + "1475:SDFFARX1_RVT\"InstQueue_reg_6__5_\" <12929 <12932 <12933 <12931 <12930 >747\n", + "1487:SDFFARX1_RVT\"InstQueue_reg_6__6_\" <12959 <12962 <12963 <12961 <12960 >753\n", + "1473:SDFFARX1_RVT\"InstQueue_reg_6__7_\" <12924 <12927 <12928 <12926 <12925 >746\n", "---------------\n", - "1497:SDFFARX1_RVT\"InstQueue_reg_7__0_\" <12984 <12986 <12985 <12987 <12988 >758\n", - "1495:SDFFARX1_RVT\"InstQueue_reg_7__1_\" <12979 <12981 <12980 <12982 <12983 >757\n", - "1499:SDFFARX1_RVT\"InstQueue_reg_7__2_\" <12989 <12991 <12990 <12992 <12993 >759\n", - "1493:SDFFARX1_RVT\"InstQueue_reg_7__3_\" <12974 <12976 <12975 <12977 <12978 >756\n", - "1501:SDFFARX1_RVT\"InstQueue_reg_7__4_\" <12994 <12996 <12995 <12997 <12998 >760\n", - "1491:SDFFARX1_RVT\"InstQueue_reg_7__5_\" <12969 <12971 <12970 <12972 <12973 >755\n", - "1503:SDFFARX1_RVT\"InstQueue_reg_7__6_\" <12999 <13001 <13000 <13002 <13003 >761\n", - "1489:SDFFARX1_RVT\"InstQueue_reg_7__7_\" <12964 <12966 <12965 <12967 <12968 >754\n", + "1497:SDFFARX1_RVT\"InstQueue_reg_7__0_\" <12984 <12987 <12988 <12986 <12985 >758\n", + "1495:SDFFARX1_RVT\"InstQueue_reg_7__1_\" <12979 <12982 <12983 <12981 <12980 >757\n", + "1499:SDFFARX1_RVT\"InstQueue_reg_7__2_\" <12989 <12992 <12993 <12991 <12990 >759\n", + "1493:SDFFARX1_RVT\"InstQueue_reg_7__3_\" <12974 <12977 <12978 <12976 <12975 >756\n", + "1501:SDFFARX1_RVT\"InstQueue_reg_7__4_\" <12994 <12997 <12998 <12996 <12995 >760\n", + "1491:SDFFARX1_RVT\"InstQueue_reg_7__5_\" <12969 <12972 <12973 <12971 <12970 >755\n", + "1503:SDFFARX1_RVT\"InstQueue_reg_7__6_\" <12999 <13002 <13003 <13001 <13000 >761\n", + "1489:SDFFARX1_RVT\"InstQueue_reg_7__7_\" <12964 <12967 <12968 <12966 <12965 >754\n", "---------------\n", - "1513:SDFFARX1_RVT\"InstQueue_reg_8__0_\" <13024 <13026 <13025 <13027 <13028 >766\n", - "1511:SDFFARX1_RVT\"InstQueue_reg_8__1_\" <13019 <13021 <13020 <13022 <13023 >765\n", - "1515:SDFFARX1_RVT\"InstQueue_reg_8__2_\" <13029 <13031 <13030 <13032 <13033 >767 >768\n", - "1509:SDFFARX1_RVT\"InstQueue_reg_8__3_\" <13014 <13016 <13015 <13017 <13018 >764\n", - "1518:SDFFARX1_RVT\"InstQueue_reg_8__4_\" <13034 <13036 <13035 <13037 <13038 >769\n", - "1507:SDFFARX1_RVT\"InstQueue_reg_8__5_\" <13009 <13011 <13010 <13012 <13013 >763\n", - "1520:SDFFARX1_RVT\"InstQueue_reg_8__6_\" <13039 <13041 <13040 <13042 <13043 >770\n", - "1505:SDFFARX1_RVT\"InstQueue_reg_8__7_\" <13004 <13006 <13005 <13007 <13008 >762\n", + "1513:SDFFARX1_RVT\"InstQueue_reg_8__0_\" <13024 <13027 <13028 <13026 <13025 >766\n", + "1511:SDFFARX1_RVT\"InstQueue_reg_8__1_\" <13019 <13022 <13023 <13021 <13020 >765\n", + "1515:SDFFARX1_RVT\"InstQueue_reg_8__2_\" <13029 <13032 <13033 <13031 <13030 >767 >768\n", + "1509:SDFFARX1_RVT\"InstQueue_reg_8__3_\" <13014 <13017 <13018 <13016 <13015 >764\n", + "1518:SDFFARX1_RVT\"InstQueue_reg_8__4_\" <13034 <13037 <13038 <13036 <13035 >769\n", + "1507:SDFFARX1_RVT\"InstQueue_reg_8__5_\" <13009 <13012 <13013 <13011 <13010 >763\n", + "1520:SDFFARX1_RVT\"InstQueue_reg_8__6_\" <13039 <13042 <13043 <13041 <13040 >770\n", + "1505:SDFFARX1_RVT\"InstQueue_reg_8__7_\" <13004 <13007 <13008 <13006 <13005 >762\n", "---------------\n", - "1530:SDFFARX1_RVT\"InstQueue_reg_9__0_\" <13064 <13066 <13065 <13067 <13068 >775\n", - "1528:SDFFARX1_RVT\"InstQueue_reg_9__1_\" <13059 <13061 <13060 <13062 <13063 >774\n", - "1532:SDFFARX1_RVT\"InstQueue_reg_9__2_\" <13069 <13071 <13070 <13072 <13073 >776\n", - "1526:SDFFARX1_RVT\"InstQueue_reg_9__3_\" <13054 <13056 <13055 <13057 <13058 >773\n", - "1534:SDFFARX1_RVT\"InstQueue_reg_9__4_\" <13074 <13076 <13075 <13077 <13078 >777\n", - "1524:SDFFARX1_RVT\"InstQueue_reg_9__5_\" <13049 <13051 <13050 <13052 <13053 >772\n", - "1536:SDFFARX1_RVT\"InstQueue_reg_9__6_\" <13079 <13081 <13080 <13082 <13083 >778\n", - "1522:SDFFARX1_RVT\"InstQueue_reg_9__7_\" <13044 <13046 <13045 <13047 <13048 >771\n", + "1530:SDFFARX1_RVT\"InstQueue_reg_9__0_\" <13064 <13067 <13068 <13066 <13065 >775\n", + "1528:SDFFARX1_RVT\"InstQueue_reg_9__1_\" <13059 <13062 <13063 <13061 <13060 >774\n", + "1532:SDFFARX1_RVT\"InstQueue_reg_9__2_\" <13069 <13072 <13073 <13071 <13070 >776\n", + "1526:SDFFARX1_RVT\"InstQueue_reg_9__3_\" <13054 <13057 <13058 <13056 <13055 >773\n", + "1534:SDFFARX1_RVT\"InstQueue_reg_9__4_\" <13074 <13077 <13078 <13076 <13075 >777\n", + "1524:SDFFARX1_RVT\"InstQueue_reg_9__5_\" <13049 <13052 <13053 <13051 <13050 >772\n", + "1536:SDFFARX1_RVT\"InstQueue_reg_9__6_\" <13079 <13082 <13083 <13081 <13080 >778\n", + "1522:SDFFARX1_RVT\"InstQueue_reg_9__7_\" <13044 <13047 <13048 <13046 <13045 >771\n", "---------------\n", - "1546:SDFFARX1_RVT\"InstQueue_reg_10__0_\" <13104 <13106 <13105 <13107 <13108 >783\n", - "1544:SDFFARX1_RVT\"InstQueue_reg_10__1_\" <13099 <13101 <13100 <13102 <13103 >782\n", - "1548:SDFFARX1_RVT\"InstQueue_reg_10__2_\" <13109 <13111 <13110 <13112 <13113 >784\n", - "1542:SDFFARX1_RVT\"InstQueue_reg_10__3_\" <13094 <13096 <13095 <13097 <13098 >781\n", - "1550:SDFFARX1_RVT\"InstQueue_reg_10__4_\" <13114 <13116 <13115 <13117 <13118 >785 >786\n", - "1540:SDFFARX1_RVT\"InstQueue_reg_10__5_\" <13089 <13091 <13090 <13092 <13093 >780\n", - "1553:SDFFARX1_RVT\"InstQueue_reg_10__6_\" <13119 <13121 <13120 <13122 <13123 >787\n", - "1538:SDFFARX1_RVT\"InstQueue_reg_10__7_\" <13084 <13086 <13085 <13087 <13088 >779\n", + "1546:SDFFARX1_RVT\"InstQueue_reg_10__0_\" <13104 <13107 <13108 <13106 <13105 >783\n", + "1544:SDFFARX1_RVT\"InstQueue_reg_10__1_\" <13099 <13102 <13103 <13101 <13100 >782\n", + "1548:SDFFARX1_RVT\"InstQueue_reg_10__2_\" <13109 <13112 <13113 <13111 <13110 >784\n", + "1542:SDFFARX1_RVT\"InstQueue_reg_10__3_\" <13094 <13097 <13098 <13096 <13095 >781\n", + "1550:SDFFARX1_RVT\"InstQueue_reg_10__4_\" <13114 <13117 <13118 <13116 <13115 >785 >786\n", + "1540:SDFFARX1_RVT\"InstQueue_reg_10__5_\" <13089 <13092 <13093 <13091 <13090 >780\n", + "1553:SDFFARX1_RVT\"InstQueue_reg_10__6_\" <13119 <13122 <13123 <13121 <13120 >787\n", + "1538:SDFFARX1_RVT\"InstQueue_reg_10__7_\" <13084 <13087 <13088 <13086 <13085 >779\n", "---------------\n", - "1563:SDFFARX1_RVT\"InstQueue_reg_11__0_\" <13144 <13146 <13145 <13147 <13148 >792\n", - "1561:SDFFARX1_RVT\"InstQueue_reg_11__1_\" <13139 <13141 <13140 <13142 <13143 >791\n", - "1565:SDFFARX1_RVT\"InstQueue_reg_11__2_\" <13149 <13151 <13150 <13152 <13153 >793\n", - "1559:SDFFARX1_RVT\"InstQueue_reg_11__3_\" <13134 <13136 <13135 <13137 <13138 >790\n", - "1567:SDFFARX1_RVT\"InstQueue_reg_11__4_\" <13154 <13156 <13155 <13157 <13158 >794\n", - "1557:SDFFARX1_RVT\"InstQueue_reg_11__5_\" <13129 <13131 <13130 <13132 <13133 >789\n", - "1569:SDFFARX1_RVT\"InstQueue_reg_11__6_\" <13159 <13161 <13160 <13162 <13163 >795\n", - "1555:SDFFARX1_RVT\"InstQueue_reg_11__7_\" <13124 <13126 <13125 <13127 <13128 >788\n", + "1563:SDFFARX1_RVT\"InstQueue_reg_11__0_\" <13144 <13147 <13148 <13146 <13145 >792\n", + "1561:SDFFARX1_RVT\"InstQueue_reg_11__1_\" <13139 <13142 <13143 <13141 <13140 >791\n", + "1565:SDFFARX1_RVT\"InstQueue_reg_11__2_\" <13149 <13152 <13153 <13151 <13150 >793\n", + "1559:SDFFARX1_RVT\"InstQueue_reg_11__3_\" <13134 <13137 <13138 <13136 <13135 >790\n", + "1567:SDFFARX1_RVT\"InstQueue_reg_11__4_\" <13154 <13157 <13158 <13156 <13155 >794\n", + "1557:SDFFARX1_RVT\"InstQueue_reg_11__5_\" <13129 <13132 <13133 <13131 <13130 >789\n", + "1569:SDFFARX1_RVT\"InstQueue_reg_11__6_\" <13159 <13162 <13163 <13161 <13160 >795\n", + "1555:SDFFARX1_RVT\"InstQueue_reg_11__7_\" <13124 <13127 <13128 <13126 <13125 >788\n", "---------------\n", - "1579:SDFFARX1_RVT\"InstQueue_reg_12__0_\" <13184 <13186 <13185 <13187 <13188 >800\n", - "1577:SDFFARX1_RVT\"InstQueue_reg_12__1_\" <13179 <13181 <13180 <13182 <13183 >799\n", - "1581:SDFFARX1_RVT\"InstQueue_reg_12__2_\" <13189 <13191 <13190 <13192 <13193 >801\n", - "1575:SDFFARX1_RVT\"InstQueue_reg_12__3_\" <13174 <13176 <13175 <13177 <13178 >798\n", - "1583:SDFFARX1_RVT\"InstQueue_reg_12__4_\" <13194 <13196 <13195 <13197 <13198 >802\n", - "1573:SDFFARX1_RVT\"InstQueue_reg_12__5_\" <13169 <13171 <13170 <13172 <13173 >797\n", - "1585:SDFFARX1_RVT\"InstQueue_reg_12__6_\" <13199 <13201 <13200 <13202 <13203 >803\n", - "1571:SDFFARX1_RVT\"InstQueue_reg_12__7_\" <13164 <13166 <13165 <13167 <13168 >796\n", + "1579:SDFFARX1_RVT\"InstQueue_reg_12__0_\" <13184 <13187 <13188 <13186 <13185 >800\n", + "1577:SDFFARX1_RVT\"InstQueue_reg_12__1_\" <13179 <13182 <13183 <13181 <13180 >799\n", + "1581:SDFFARX1_RVT\"InstQueue_reg_12__2_\" <13189 <13192 <13193 <13191 <13190 >801\n", + "1575:SDFFARX1_RVT\"InstQueue_reg_12__3_\" <13174 <13177 <13178 <13176 <13175 >798\n", + "1583:SDFFARX1_RVT\"InstQueue_reg_12__4_\" <13194 <13197 <13198 <13196 <13195 >802\n", + "1573:SDFFARX1_RVT\"InstQueue_reg_12__5_\" <13169 <13172 <13173 <13171 <13170 >797\n", + "1585:SDFFARX1_RVT\"InstQueue_reg_12__6_\" <13199 <13202 <13203 <13201 <13200 >803\n", + "1571:SDFFARX1_RVT\"InstQueue_reg_12__7_\" <13164 <13167 <13168 <13166 <13165 >796\n", "---------------\n", - "1595:SDFFARX1_RVT\"InstQueue_reg_13__0_\" <13224 <13226 <13225 <13227 <13228 >808\n", - "1593:SDFFARX1_RVT\"InstQueue_reg_13__1_\" <13219 <13221 <13220 <13222 <13223 >807\n", - "1597:SDFFARX1_RVT\"InstQueue_reg_13__2_\" <13229 <13231 <13230 <13232 <13233 >809\n", - "1591:SDFFARX1_RVT\"InstQueue_reg_13__3_\" <13214 <13216 <13215 <13217 <13218 >806\n", - "1599:SDFFARX1_RVT\"InstQueue_reg_13__4_\" <13234 <13236 <13235 <13237 <13238 >810\n", - "1589:SDFFARX1_RVT\"InstQueue_reg_13__5_\" <13209 <13211 <13210 <13212 <13213 >805\n", - "1601:SDFFARX1_RVT\"InstQueue_reg_13__6_\" <13239 <13241 <13240 <13242 <13243 >811\n", - "1587:SDFFARX1_RVT\"InstQueue_reg_13__7_\" <13204 <13206 <13205 <13207 <13208 >804\n", + "1595:SDFFARX1_RVT\"InstQueue_reg_13__0_\" <13224 <13227 <13228 <13226 <13225 >808\n", + "1593:SDFFARX1_RVT\"InstQueue_reg_13__1_\" <13219 <13222 <13223 <13221 <13220 >807\n", + "1597:SDFFARX1_RVT\"InstQueue_reg_13__2_\" <13229 <13232 <13233 <13231 <13230 >809\n", + "1591:SDFFARX1_RVT\"InstQueue_reg_13__3_\" <13214 <13217 <13218 <13216 <13215 >806\n", + "1599:SDFFARX1_RVT\"InstQueue_reg_13__4_\" <13234 <13237 <13238 <13236 <13235 >810\n", + "1589:SDFFARX1_RVT\"InstQueue_reg_13__5_\" <13209 <13212 <13213 <13211 <13210 >805\n", + "1601:SDFFARX1_RVT\"InstQueue_reg_13__6_\" <13239 <13242 <13243 <13241 <13240 >811\n", + "1587:SDFFARX1_RVT\"InstQueue_reg_13__7_\" <13204 <13207 <13208 <13206 <13205 >804\n", "---------------\n", - "1611:SDFFARX1_RVT\"InstQueue_reg_14__0_\" <13264 <13266 <13265 <13267 <13268 >816\n", - "1609:SDFFARX1_RVT\"InstQueue_reg_14__1_\" <13259 <13261 <13260 <13262 <13263 >815\n", - "1613:SDFFARX1_RVT\"InstQueue_reg_14__2_\" <13269 <13271 <13270 <13272 <13273 >817\n", - "1607:SDFFARX1_RVT\"InstQueue_reg_14__3_\" <13254 <13256 <13255 <13257 <13258 >814\n", - "1615:SDFFARX1_RVT\"InstQueue_reg_14__4_\" <13274 <13276 <13275 <13277 <13278 >818\n", - "1605:SDFFARX1_RVT\"InstQueue_reg_14__5_\" <13249 <13251 <13250 <13252 <13253 >813\n", - "1617:SDFFARX1_RVT\"InstQueue_reg_14__6_\" <13279 <13281 <13280 <13282 <13283 >819\n", - "1603:SDFFARX1_RVT\"InstQueue_reg_14__7_\" <13244 <13246 <13245 <13247 <13248 >812\n", + "1611:SDFFARX1_RVT\"InstQueue_reg_14__0_\" <13264 <13267 <13268 <13266 <13265 >816\n", + "1609:SDFFARX1_RVT\"InstQueue_reg_14__1_\" <13259 <13262 <13263 <13261 <13260 >815\n", + "1613:SDFFARX1_RVT\"InstQueue_reg_14__2_\" <13269 <13272 <13273 <13271 <13270 >817\n", + "1607:SDFFARX1_RVT\"InstQueue_reg_14__3_\" <13254 <13257 <13258 <13256 <13255 >814\n", + "1615:SDFFARX1_RVT\"InstQueue_reg_14__4_\" <13274 <13277 <13278 <13276 <13275 >818\n", + "1605:SDFFARX1_RVT\"InstQueue_reg_14__5_\" <13249 <13252 <13253 <13251 <13250 >813\n", + "1617:SDFFARX1_RVT\"InstQueue_reg_14__6_\" <13279 <13282 <13283 <13281 <13280 >819\n", + "1603:SDFFARX1_RVT\"InstQueue_reg_14__7_\" <13244 <13247 <13248 <13246 <13245 >812\n", "---------------\n", - "1627:SDFFARX1_RVT\"InstQueue_reg_15__0_\" <13304 <13306 <13305 <13307 <13308 >824\n", - "1625:SDFFARX1_RVT\"InstQueue_reg_15__1_\" <13299 <13301 <13300 <13302 <13303 >823\n", - "1629:SDFFARX1_RVT\"InstQueue_reg_15__2_\" <13309 <13311 <13310 <13312 <13313 >825\n", - "1623:SDFFARX1_RVT\"InstQueue_reg_15__3_\" <13294 <13296 <13295 <13297 <13298 >822\n", - "1631:SDFFARX1_RVT\"InstQueue_reg_15__4_\" <13314 <13316 <13315 <13317 <13318 >826\n", - "1621:SDFFARX1_RVT\"InstQueue_reg_15__5_\" <13289 <13291 <13290 <13292 <13293 >821\n", - "1633:SDFFARX1_RVT\"InstQueue_reg_15__6_\" <13319 <13321 <13320 <13322 <13323 >827\n", - "1619:SDFFARX1_RVT\"InstQueue_reg_15__7_\" <13284 <13286 <13285 <13287 <13288 >820\n" + "1627:SDFFARX1_RVT\"InstQueue_reg_15__0_\" <13304 <13307 <13308 <13306 <13305 >824\n", + "1625:SDFFARX1_RVT\"InstQueue_reg_15__1_\" <13299 <13302 <13303 <13301 <13300 >823\n", + "1629:SDFFARX1_RVT\"InstQueue_reg_15__2_\" <13309 <13312 <13313 <13311 <13310 >825\n", + "1623:SDFFARX1_RVT\"InstQueue_reg_15__3_\" <13294 <13297 <13298 <13296 <13295 >822\n", + "1631:SDFFARX1_RVT\"InstQueue_reg_15__4_\" <13314 <13317 <13318 <13316 <13315 >826\n", + "1621:SDFFARX1_RVT\"InstQueue_reg_15__5_\" <13289 <13292 <13293 <13291 <13290 >821\n", + "1633:SDFFARX1_RVT\"InstQueue_reg_15__6_\" <13319 <13322 <13323 <13321 <13320 >827\n", + "1619:SDFFARX1_RVT\"InstQueue_reg_15__7_\" <13284 <13287 <13288 <13286 <13285 >820\n" ] } ], @@ -1102,6 +1151,176 @@ " print(b15.s_nodes[i])" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The resolved circuit `b15_prim` contains primitive DFF and no scan-cells." + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "---------------\n", + "22272:DFF\"InstQueue_reg_0__0_\" <32766 <12707 >32767\n", + "22269:DFF\"InstQueue_reg_0__1_\" <32763 <12702 >32764\n", + "22275:DFF\"InstQueue_reg_0__2_\" <32769 <12712 >32770\n", + "22266:DFF\"InstQueue_reg_0__3_\" <32760 <12697 >32761\n", + "22278:DFF\"InstQueue_reg_0__4_\" <32772 <12717 >32773\n", + "22263:DFF\"InstQueue_reg_0__5_\" <32757 <12692 >32758\n", + "22281:DFF\"InstQueue_reg_0__6_\" <32775 <12722 >32776\n", + "22260:DFF\"InstQueue_reg_0__7_\" <32754 <12687 >32755\n", + "---------------\n", + "22296:DFF\"InstQueue_reg_1__0_\" <32790 <12747 >32791\n", + "22293:DFF\"InstQueue_reg_1__1_\" <32787 <12742 >32788\n", + "22299:DFF\"InstQueue_reg_1__2_\" <32793 <12752 >32794\n", + "22290:DFF\"InstQueue_reg_1__3_\" <32784 <12737 >32785\n", + "22302:DFF\"InstQueue_reg_1__4_\" <32796 <12757 >32797\n", + "22287:DFF\"InstQueue_reg_1__5_\" <32781 <12732 >32782\n", + "22305:DFF\"InstQueue_reg_1__6_\" <32799 <12762 >32800\n", + "22284:DFF\"InstQueue_reg_1__7_\" <32778 <12727 >32779\n", + "---------------\n", + "22320:DFF\"InstQueue_reg_2__0_\" <32814 <12787 >32815\n", + "22317:DFF\"InstQueue_reg_2__1_\" <32811 <12782 >32812\n", + "22323:DFF\"InstQueue_reg_2__2_\" <32817 <12792 >32818\n", + "22314:DFF\"InstQueue_reg_2__3_\" <32808 <12777 >32809\n", + "22326:DFF\"InstQueue_reg_2__4_\" <32820 <12797 >32821\n", + "22311:DFF\"InstQueue_reg_2__5_\" <32805 <12772 >32806\n", + "22329:DFF\"InstQueue_reg_2__6_\" <32823 <12802 >32824\n", + "22308:DFF\"InstQueue_reg_2__7_\" <32802 <12767 >32803\n", + "---------------\n", + "22344:DFF\"InstQueue_reg_3__0_\" <32838 <12827 >32839\n", + "22341:DFF\"InstQueue_reg_3__1_\" <32835 <12822 >32836\n", + "22347:DFF\"InstQueue_reg_3__2_\" <32841 <12832 >32842\n", + "22338:DFF\"InstQueue_reg_3__3_\" <32832 <12817 >32833\n", + "22350:DFF\"InstQueue_reg_3__4_\" <32844 <12837 >32845\n", + "22335:DFF\"InstQueue_reg_3__5_\" <32829 <12812 >32830\n", + "22353:DFF\"InstQueue_reg_3__6_\" <32847 <12842 >32848\n", + "22332:DFF\"InstQueue_reg_3__7_\" <32826 <12807 >32827\n", + "---------------\n", + "22368:DFF\"InstQueue_reg_4__0_\" <32862 <12867 >32863\n", + "22365:DFF\"InstQueue_reg_4__1_\" <32859 <12862 >32860\n", + "22371:DFF\"InstQueue_reg_4__2_\" <32865 <12872 >32866\n", + "22362:DFF\"InstQueue_reg_4__3_\" <32856 <12857 >32857\n", + "22374:DFF\"InstQueue_reg_4__4_\" <32868 <12877 >32869\n", + "22359:DFF\"InstQueue_reg_4__5_\" <32853 <12852 >32854\n", + "22377:DFF\"InstQueue_reg_4__6_\" <32871 <12882 >32872\n", + "22356:DFF\"InstQueue_reg_4__7_\" <32850 <12847 >32851\n", + "---------------\n", + "22392:DFF\"InstQueue_reg_5__0_\" <32886 <12907 >32887\n", + "22389:DFF\"InstQueue_reg_5__1_\" <32883 <12902 >32884\n", + "22395:DFF\"InstQueue_reg_5__2_\" <32889 <12912 >32890\n", + "22386:DFF\"InstQueue_reg_5__3_\" <32880 <12897 >32881\n", + "22398:DFF\"InstQueue_reg_5__4_\" <32892 <12917 >32893\n", + "22383:DFF\"InstQueue_reg_5__5_\" <32877 <12892 >32878\n", + "22401:DFF\"InstQueue_reg_5__6_\" <32895 <12922 >32896\n", + "22380:DFF\"InstQueue_reg_5__7_\" <32874 <12887 >32875\n", + "---------------\n", + "22416:DFF\"InstQueue_reg_6__0_\" <32910 <12947 >32911\n", + "22413:DFF\"InstQueue_reg_6__1_\" <32907 <12942 >32908\n", + "22419:DFF\"InstQueue_reg_6__2_\" <32913 <12952 >32914\n", + "22410:DFF\"InstQueue_reg_6__3_\" <32904 <12937 >32905\n", + "22422:DFF\"InstQueue_reg_6__4_\" <32916 <12957 >32917\n", + "22407:DFF\"InstQueue_reg_6__5_\" <32901 <12932 >32902\n", + "22425:DFF\"InstQueue_reg_6__6_\" <32919 <12962 >32920\n", + "22404:DFF\"InstQueue_reg_6__7_\" <32898 <12927 >32899\n", + "---------------\n", + "22440:DFF\"InstQueue_reg_7__0_\" <32934 <12987 >32935\n", + "22437:DFF\"InstQueue_reg_7__1_\" <32931 <12982 >32932\n", + "22443:DFF\"InstQueue_reg_7__2_\" <32937 <12992 >32938\n", + "22434:DFF\"InstQueue_reg_7__3_\" <32928 <12977 >32929\n", + "22446:DFF\"InstQueue_reg_7__4_\" <32940 <12997 >32941\n", + "22431:DFF\"InstQueue_reg_7__5_\" <32925 <12972 >32926\n", + "22449:DFF\"InstQueue_reg_7__6_\" <32943 <13002 >32944\n", + "22428:DFF\"InstQueue_reg_7__7_\" <32922 <12967 >32923\n", + "---------------\n", + "22464:DFF\"InstQueue_reg_8__0_\" <32958 <13027 >32959\n", + "22461:DFF\"InstQueue_reg_8__1_\" <32955 <13022 >32956\n", + "1518:DFF\"InstQueue_reg_8__2_\" <32961 <13032 >32963\n", + "22458:DFF\"InstQueue_reg_8__3_\" <32952 <13017 >32953\n", + "22471:DFF\"InstQueue_reg_8__4_\" <32965 <13037 >32966\n", + "22455:DFF\"InstQueue_reg_8__5_\" <32949 <13012 >32950\n", + "22474:DFF\"InstQueue_reg_8__6_\" <32968 <13042 >32969\n", + "22452:DFF\"InstQueue_reg_8__7_\" <32946 <13007 >32947\n", + "---------------\n", + "22489:DFF\"InstQueue_reg_9__0_\" <32983 <13067 >32984\n", + "22486:DFF\"InstQueue_reg_9__1_\" <32980 <13062 >32981\n", + "22492:DFF\"InstQueue_reg_9__2_\" <32986 <13072 >32987\n", + "22483:DFF\"InstQueue_reg_9__3_\" <32977 <13057 >32978\n", + "22495:DFF\"InstQueue_reg_9__4_\" <32989 <13077 >32990\n", + "22480:DFF\"InstQueue_reg_9__5_\" <32974 <13052 >32975\n", + "22498:DFF\"InstQueue_reg_9__6_\" <32992 <13082 >32993\n", + "22477:DFF\"InstQueue_reg_9__7_\" <32971 <13047 >32972\n", + "---------------\n", + "22513:DFF\"InstQueue_reg_10__0_\" <33007 <13107 >33008\n", + "22510:DFF\"InstQueue_reg_10__1_\" <33004 <13102 >33005\n", + "22516:DFF\"InstQueue_reg_10__2_\" <33010 <13112 >33011\n", + "22507:DFF\"InstQueue_reg_10__3_\" <33001 <13097 >33002\n", + "1553:DFF\"InstQueue_reg_10__4_\" <33013 <13117 >33015\n", + "22504:DFF\"InstQueue_reg_10__5_\" <32998 <13092 >32999\n", + "22523:DFF\"InstQueue_reg_10__6_\" <33017 <13122 >33018\n", + "22501:DFF\"InstQueue_reg_10__7_\" <32995 <13087 >32996\n", + "---------------\n", + "22538:DFF\"InstQueue_reg_11__0_\" <33032 <13147 >33033\n", + "22535:DFF\"InstQueue_reg_11__1_\" <33029 <13142 >33030\n", + "22541:DFF\"InstQueue_reg_11__2_\" <33035 <13152 >33036\n", + "22532:DFF\"InstQueue_reg_11__3_\" <33026 <13137 >33027\n", + "22544:DFF\"InstQueue_reg_11__4_\" <33038 <13157 >33039\n", + "22529:DFF\"InstQueue_reg_11__5_\" <33023 <13132 >33024\n", + "22547:DFF\"InstQueue_reg_11__6_\" <33041 <13162 >33042\n", + "22526:DFF\"InstQueue_reg_11__7_\" <33020 <13127 >33021\n", + "---------------\n", + "22562:DFF\"InstQueue_reg_12__0_\" <33056 <13187 >33057\n", + "22559:DFF\"InstQueue_reg_12__1_\" <33053 <13182 >33054\n", + "22565:DFF\"InstQueue_reg_12__2_\" <33059 <13192 >33060\n", + "22556:DFF\"InstQueue_reg_12__3_\" <33050 <13177 >33051\n", + "22568:DFF\"InstQueue_reg_12__4_\" <33062 <13197 >33063\n", + "22553:DFF\"InstQueue_reg_12__5_\" <33047 <13172 >33048\n", + "22571:DFF\"InstQueue_reg_12__6_\" <33065 <13202 >33066\n", + "22550:DFF\"InstQueue_reg_12__7_\" <33044 <13167 >33045\n", + "---------------\n", + "22586:DFF\"InstQueue_reg_13__0_\" <33080 <13227 >33081\n", + "22583:DFF\"InstQueue_reg_13__1_\" <33077 <13222 >33078\n", + "22589:DFF\"InstQueue_reg_13__2_\" <33083 <13232 >33084\n", + "22580:DFF\"InstQueue_reg_13__3_\" <33074 <13217 >33075\n", + "22592:DFF\"InstQueue_reg_13__4_\" <33086 <13237 >33087\n", + "22577:DFF\"InstQueue_reg_13__5_\" <33071 <13212 >33072\n", + "22595:DFF\"InstQueue_reg_13__6_\" <33089 <13242 >33090\n", + "22574:DFF\"InstQueue_reg_13__7_\" <33068 <13207 >33069\n", + "---------------\n", + "22610:DFF\"InstQueue_reg_14__0_\" <33104 <13267 >33105\n", + "22607:DFF\"InstQueue_reg_14__1_\" <33101 <13262 >33102\n", + "22613:DFF\"InstQueue_reg_14__2_\" <33107 <13272 >33108\n", + "22604:DFF\"InstQueue_reg_14__3_\" <33098 <13257 >33099\n", + "22616:DFF\"InstQueue_reg_14__4_\" <33110 <13277 >33111\n", + "22601:DFF\"InstQueue_reg_14__5_\" <33095 <13252 >33096\n", + "22619:DFF\"InstQueue_reg_14__6_\" <33113 <13282 >33114\n", + "22598:DFF\"InstQueue_reg_14__7_\" <33092 <13247 >33093\n", + "---------------\n", + "22634:DFF\"InstQueue_reg_15__0_\" <33128 <13307 >33129\n", + "22631:DFF\"InstQueue_reg_15__1_\" <33125 <13302 >33126\n", + "22637:DFF\"InstQueue_reg_15__2_\" <33131 <13312 >33132\n", + "22628:DFF\"InstQueue_reg_15__3_\" <33122 <13297 >33123\n", + "22640:DFF\"InstQueue_reg_15__4_\" <33134 <13317 >33135\n", + "22625:DFF\"InstQueue_reg_15__5_\" <33119 <13292 >33120\n", + "22643:DFF\"InstQueue_reg_15__6_\" <33137 <13322 >33138\n", + "22622:DFF\"InstQueue_reg_15__7_\" <33116 <13287 >33117\n" + ] + } + ], + "source": [ + "for l in b15_prim.s_locs('InstQueue_reg'):\n", + " print('---------------')\n", + " for i in l:\n", + " print(b15_prim.s_nodes[i])" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -1110,12 +1329,14 @@ "\n", "We start at the output of the scan chain \"test_so000\", then go backwards through the circuit.\n", "\n", - "When we encounter a scan cell \"SDFF\", we continue with the \"SI\" pin, which has index 2." + "When we encounter a scan-cell (\"SDFF...\"), we continue with the \"SI\" pin.\n", + "\n", + "We do this on the original circuit `b15` that still contains the scan-cells themselves." ] }, { "cell_type": "code", - "execution_count": 33, + "execution_count": 35, "metadata": {}, "outputs": [ { @@ -1132,7 +1353,7 @@ "source": [ "chain = [cell := b15.cells['test_so000']]\n", "while len(cell.ins) > 0:\n", - " chain.append(cell := cell.ins[2 if cell.kind.startswith('SDFF') else 0].driver)\n", + " chain.append(cell := cell.ins[SAED32.pin_index(cell.kind,'SI') if cell.kind.startswith('SDFF') else 0].driver)\n", " \n", "print(f'length (with forks): {len(chain)}')\n", "print(f'length (without forks): {len(list(filter(lambda n: n.kind != \"__fork__\", chain)))}')\n", @@ -1157,7 +1378,7 @@ }, { "cell_type": "code", - "execution_count": 34, + "execution_count": 36, "metadata": {}, "outputs": [ { @@ -1200,7 +1421,7 @@ }, { "cell_type": "code", - "execution_count": 35, + "execution_count": 37, "metadata": {}, "outputs": [ { @@ -1236,7 +1457,7 @@ }, { "cell_type": "code", - "execution_count": 36, + "execution_count": 38, "metadata": {}, "outputs": [ { @@ -1303,7 +1524,7 @@ }, { "cell_type": "code", - "execution_count": 37, + "execution_count": 39, "metadata": {}, "outputs": [ { @@ -1312,7 +1533,7 @@ "[0:__fork__\"a\" >3 >9, 1:__fork__\"b\" >4 >10, 2:__fork__\"s\" <5, 4:DFF\"cin\" <1 >0]" ] }, - "execution_count": 37, + "execution_count": 39, "metadata": {}, "output_type": "execute_result" } @@ -1334,7 +1555,7 @@ }, { "cell_type": "code", - "execution_count": 38, + "execution_count": 40, "metadata": {}, "outputs": [ { @@ -1346,7 +1567,7 @@ " [0, 0, 0, 0, 3, 3, 3, 3]], dtype=uint8)" ] }, - "execution_count": 38, + "execution_count": 40, "metadata": {}, "output_type": "execute_result" } @@ -1372,7 +1593,7 @@ }, { "cell_type": "code", - "execution_count": 39, + "execution_count": 41, "metadata": {}, "outputs": [ { @@ -1381,7 +1602,7 @@ "(4, 8)" ] }, - "execution_count": 39, + "execution_count": 41, "metadata": {}, "output_type": "execute_result" } @@ -1399,7 +1620,7 @@ }, { "cell_type": "code", - "execution_count": 40, + "execution_count": 42, "metadata": {}, "outputs": [ { @@ -1425,25 +1646,25 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Load a stuck-at fault test pattern set and expected fault-free responses from a STIL file. It contains 678 test vectors." + "Load a stuck-at fault test pattern set and expected fault-free responses from a STIL file. It contains 678 test vectors. Use the resolved circuit for arranging the patterns because the DFF positions may have changed by replacing the original technology cells." ] }, { "cell_type": "code", - "execution_count": 41, + "execution_count": 43, "metadata": {}, "outputs": [], "source": [ "from kyupy import stil\n", "\n", "s = stil.load('../tests/b15_2ig.sa_nf.stil.gz')\n", - "stuck_tests = s.tests(b15)\n", - "stuck_responses = s.responses(b15)" + "stuck_tests = s.tests(b15_prim)\n", + "stuck_responses = s.responses(b15_prim)" ] }, { "cell_type": "code", - "execution_count": 42, + "execution_count": 44, "metadata": {}, "outputs": [ { @@ -1452,18 +1673,18 @@ "528" ] }, - "execution_count": 42, + "execution_count": 44, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "len(b15.s_nodes)" + "len(b15_prim.s_nodes)" ] }, { "cell_type": "code", - "execution_count": 43, + "execution_count": 45, "metadata": {}, "outputs": [ { @@ -1472,7 +1693,7 @@ "(528, 678)" ] }, - "execution_count": 43, + "execution_count": 45, "metadata": {}, "output_type": "execute_result" } @@ -1483,7 +1704,7 @@ }, { "cell_type": "code", - "execution_count": 44, + "execution_count": 46, "metadata": {}, "outputs": [ { @@ -1492,7 +1713,7 @@ "(528, 678)" ] }, - "execution_count": 44, + "execution_count": 46, "metadata": {}, "output_type": "execute_result" } @@ -1503,18 +1724,18 @@ }, { "cell_type": "code", - "execution_count": 45, + "execution_count": 47, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "------------------------------------------------------------------------------------------------------0----00--000110110011010011101101001011010010110100101101001001100110011001100110011001100011001100110011001100110011001110011001100110011001100110011001011101001011010010110100101101001011010010110100101101001011101100110011001101100110000010010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101011100110011001100110011001100110011111100001001011000100\n", - "--------------------------------------1100011011011111--------10111110--------------------------------P-00000--0101111000011010-01----110---110-110---110-11001100110-11101010011010-10-1010-1010101010-10-10-1010-10-10-10-101-10101010101010-10-10100-01010101011-01-11101110111011101-101-111011101-111011101-111010101000-10-1010-101010010-10011--0100-100110000111100001-111111-000011100000-101-01000011110-11-001000011111111-0001010100010001000----1----1-----1---11-----------00-101010101010-1010-1010101010101--10-1101010111111111\n", - "---------------------------------------1-1--1--1---1--1000100000000011--------------------------------P-10-00--11000001101111011---0--01-1111111111111111--1111110-111011111-111---11--11-1--1--------------------------------000000001---1----1--010-1-1---10010110011111110101001-0-0-0-1-0-1-0-011-0-1-000-1-001-1000101111111111111111111101111001101----1----------1-----------------------------------------------------1-11011100011111111-----111-----1-111-0-1-1----------------01------1------1-1-------------1--011-01011110011101111\n", - "------------------------------------------------------------------------------------------------------P111100--11011-0110000-10--0-----0--0-0-1-0-1-0-0-1---1-0-1-------0-01-11---0-0--00-0-00--------------------------------001100110000011000111110011000100--0011-------------1---------------------0-1-----1---1-1-1-1111111111111111101000100--001000011001-----1--111111--1--11--111--011---------------------------------0-------0-0---------------------------------------------00--------------------------------10-110-10010010-01010\n", - "--------------------------------------1011011111010000--------00101101--------------------------------P001100--10001010001111100-1-10101-1-1-1-1-1-1-1-1-101-1-1-100-000----0--00--1-0---------------------------------------------1--------------------------110-0--00001-0011001-001-0011001-0-0-010-001-1-0110101-1-1-0-100000000000011--1-11-1110-1----1--------------0--00---00-01---00-0----00-00---11-00--00000001011-0001-00-01---001001--11100---00-00---00-00---------1100-----01-------------0---------------0--11------0101000-10---\n" + "------------------------------------------------------------------------------------------------------0----00--000111100110100101010111010100011101101001011010010110100101101001001100110011001100110011001100011001100110011001100110011001110011001100110011001100110011000111010010111001011010010110100101101001011010010110100101101100110011001101100110000100101010101010101010101010101010101010101010101010101010101010101010100101010101010101101010101010101010101010101010101010101010011001100110011001100110011001111110000010100\n", + "--------------------------------------1100011011011111--------10111110--------------------------------P-00000--0101110000110100101100010011111-01----110---110-110---110-11001100110-11101010011010-10-1010-1010101010-10-10-1010-10-10-10-101-10101010101010-10-10100-0101011011-01-1110110111011101-101-111011101-111011101-11101010100-10-1010-101010010-1001--0100-100110000111100001-111111-000011100000-101-01000011110-11-00100001111111-000101010010001000----1----1-----1---11------------101010101010-1010-1010101010101--10-110111111\n", + "---------------------------------------1-1--1--1---1--1000100000000011--------------------------------P-10-00--11000011011110101101101110011001---0--01-1111111111111111--1111110-111011111-111---11--11-1--1--------------------------------000000001---1----1--010-1-1---101011001111110101001-0-0-0-1-0-1-0-011-0-1-000-1-001-10001011111111111111111110111101101----1----------1------------------------------------------------------1101110001111111-----111-----1-111-0-1-1----------------------1------1-1-------------1--011-0101111111\n", + "------------------------------------------------------------------------------------------------------P111100--110110110000-100-1---0000000-0---0-----0--0-0-1-0-1-0-0-1---1-0-1-------0-01-11---0-0--00-0-00--------------------------------00110011000001100011111001100010--0011------------1---------------------0-1-----1---1-1-1-111111111111111101000100-001000011001-----1--111111--1--11--111--011--------------------------------0-------0-0----------------------------------------------------------------------------10-110-1111010\n", + "--------------------------------------1011011111010000--------00101101--------------------------------P001100--1000110001111101010010101100-100-1-10101-1-1-1-1-1-1-1-1-101-1-1-100-000----0--00--1-0---------------------------------------------1--------------------------10-0--00001-011001-001-0011001-0-0-010-001-1-0110101-1-1-0-00000000000011--1-11-111-1----1--------------0--00---00-01---00-0----00-00---11-00--00000001011-001-00-01---00100--11100---00-00---00-00---------1100------------------0---------------0--11------000---\n" ] } ], @@ -1524,18 +1745,18 @@ }, { "cell_type": "code", - "execution_count": 46, + "execution_count": 48, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "11001100110011001100110011001100110000--------------------------------01001100110011001100110011001100--------0000110110011010011101101001011010010110100101101001001100110011001100110011001100011001100110011001100110011001110011001100110011001100110011001011101001011010010110100101101001011010010110100101101001011101100110011001101100110000010010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101011100110011001100110011001100110011111100001001011000100\n", - "X0101010101010101X0101X01010101010XX11--------------------------------001X01X01X01X0101X01X01X01010101--------X0001010110000010X01XXXX110XXX110X110XXX110X11001100110X11101010011010X10X1010X1010101010X10X10X1010X10X10X10X101X10101010101010X10X10100X01010101110X00X01000100010001000X000X010001000X010001000X010000000000X10X1010X101010010X10001XX0100X100110000111100001X111111X000011100000X101X01000011110X11X001000011111111X00010101000100010001111011011110110110000011001110101X101010101010X1010X10101010101011X1001101010111111111\n", - "1X11XX1XXXXXXXXXXXXX1X1XXXXXX1XXXX1X1X--------------------------------0XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX--------101010001101110010011111100000000000000000011000000110000000001000110000000001000XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX000000001XXX1XXXX1XX010X1X1XXX10110110011111110101001X0X0X0X1X0X1X0X011X0X1X000X1X001X1000101000000000000000000011111001010XXXX1XXXXXXXXXX1XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX1X11011100011111111XXXXX111XXXXX1X111X0X1X1XXXXXXXXXXXXXXXX0110000100100010100101001011011001100100101100001110101\n", - "0101XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX0X0X--------------------------------0XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX--------011011X11100000000X0XXXXX0XX0X0X1X0X1X0X0X1XXX1X0X1XXXXXXX0X01X11XXX0X0XX00X0X00XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX011100110000011000111110011000100XX0011XXXXXXXXXXXXX1XXXXXXXXXXXXXXXXXXXXX0X1XXXXX1XXX1X1X1X1111111111111111101000100XX001000011001XXXXX1XX111111XX1XX11XX111XX011XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX0XXXXXXX0X0XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX10X1XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX101110010110110X01010\n", - "1XXXXX0XXXXXXXXXXXXXXX0XXXXXXXXXXX1XXX--------------------------------0XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX--------100011001101001100X1X10101X1X1X1X1X1X1X1X1X101X1X1X100X000XXXX0XX00XX1X0XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX1XXXXXXXXXXXXXXXXXXXXXXXXXX110X0XX00101X0011001X001X0011001X0X0X010X001X1X0110101X1X1X0X100000000000011XX1X11X1110X1XX1000101111100010X0XX00XXX00X01XXX00X0XXXX00X00XXX11X00XX00000001011X0001X00X01XXX001001XX11100XXX00X00XXX00X00XX01101100011011001011XXXXXXXXXXX0XXXXXXXXXXXXXXX0XX010X1X1X0101000X10XXX\n" + "11001100110011001100110011001100110000--------------------------------01001100110011001100110011001100--------0000111100110100101010111010100011101101001011010010110100101101001001100110011001100110011001100011001100110011001100110011001110011001100110011001100110011000111010010111001011010010110100101101001011010010110100101101100110011001101100110000100101010101010101010101010101010101010101010101010101010101010101010100101010101010101101010101010101010101010101010101010101010011001100110011001100110011001111110000010100\n", + "X0101010101010101X0101X01010101010XX11--------------------------------001X01X01X01X0101X01X01X01010101--------X0001001100000100001100110011111X01XXXX110XXX110X110XXX110X11001100110X11101010011010X10X1010X1010101010X10X10X1010X10X10X10X101X10101010101010X10X10100X0101011110X00X0100100010001000X000X010001000X010001000X01000000000X10X1010X101010010X1000XX0100X100110000111100001X111111X000011100000X101X01000011110X11X00100001111111X00010101001000100011110110111101101100000110011101X101010101010X1010X10101010101011X100110111111\n", + "1X11XX1XXXXXXXXXXXXX1X1XXXXXX1XXXX1X1X--------------------------------0XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX--------101010011011100111001101110011100011111100000000000000000011000000110000000001000110000000001000XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX000000001XXX1XXXX1XX010X1X1XXX101011001111110101001X0X0X0X1X0X1X0X011X0X1X000X1X001X10001010000000000000000001111101010XXXX1XXXXXXXXXX1XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX1101110001111111XXXXX111XXXXX1X111X0X1X1XXXXXXXXXXXXXXXX1000010010001010010100101101100110010010000101\n", + "0101XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX0X0X--------------------------------0XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX--------01101111100000000X1XXX1001010X0X0X0XXXXX0XX0X0X1X0X1X0X0X1XXX1X0X1XXXXXXX0X01X11XXX0X0XX00X0X00XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX01110011000001100011111001100010XX0011XXXXXXXXXXXX1XXXXXXXXXXXXXXXXXXXXX0X1XXXXX1XXX1X1X1X111111111111111101000100X001000011001XXXXX1XX111111XX1XX11XX111XX011XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX0XXXXXXX0X0XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX1XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX10111001111010\n", + "1XXXXX0XXXXXXXXXXXXXXX0XXXXXXXXXXX1XXX--------------------------------0XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX--------10001101101001101010011001100X100X1X10101X1X1X1X1X1X1X1X1X101X1X1X100X000XXXX0XX00XX1X0XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX1XXXXXXXXXXXXXXXXXXXXXXXXXX10X0XX00101X011001X001X0011001X0X0X010X001X1X0110101X1X1X0X00000000000011XX1X11X111X1XX1000101111100010X0XX00XXX00X01XXX00X0XXXX00X00XXX11X00XX00000001011X001X00X01XXX00100XX11100XXX00X00XXX00X00XX011011000110110011XXXXXXXXXXX0XXXXXXXXXXXXXXX0XX010X1X1X000XXX\n" ] } ], @@ -1559,13 +1780,13 @@ }, { "cell_type": "code", - "execution_count": 47, + "execution_count": 49, "metadata": {}, "outputs": [], "source": [ "s = stil.load('../tests/b15_2ig.tf_nf.stil.gz')\n", - "transition_tests = s.tests_loc(b15)\n", - "transition_responses = s.responses(b15)" + "transition_tests = s.tests_loc(b15_prim)\n", + "transition_responses = s.responses(b15_prim)" ] }, { @@ -1578,18 +1799,18 @@ }, { "cell_type": "code", - "execution_count": 48, + "execution_count": 50, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "------------------------------------------------------------------------------------------------------X----XX--000110110011010011101101001011010010110100101101001001100110011001100110011001100011001100110011001100110011001110011001100110011001100110011001011101001011010010110100101101001011010010110100101101001011101100110011001101100110000010010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101011100110011001100110011001100110011111100001001011000100\n", - "--------------------------------------RFRRRRFRRFRRRR1R--------RXXRXRRR--------------------------------00F0F00--RR1RRXRF00011010XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX011X00XXX101X1X1X1X1X1X1X1X1X1X1X1X1X1X1X1X1X1X1X1X1X0XXXXXXX1XXXXXXXXXXXXXXXXXXXXXXXXRRXRXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX00000000000000000111111000001001RFXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX11XXXXX\n", - "--------------------------------------1X111XX11X1XX1X11XX11XX111X11X11--------------------------------0-XXR00--F1FF1X0110011X01XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXFXX1XFFX1XFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFX0XFXFXFXF11110XX1XX1XXXXXXX1XXXX1XFR1F1XXXXXXXXXXXXXXXXX011101111000101101110111110001001000100010101011011001110111000X1XX11XXXXXXXX11XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX000X011111111111111111111111111111R0F1R0R001RR100FF1XXX\n", - "--------------------------------------------------------------XXXXXXXX--------------------------------0--FX00--F11F1XFRR00R01111XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX0XX1XXXXXRX1XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX111111111111111111111110X0XX10XXXXXXXXXRXXXRXRF1FFFRFRXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX1XXXXXXXXXXXXX0XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX11X1XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX011001010010111111111\n", - "--------------------------------------------------------------FFXFFFFF--------------------------------0XXRR00--RF01FXRF00001XX1XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX010X010111111111X111111111111111X11100XX0101XXXXXX01XXXX01XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX1X1111X110111111XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX0RXRXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX1XXXXXX\n" + "------------------------------------------------------------------------------------------------------X----XX--000111100110100101010111010100011101101001011010010110100101101001001100110011001100110011001100011001100110011001100110011001110011001100110011001100110011000111010010111001011010010110100101101001011010010110100101101100110011001101100110000100101010101010101010101010101010101010101010101010101010101010101010100101010101010101101010101010101010101010101010101010101010011001100110011001100110011001111110000010100\n", + "--------------------------------------RFRRRRFRRFRRRR1R--------RXXRXRRR--------------------------------00F0F00--RR1RRRF00011010011RXXRFXXXX11XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX11X00XXX101XX1X1X1X1X1X1X1X1X1X1X1X1X1X1X1X1X1X1X1X0XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXRXRXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX00000000000000000111111000001001XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n", + "--------------------------------------1X111XX11X1XX1X11XX11XX111X11X11--------------------------------0-XXR00--F1FF10110011X01FX1F0X0001R10FFXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX1XFFX1XFXFFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFX0XFXFXFXF1110XX1XX1XXXXXXX1XXXX1XR1F1XXXXXXXXXXXXXXXXX01110111100010110111011111000100100010001010101101101110111000X1XX11XXXXXXX11XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX0X011111111111111111111111111111R0F1R0R0R01XXX\n", + "--------------------------------------------------------------XXXXXXXX--------------------------------0--FX00--F11F1FRR00R01110X10XX110001111X1XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX1XXXXXRX1XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX11111111111111111111110XXX10XXXXXXXXXRXXXRXRF1FFFRFRXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX1XXXXXXXXXXXX0XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX1XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX01100101111111\n", + "--------------------------------------------------------------FFXFFFFF--------------------------------0XXRR00--RF01FRF00001XX101XXX10RXXXX1XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX10X01011111111X111111111111111X11100XX0101XXXXXX01XXXX01XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX1X1111X11011111XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXRXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n" ] } ], @@ -1599,18 +1820,18 @@ }, { "cell_type": "code", - "execution_count": 49, + "execution_count": 51, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "11001100110011001100110011001100110000--------------------------------01001100110011001100110011001100--------0000110110011010011101101001011010010110100101101001001100110011001100110011001100011001100110011001100110011001110011001100110011001100110011001011101001011010010110100101101001011010010110100101101001011101100110011001101100110000010010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101011100110011001100110011001100110011111100001001011000100\n", - "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX1--------------------------------0XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX--------X01001X0110000010XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX011X00XXX000X0X0X0X0X0X0X0X0X0X0X0X0X0X0X0X0X0X0X0X0X1XXXXXXX1XXXXXXXXXXXXXXXXXXXXXXXX11X1XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX1111111111111111100000011111011010X1XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX0X0X0X1XXXXXXX11XXXXX\n", - "0100111111111111111111111111111110101X--------------------------------0XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX--------101011X0110011001000X0X0X1X0X0X1X0X0X0X1X1X0X0X1X1X010110100110001XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX0XX1X00X1X0X0X0X0X0X0X0X0X0X0X0X0X0X0X0X0X0X0X0X0X0X0X0X0X0X000001XX1XX1XXXXXXX1XXXX1X01000XXXXXXXXXXXXXXXXX011101111000101101110111110001001000100010101011011001110111000X1XX11XXXXXXXX11XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX0010100000000000000000000000000000111011011000000010XXX\n", - "1011XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX01--------------------------------0XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX--------X00101X01100100010XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX0XX1XXXXX1X1XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX000000000000000000000001X0XX11XXXXXXXX0100010101000101XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX1XXXXXXXXXXXXX0XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX11101XXXXXXXXXXXXXXXXXXXXXXXXXXXXX001100000100001110100\n", - "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX1--------------------------------0XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX--------X01000X1100101XX1XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX000X0011000000000000000000000000000011XX1111XXXXXX11XXXX11XXXXXXXXXXXXXXXXXXXXXXXXXXXX11X1XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX0100000001000000XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX01X1XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX1X0X0X1XXXXXXXX0XXXXX\n" + "11001100110011001100110011001100110000--------------------------------01001100110011001100110011001100--------0000111100110100101010111010100011101101001011010010110100101101001001100110011001100110011001100011001100110011001100110011001110011001100110011001100110011000111010010111001011010010110100101101001011010010110100101101100110011001101100110000100101010101010101010101010101010101010101010101010101010101010101010100101010101010101101010101010101010101010101010101010101010011001100110011001100110011001111110000010100\n", + "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX1--------------------------------0XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX--------X0100101100000100011XX10XXXX11XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX11X00XXX000XX0X0X0X0X0X0X0X0X0X0X0X0X0X0X0X0X0X0X0X1XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX1X1XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX11111111111111111000000111110110X1XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX0X0X0X1XXXXXXX\n", + "0100111111111111111111111111111110101X--------------------------------0XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX--------10101101100110010X000X001000001X000X0X0X1X0X0X1X0X0X0X1X1X0X0X1X1X010110100110001XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX1X00X1X0X00X0X0X0X0X0X0X0X0X0X0X0X0X0X0X0X0X0X0X0X0X0X0X00001XX1XX1XXXXXXX1XXXX1X1000XXXXXXXXXXXXXXXXX01110111100010110111011111000100100010001010101101101110111000X1XX11XXXXXXX11XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX1010000000000000000000000000000011101101000XXX\n", + "1011XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX01--------------------------------0XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX--------X0010101100100010X00XX110100111X0XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX1XXXXX1X1XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX00000000000000000000001XXX11XXXXXXXX0100010101000101XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX1XXXXXXXXXXXX0XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX101XXXXXXXXXXXXXXXXXXXXXXXXXXXXX00110000000100\n", + "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX1--------------------------------0XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX--------X010001100101XX100X1X001XXXXX0XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX00X001100000000000000000000000000011XX1111XXXXXX11XXXX11XXXXXXXXXXXXXXXXXXXXXXXXXXX1X1XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX010000000100000XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX1XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX1X0X0X1XXXXXXX\n" ] } ], @@ -1627,30 +1848,30 @@ }, { "cell_type": "code", - "execution_count": 50, + "execution_count": 52, "metadata": {}, "outputs": [], "source": [ "def zero_fill(mva):\n", " return np.choose(mva, logic.mvarray('0X01PRFN')) # maps '0X-1PRFN' -> '0X01PRFN'\n", "\n", - "transition_tests_zf = s.tests_loc(b15, init_filter=zero_fill, launch_filter=zero_fill)" + "transition_tests_zf = s.tests_loc(b15_prim, init_filter=zero_fill, launch_filter=zero_fill)" ] }, { "cell_type": "code", - "execution_count": 51, + "execution_count": 53, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000110110011010011101101001011010010110100101101001001100110011001100110011001100011001100110011001100110011001110011001100110011001100110011001011101001011010010110100101101001011010010110100101101001011101100110011001101100110000010010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101011100110011001100110011001100110011111100001001011000100\n", - "00000000000000000000000000000000000000RFRRRRFRRFRRRR1R00000000RRRRRRRR0000000000000000000000000000000000F0F0000RR1RR0RF00011010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001100000010101010101010101010101010101010101010101010000000001000000000000000000000000RR0R000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111000001001RF0R000000000000000000000000000000R00000R00000001100000\n", - "00000000000000000000000000000000000000101110011010010110011001110110110000000000000000000000000000000000R0R0000F1FF1001100110010RR0R0R000R0R000R0R0R00000R0R00000R0R00R0RR00RRR0000000000000000000000000000000000000000000000000000000000000000000000000000000F0010FF010F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F000F0F0F0F1111000100100000001000010FR1F1000000000000000000111011110001011011101111100010010001000101010110110011101110000100110000000011000000000000000000000000000000000000011111111111111111111111111111R0F1R0R001RR100FF1000\n", - "000000000000000000000000000000000000000000000000000000000000000FF00F0000000000000000000000000000000000000F00000F11F10FRR00R01111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000R010000000000000000000000000000000000000000000000000111111111111111111111110000010000000000R000R0RF1FFFRFR000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000001101000000000000000000000000000000011001010010111111111\n", - "00000000000000000000000000000000000000000000000000000000000000FFRFFFFF00000000000000000000000000000000000RR0000RF01F0RF00001001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000101111111110111111111111111011100000101000000010000010000000000000000000000000000RR0R0000000000000000000000000000000000000000000000000000000000000000000000000101111011011111100000000000000000000000000000000000000000R0R000000000000000000000000000000R0R000R00000001000000\n" + "000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111100110100101010111010100011101101001011010010110100101101001001100110011001100110011001100011001100110011001100110011001110011001100110011001100110011000111010010111001011010010110100101101001011010010110100101101100110011001101100110000100101010101010101010101010101010101010101010101010101010101010101010100101010101010101101010101010101010101010101010101010101010011001100110011001100110011001111110000010100\n", + "00000000000000000000000000000000000000RFRRRRFRRFRRRR1R00000000RRRRRRRR0000000000000000000000000000000000F0F0000RR1RRRF00011010011R00RF00001100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011000000101001010101010101010101010101010101010101000000000000000000000000000000000R0R00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001111110000010010R000000000000000000000000000000R00000R0000000\n", + "00000000000000000000000000000000000000101110011010010110011001110110110000000000000000000000000000000000R0R0000F1FF10110011001F01F000001R10FF00RR0R0R000R0R000R0R0R00000R0R00000R0R00R0RR00RRR00000000000000000000000000000000000000000000000000000000000000000000000000000000010FF010F0FF0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F000F0F0F0F111000100100000001000010R1F100000000000000000011101111000101101110111110001001000100010101011011011101110000100110000000110000000000000000000000000000000000011111111111111111111111111111R0F1R0R0R01000\n", + "000000000000000000000000000000000000000000000000000000000000000FF00F0000000000000000000000000000000000000F00000F11F1FRR00R01110010001100011110100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000R010000000000000000000000000000000000000000000000001111111111111111111111000010000000000R000R0RF1FFFRFR0000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000001100101111111\n", + "00000000000000000000000000000000000000000000000000000000000000FFRFFFFF00000000000000000000000000000000000RR0000RF01FRF00001001010R010R00001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010001011111111011111111111111101110000010100000001000001000000000000000000000000000R0R00000000000000000000000000000000000000000000000000000000000000000000000010111101101111100000000000000000000000000000000000000000R000000000000000000000000000000R0R000R0000000\n" ] } ], @@ -1672,7 +1893,7 @@ }, { "cell_type": "code", - "execution_count": 52, + "execution_count": 54, "metadata": {}, "outputs": [], "source": [ @@ -1681,7 +1902,7 @@ }, { "cell_type": "code", - "execution_count": 53, + "execution_count": 55, "metadata": {}, "outputs": [ { @@ -1690,7 +1911,7 @@ "(528, 3, 85)" ] }, - "execution_count": 53, + "execution_count": 55, "metadata": {}, "output_type": "execute_result" } @@ -1710,7 +1931,7 @@ }, { "cell_type": "code", - "execution_count": 54, + "execution_count": 56, "metadata": {}, "outputs": [ { @@ -1719,7 +1940,7 @@ "(528, 680)" ] }, - "execution_count": 54, + "execution_count": 56, "metadata": {}, "output_type": "execute_result" } @@ -1739,13 +1960,13 @@ }, { "cell_type": "code", - "execution_count": 55, + "execution_count": 57, "metadata": {}, "outputs": [], "source": [ "from kyupy.logic_sim import LogicSim\n", "\n", - "sim = LogicSim(b15, sims=stuck_tests.shape[-1]) # 678 simulations in parallel\n", + "sim = LogicSim(b15_prim, sims=stuck_tests.shape[-1]) # 678 simulations in parallel\n", "sim.s[0] = stuck_tests_bp\n", "sim.s_to_c()\n", "sim.c_prop()\n", @@ -1755,18 +1976,18 @@ }, { "cell_type": "code", - "execution_count": 56, + "execution_count": 58, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "11001100110011001100110011001100110000--------------------------------01001100110011001100110011001100--------010X110XXX011010011101101001011010010110100101101001001100110011001100110011001100011001100110011001100110011001110011001100110011001100110011001011101001011010010110100101101001011010010110100101101001011101100110011001101100110000010010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101011100110011001100110011001100110011111100001001011000100\n", - "-0101010101010101-0101-01010101010--11--------------------------------001-01-01X01-0101-01-01-01010101---------0001010110000010X01XXXX110XXX110X110XXX110X11001100110X11101010011010X10X1010X1010101010X10X10X1010X10X10X10X101X10101010101010X10X10100X01010101110X00X01000100010001000X000X010001000X010001000X010000000000X10X1010X101010010X10001XX0100X100110000111100001X111111X000011100000X101X01000011110X11X001000011111111X00010101000100010001111011011110110110000011001110101X101010101010X1010X10101010101011X1001101010111111111\n", - "1-11--1-------------1-1------1----1-1---------------------------------0--------X------------------------------101010001101110010011111100000000000000000011000000110000000001000110000000001000XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX000000001XXX1XXXX1XX010X1X1XXX10110110011111110101001X0X0X0X1X0X1X0X011X0X1X000X1X001X1000101000000000000000000011111001010XXXX1XXXXXXXXXX1XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX1X11011100011111111XXXXX111XXXXX1X111X0X1X1XXXXXXXXXXXXXXXX0110000100100010100101001011011001100100101100001110101\n", - "0101------------------------------0-0---------------------------------0--------X------------------------------011011X11100000000X0XXXXX0XX0X0X1X0X1X0X0X1XXX1X0X1XXXXXXX0X01X11XXX0X0XX00X0X00XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX011100110000011000111110011000100XX0011XXXXXXXXXXXXX1XXXXXXXXXXXXXXXXXXXXX0X1XXXXX1XXX1X1X1X1111111111111111101000100XX001000011001XXXXX1XX111111XX1XX11XX111XX011XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX0XXXXXXX0X0XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX10X1XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX101110010110110X01010\n", - "1-----0---------------0-----------1-----------------------------------0--------X------------------------------100011001101001100X1X10101X1X1X1X1X1X1X1X1X101X1X1X100X000XXXX0XX00XX1X0XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX1XXXXXXXXXXXXXXXXXXXXXXXXXX110X0XX00101X0011001X001X0011001X0X0X010X001X1X0110101X1X1X0X100000000000011XX1X11X1110X1XX1000101111100010X0XX00XXX00X01XXX00X0XXXX00X00XXX11X00XX00000001011X0001X00X01XXX001001XX11100XXX00X00XXX00X00XX01101100011011001011XXXXXXXXXXX0XXXXXXXXXXXXXXX0XX010X1X1X0101000X10XXX\n" + "11001100110011001100110011001100110000--------------------------------01001100110011001100110011001100--------010X11XXX0110100101010111010100011101101001011010010110100101101001001100110011001100110011001100011001100110011001100110011001110011001100110011001100110011000111010010111001011010010110100101101001011010010110100101101100110011001101100110000100101010101010101010101010101010101010101010101010101010101010101010100101010101010101101010101010101010101010101010101010101010011001100110011001100110011001111110000010100\n", + "-0101010101010101-0101-01010101010--11--------------------------------001-01-01X01-0101-01-01-01010101---------0001001100000100001100110011111X01XXXX110XXX110X110XXX110X11001100110X11101010011010X10X1010X1010101010X10X10X1010X10X10X10X101X10101010101010X10X10100X0101011110X00X0100100010001000X000X010001000X010001000X01000000000X10X1010X101010010X1000XX0100X100110000111100001X111111X000011100000X101X01000011110X11X00100001111111X00010101001000100011110110111101101100000110011101X101010101010X1010X10101010101011X100110111111\n", + "1-11--1-------------1-1------1----1-1---------------------------------0--------X------------------------------101010011011100111001101110011100011111100000000000000000011000000110000000001000110000000001000XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX000000001XXX1XXXX1XX010X1X1XXX101011001111110101001X0X0X0X1X0X1X0X011X0X1X000X1X001X10001010000000000000000001111101010XXXX1XXXXXXXXXX1XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX1101110001111111XXXXX111XXXXX1X111X0X1X1XXXXXXXXXXXXXXXX1000010010001010010100101101100110010010000101\n", + "0101------------------------------0-0---------------------------------0--------X------------------------------01101111100000000X1XXX1001010X0X0X0XXXXX0XX0X0X1X0X1X0X0X1XXX1X0X1XXXXXXX0X01X11XXX0X0XX00X0X00XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX01110011000001100011111001100010XX0011XXXXXXXXXXXX1XXXXXXXXXXXXXXXXXXXXX0X1XXXXX1XXX1X1X1X111111111111111101000100X001000011001XXXXX1XX111111XX1XX11XX111XX011XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX0XXXXXXX0X0XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX1XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX10111001111010\n", + "1-----0---------------0-----------1-----------------------------------0--------X------------------------------10001101101001101010011001100X100X1X10101X1X1X1X1X1X1X1X1X101X1X1X100X000XXXX0XX00XX1X0XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX1XXXXXXXXXXXXXXXXXXXXXXXXXX10X0XX00101X011001X001X0011001X0X0X010X001X1X0110101X1X1X0X00000000000011XX1X11X111X1XX1000101111100010X0XX00XXX00X01XXX00X0XXXX00X00XXX11X00XX00000001011X001X00X01XXX00100XX11100XXX00X00XXX00X00XX011011000110110011XXXXXXXXXXX0XXXXXXXXXXXXXXX0XX010X1X1X000XXX\n" ] } ], @@ -1789,7 +2010,7 @@ }, { "cell_type": "code", - "execution_count": 57, + "execution_count": 59, "metadata": {}, "outputs": [ { @@ -1798,7 +2019,7 @@ "677" ] }, - "execution_count": 57, + "execution_count": 59, "metadata": {}, "output_type": "execute_result" } @@ -1818,11 +2039,11 @@ }, { "cell_type": "code", - "execution_count": 58, + "execution_count": 60, "metadata": {}, "outputs": [], "source": [ - "sim = LogicSim(b15, sims=transition_tests_zf.shape[-1]) # 1147 simulations in parallel\n", + "sim = LogicSim(b15_prim, sims=transition_tests_zf.shape[-1]) # 1147 simulations in parallel\n", "sim.s[0] = logic.mv_to_bp(transition_tests_zf)\n", "sim.s_to_c()\n", "sim.c_prop()\n", @@ -1832,18 +2053,18 @@ }, { "cell_type": "code", - "execution_count": 59, + "execution_count": 61, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "11001100110011001100110011001100110000--------------------------------01001100110011001100110011001100--------0100110001011010011101101001011010010110100101101001001100110011001100110011001100011001100110011001100110011001110011001100110011001100110011001011101001011010010110100101101001011010010110100101101001011101100110011001101100110000010010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101011100110011001100110011001100110011111100001001011000100\n", - "0000000000000000000000000000000000000R--------------------------------00000000000000000000000000000000--------0FNFFNPFRR0PFF01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000NNP0PP00F0FPFPFPFPFPFPFPFPFPFPFPFPFPFPFPFPF0F0F0F0FPRP0P0P0PN000000000000000000000000NNPNP000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000RRRRRRRRRRRRRRRRRFFFFFFRRRRRFRRFNPPNP00000000000000000000000000000FPP000NP0000P0NN00000\n", - "01001111111111111111111111111111101010--------------------------------00000000000000000000000000000000--------1PNPRN0PNN0011001PFF0F0F0R0F0F0R0F0F0F0R0R0F0F0R0R0FRFRRFRFFRRFFFR000000000000000PP0PP0PPP00PP00P00000000000000000000000000000000000000000000000P00N0PP0N0P0P0P0P0P0P0P0P0P0P0P0P0P0P0P0P0P0P0P0P0P000P0P0P0PFFFFR00N00N0000000N0000N0PNFPF00000000000000000011101111000101101110111110001001000100010101011011001110111000010011000000001100000000000000000000000000000000PPRPRFFFFFFFFFFFFFFFFFFFFFFFFFFFFFNRRFNRFRRFFFFP0PRF000\n", - "10110000000000000000000000000000000001--------------------------------00000000000000000000000000000000--------0PFNP1PPNNPPNPFFNF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000PPPNP00PPNPNPPP0P0P0P0P0P0P0P0P0P0P0P0P0P0P000000000000000000FFFFFFFFFFFFFFFFFFFFFFFR0PPRNR000000000N000N0NPNPPPNPN0P000P0P0P000P0P0P000P0P0P000P0P0P000P0P0PN00P0P0000000000000000000000000000000000000000000000000000000011RFR000000000000000000000000000000F1R0F0F0RFPFFNNNFNFF\n", - "0000000000000000000000000000000000000R--------------------------------00000000000000000000000000000000--------0FRPFPPNRP0RPN00N00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F00PFRNFFFFFFFFPFFFFFFFFFFFFFFFPFFFRRP0RNRN000000RN0000RN000PP0PPPPPPP0P0000000000000NN0N0000000000000000000000000000000000000000000000000000000000000000000000000FRFFFFPFFRFFFFFFPPPPPPPPPPPPPPPP0000000000000000000000000N0N000000000000000000000000000000N0F000N00000PPF00PP00\n" + "11001100110011001100110011001100110000--------------------------------01001100110011001100110011001100--------0100110010110100101010111010100011101101001011010010110100101101001001100110011001100110011001100011001100110011001100110011001110011001100110011001100110011000111010010111001011010010110100101101001011010010110100101101100110011001101100110000100101010101010101010101010101010101010101010101010101010101010101010100101010101010101101010101010101010101010101010101010101010011001100110011001100110011001111110000010100\n", + "0000000000000000000000000000000000000R--------------------------------00000000000000000000000000000000--------0FNFFNFRR0PFF0100FNN00NP000PNN0P0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000NNP0PP00F0FPPFPFPFPFPFPFPFPFPFPFPFPFPFPFPF0F0F0F0FPRP0P0P0P000000000000000000000000NPNP0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000RRRRRRRRRRRRRRRRRFFFFFFRRRRRFRRFPNP00000000000000000000000000000FPP000NP000000\n", + "01001111111111111111111111111111101010--------------------------------00000000000000000000000000000000--------1PNPRNPNN0011001P0FP00PPRFFF0PR0PFF0F0F0R0F0F0R0F0F0F0R0R0F0F0R0R0FRFRRFRFFRRFFFR000000000000000PP0PP0PPP00PP00P0000000000000000000000000000000000000000000000000N0PP0N0P0PP0P0P0P0P0P0P0P0P0P0P0P0P0P0P0P0P0P0P000P0P0P0PFFFR00N00N0000000N0000N0NFPF000000000000000000111011110001011011101111100010010001000101010110110111011100001001100000001100000000000000000000000000000000RPRFFFFFFFFFFFFFFFFFFFFFFFFFFFFFNRRFNRFRFPF000\n", + "10110000000000000000000000000000000001--------------------------------00000000000000000000000000000000--------0PFNP1PNNPPNPFFNPPFPP0110RPFNNNPF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000PPNP00PPNPNPP0P0P0P0P0P0P0P0P0P0P0P0P0P0P000000000000000000FFFFFFFFFFFFFFFFFFFFFFR0PRNR000000000N000N0NPNPPPNPN0P000P0P0P000P0P0P000P0P0P000P0P0P000P0P0PN000P0000000000000000000000000000000000000000000000000000000RFR000000000000000000000000000000F1R0F0FFFFNFF\n", + "0000000000000000000000000000000000000R--------------------------------00000000000000000000000000000000--------0FRPFPNRP0RPN00N0FPN0F0N000PF00P0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F00PFRNFFFFFFFPFFFFFFFFFFFFFFFPFFFRRP0RNRN000000RN0000RN000P0PPPPPPP0P0000000000000N0N000000000000000000000000000000000000000000000000000000000000000000000000FRFFFFPFFRFFFFFPPPPPPPPPPPPPPPP0000000000000000000000000N000000000000000000000000000000N0F000N00PPP00\n" ] } ], @@ -1862,18 +2083,18 @@ }, { "cell_type": "code", - "execution_count": 60, + "execution_count": 62, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "11001100110011001100110011001100110000--------------------------------01001100110011001100110011001100--------0100110001011010011101101001011010010110100101101001001100110011001100110011001100011001100110011001100110011001110011001100110011001100110011001011101001011010010110100101101001011010010110100101101001011101100110011001101100110000010010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101011100110011001100110011001100110011111100001001011000100\n", - "00000000000000000000000000000000000001--------------------------------00000000000000000000000000000000--------0010010011000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000110000000000000000000000000000000000000000000000000010000000100000000000000000000000011010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111111110000001111101101001000000000000000000000000000000000000100000001100000\n", - "01001111111111111111111111111111101010--------------------------------00000000000000000000000000000000--------1010110011001100100000000100000100000001010000010100101101001100010000000000000000000000000000000000000000000000000000000000000000000000000000000001000010000000000000000000000000000000000000000000000000000000010010010000000100001001000000000000000000000111011110001011011101111100010010001000101010110110011101110000100110000000011000000000000000000000000000000000010100000000000000000000000000000111011011000000010000\n", - "10110000000000000000000000000000000001--------------------------------00000000000000000000000000000000--------0001010011001000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000001010000000000000000000000000000000000000000000000000000000000000000000000001000111000000000100010101000101000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000001110100000000000000000000000000000001100000100001110100\n", - "00000000000000000000000000000000000001--------------------------------00000000000000000000000000000000--------0010000110010100100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001100000000000000000000000000001100111100000011000011000000000000000000000000000011010000000000000000000000000000000000000000000000000000000000000000000000000010000000100000000000000000000000000000000000000000000000101000000000000000000000000000000100000100000000000000\n" + "11001100110011001100110011001100110000--------------------------------01001100110011001100110011001100--------0100110010110100101010111010100011101101001011010010110100101101001001100110011001100110011001100011001100110011001100110011001110011001100110011001100110011000111010010111001011010010110100101101001011010010110100101101100110011001101100110000100101010101010101010101010101010101010101010101010101010101010101010100101010101010101101010101010101010101010101010101010101010011001100110011001100110011001111110000010100\n", + "00000000000000000000000000000000000001--------------------------------00000000000000000000000000000000--------0010010110000010001100100000110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001100000000000000000000000000000000000000000000000001000000000000000000000000000000010100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111111110000001111101100100000000000000000000000000000000000010000000\n", + "01001111111111111111111111111111101010--------------------------------00000000000000000000000000000000--------1010110110011001000000001000001000000000100000100000001010000010100101101001100010000000000000000000000000000000000000000000000000000000000000000000000000000000010000100000000000000000000000000000000000000000000000000000010010010000000100001010000000000000000000001110111100010110111011111000100100010001010101101101110111000010011000000011000000000000000000000000000000001010000000000000000000000000000011101101000000\n", + "10110000000000000000000000000000000001--------------------------------00000000000000000000000000000000--------0001010110010001000000110100111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000010100000000000000000000000000000000000000000000000000000000000000000000001001110000000001000101010001010000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000001010000000000000000000000000000000110000000100\n", + "00000000000000000000000000000000000001--------------------------------00000000000000000000000000000000--------0010001100101001000100010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011000000000000000000000000000110011110000001100001100000000000000000000000000010100000000000000000000000000000000000000000000000000000000000000000000000001000000010000000000000000000000000000000000000000000000100000000000000000000000000000010000010000000\n" ] } ], @@ -1895,7 +2116,7 @@ }, { "cell_type": "code", - "execution_count": 61, + "execution_count": 63, "metadata": {}, "outputs": [ { @@ -1904,7 +2125,7 @@ "1146" ] }, - "execution_count": 61, + "execution_count": 63, "metadata": {}, "output_type": "execute_result" } @@ -1926,12 +2147,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Delay data for gates and interconnect can be loaded from SDF files. In kyupy's timing simulators, delays are associated with the lines between nodes, not with the nodes themselves. Each line in the circuit has a rising delay, a falling delay, a negative pulse threshold, and a positive pulse threshold. " + "Delay data for gates and interconnect can be loaded from SDF files. In kyupy's timing simulators, delays are associated with the lines between nodes, not with the nodes themselves.\n", + "Each line in the circuit has 4 delays for the IOPATH of the reading node;\n", + "one for each combination rising/falling edges at the input and output of that node.\n", + "\n", + "These contents of the SDF file is matched by node names to the original (non-resolved) circuit `b15`. Resolving library cells does not change the line indices, so the resulting array is compatible with `b15_prim`." ] }, { "cell_type": "code", - "execution_count": 62, + "execution_count": 64, "metadata": {}, "outputs": [], "source": [ @@ -1950,7 +2175,7 @@ }, { "cell_type": "code", - "execution_count": 63, + "execution_count": 65, "metadata": {}, "outputs": [ { @@ -1959,7 +2184,7 @@ "(32032, 2, 2)" ] }, - "execution_count": 63, + "execution_count": 65, "metadata": {}, "output_type": "execute_result" } @@ -1977,7 +2202,7 @@ }, { "cell_type": "code", - "execution_count": 64, + "execution_count": 66, "metadata": {}, "outputs": [ { @@ -1986,7 +2211,7 @@ "79010" ] }, - "execution_count": 64, + "execution_count": 66, "metadata": {}, "output_type": "execute_result" } @@ -2014,13 +2239,13 @@ }, { "cell_type": "code", - "execution_count": 65, + "execution_count": 67, "metadata": {}, "outputs": [], "source": [ "from kyupy.wave_sim import WaveSimCuda, TMAX\n", "\n", - "wsim = WaveSimCuda(b15, delays, sims=32, c_caps=16)" + "wsim = WaveSimCuda(b15_prim, delays, sims=32, c_caps=16)" ] }, { @@ -2032,17 +2257,17 @@ }, { "cell_type": "code", - "execution_count": 66, + "execution_count": 68, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Waveforms : 64294.0 kiB\n", - "State Allocation Table : 129.3 kiB\n", - "Circuit Timing : 1034.1 kiB\n", - "Circuit Netlist : 1126.1 kiB\n", + "Waveforms : 66856.0 kiB\n", + "State Allocation Table : 134.3 kiB\n", + "Circuit Timing : 1074.1 kiB\n", + "Circuit Netlist : 1171.2 kiB\n", "Sequential State : 726.0 kiB\n" ] } @@ -2069,7 +2294,7 @@ }, { "cell_type": "code", - "execution_count": 67, + "execution_count": 69, "metadata": {}, "outputs": [], "source": [ @@ -2081,9 +2306,9 @@ "wsim_results = np.zeros((11, wsim.s_len, sims)) # space to store all simulation results\n", "\n", "for offset, size in batchrange(sims, wsim.sims):\n", - " wsim.s[0] = (transition_tests_zf[:,offset:offset+size] >> 1) & 1 # initial value\n", + " wsim.s[0] = (transition_tests_zf[:,offset:offset+size] >> 1) & 1 # initial value (bit 1)\n", " wsim.s[1] = 0.0 # transition time\n", - " wsim.s[2] = transition_tests_zf[:,offset:offset+size] & 1 # final value\n", + " wsim.s[2] = transition_tests_zf[:,offset:offset+size] & 1 # final value (bit 0)\n", " wsim.s_to_c()\n", " wsim.c_prop(sims=size)\n", " wsim.c_to_s(time=1.5) # capture at time 1.5\n", @@ -2112,7 +2337,7 @@ }, { "cell_type": "code", - "execution_count": 68, + "execution_count": 70, "metadata": {}, "outputs": [ { @@ -2121,7 +2346,7 @@ "(11, 528, 128)" ] }, - "execution_count": 68, + "execution_count": 70, "metadata": {}, "output_type": "execute_result" } @@ -2139,18 +2364,18 @@ }, { "cell_type": "code", - "execution_count": 69, + "execution_count": 71, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "110011001100110011001100110011001100000000000000000000000000000000000001001100110011001100110011001100000000000100110001011010011101101001011010010110100101101001001100110011001100110011001100011001100110011001100110011001110011001100110011001100110011001011101001011010010110100101101001011010010110100101101001011101100110011001101100110000010010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101011100110011001100110011001100110011111100001001011000100\n", - "000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000010010011000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000110000000000000000000000000000000000000000000000000010000000100000000000000000000000011010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111111110000001111101101001000000000000000000000000000000000000100000001100000\n", - "010011111111111111111111111111111010100000000000000000000000000000000000000000000000000000000000000000000000001010110011001100100000000100000100000001010000010100101101001100010000000000000000000000000000000000000000000000000000000000000000000000000000000001000010000000000000000000000000000000000000000000000000000000010010010000000100001001000000000000000000000111011110001011011101111100010010001000101010110110011101110000100110000000011000000000000000000000000000000000010100000000000000000000000000000111011011000000010000\n", - "101100000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000001010011001000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000001010000000000000000000000000000000000000000000000000000000000000000000000001000111000000000100010101000101000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000001110100000000000000000000000000000001100000100001110100\n", - "000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000010000110010100100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001100000000000000000000000000001100111100000011000011000000000000000000000000000011010000000000000000000000000000000000000000000000000000000000000000000000000010000000100000000000000000000000000000000000000000000000101000000000000000000000000000000100000100000000000000\n" + "110011001100110011001100110011001100000000000000000000000000000000000001001100110011001100110011001100000000000100110010110100101010111010100011101101001011010010110100101101001001100110011001100110011001100011001100110011001100110011001110011001100110011001100110011000111010010111001011010010110100101101001011010010110100101101100110011001101100110000100101010101010101010101010101010101010101010101010101010101010101010100101010101010101101010101010101010101010101010101010101010011001100110011001100110011001111110000010100\n", + "000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000010010110000010001100100000110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001100000000000000000000000000000000000000000000000001000000000000000000000000000000010100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111111110000001111101100100000000000000000000000000000000000010000000\n", + "010011111111111111111111111111111010100000000000000000000000000000000000000000000000000000000000000000000000001010110110011001000000001000001000000000100000100000001010000010100101101001100010000000000000000000000000000000000000000000000000000000000000000000000000000000010000100000000000000000000000000000000000000000000000000000010010010000000100001010000000000000000000001110111100010110111011111000100100010001010101101101110111000010011000000011000000000000000000000000000000001010000000000000000000000000000011101101000000\n", + "101100000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000001010110010001000000110100111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000010100000000000000000000000000000000000000000000000000000000000000000000001001110000000001000101010001010000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000001010000000000000000000000000000000110000000100\n", + "000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000010001100101001000100010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011000000000000000000000000000110011110000001100001100000000000000000000000000010100000000000000000000000000000000000000000000000000000000000000000000000001000000010000000000000000000000000000000000000000000000100000000000000000000000000000010000010000000\n" ] } ], @@ -2168,7 +2393,7 @@ }, { "cell_type": "code", - "execution_count": 70, + "execution_count": 72, "metadata": {}, "outputs": [ { @@ -2177,7 +2402,7 @@ "127" ] }, - "execution_count": 70, + "execution_count": 72, "metadata": {}, "output_type": "execute_result" } @@ -2197,7 +2422,7 @@ }, { "cell_type": "code", - "execution_count": 71, + "execution_count": 73, "metadata": {}, "outputs": [ { @@ -2206,7 +2431,7 @@ "1.0424000024795532" ] }, - "execution_count": 71, + "execution_count": 73, "metadata": {}, "output_type": "execute_result" } @@ -2224,7 +2449,7 @@ }, { "cell_type": "code", - "execution_count": 72, + "execution_count": 74, "metadata": {}, "outputs": [ { @@ -2233,7 +2458,7 @@ "0.0" ] }, - "execution_count": 72, + "execution_count": 74, "metadata": {}, "output_type": "execute_result" } @@ -2251,7 +2476,7 @@ }, { "cell_type": "code", - "execution_count": 73, + "execution_count": 75, "metadata": {}, "outputs": [ { @@ -2260,7 +2485,7 @@ "0" ] }, - "execution_count": 73, + "execution_count": 75, "metadata": {}, "output_type": "execute_result" }