diff options
| author | azidar | 2015-05-02 15:25:04 -0700 |
|---|---|---|
| committer | azidar | 2015-05-02 15:25:04 -0700 |
| commit | 2006604530fb8fd214fe4e8e182bedacd71b49b3 (patch) | |
| tree | 5a846b880ef8bf71a860faead945bc64d44cd4de /test | |
| parent | 93ba0196dc2ba88e4e34346e5fbc105743a8eaa0 (diff) | |
Added a infrastructure for check passes, and wrote a few
Diffstat (limited to 'test')
| -rw-r--r-- | test/chisel3/Control.fir | 653 | ||||
| -rw-r--r-- | test/chisel3/Datapath.fir | 377 | ||||
| -rw-r--r-- | test/errors/high-form/Flip-Mem.fir | 6 | ||||
| -rw-r--r-- | test/errors/high-form/Top.fir | 9 | ||||
| -rw-r--r-- | test/errors/parser/Nested-Module.fir | 6 | ||||
| -rw-r--r-- | test/errors/parser/Statements-in-Circuit.fir | 5 | ||||
| -rw-r--r-- | test/syntax/letrec-non-struct.fir | 9 |
7 files changed, 1056 insertions, 9 deletions
diff --git a/test/chisel3/Control.fir b/test/chisel3/Control.fir new file mode 100644 index 00000000..d297d41c --- /dev/null +++ b/test/chisel3/Control.fir @@ -0,0 +1,653 @@ +; CHECK: Done! + +circuit Control : + module Control : + output ctrl : {flip inst : UInt<32>, st_type : UInt<2>, ld_type : UInt<3>, wb_sel : UInt<2>, wb_en : UInt<1>, csr_cmd : UInt<2>, pc_sel : UInt<1>, inst_re : UInt<1>, flip stall : UInt<1>, data_re : UInt<1>, inst_type : UInt<1>, A_sel : UInt<1>, B_sel : UInt<1>, imm_sel : UInt<3>, alu_op : UInt<4>, br_type : UInt<3>} + + node Y = UInt<1>(1) + node N = UInt<1>(0) + node T_831 = bit-and(Pad(UInt<7>(127),?), Pad(ctrl.inst,?)) + node T_832 = eq(Pad(T_831,?), Pad(UInt<6>(55),?)) + node T_833 = bit-and(Pad(UInt<7>(127),?), Pad(ctrl.inst,?)) + node T_834 = eq(Pad(T_833,?), Pad(UInt<5>(23),?)) + node T_835 = bit-and(Pad(UInt<7>(127),?), Pad(ctrl.inst,?)) + node T_836 = eq(Pad(T_835,?), Pad(UInt<7>(111),?)) + node T_837 = bit-and(Pad(UInt<15>(28799),?), Pad(ctrl.inst,?)) + node T_838 = eq(Pad(T_837,?), Pad(UInt<7>(103),?)) + node T_839 = bit-and(Pad(UInt<15>(28799),?), Pad(ctrl.inst,?)) + node T_840 = eq(Pad(T_839,?), Pad(UInt<7>(99),?)) + node T_841 = bit-and(Pad(UInt<15>(28799),?), Pad(ctrl.inst,?)) + node T_842 = eq(Pad(T_841,?), Pad(UInt<13>(4195),?)) + node T_843 = bit-and(Pad(UInt<15>(28799),?), Pad(ctrl.inst,?)) + node T_844 = eq(Pad(T_843,?), Pad(UInt<15>(16483),?)) + node T_845 = bit-and(Pad(UInt<15>(28799),?), Pad(ctrl.inst,?)) + node T_846 = eq(Pad(T_845,?), Pad(UInt<15>(20579),?)) + node T_847 = bit-and(Pad(UInt<15>(28799),?), Pad(ctrl.inst,?)) + node T_848 = eq(Pad(T_847,?), Pad(UInt<15>(24675),?)) + node T_849 = bit-and(Pad(UInt<15>(28799),?), Pad(ctrl.inst,?)) + node T_850 = eq(Pad(T_849,?), Pad(UInt<15>(28771),?)) + node T_851 = bit-and(Pad(UInt<15>(28799),?), Pad(ctrl.inst,?)) + node T_852 = eq(Pad(T_851,?), Pad(UInt<2>(3),?)) + node T_853 = bit-and(Pad(UInt<15>(28799),?), Pad(ctrl.inst,?)) + node T_854 = eq(Pad(T_853,?), Pad(UInt<13>(4099),?)) + node T_855 = bit-and(Pad(UInt<15>(28799),?), Pad(ctrl.inst,?)) + node T_856 = eq(Pad(T_855,?), Pad(UInt<14>(8195),?)) + node T_857 = bit-and(Pad(UInt<15>(28799),?), Pad(ctrl.inst,?)) + node T_858 = eq(Pad(T_857,?), Pad(UInt<15>(16387),?)) + node T_859 = bit-and(Pad(UInt<15>(28799),?), Pad(ctrl.inst,?)) + node T_860 = eq(Pad(T_859,?), Pad(UInt<15>(20483),?)) + node T_861 = bit-and(Pad(UInt<15>(28799),?), Pad(ctrl.inst,?)) + node T_862 = eq(Pad(T_861,?), Pad(UInt<6>(35),?)) + node T_863 = bit-and(Pad(UInt<15>(28799),?), Pad(ctrl.inst,?)) + node T_864 = eq(Pad(T_863,?), Pad(UInt<13>(4131),?)) + node T_865 = bit-and(Pad(UInt<15>(28799),?), Pad(ctrl.inst,?)) + node T_866 = eq(Pad(T_865,?), Pad(UInt<14>(8227),?)) + node T_867 = bit-and(Pad(UInt<15>(28799),?), Pad(ctrl.inst,?)) + node T_868 = eq(Pad(T_867,?), Pad(UInt<5>(19),?)) + node T_869 = bit-and(Pad(UInt<15>(28799),?), Pad(ctrl.inst,?)) + node T_870 = eq(Pad(T_869,?), Pad(UInt<14>(8211),?)) + node T_871 = bit-and(Pad(UInt<15>(28799),?), Pad(ctrl.inst,?)) + node T_872 = eq(Pad(T_871,?), Pad(UInt<14>(12307),?)) + node T_873 = bit-and(Pad(UInt<15>(28799),?), Pad(ctrl.inst,?)) + node T_874 = eq(Pad(T_873,?), Pad(UInt<15>(16403),?)) + node T_875 = bit-and(Pad(UInt<15>(28799),?), Pad(ctrl.inst,?)) + node T_876 = eq(Pad(T_875,?), Pad(UInt<15>(24595),?)) + node T_877 = bit-and(Pad(UInt<15>(28799),?), Pad(ctrl.inst,?)) + node T_878 = eq(Pad(T_877,?), Pad(UInt<15>(28691),?)) + node T_879 = bit-and(Pad(UInt<32>(4261441663),?), Pad(ctrl.inst,?)) + node T_880 = eq(Pad(T_879,?), Pad(UInt<13>(4115),?)) + node T_881 = bit-and(Pad(UInt<32>(4261441663),?), Pad(ctrl.inst,?)) + node T_882 = eq(Pad(T_881,?), Pad(UInt<15>(20499),?)) + node T_883 = bit-and(Pad(UInt<32>(4261441663),?), Pad(ctrl.inst,?)) + node T_884 = eq(Pad(T_883,?), Pad(UInt<31>(1073762323),?)) + node T_885 = bit-and(Pad(UInt<32>(4261441663),?), Pad(ctrl.inst,?)) + node T_886 = eq(Pad(T_885,?), Pad(UInt<6>(51),?)) + node T_887 = bit-and(Pad(UInt<32>(4261441663),?), Pad(ctrl.inst,?)) + node T_888 = eq(Pad(T_887,?), Pad(UInt<31>(1073741875),?)) + node T_889 = bit-and(Pad(UInt<32>(4261441663),?), Pad(ctrl.inst,?)) + node T_890 = eq(Pad(T_889,?), Pad(UInt<13>(4147),?)) + node T_891 = bit-and(Pad(UInt<32>(4261441663),?), Pad(ctrl.inst,?)) + node T_892 = eq(Pad(T_891,?), Pad(UInt<14>(8243),?)) + node T_893 = bit-and(Pad(UInt<32>(4261441663),?), Pad(ctrl.inst,?)) + node T_894 = eq(Pad(T_893,?), Pad(UInt<14>(12339),?)) + node T_895 = bit-and(Pad(UInt<32>(4261441663),?), Pad(ctrl.inst,?)) + node T_896 = eq(Pad(T_895,?), Pad(UInt<15>(16435),?)) + node T_897 = bit-and(Pad(UInt<32>(4261441663),?), Pad(ctrl.inst,?)) + node T_898 = eq(Pad(T_897,?), Pad(UInt<15>(20531),?)) + node T_899 = bit-and(Pad(UInt<32>(4261441663),?), Pad(ctrl.inst,?)) + node T_900 = eq(Pad(T_899,?), Pad(UInt<31>(1073762355),?)) + node T_901 = bit-and(Pad(UInt<32>(4261441663),?), Pad(ctrl.inst,?)) + node T_902 = eq(Pad(T_901,?), Pad(UInt<15>(24627),?)) + node T_903 = bit-and(Pad(UInt<32>(4261441663),?), Pad(ctrl.inst,?)) + node T_904 = eq(Pad(T_903,?), Pad(UInt<15>(28723),?)) + node T_905 = bit-and(Pad(UInt<15>(28799),?), Pad(ctrl.inst,?)) + node T_906 = eq(Pad(T_905,?), Pad(UInt<13>(4211),?)) + node T_907 = bit-and(Pad(UInt<15>(28799),?), Pad(ctrl.inst,?)) + node T_908 = eq(Pad(T_907,?), Pad(UInt<14>(8307),?)) + node T_909 = bit-and(Pad(UInt<15>(28799),?), Pad(ctrl.inst,?)) + node T_910 = eq(Pad(T_909,?), Pad(UInt<14>(12403),?)) + node T_911 = bit-and(Pad(UInt<15>(28799),?), Pad(ctrl.inst,?)) + node T_912 = eq(Pad(T_911,?), Pad(UInt<15>(20595),?)) + node T_913 = bit-and(Pad(UInt<15>(28799),?), Pad(ctrl.inst,?)) + node T_914 = eq(Pad(T_913,?), Pad(UInt<15>(24691),?)) + node T_915 = bit-and(Pad(UInt<15>(28799),?), Pad(ctrl.inst,?)) + node T_916 = eq(Pad(T_915,?), Pad(UInt<15>(28787),?)) + node T_917 = mux(Pad(T_916,?), Pad(UInt<1>(0),?), Pad(UInt<1>(0),?)) + node T_918 = mux(Pad(T_914,?), Pad(UInt<1>(0),?), Pad(T_917,?)) + node T_919 = mux(Pad(T_912,?), Pad(UInt<1>(0),?), Pad(T_918,?)) + node T_920 = mux(Pad(T_910,?), Pad(UInt<1>(0),?), Pad(T_919,?)) + node T_921 = mux(Pad(T_908,?), Pad(UInt<1>(0),?), Pad(T_920,?)) + node T_922 = mux(Pad(T_906,?), Pad(UInt<1>(0),?), Pad(T_921,?)) + node T_923 = mux(Pad(T_904,?), Pad(UInt<1>(0),?), Pad(T_922,?)) + node T_924 = mux(Pad(T_902,?), Pad(UInt<1>(0),?), Pad(T_923,?)) + node T_925 = mux(Pad(T_900,?), Pad(UInt<1>(0),?), Pad(T_924,?)) + node T_926 = mux(Pad(T_898,?), Pad(UInt<1>(0),?), Pad(T_925,?)) + node T_927 = mux(Pad(T_896,?), Pad(UInt<1>(0),?), Pad(T_926,?)) + node T_928 = mux(Pad(T_894,?), Pad(UInt<1>(0),?), Pad(T_927,?)) + node T_929 = mux(Pad(T_892,?), Pad(UInt<1>(0),?), Pad(T_928,?)) + node T_930 = mux(Pad(T_890,?), Pad(UInt<1>(0),?), Pad(T_929,?)) + node T_931 = mux(Pad(T_888,?), Pad(UInt<1>(0),?), Pad(T_930,?)) + node T_932 = mux(Pad(T_886,?), Pad(UInt<1>(0),?), Pad(T_931,?)) + node T_933 = mux(Pad(T_884,?), Pad(UInt<1>(0),?), Pad(T_932,?)) + node T_934 = mux(Pad(T_882,?), Pad(UInt<1>(0),?), Pad(T_933,?)) + node T_935 = mux(Pad(T_880,?), Pad(UInt<1>(0),?), Pad(T_934,?)) + node T_936 = mux(Pad(T_878,?), Pad(UInt<1>(0),?), Pad(T_935,?)) + node T_937 = mux(Pad(T_876,?), Pad(UInt<1>(0),?), Pad(T_936,?)) + node T_938 = mux(Pad(T_874,?), Pad(UInt<1>(0),?), Pad(T_937,?)) + node T_939 = mux(Pad(T_872,?), Pad(UInt<1>(0),?), Pad(T_938,?)) + node T_940 = mux(Pad(T_870,?), Pad(UInt<1>(0),?), Pad(T_939,?)) + node T_941 = mux(Pad(T_868,?), Pad(UInt<1>(0),?), Pad(T_940,?)) + node T_942 = mux(Pad(T_866,?), Pad(UInt<1>(0),?), Pad(T_941,?)) + node T_943 = mux(Pad(T_864,?), Pad(UInt<1>(0),?), Pad(T_942,?)) + node T_944 = mux(Pad(T_862,?), Pad(UInt<1>(0),?), Pad(T_943,?)) + node T_945 = mux(Pad(T_860,?), Pad(UInt<1>(0),?), Pad(T_944,?)) + node T_946 = mux(Pad(T_858,?), Pad(UInt<1>(0),?), Pad(T_945,?)) + node T_947 = mux(Pad(T_856,?), Pad(UInt<1>(0),?), Pad(T_946,?)) + node T_948 = mux(Pad(T_854,?), Pad(UInt<1>(0),?), Pad(T_947,?)) + node T_949 = mux(Pad(T_852,?), Pad(UInt<1>(0),?), Pad(T_948,?)) + node T_950 = mux(Pad(T_850,?), Pad(UInt<1>(0),?), Pad(T_949,?)) + node T_951 = mux(Pad(T_848,?), Pad(UInt<1>(0),?), Pad(T_950,?)) + node T_952 = mux(Pad(T_846,?), Pad(UInt<1>(0),?), Pad(T_951,?)) + node T_953 = mux(Pad(T_844,?), Pad(UInt<1>(0),?), Pad(T_952,?)) + node T_954 = mux(Pad(T_842,?), Pad(UInt<1>(0),?), Pad(T_953,?)) + node T_955 = mux(Pad(T_840,?), Pad(UInt<1>(0),?), Pad(T_954,?)) + node T_956 = mux(Pad(T_838,?), Pad(UInt<1>(1),?), Pad(T_955,?)) + node T_957 = mux(Pad(T_836,?), Pad(UInt<1>(1),?), Pad(T_956,?)) + node T_958 = mux(Pad(T_834,?), Pad(UInt<1>(0),?), Pad(T_957,?)) + node T_959 = mux(Pad(T_832,?), Pad(UInt<1>(0),?), Pad(T_958,?)) + node T_960 = mux(Pad(T_916,?), Pad(UInt<1>(1),?), Pad(UInt<1>(1),?)) + node T_961 = mux(Pad(T_914,?), Pad(UInt<1>(1),?), Pad(T_960,?)) + node T_962 = mux(Pad(T_912,?), Pad(UInt<1>(1),?), Pad(T_961,?)) + node T_963 = mux(Pad(T_910,?), Pad(UInt<1>(0),?), Pad(T_962,?)) + node T_964 = mux(Pad(T_908,?), Pad(UInt<1>(0),?), Pad(T_963,?)) + node T_965 = mux(Pad(T_906,?), Pad(UInt<1>(0),?), Pad(T_964,?)) + node T_966 = mux(Pad(T_904,?), Pad(UInt<1>(0),?), Pad(T_965,?)) + node T_967 = mux(Pad(T_902,?), Pad(UInt<1>(0),?), Pad(T_966,?)) + node T_968 = mux(Pad(T_900,?), Pad(UInt<1>(0),?), Pad(T_967,?)) + node T_969 = mux(Pad(T_898,?), Pad(UInt<1>(0),?), Pad(T_968,?)) + node T_970 = mux(Pad(T_896,?), Pad(UInt<1>(0),?), Pad(T_969,?)) + node T_971 = mux(Pad(T_894,?), Pad(UInt<1>(0),?), Pad(T_970,?)) + node T_972 = mux(Pad(T_892,?), Pad(UInt<1>(0),?), Pad(T_971,?)) + node T_973 = mux(Pad(T_890,?), Pad(UInt<1>(0),?), Pad(T_972,?)) + node T_974 = mux(Pad(T_888,?), Pad(UInt<1>(0),?), Pad(T_973,?)) + node T_975 = mux(Pad(T_886,?), Pad(UInt<1>(0),?), Pad(T_974,?)) + node T_976 = mux(Pad(T_884,?), Pad(UInt<1>(0),?), Pad(T_975,?)) + node T_977 = mux(Pad(T_882,?), Pad(UInt<1>(0),?), Pad(T_976,?)) + node T_978 = mux(Pad(T_880,?), Pad(UInt<1>(0),?), Pad(T_977,?)) + node T_979 = mux(Pad(T_878,?), Pad(UInt<1>(0),?), Pad(T_978,?)) + node T_980 = mux(Pad(T_876,?), Pad(UInt<1>(0),?), Pad(T_979,?)) + node T_981 = mux(Pad(T_874,?), Pad(UInt<1>(0),?), Pad(T_980,?)) + node T_982 = mux(Pad(T_872,?), Pad(UInt<1>(0),?), Pad(T_981,?)) + node T_983 = mux(Pad(T_870,?), Pad(UInt<1>(0),?), Pad(T_982,?)) + node T_984 = mux(Pad(T_868,?), Pad(UInt<1>(0),?), Pad(T_983,?)) + node T_985 = mux(Pad(T_866,?), Pad(UInt<1>(0),?), Pad(T_984,?)) + node T_986 = mux(Pad(T_864,?), Pad(UInt<1>(0),?), Pad(T_985,?)) + node T_987 = mux(Pad(T_862,?), Pad(UInt<1>(0),?), Pad(T_986,?)) + node T_988 = mux(Pad(T_860,?), Pad(UInt<1>(0),?), Pad(T_987,?)) + node T_989 = mux(Pad(T_858,?), Pad(UInt<1>(0),?), Pad(T_988,?)) + node T_990 = mux(Pad(T_856,?), Pad(UInt<1>(0),?), Pad(T_989,?)) + node T_991 = mux(Pad(T_854,?), Pad(UInt<1>(0),?), Pad(T_990,?)) + node T_992 = mux(Pad(T_852,?), Pad(UInt<1>(0),?), Pad(T_991,?)) + node T_993 = mux(Pad(T_850,?), Pad(UInt<1>(1),?), Pad(T_992,?)) + node T_994 = mux(Pad(T_848,?), Pad(UInt<1>(1),?), Pad(T_993,?)) + node T_995 = mux(Pad(T_846,?), Pad(UInt<1>(1),?), Pad(T_994,?)) + node T_996 = mux(Pad(T_844,?), Pad(UInt<1>(1),?), Pad(T_995,?)) + node T_997 = mux(Pad(T_842,?), Pad(UInt<1>(1),?), Pad(T_996,?)) + node T_998 = mux(Pad(T_840,?), Pad(UInt<1>(1),?), Pad(T_997,?)) + node T_999 = mux(Pad(T_838,?), Pad(UInt<1>(0),?), Pad(T_998,?)) + node T_1000 = mux(Pad(T_836,?), Pad(UInt<1>(1),?), Pad(T_999,?)) + node T_1001 = mux(Pad(T_834,?), Pad(UInt<1>(1),?), Pad(T_1000,?)) + node T_1002 = mux(Pad(T_832,?), Pad(UInt<1>(1),?), Pad(T_1001,?)) + node T_1003 = mux(Pad(T_916,?), Pad(UInt<1>(1),?), Pad(UInt<1>(0),?)) + node T_1004 = mux(Pad(T_914,?), Pad(UInt<1>(1),?), Pad(T_1003,?)) + node T_1005 = mux(Pad(T_912,?), Pad(UInt<1>(1),?), Pad(T_1004,?)) + node T_1006 = mux(Pad(T_910,?), Pad(UInt<1>(0),?), Pad(T_1005,?)) + node T_1007 = mux(Pad(T_908,?), Pad(UInt<1>(0),?), Pad(T_1006,?)) + node T_1008 = mux(Pad(T_906,?), Pad(UInt<1>(0),?), Pad(T_1007,?)) + node T_1009 = mux(Pad(T_904,?), Pad(UInt<1>(0),?), Pad(T_1008,?)) + node T_1010 = mux(Pad(T_902,?), Pad(UInt<1>(0),?), Pad(T_1009,?)) + node T_1011 = mux(Pad(T_900,?), Pad(UInt<1>(0),?), Pad(T_1010,?)) + node T_1012 = mux(Pad(T_898,?), Pad(UInt<1>(0),?), Pad(T_1011,?)) + node T_1013 = mux(Pad(T_896,?), Pad(UInt<1>(0),?), Pad(T_1012,?)) + node T_1014 = mux(Pad(T_894,?), Pad(UInt<1>(0),?), Pad(T_1013,?)) + node T_1015 = mux(Pad(T_892,?), Pad(UInt<1>(0),?), Pad(T_1014,?)) + node T_1016 = mux(Pad(T_890,?), Pad(UInt<1>(0),?), Pad(T_1015,?)) + node T_1017 = mux(Pad(T_888,?), Pad(UInt<1>(0),?), Pad(T_1016,?)) + node T_1018 = mux(Pad(T_886,?), Pad(UInt<1>(0),?), Pad(T_1017,?)) + node T_1019 = mux(Pad(T_884,?), Pad(UInt<1>(1),?), Pad(T_1018,?)) + node T_1020 = mux(Pad(T_882,?), Pad(UInt<1>(1),?), Pad(T_1019,?)) + node T_1021 = mux(Pad(T_880,?), Pad(UInt<1>(1),?), Pad(T_1020,?)) + node T_1022 = mux(Pad(T_878,?), Pad(UInt<1>(1),?), Pad(T_1021,?)) + node T_1023 = mux(Pad(T_876,?), Pad(UInt<1>(1),?), Pad(T_1022,?)) + node T_1024 = mux(Pad(T_874,?), Pad(UInt<1>(1),?), Pad(T_1023,?)) + node T_1025 = mux(Pad(T_872,?), Pad(UInt<1>(1),?), Pad(T_1024,?)) + node T_1026 = mux(Pad(T_870,?), Pad(UInt<1>(1),?), Pad(T_1025,?)) + node T_1027 = mux(Pad(T_868,?), Pad(UInt<1>(1),?), Pad(T_1026,?)) + node T_1028 = mux(Pad(T_866,?), Pad(UInt<1>(1),?), Pad(T_1027,?)) + node T_1029 = mux(Pad(T_864,?), Pad(UInt<1>(1),?), Pad(T_1028,?)) + node T_1030 = mux(Pad(T_862,?), Pad(UInt<1>(1),?), Pad(T_1029,?)) + node T_1031 = mux(Pad(T_860,?), Pad(UInt<1>(1),?), Pad(T_1030,?)) + node T_1032 = mux(Pad(T_858,?), Pad(UInt<1>(1),?), Pad(T_1031,?)) + node T_1033 = mux(Pad(T_856,?), Pad(UInt<1>(1),?), Pad(T_1032,?)) + node T_1034 = mux(Pad(T_854,?), Pad(UInt<1>(1),?), Pad(T_1033,?)) + node T_1035 = mux(Pad(T_852,?), Pad(UInt<1>(1),?), Pad(T_1034,?)) + node T_1036 = mux(Pad(T_850,?), Pad(UInt<1>(1),?), Pad(T_1035,?)) + node T_1037 = mux(Pad(T_848,?), Pad(UInt<1>(1),?), Pad(T_1036,?)) + node T_1038 = mux(Pad(T_846,?), Pad(UInt<1>(1),?), Pad(T_1037,?)) + node T_1039 = mux(Pad(T_844,?), Pad(UInt<1>(1),?), Pad(T_1038,?)) + node T_1040 = mux(Pad(T_842,?), Pad(UInt<1>(1),?), Pad(T_1039,?)) + node T_1041 = mux(Pad(T_840,?), Pad(UInt<1>(1),?), Pad(T_1040,?)) + node T_1042 = mux(Pad(T_838,?), Pad(UInt<1>(1),?), Pad(T_1041,?)) + node T_1043 = mux(Pad(T_836,?), Pad(UInt<1>(1),?), Pad(T_1042,?)) + node T_1044 = mux(Pad(T_834,?), Pad(UInt<1>(1),?), Pad(T_1043,?)) + node T_1045 = mux(Pad(T_832,?), Pad(UInt<1>(1),?), Pad(T_1044,?)) + node T_1046 = mux(Pad(T_916,?), Pad(UInt<3>(5),?), Pad(UInt<3>(7),?)) + node T_1047 = mux(Pad(T_914,?), Pad(UInt<3>(5),?), Pad(T_1046,?)) + node T_1048 = mux(Pad(T_912,?), Pad(UInt<3>(5),?), Pad(T_1047,?)) + node T_1049 = mux(Pad(T_910,?), Pad(UInt<3>(5),?), Pad(T_1048,?)) + node T_1050 = mux(Pad(T_908,?), Pad(UInt<3>(5),?), Pad(T_1049,?)) + node T_1051 = mux(Pad(T_906,?), Pad(UInt<3>(5),?), Pad(T_1050,?)) + node T_1052 = mux(Pad(T_904,?), Pad(UInt<3>(7),?), Pad(T_1051,?)) + node T_1053 = mux(Pad(T_902,?), Pad(UInt<3>(7),?), Pad(T_1052,?)) + node T_1054 = mux(Pad(T_900,?), Pad(UInt<3>(7),?), Pad(T_1053,?)) + node T_1055 = mux(Pad(T_898,?), Pad(UInt<3>(7),?), Pad(T_1054,?)) + node T_1056 = mux(Pad(T_896,?), Pad(UInt<3>(7),?), Pad(T_1055,?)) + node T_1057 = mux(Pad(T_894,?), Pad(UInt<3>(7),?), Pad(T_1056,?)) + node T_1058 = mux(Pad(T_892,?), Pad(UInt<3>(7),?), Pad(T_1057,?)) + node T_1059 = mux(Pad(T_890,?), Pad(UInt<3>(7),?), Pad(T_1058,?)) + node T_1060 = mux(Pad(T_888,?), Pad(UInt<3>(7),?), Pad(T_1059,?)) + node T_1061 = mux(Pad(T_886,?), Pad(UInt<3>(7),?), Pad(T_1060,?)) + node T_1062 = mux(Pad(T_884,?), Pad(UInt<3>(0),?), Pad(T_1061,?)) + node T_1063 = mux(Pad(T_882,?), Pad(UInt<3>(0),?), Pad(T_1062,?)) + node T_1064 = mux(Pad(T_880,?), Pad(UInt<3>(0),?), Pad(T_1063,?)) + node T_1065 = mux(Pad(T_878,?), Pad(UInt<3>(0),?), Pad(T_1064,?)) + node T_1066 = mux(Pad(T_876,?), Pad(UInt<3>(0),?), Pad(T_1065,?)) + node T_1067 = mux(Pad(T_874,?), Pad(UInt<3>(0),?), Pad(T_1066,?)) + node T_1068 = mux(Pad(T_872,?), Pad(UInt<3>(0),?), Pad(T_1067,?)) + node T_1069 = mux(Pad(T_870,?), Pad(UInt<3>(0),?), Pad(T_1068,?)) + node T_1070 = mux(Pad(T_868,?), Pad(UInt<3>(0),?), Pad(T_1069,?)) + node T_1071 = mux(Pad(T_866,?), Pad(UInt<3>(1),?), Pad(T_1070,?)) + node T_1072 = mux(Pad(T_864,?), Pad(UInt<3>(1),?), Pad(T_1071,?)) + node T_1073 = mux(Pad(T_862,?), Pad(UInt<3>(1),?), Pad(T_1072,?)) + node T_1074 = mux(Pad(T_860,?), Pad(UInt<3>(0),?), Pad(T_1073,?)) + node T_1075 = mux(Pad(T_858,?), Pad(UInt<3>(0),?), Pad(T_1074,?)) + node T_1076 = mux(Pad(T_856,?), Pad(UInt<3>(0),?), Pad(T_1075,?)) + node T_1077 = mux(Pad(T_854,?), Pad(UInt<3>(0),?), Pad(T_1076,?)) + node T_1078 = mux(Pad(T_852,?), Pad(UInt<3>(0),?), Pad(T_1077,?)) + node T_1079 = mux(Pad(T_850,?), Pad(UInt<3>(4),?), Pad(T_1078,?)) + node T_1080 = mux(Pad(T_848,?), Pad(UInt<3>(4),?), Pad(T_1079,?)) + node T_1081 = mux(Pad(T_846,?), Pad(UInt<3>(4),?), Pad(T_1080,?)) + node T_1082 = mux(Pad(T_844,?), Pad(UInt<3>(4),?), Pad(T_1081,?)) + node T_1083 = mux(Pad(T_842,?), Pad(UInt<3>(4),?), Pad(T_1082,?)) + node T_1084 = mux(Pad(T_840,?), Pad(UInt<3>(4),?), Pad(T_1083,?)) + node T_1085 = mux(Pad(T_838,?), Pad(UInt<3>(0),?), Pad(T_1084,?)) + node T_1086 = mux(Pad(T_836,?), Pad(UInt<3>(3),?), Pad(T_1085,?)) + node T_1087 = mux(Pad(T_834,?), Pad(UInt<3>(2),?), Pad(T_1086,?)) + node T_1088 = mux(Pad(T_832,?), Pad(UInt<3>(2),?), Pad(T_1087,?)) + node T_1089 = mux(Pad(T_916,?), Pad(UInt<4>(11),?), Pad(UInt<4>(15),?)) + node T_1090 = mux(Pad(T_914,?), Pad(UInt<4>(11),?), Pad(T_1089,?)) + node T_1091 = mux(Pad(T_912,?), Pad(UInt<4>(11),?), Pad(T_1090,?)) + node T_1092 = mux(Pad(T_910,?), Pad(UInt<4>(10),?), Pad(T_1091,?)) + node T_1093 = mux(Pad(T_908,?), Pad(UInt<4>(10),?), Pad(T_1092,?)) + node T_1094 = mux(Pad(T_906,?), Pad(UInt<4>(10),?), Pad(T_1093,?)) + node T_1095 = mux(Pad(T_904,?), Pad(UInt<4>(2),?), Pad(T_1094,?)) + node T_1096 = mux(Pad(T_902,?), Pad(UInt<4>(3),?), Pad(T_1095,?)) + node T_1097 = mux(Pad(T_900,?), Pad(UInt<4>(9),?), Pad(T_1096,?)) + node T_1098 = mux(Pad(T_898,?), Pad(UInt<4>(8),?), Pad(T_1097,?)) + node T_1099 = mux(Pad(T_896,?), Pad(UInt<4>(4),?), Pad(T_1098,?)) + node T_1100 = mux(Pad(T_894,?), Pad(UInt<4>(7),?), Pad(T_1099,?)) + node T_1101 = mux(Pad(T_892,?), Pad(UInt<4>(5),?), Pad(T_1100,?)) + node T_1102 = mux(Pad(T_890,?), Pad(UInt<4>(6),?), Pad(T_1101,?)) + node T_1103 = mux(Pad(T_888,?), Pad(UInt<4>(1),?), Pad(T_1102,?)) + node T_1104 = mux(Pad(T_886,?), Pad(UInt<4>(0),?), Pad(T_1103,?)) + node T_1105 = mux(Pad(T_884,?), Pad(UInt<4>(9),?), Pad(T_1104,?)) + node T_1106 = mux(Pad(T_882,?), Pad(UInt<4>(8),?), Pad(T_1105,?)) + node T_1107 = mux(Pad(T_880,?), Pad(UInt<4>(6),?), Pad(T_1106,?)) + node T_1108 = mux(Pad(T_878,?), Pad(UInt<4>(2),?), Pad(T_1107,?)) + node T_1109 = mux(Pad(T_876,?), Pad(UInt<4>(3),?), Pad(T_1108,?)) + node T_1110 = mux(Pad(T_874,?), Pad(UInt<4>(4),?), Pad(T_1109,?)) + node T_1111 = mux(Pad(T_872,?), Pad(UInt<4>(7),?), Pad(T_1110,?)) + node T_1112 = mux(Pad(T_870,?), Pad(UInt<4>(5),?), Pad(T_1111,?)) + node T_1113 = mux(Pad(T_868,?), Pad(UInt<4>(0),?), Pad(T_1112,?)) + node T_1114 = mux(Pad(T_866,?), Pad(UInt<4>(0),?), Pad(T_1113,?)) + node T_1115 = mux(Pad(T_864,?), Pad(UInt<4>(0),?), Pad(T_1114,?)) + node T_1116 = mux(Pad(T_862,?), Pad(UInt<4>(0),?), Pad(T_1115,?)) + node T_1117 = mux(Pad(T_860,?), Pad(UInt<4>(0),?), Pad(T_1116,?)) + node T_1118 = mux(Pad(T_858,?), Pad(UInt<4>(0),?), Pad(T_1117,?)) + node T_1119 = mux(Pad(T_856,?), Pad(UInt<4>(0),?), Pad(T_1118,?)) + node T_1120 = mux(Pad(T_854,?), Pad(UInt<4>(0),?), Pad(T_1119,?)) + node T_1121 = mux(Pad(T_852,?), Pad(UInt<4>(0),?), Pad(T_1120,?)) + node T_1122 = mux(Pad(T_850,?), Pad(UInt<4>(0),?), Pad(T_1121,?)) + node T_1123 = mux(Pad(T_848,?), Pad(UInt<4>(0),?), Pad(T_1122,?)) + node T_1124 = mux(Pad(T_846,?), Pad(UInt<4>(0),?), Pad(T_1123,?)) + node T_1125 = mux(Pad(T_844,?), Pad(UInt<4>(0),?), Pad(T_1124,?)) + node T_1126 = mux(Pad(T_842,?), Pad(UInt<4>(0),?), Pad(T_1125,?)) + node T_1127 = mux(Pad(T_840,?), Pad(UInt<4>(0),?), Pad(T_1126,?)) + node T_1128 = mux(Pad(T_838,?), Pad(UInt<4>(0),?), Pad(T_1127,?)) + node T_1129 = mux(Pad(T_836,?), Pad(UInt<4>(0),?), Pad(T_1128,?)) + node T_1130 = mux(Pad(T_834,?), Pad(UInt<4>(0),?), Pad(T_1129,?)) + node T_1131 = mux(Pad(T_832,?), Pad(UInt<4>(11),?), Pad(T_1130,?)) + node T_1132 = mux(Pad(T_916,?), Pad(UInt<3>(7),?), Pad(UInt<3>(7),?)) + node T_1133 = mux(Pad(T_914,?), Pad(UInt<3>(7),?), Pad(T_1132,?)) + node T_1134 = mux(Pad(T_912,?), Pad(UInt<3>(7),?), Pad(T_1133,?)) + node T_1135 = mux(Pad(T_910,?), Pad(UInt<3>(7),?), Pad(T_1134,?)) + node T_1136 = mux(Pad(T_908,?), Pad(UInt<3>(7),?), Pad(T_1135,?)) + node T_1137 = mux(Pad(T_906,?), Pad(UInt<3>(7),?), Pad(T_1136,?)) + node T_1138 = mux(Pad(T_904,?), Pad(UInt<3>(7),?), Pad(T_1137,?)) + node T_1139 = mux(Pad(T_902,?), Pad(UInt<3>(7),?), Pad(T_1138,?)) + node T_1140 = mux(Pad(T_900,?), Pad(UInt<3>(7),?), Pad(T_1139,?)) + node T_1141 = mux(Pad(T_898,?), Pad(UInt<3>(7),?), Pad(T_1140,?)) + node T_1142 = mux(Pad(T_896,?), Pad(UInt<3>(7),?), Pad(T_1141,?)) + node T_1143 = mux(Pad(T_894,?), Pad(UInt<3>(7),?), Pad(T_1142,?)) + node T_1144 = mux(Pad(T_892,?), Pad(UInt<3>(7),?), Pad(T_1143,?)) + node T_1145 = mux(Pad(T_890,?), Pad(UInt<3>(7),?), Pad(T_1144,?)) + node T_1146 = mux(Pad(T_888,?), Pad(UInt<3>(7),?), Pad(T_1145,?)) + node T_1147 = mux(Pad(T_886,?), Pad(UInt<3>(7),?), Pad(T_1146,?)) + node T_1148 = mux(Pad(T_884,?), Pad(UInt<3>(7),?), Pad(T_1147,?)) + node T_1149 = mux(Pad(T_882,?), Pad(UInt<3>(7),?), Pad(T_1148,?)) + node T_1150 = mux(Pad(T_880,?), Pad(UInt<3>(7),?), Pad(T_1149,?)) + node T_1151 = mux(Pad(T_878,?), Pad(UInt<3>(7),?), Pad(T_1150,?)) + node T_1152 = mux(Pad(T_876,?), Pad(UInt<3>(7),?), Pad(T_1151,?)) + node T_1153 = mux(Pad(T_874,?), Pad(UInt<3>(7),?), Pad(T_1152,?)) + node T_1154 = mux(Pad(T_872,?), Pad(UInt<3>(7),?), Pad(T_1153,?)) + node T_1155 = mux(Pad(T_870,?), Pad(UInt<3>(7),?), Pad(T_1154,?)) + node T_1156 = mux(Pad(T_868,?), Pad(UInt<3>(7),?), Pad(T_1155,?)) + node T_1157 = mux(Pad(T_866,?), Pad(UInt<3>(7),?), Pad(T_1156,?)) + node T_1158 = mux(Pad(T_864,?), Pad(UInt<3>(7),?), Pad(T_1157,?)) + node T_1159 = mux(Pad(T_862,?), Pad(UInt<3>(7),?), Pad(T_1158,?)) + node T_1160 = mux(Pad(T_860,?), Pad(UInt<3>(7),?), Pad(T_1159,?)) + node T_1161 = mux(Pad(T_858,?), Pad(UInt<3>(7),?), Pad(T_1160,?)) + node T_1162 = mux(Pad(T_856,?), Pad(UInt<3>(7),?), Pad(T_1161,?)) + node T_1163 = mux(Pad(T_854,?), Pad(UInt<3>(7),?), Pad(T_1162,?)) + node T_1164 = mux(Pad(T_852,?), Pad(UInt<3>(7),?), Pad(T_1163,?)) + node T_1165 = mux(Pad(T_850,?), Pad(UInt<3>(4),?), Pad(T_1164,?)) + node T_1166 = mux(Pad(T_848,?), Pad(UInt<3>(0),?), Pad(T_1165,?)) + node T_1167 = mux(Pad(T_846,?), Pad(UInt<3>(5),?), Pad(T_1166,?)) + node T_1168 = mux(Pad(T_844,?), Pad(UInt<3>(1),?), Pad(T_1167,?)) + node T_1169 = mux(Pad(T_842,?), Pad(UInt<3>(6),?), Pad(T_1168,?)) + node T_1170 = mux(Pad(T_840,?), Pad(UInt<3>(2),?), Pad(T_1169,?)) + node T_1171 = mux(Pad(T_838,?), Pad(UInt<3>(7),?), Pad(T_1170,?)) + node T_1172 = mux(Pad(T_836,?), Pad(UInt<3>(7),?), Pad(T_1171,?)) + node T_1173 = mux(Pad(T_834,?), Pad(UInt<3>(7),?), Pad(T_1172,?)) + node T_1174 = mux(Pad(T_832,?), Pad(UInt<3>(7),?), Pad(T_1173,?)) + node T_1175 = mux(Pad(T_916,?), Pad(N,?), Pad(N,?)) + node T_1176 = mux(Pad(T_914,?), Pad(N,?), Pad(T_1175,?)) + node T_1177 = mux(Pad(T_912,?), Pad(N,?), Pad(T_1176,?)) + node T_1178 = mux(Pad(T_910,?), Pad(N,?), Pad(T_1177,?)) + node T_1179 = mux(Pad(T_908,?), Pad(N,?), Pad(T_1178,?)) + node T_1180 = mux(Pad(T_906,?), Pad(N,?), Pad(T_1179,?)) + node T_1181 = mux(Pad(T_904,?), Pad(N,?), Pad(T_1180,?)) + node T_1182 = mux(Pad(T_902,?), Pad(N,?), Pad(T_1181,?)) + node T_1183 = mux(Pad(T_900,?), Pad(N,?), Pad(T_1182,?)) + node T_1184 = mux(Pad(T_898,?), Pad(N,?), Pad(T_1183,?)) + node T_1185 = mux(Pad(T_896,?), Pad(N,?), Pad(T_1184,?)) + node T_1186 = mux(Pad(T_894,?), Pad(N,?), Pad(T_1185,?)) + node T_1187 = mux(Pad(T_892,?), Pad(N,?), Pad(T_1186,?)) + node T_1188 = mux(Pad(T_890,?), Pad(N,?), Pad(T_1187,?)) + node T_1189 = mux(Pad(T_888,?), Pad(N,?), Pad(T_1188,?)) + node T_1190 = mux(Pad(T_886,?), Pad(N,?), Pad(T_1189,?)) + node T_1191 = mux(Pad(T_884,?), Pad(N,?), Pad(T_1190,?)) + node T_1192 = mux(Pad(T_882,?), Pad(N,?), Pad(T_1191,?)) + node T_1193 = mux(Pad(T_880,?), Pad(N,?), Pad(T_1192,?)) + node T_1194 = mux(Pad(T_878,?), Pad(N,?), Pad(T_1193,?)) + node T_1195 = mux(Pad(T_876,?), Pad(N,?), Pad(T_1194,?)) + node T_1196 = mux(Pad(T_874,?), Pad(N,?), Pad(T_1195,?)) + node T_1197 = mux(Pad(T_872,?), Pad(N,?), Pad(T_1196,?)) + node T_1198 = mux(Pad(T_870,?), Pad(N,?), Pad(T_1197,?)) + node T_1199 = mux(Pad(T_868,?), Pad(N,?), Pad(T_1198,?)) + node T_1200 = mux(Pad(T_866,?), Pad(N,?), Pad(T_1199,?)) + node T_1201 = mux(Pad(T_864,?), Pad(N,?), Pad(T_1200,?)) + node T_1202 = mux(Pad(T_862,?), Pad(N,?), Pad(T_1201,?)) + node T_1203 = mux(Pad(T_860,?), Pad(N,?), Pad(T_1202,?)) + node T_1204 = mux(Pad(T_858,?), Pad(N,?), Pad(T_1203,?)) + node T_1205 = mux(Pad(T_856,?), Pad(N,?), Pad(T_1204,?)) + node T_1206 = mux(Pad(T_854,?), Pad(N,?), Pad(T_1205,?)) + node T_1207 = mux(Pad(T_852,?), Pad(N,?), Pad(T_1206,?)) + node T_1208 = mux(Pad(T_850,?), Pad(N,?), Pad(T_1207,?)) + node T_1209 = mux(Pad(T_848,?), Pad(N,?), Pad(T_1208,?)) + node T_1210 = mux(Pad(T_846,?), Pad(N,?), Pad(T_1209,?)) + node T_1211 = mux(Pad(T_844,?), Pad(N,?), Pad(T_1210,?)) + node T_1212 = mux(Pad(T_842,?), Pad(N,?), Pad(T_1211,?)) + node T_1213 = mux(Pad(T_840,?), Pad(N,?), Pad(T_1212,?)) + node T_1214 = mux(Pad(T_838,?), Pad(Y,?), Pad(T_1213,?)) + node T_1215 = mux(Pad(T_836,?), Pad(Y,?), Pad(T_1214,?)) + node T_1216 = mux(Pad(T_834,?), Pad(N,?), Pad(T_1215,?)) + node T_1217 = mux(Pad(T_832,?), Pad(N,?), Pad(T_1216,?)) + node T_1218 = mux(Pad(T_916,?), Pad(UInt<2>(3),?), Pad(UInt<2>(3),?)) + node T_1219 = mux(Pad(T_914,?), Pad(UInt<2>(3),?), Pad(T_1218,?)) + node T_1220 = mux(Pad(T_912,?), Pad(UInt<2>(3),?), Pad(T_1219,?)) + node T_1221 = mux(Pad(T_910,?), Pad(UInt<2>(3),?), Pad(T_1220,?)) + node T_1222 = mux(Pad(T_908,?), Pad(UInt<2>(3),?), Pad(T_1221,?)) + node T_1223 = mux(Pad(T_906,?), Pad(UInt<2>(3),?), Pad(T_1222,?)) + node T_1224 = mux(Pad(T_904,?), Pad(UInt<2>(3),?), Pad(T_1223,?)) + node T_1225 = mux(Pad(T_902,?), Pad(UInt<2>(3),?), Pad(T_1224,?)) + node T_1226 = mux(Pad(T_900,?), Pad(UInt<2>(3),?), Pad(T_1225,?)) + node T_1227 = mux(Pad(T_898,?), Pad(UInt<2>(3),?), Pad(T_1226,?)) + node T_1228 = mux(Pad(T_896,?), Pad(UInt<2>(3),?), Pad(T_1227,?)) + node T_1229 = mux(Pad(T_894,?), Pad(UInt<2>(3),?), Pad(T_1228,?)) + node T_1230 = mux(Pad(T_892,?), Pad(UInt<2>(3),?), Pad(T_1229,?)) + node T_1231 = mux(Pad(T_890,?), Pad(UInt<2>(3),?), Pad(T_1230,?)) + node T_1232 = mux(Pad(T_888,?), Pad(UInt<2>(3),?), Pad(T_1231,?)) + node T_1233 = mux(Pad(T_886,?), Pad(UInt<2>(3),?), Pad(T_1232,?)) + node T_1234 = mux(Pad(T_884,?), Pad(UInt<2>(3),?), Pad(T_1233,?)) + node T_1235 = mux(Pad(T_882,?), Pad(UInt<2>(3),?), Pad(T_1234,?)) + node T_1236 = mux(Pad(T_880,?), Pad(UInt<2>(3),?), Pad(T_1235,?)) + node T_1237 = mux(Pad(T_878,?), Pad(UInt<2>(3),?), Pad(T_1236,?)) + node T_1238 = mux(Pad(T_876,?), Pad(UInt<2>(3),?), Pad(T_1237,?)) + node T_1239 = mux(Pad(T_874,?), Pad(UInt<2>(3),?), Pad(T_1238,?)) + node T_1240 = mux(Pad(T_872,?), Pad(UInt<2>(3),?), Pad(T_1239,?)) + node T_1241 = mux(Pad(T_870,?), Pad(UInt<2>(3),?), Pad(T_1240,?)) + node T_1242 = mux(Pad(T_868,?), Pad(UInt<2>(3),?), Pad(T_1241,?)) + node T_1243 = mux(Pad(T_866,?), Pad(UInt<2>(0),?), Pad(T_1242,?)) + node T_1244 = mux(Pad(T_864,?), Pad(UInt<2>(1),?), Pad(T_1243,?)) + node T_1245 = mux(Pad(T_862,?), Pad(UInt<2>(2),?), Pad(T_1244,?)) + node T_1246 = mux(Pad(T_860,?), Pad(UInt<2>(3),?), Pad(T_1245,?)) + node T_1247 = mux(Pad(T_858,?), Pad(UInt<2>(3),?), Pad(T_1246,?)) + node T_1248 = mux(Pad(T_856,?), Pad(UInt<2>(3),?), Pad(T_1247,?)) + node T_1249 = mux(Pad(T_854,?), Pad(UInt<2>(3),?), Pad(T_1248,?)) + node T_1250 = mux(Pad(T_852,?), Pad(UInt<2>(3),?), Pad(T_1249,?)) + node T_1251 = mux(Pad(T_850,?), Pad(UInt<2>(3),?), Pad(T_1250,?)) + node T_1252 = mux(Pad(T_848,?), Pad(UInt<2>(3),?), Pad(T_1251,?)) + node T_1253 = mux(Pad(T_846,?), Pad(UInt<2>(3),?), Pad(T_1252,?)) + node T_1254 = mux(Pad(T_844,?), Pad(UInt<2>(3),?), Pad(T_1253,?)) + node T_1255 = mux(Pad(T_842,?), Pad(UInt<2>(3),?), Pad(T_1254,?)) + node T_1256 = mux(Pad(T_840,?), Pad(UInt<2>(3),?), Pad(T_1255,?)) + node T_1257 = mux(Pad(T_838,?), Pad(UInt<2>(3),?), Pad(T_1256,?)) + node T_1258 = mux(Pad(T_836,?), Pad(UInt<2>(3),?), Pad(T_1257,?)) + node T_1259 = mux(Pad(T_834,?), Pad(UInt<2>(3),?), Pad(T_1258,?)) + node T_1260 = mux(Pad(T_832,?), Pad(UInt<2>(3),?), Pad(T_1259,?)) + node T_1261 = mux(Pad(T_916,?), Pad(UInt<3>(7),?), Pad(UInt<3>(7),?)) + node T_1262 = mux(Pad(T_914,?), Pad(UInt<3>(7),?), Pad(T_1261,?)) + node T_1263 = mux(Pad(T_912,?), Pad(UInt<3>(7),?), Pad(T_1262,?)) + node T_1264 = mux(Pad(T_910,?), Pad(UInt<3>(7),?), Pad(T_1263,?)) + node T_1265 = mux(Pad(T_908,?), Pad(UInt<3>(7),?), Pad(T_1264,?)) + node T_1266 = mux(Pad(T_906,?), Pad(UInt<3>(7),?), Pad(T_1265,?)) + node T_1267 = mux(Pad(T_904,?), Pad(UInt<3>(7),?), Pad(T_1266,?)) + node T_1268 = mux(Pad(T_902,?), Pad(UInt<3>(7),?), Pad(T_1267,?)) + node T_1269 = mux(Pad(T_900,?), Pad(UInt<3>(7),?), Pad(T_1268,?)) + node T_1270 = mux(Pad(T_898,?), Pad(UInt<3>(7),?), Pad(T_1269,?)) + node T_1271 = mux(Pad(T_896,?), Pad(UInt<3>(7),?), Pad(T_1270,?)) + node T_1272 = mux(Pad(T_894,?), Pad(UInt<3>(7),?), Pad(T_1271,?)) + node T_1273 = mux(Pad(T_892,?), Pad(UInt<3>(7),?), Pad(T_1272,?)) + node T_1274 = mux(Pad(T_890,?), Pad(UInt<3>(7),?), Pad(T_1273,?)) + node T_1275 = mux(Pad(T_888,?), Pad(UInt<3>(7),?), Pad(T_1274,?)) + node T_1276 = mux(Pad(T_886,?), Pad(UInt<3>(7),?), Pad(T_1275,?)) + node T_1277 = mux(Pad(T_884,?), Pad(UInt<3>(7),?), Pad(T_1276,?)) + node T_1278 = mux(Pad(T_882,?), Pad(UInt<3>(7),?), Pad(T_1277,?)) + node T_1279 = mux(Pad(T_880,?), Pad(UInt<3>(7),?), Pad(T_1278,?)) + node T_1280 = mux(Pad(T_878,?), Pad(UInt<3>(7),?), Pad(T_1279,?)) + node T_1281 = mux(Pad(T_876,?), Pad(UInt<3>(7),?), Pad(T_1280,?)) + node T_1282 = mux(Pad(T_874,?), Pad(UInt<3>(7),?), Pad(T_1281,?)) + node T_1283 = mux(Pad(T_872,?), Pad(UInt<3>(7),?), Pad(T_1282,?)) + node T_1284 = mux(Pad(T_870,?), Pad(UInt<3>(7),?), Pad(T_1283,?)) + node T_1285 = mux(Pad(T_868,?), Pad(UInt<3>(7),?), Pad(T_1284,?)) + node T_1286 = mux(Pad(T_866,?), Pad(UInt<3>(7),?), Pad(T_1285,?)) + node T_1287 = mux(Pad(T_864,?), Pad(UInt<3>(7),?), Pad(T_1286,?)) + node T_1288 = mux(Pad(T_862,?), Pad(UInt<3>(7),?), Pad(T_1287,?)) + node T_1289 = mux(Pad(T_860,?), Pad(UInt<3>(3),?), Pad(T_1288,?)) + node T_1290 = mux(Pad(T_858,?), Pad(UInt<3>(4),?), Pad(T_1289,?)) + node T_1291 = mux(Pad(T_856,?), Pad(UInt<3>(0),?), Pad(T_1290,?)) + node T_1292 = mux(Pad(T_854,?), Pad(UInt<3>(1),?), Pad(T_1291,?)) + node T_1293 = mux(Pad(T_852,?), Pad(UInt<3>(2),?), Pad(T_1292,?)) + node T_1294 = mux(Pad(T_850,?), Pad(UInt<3>(7),?), Pad(T_1293,?)) + node T_1295 = mux(Pad(T_848,?), Pad(UInt<3>(7),?), Pad(T_1294,?)) + node T_1296 = mux(Pad(T_846,?), Pad(UInt<3>(7),?), Pad(T_1295,?)) + node T_1297 = mux(Pad(T_844,?), Pad(UInt<3>(7),?), Pad(T_1296,?)) + node T_1298 = mux(Pad(T_842,?), Pad(UInt<3>(7),?), Pad(T_1297,?)) + node T_1299 = mux(Pad(T_840,?), Pad(UInt<3>(7),?), Pad(T_1298,?)) + node T_1300 = mux(Pad(T_838,?), Pad(UInt<3>(7),?), Pad(T_1299,?)) + node T_1301 = mux(Pad(T_836,?), Pad(UInt<3>(7),?), Pad(T_1300,?)) + node T_1302 = mux(Pad(T_834,?), Pad(UInt<3>(7),?), Pad(T_1301,?)) + node T_1303 = mux(Pad(T_832,?), Pad(UInt<3>(7),?), Pad(T_1302,?)) + node T_1304 = mux(Pad(T_916,?), Pad(UInt<2>(3),?), Pad(UInt<2>(0),?)) + node T_1305 = mux(Pad(T_914,?), Pad(UInt<2>(3),?), Pad(T_1304,?)) + node T_1306 = mux(Pad(T_912,?), Pad(UInt<2>(3),?), Pad(T_1305,?)) + node T_1307 = mux(Pad(T_910,?), Pad(UInt<2>(3),?), Pad(T_1306,?)) + node T_1308 = mux(Pad(T_908,?), Pad(UInt<2>(3),?), Pad(T_1307,?)) + node T_1309 = mux(Pad(T_906,?), Pad(UInt<2>(3),?), Pad(T_1308,?)) + node T_1310 = mux(Pad(T_904,?), Pad(UInt<2>(0),?), Pad(T_1309,?)) + node T_1311 = mux(Pad(T_902,?), Pad(UInt<2>(0),?), Pad(T_1310,?)) + node T_1312 = mux(Pad(T_900,?), Pad(UInt<2>(0),?), Pad(T_1311,?)) + node T_1313 = mux(Pad(T_898,?), Pad(UInt<2>(0),?), Pad(T_1312,?)) + node T_1314 = mux(Pad(T_896,?), Pad(UInt<2>(0),?), Pad(T_1313,?)) + node T_1315 = mux(Pad(T_894,?), Pad(UInt<2>(0),?), Pad(T_1314,?)) + node T_1316 = mux(Pad(T_892,?), Pad(UInt<2>(0),?), Pad(T_1315,?)) + node T_1317 = mux(Pad(T_890,?), Pad(UInt<2>(0),?), Pad(T_1316,?)) + node T_1318 = mux(Pad(T_888,?), Pad(UInt<2>(0),?), Pad(T_1317,?)) + node T_1319 = mux(Pad(T_886,?), Pad(UInt<2>(0),?), Pad(T_1318,?)) + node T_1320 = mux(Pad(T_884,?), Pad(UInt<2>(0),?), Pad(T_1319,?)) + node T_1321 = mux(Pad(T_882,?), Pad(UInt<2>(0),?), Pad(T_1320,?)) + node T_1322 = mux(Pad(T_880,?), Pad(UInt<2>(0),?), Pad(T_1321,?)) + node T_1323 = mux(Pad(T_878,?), Pad(UInt<2>(0),?), Pad(T_1322,?)) + node T_1324 = mux(Pad(T_876,?), Pad(UInt<2>(0),?), Pad(T_1323,?)) + node T_1325 = mux(Pad(T_874,?), Pad(UInt<2>(0),?), Pad(T_1324,?)) + node T_1326 = mux(Pad(T_872,?), Pad(UInt<2>(0),?), Pad(T_1325,?)) + node T_1327 = mux(Pad(T_870,?), Pad(UInt<2>(0),?), Pad(T_1326,?)) + node T_1328 = mux(Pad(T_868,?), Pad(UInt<2>(0),?), Pad(T_1327,?)) + node T_1329 = mux(Pad(T_866,?), Pad(UInt<2>(0),?), Pad(T_1328,?)) + node T_1330 = mux(Pad(T_864,?), Pad(UInt<2>(0),?), Pad(T_1329,?)) + node T_1331 = mux(Pad(T_862,?), Pad(UInt<2>(0),?), Pad(T_1330,?)) + node T_1332 = mux(Pad(T_860,?), Pad(UInt<2>(1),?), Pad(T_1331,?)) + node T_1333 = mux(Pad(T_858,?), Pad(UInt<2>(1),?), Pad(T_1332,?)) + node T_1334 = mux(Pad(T_856,?), Pad(UInt<2>(1),?), Pad(T_1333,?)) + node T_1335 = mux(Pad(T_854,?), Pad(UInt<2>(1),?), Pad(T_1334,?)) + node T_1336 = mux(Pad(T_852,?), Pad(UInt<2>(1),?), Pad(T_1335,?)) + node T_1337 = mux(Pad(T_850,?), Pad(UInt<2>(0),?), Pad(T_1336,?)) + node T_1338 = mux(Pad(T_848,?), Pad(UInt<2>(0),?), Pad(T_1337,?)) + node T_1339 = mux(Pad(T_846,?), Pad(UInt<2>(0),?), Pad(T_1338,?)) + node T_1340 = mux(Pad(T_844,?), Pad(UInt<2>(0),?), Pad(T_1339,?)) + node T_1341 = mux(Pad(T_842,?), Pad(UInt<2>(0),?), Pad(T_1340,?)) + node T_1342 = mux(Pad(T_840,?), Pad(UInt<2>(0),?), Pad(T_1341,?)) + node T_1343 = mux(Pad(T_838,?), Pad(UInt<2>(2),?), Pad(T_1342,?)) + node T_1344 = mux(Pad(T_836,?), Pad(UInt<2>(2),?), Pad(T_1343,?)) + node T_1345 = mux(Pad(T_834,?), Pad(UInt<2>(0),?), Pad(T_1344,?)) + node T_1346 = mux(Pad(T_832,?), Pad(UInt<2>(0),?), Pad(T_1345,?)) + node T_1347 = mux(Pad(T_916,?), Pad(N,?), Pad(N,?)) + node T_1348 = mux(Pad(T_914,?), Pad(N,?), Pad(T_1347,?)) + node T_1349 = mux(Pad(T_912,?), Pad(N,?), Pad(T_1348,?)) + node T_1350 = mux(Pad(T_910,?), Pad(N,?), Pad(T_1349,?)) + node T_1351 = mux(Pad(T_908,?), Pad(N,?), Pad(T_1350,?)) + node T_1352 = mux(Pad(T_906,?), Pad(N,?), Pad(T_1351,?)) + node T_1353 = mux(Pad(T_904,?), Pad(Y,?), Pad(T_1352,?)) + node T_1354 = mux(Pad(T_902,?), Pad(Y,?), Pad(T_1353,?)) + node T_1355 = mux(Pad(T_900,?), Pad(Y,?), Pad(T_1354,?)) + node T_1356 = mux(Pad(T_898,?), Pad(Y,?), Pad(T_1355,?)) + node T_1357 = mux(Pad(T_896,?), Pad(Y,?), Pad(T_1356,?)) + node T_1358 = mux(Pad(T_894,?), Pad(Y,?), Pad(T_1357,?)) + node T_1359 = mux(Pad(T_892,?), Pad(Y,?), Pad(T_1358,?)) + node T_1360 = mux(Pad(T_890,?), Pad(Y,?), Pad(T_1359,?)) + node T_1361 = mux(Pad(T_888,?), Pad(Y,?), Pad(T_1360,?)) + node T_1362 = mux(Pad(T_886,?), Pad(Y,?), Pad(T_1361,?)) + node T_1363 = mux(Pad(T_884,?), Pad(Y,?), Pad(T_1362,?)) + node T_1364 = mux(Pad(T_882,?), Pad(Y,?), Pad(T_1363,?)) + node T_1365 = mux(Pad(T_880,?), Pad(Y,?), Pad(T_1364,?)) + node T_1366 = mux(Pad(T_878,?), Pad(Y,?), Pad(T_1365,?)) + node T_1367 = mux(Pad(T_876,?), Pad(Y,?), Pad(T_1366,?)) + node T_1368 = mux(Pad(T_874,?), Pad(Y,?), Pad(T_1367,?)) + node T_1369 = mux(Pad(T_872,?), Pad(Y,?), Pad(T_1368,?)) + node T_1370 = mux(Pad(T_870,?), Pad(Y,?), Pad(T_1369,?)) + node T_1371 = mux(Pad(T_868,?), Pad(Y,?), Pad(T_1370,?)) + node T_1372 = mux(Pad(T_866,?), Pad(N,?), Pad(T_1371,?)) + node T_1373 = mux(Pad(T_864,?), Pad(N,?), Pad(T_1372,?)) + node T_1374 = mux(Pad(T_862,?), Pad(N,?), Pad(T_1373,?)) + node T_1375 = mux(Pad(T_860,?), Pad(Y,?), Pad(T_1374,?)) + node T_1376 = mux(Pad(T_858,?), Pad(Y,?), Pad(T_1375,?)) + node T_1377 = mux(Pad(T_856,?), Pad(Y,?), Pad(T_1376,?)) + node T_1378 = mux(Pad(T_854,?), Pad(Y,?), Pad(T_1377,?)) + node T_1379 = mux(Pad(T_852,?), Pad(Y,?), Pad(T_1378,?)) + node T_1380 = mux(Pad(T_850,?), Pad(N,?), Pad(T_1379,?)) + node T_1381 = mux(Pad(T_848,?), Pad(N,?), Pad(T_1380,?)) + node T_1382 = mux(Pad(T_846,?), Pad(N,?), Pad(T_1381,?)) + node T_1383 = mux(Pad(T_844,?), Pad(N,?), Pad(T_1382,?)) + node T_1384 = mux(Pad(T_842,?), Pad(N,?), Pad(T_1383,?)) + node T_1385 = mux(Pad(T_840,?), Pad(N,?), Pad(T_1384,?)) + node T_1386 = mux(Pad(T_838,?), Pad(Y,?), Pad(T_1385,?)) + node T_1387 = mux(Pad(T_836,?), Pad(Y,?), Pad(T_1386,?)) + node T_1388 = mux(Pad(T_834,?), Pad(Y,?), Pad(T_1387,?)) + node T_1389 = mux(Pad(T_832,?), Pad(Y,?), Pad(T_1388,?)) + node T_1390 = mux(Pad(T_916,?), Pad(UInt<2>(3),?), Pad(UInt<2>(0),?)) + node T_1391 = mux(Pad(T_914,?), Pad(UInt<2>(2),?), Pad(T_1390,?)) + node T_1392 = mux(Pad(T_912,?), Pad(UInt<2>(1),?), Pad(T_1391,?)) + node T_1393 = mux(Pad(T_910,?), Pad(UInt<2>(3),?), Pad(T_1392,?)) + node T_1394 = mux(Pad(T_908,?), Pad(UInt<2>(2),?), Pad(T_1393,?)) + node T_1395 = mux(Pad(T_906,?), Pad(UInt<2>(1),?), Pad(T_1394,?)) + node T_1396 = mux(Pad(T_904,?), Pad(UInt<2>(0),?), Pad(T_1395,?)) + node T_1397 = mux(Pad(T_902,?), Pad(UInt<2>(0),?), Pad(T_1396,?)) + node T_1398 = mux(Pad(T_900,?), Pad(UInt<2>(0),?), Pad(T_1397,?)) + node T_1399 = mux(Pad(T_898,?), Pad(UInt<2>(0),?), Pad(T_1398,?)) + node T_1400 = mux(Pad(T_896,?), Pad(UInt<2>(0),?), Pad(T_1399,?)) + node T_1401 = mux(Pad(T_894,?), Pad(UInt<2>(0),?), Pad(T_1400,?)) + node T_1402 = mux(Pad(T_892,?), Pad(UInt<2>(0),?), Pad(T_1401,?)) + node T_1403 = mux(Pad(T_890,?), Pad(UInt<2>(0),?), Pad(T_1402,?)) + node T_1404 = mux(Pad(T_888,?), Pad(UInt<2>(0),?), Pad(T_1403,?)) + node T_1405 = mux(Pad(T_886,?), Pad(UInt<2>(0),?), Pad(T_1404,?)) + node T_1406 = mux(Pad(T_884,?), Pad(UInt<2>(0),?), Pad(T_1405,?)) + node T_1407 = mux(Pad(T_882,?), Pad(UInt<2>(0),?), Pad(T_1406,?)) + node T_1408 = mux(Pad(T_880,?), Pad(UInt<2>(0),?), Pad(T_1407,?)) + node T_1409 = mux(Pad(T_878,?), Pad(UInt<2>(0),?), Pad(T_1408,?)) + node T_1410 = mux(Pad(T_876,?), Pad(UInt<2>(0),?), Pad(T_1409,?)) + node T_1411 = mux(Pad(T_874,?), Pad(UInt<2>(0),?), Pad(T_1410,?)) + node T_1412 = mux(Pad(T_872,?), Pad(UInt<2>(0),?), Pad(T_1411,?)) + node T_1413 = mux(Pad(T_870,?), Pad(UInt<2>(0),?), Pad(T_1412,?)) + node T_1414 = mux(Pad(T_868,?), Pad(UInt<2>(0),?), Pad(T_1413,?)) + node T_1415 = mux(Pad(T_866,?), Pad(UInt<2>(0),?), Pad(T_1414,?)) + node T_1416 = mux(Pad(T_864,?), Pad(UInt<2>(0),?), Pad(T_1415,?)) + node T_1417 = mux(Pad(T_862,?), Pad(UInt<2>(0),?), Pad(T_1416,?)) + node T_1418 = mux(Pad(T_860,?), Pad(UInt<2>(0),?), Pad(T_1417,?)) + node T_1419 = mux(Pad(T_858,?), Pad(UInt<2>(0),?), Pad(T_1418,?)) + node T_1420 = mux(Pad(T_856,?), Pad(UInt<2>(0),?), Pad(T_1419,?)) + node T_1421 = mux(Pad(T_854,?), Pad(UInt<2>(0),?), Pad(T_1420,?)) + node T_1422 = mux(Pad(T_852,?), Pad(UInt<2>(0),?), Pad(T_1421,?)) + node T_1423 = mux(Pad(T_850,?), Pad(UInt<2>(0),?), Pad(T_1422,?)) + node T_1424 = mux(Pad(T_848,?), Pad(UInt<2>(0),?), Pad(T_1423,?)) + node T_1425 = mux(Pad(T_846,?), Pad(UInt<2>(0),?), Pad(T_1424,?)) + node T_1426 = mux(Pad(T_844,?), Pad(UInt<2>(0),?), Pad(T_1425,?)) + node T_1427 = mux(Pad(T_842,?), Pad(UInt<2>(0),?), Pad(T_1426,?)) + node T_1428 = mux(Pad(T_840,?), Pad(UInt<2>(0),?), Pad(T_1427,?)) + node T_1429 = mux(Pad(T_838,?), Pad(UInt<2>(0),?), Pad(T_1428,?)) + node T_1430 = mux(Pad(T_836,?), Pad(UInt<2>(0),?), Pad(T_1429,?)) + node T_1431 = mux(Pad(T_834,?), Pad(UInt<2>(0),?), Pad(T_1430,?)) + node T_1432 = mux(Pad(T_832,?), Pad(UInt<2>(0),?), Pad(T_1431,?)) + node rs1_addr = bits(ctrl.inst, 19, 15) + node rs2_addr = bits(ctrl.inst, 24, 20) + reg st_type : UInt<2> + reg ld_type : UInt + reg wb_sel : UInt + wire T_1433 : UInt<1> + T_1433 := T_1389 + reg wb_en : UInt<1> + reg csr_cmd : UInt + ctrl.pc_sel := Pad(T_959,?) + node T_1434 = bit-not(ctrl.stall) + node T_1435 = bit-not(ctrl.data_re) + node T_1436 = bit-and(T_1434, T_1435) + ctrl.inst_re := Pad(T_1436,?) + node T_1437 = neq(Pad(T_1303,?), Pad(UInt<3>(7),?)) + wire T_1438 : UInt<1> + T_1438 := T_1217 + node T_1439 = bit-or(T_1437, T_1438) + node T_1440 = mux(Pad(T_1439,?), Pad(UInt<1>(1),?), Pad(UInt<1>(0),?)) + ctrl.inst_type := Pad(T_1440,?) + ctrl.A_sel := Pad(T_1002,?) + ctrl.B_sel := Pad(T_1045,?) + ctrl.imm_sel := Pad(T_1088,?) + ctrl.alu_op := Pad(T_1131,?) + ctrl.br_type := Pad(T_1174,?) + ctrl.st_type := Pad(T_1260,?) + node T_1441 = bit-not(ctrl.stall) + when T_1441 : + st_type := Pad(ctrl.st_type,?) + ld_type := Pad(T_1303,?) + wb_sel := Pad(T_1346,?) + wire T_1442 : UInt<1> + T_1442 := T_1389 + wb_en := Pad(T_1442,?) + csr_cmd := Pad(T_1432,?) + node T_1443 = neq(Pad(ctrl.ld_type,?), Pad(UInt<3>(7),?)) + node T_1444 = neq(Pad(T_1303,?), Pad(UInt<3>(7),?)) + node T_1445 = mux(Pad(ctrl.stall,?), Pad(T_1443,?), Pad(T_1444,?)) + ctrl.data_re := Pad(T_1445,?) + ctrl.ld_type := Pad(ld_type,?) + ctrl.wb_en := Pad(wb_en,?) + ctrl.wb_sel := Pad(wb_sel,?) + ctrl.csr_cmd := Pad(csr_cmd,?) diff --git a/test/chisel3/Datapath.fir b/test/chisel3/Datapath.fir new file mode 100644 index 00000000..3b9b0e9c --- /dev/null +++ b/test/chisel3/Datapath.fir @@ -0,0 +1,377 @@ +; RUN: firrtl -i %s -o %s.flo -x X -p c | tee %s.out | FileCheck %s +; CHECK: Done! + +circuit Datapath : + module ALU : + input B : UInt<32> + output out : UInt<32> + output sum : UInt<32> + input A : UInt<32> + input alu_op : UInt<4> + + node T_416 = bits(B, 4, 0) + wire shamt : UInt + shamt := T_416 + node T_417 = add-wrap(Pad(A,?), Pad(B,?)) + node T_418 = sub-wrap(Pad(A,?), Pad(B,?)) + wire T_419 : SInt + T_419 := A + node T_420 = dshr(T_419, shamt) + wire T_421 : UInt + T_421 := T_420 + node T_422 = dshr(A, shamt) + node T_423 = dshl(A, shamt) + node T_424 = bits(T_423, 31, 0) + wire T_425 : SInt + T_425 := A + wire T_426 : SInt + T_426 := B + node T_427 = lt(Pad(T_425,?), Pad(T_426,?)) + wire T_428 : UInt + T_428 := T_427 + node T_429 = lt(Pad(A,?), Pad(B,?)) + node T_430 = bit-and(Pad(A,?), Pad(B,?)) + node T_431 = bit-or(Pad(A,?), Pad(B,?)) + node T_432 = bit-xor(Pad(A,?), Pad(B,?)) + node T_433 = eq(Pad(UInt<4>(10),?), Pad(alu_op,?)) + node T_434 = mux(Pad(T_433,?), Pad(A,?), Pad(B,?)) + node T_435 = eq(Pad(UInt<4>(4),?), Pad(alu_op,?)) + node T_436 = mux(Pad(T_435,?), Pad(T_432,?), Pad(T_434,?)) + node T_437 = eq(Pad(UInt<4>(3),?), Pad(alu_op,?)) + node T_438 = mux(Pad(T_437,?), Pad(T_431,?), Pad(T_436,?)) + node T_439 = eq(Pad(UInt<4>(2),?), Pad(alu_op,?)) + node T_440 = mux(Pad(T_439,?), Pad(T_430,?), Pad(T_438,?)) + node T_441 = eq(Pad(UInt<4>(7),?), Pad(alu_op,?)) + node T_442 = mux(Pad(T_441,?), Pad(T_429,?), Pad(T_440,?)) + node T_443 = eq(Pad(UInt<4>(5),?), Pad(alu_op,?)) + node T_444 = mux(Pad(T_443,?), Pad(T_428,?), Pad(T_442,?)) + node T_445 = eq(Pad(UInt<4>(6),?), Pad(alu_op,?)) + node T_446 = mux(Pad(T_445,?), Pad(T_424,?), Pad(T_444,?)) + node T_447 = eq(Pad(UInt<4>(8),?), Pad(alu_op,?)) + node T_448 = mux(Pad(T_447,?), Pad(T_422,?), Pad(T_446,?)) + node T_449 = eq(Pad(UInt<4>(9),?), Pad(alu_op,?)) + node T_450 = mux(Pad(T_449,?), Pad(T_421,?), Pad(T_448,?)) + node T_451 = eq(Pad(UInt<4>(1),?), Pad(alu_op,?)) + node T_452 = mux(Pad(T_451,?), Pad(T_418,?), Pad(T_450,?)) + node T_453 = eq(Pad(UInt<4>(0),?), Pad(alu_op,?)) + node T_454 = mux(Pad(T_453,?), Pad(T_417,?), Pad(T_452,?)) + out := Pad(T_454,?) + node T_455 = bit(alu_op, 0) + node T_456 = sub-wrap(Pad(UInt<1>(0),?), Pad(B,?)) + node T_457 = mux(Pad(T_455,?), Pad(T_456,?), Pad(B,?)) + node T_458 = add-wrap(Pad(A,?), Pad(T_457,?)) + sum := Pad(T_458,?) + module BrCond : + input br_type : UInt<3> + input rs2 : UInt<32> + input rs1 : UInt<32> + output taken : UInt<1> + + node eq = eq(Pad(rs1,?), Pad(rs2,?)) + node neq = bit-not(eq) + wire T_459 : SInt + T_459 := rs1 + wire T_460 : SInt + T_460 := rs2 + node lt = lt(Pad(T_459,?), Pad(T_460,?)) + node ge = bit-not(lt) + node ltu = lt(Pad(rs1,?), Pad(rs2,?)) + node geu = bit-not(ltu) + node T_461 = UInt<1>(1) + node T_462 = UInt<1>(0) + node T_463 = eq(Pad(br_type,?), Pad(UInt<3>(2),?)) + node T_464 = bit-and(T_463, eq) + node T_465 = eq(Pad(br_type,?), Pad(UInt<3>(6),?)) + node T_466 = bit-and(T_465, neq) + node T_467 = bit-or(T_464, T_466) + node T_468 = eq(Pad(br_type,?), Pad(UInt<3>(1),?)) + node T_469 = bit-and(T_468, lt) + node T_470 = bit-or(T_467, T_469) + node T_471 = eq(Pad(br_type,?), Pad(UInt<3>(5),?)) + node T_472 = bit-and(T_471, ge) + node T_473 = bit-or(T_470, T_472) + node T_474 = eq(Pad(br_type,?), Pad(UInt<3>(0),?)) + node T_475 = bit-and(T_474, ltu) + node T_476 = bit-or(T_473, T_475) + node T_477 = eq(Pad(br_type,?), Pad(UInt<3>(4),?)) + node T_478 = bit-and(T_477, geu) + node T_479 = bit-or(T_476, T_478) + taken := Pad(T_479,?) + module RegFile : + input raddr1 : UInt<5> + input raddr2 : UInt<5> + output rdata1 : UInt<32> + output rdata2 : UInt<32> + input wen : UInt<1> + input waddr : UInt<5> + input wdata : UInt<32> + + mem regs : UInt<32>[32] + node T_480 = bit-or-reduce(raddr1) + accessor T_481 = regs[raddr1] + node T_482 = mux(Pad(T_480,?), Pad(T_481,?), Pad(UInt<1>(0),?)) + rdata1 := Pad(T_482,?) + node T_483 = bit-or-reduce(raddr2) + accessor T_484 = regs[raddr2] + node T_485 = mux(Pad(T_483,?), Pad(T_484,?), Pad(UInt<1>(0),?)) + rdata2 := Pad(T_485,?) + node T_486 = bit-or-reduce(waddr) + node T_487 = bit-and(wen, T_486) + when T_487 : + accessor T_488 = regs[waddr] + T_488 := Pad(wdata,?) + module ImmGenWire : + output out : UInt<32> + input sel : UInt<3> + input inst : UInt<32> + + node T_489 = bits(inst, 31, 20) + wire Iimm : SInt + Iimm := T_489 + node T_490 = bits(inst, 31, 25) + node T_491 = bits(inst, 11, 7) + node T_492 = cat(T_490, T_491) + wire Simm : SInt + Simm := T_492 + node T_493 = bit(inst, 31) + node T_494 = bit(inst, 7) + node T_495 = bits(inst, 30, 25) + node T_496 = bits(inst, 11, 8) + node T_497 = cat(T_493, T_494) + node T_498 = cat(T_496, UInt<1>(0)) + node T_499 = cat(T_495, T_498) + node T_500 = cat(T_497, T_499) + wire Bimm : SInt + Bimm := T_500 + node T_501 = bits(inst, 31, 12) + node T_502 = cat(T_501, UInt<12>(0)) + wire Uimm : SInt + Uimm := T_502 + node T_503 = bit(inst, 31) + node T_504 = bits(inst, 19, 12) + node T_505 = bit(inst, 20) + node T_506 = bits(inst, 30, 25) + node T_507 = bits(inst, 24, 21) + node T_508 = cat(T_504, T_505) + node T_509 = cat(T_503, T_508) + node T_510 = cat(T_507, UInt<1>(0)) + node T_511 = cat(T_506, T_510) + node T_512 = cat(T_509, T_511) + wire Jimm : SInt + Jimm := T_512 + node T_513 = bits(inst, 19, 15) + wire Zimm : UInt + Zimm := T_513 + node T_514 = eq(Pad(UInt<3>(3),?), Pad(sel,?)) + node T_515 = mux(Pad(T_514,?), Pad(Jimm,?), Pad(Zimm,?)) + node T_516 = eq(Pad(UInt<3>(2),?), Pad(sel,?)) + node T_517 = mux(Pad(T_516,?), Pad(Uimm,?), Pad(T_515,?)) + node T_518 = eq(Pad(UInt<3>(4),?), Pad(sel,?)) + node T_519 = mux(Pad(T_518,?), Pad(Bimm,?), Pad(T_517,?)) + node T_520 = eq(Pad(UInt<3>(1),?), Pad(sel,?)) + node T_521 = mux(Pad(T_520,?), Pad(Simm,?), Pad(T_519,?)) + node T_522 = eq(Pad(UInt<3>(0),?), Pad(sel,?)) + node T_523 = mux(Pad(T_522,?), Pad(Iimm,?), Pad(T_521,?)) + out := Pad(T_523,?) + module CSR : + output host : {status : UInt<32>, tohost : UInt<32>, flip hid : UInt<1>} + input src : UInt<32> + input cmd : UInt<2> + output data : UInt<32> + input addr : UInt<12> + + reg reg_tohost : UInt<32> + on-reset reg_tohost := Pad(UInt<32>(0),?) + reg reg_status : UInt<32> + on-reset reg_status := Pad(UInt<32>(0),?) + host.tohost := Pad(reg_tohost,?) + host.status := Pad(reg_status,?) + node T_524 = eq(Pad(UInt<12>(1291),?), Pad(addr,?)) + node T_525 = mux(Pad(T_524,?), Pad(host.hid,?), Pad(UInt<1>(0),?)) + node T_526 = eq(Pad(UInt<12>(1290),?), Pad(addr,?)) + node T_527 = mux(Pad(T_526,?), Pad(reg_status,?), Pad(T_525,?)) + node T_528 = eq(Pad(UInt<12>(1310),?), Pad(addr,?)) + node T_529 = mux(Pad(T_528,?), Pad(reg_tohost,?), Pad(T_527,?)) + wire T_530 : UInt + T_530 := T_529 + data := Pad(T_530,?) + node T_531 = eq(Pad(cmd,?), Pad(UInt<2>(1),?)) + when T_531 : + node T_532 = eq(Pad(addr,?), Pad(UInt<12>(1310),?)) + when T_532 : reg_tohost := Pad(src,?) + node T_533 = eq(Pad(addr,?), Pad(UInt<12>(1290),?)) + when T_533 : reg_status := Pad(src,?) + node T_534 = eq(Pad(cmd,?), Pad(UInt<2>(2),?)) + node T_535 = neq(Pad(src,?), Pad(UInt<1>(0),?)) + node T_536 = bit-and(T_534, T_535) + when T_536 : + node T_537 = eq(Pad(addr,?), Pad(UInt<12>(1310),?)) + when T_537 : + node T_538 = dshl(UInt<1>(1), src) + node T_539 = bit-or(Pad(data,?), Pad(T_538,?)) + reg_tohost := Pad(T_539,?) + node T_540 = eq(Pad(addr,?), Pad(UInt<12>(1290),?)) + when T_540 : + node T_541 = dshl(UInt<1>(1), src) + node T_542 = bit-or(Pad(data,?), Pad(T_541,?)) + reg_status := Pad(T_542,?) + node T_543 = eq(Pad(cmd,?), Pad(UInt<2>(3),?)) + node T_544 = neq(Pad(src,?), Pad(UInt<1>(0),?)) + node T_545 = bit-and(T_543, T_544) + when T_545 : + node T_546 = eq(Pad(addr,?), Pad(UInt<12>(1310),?)) + when T_546 : + node T_547 = dshl(UInt<1>(0), src) + node T_548 = bit-and(Pad(data,?), Pad(T_547,?)) + reg_tohost := Pad(T_548,?) + node T_549 = eq(Pad(addr,?), Pad(UInt<12>(1290),?)) + when T_549 : + node T_550 = dshl(UInt<1>(0), src) + node T_551 = bit-and(Pad(data,?), Pad(T_550,?)) + reg_status := Pad(T_551,?) + module Datapath : + output host : {status : UInt<32>, tohost : UInt<32>, flip hid : UInt<1>} + output dcache : {re : UInt<1>, we : UInt<4>, addr : UInt<32>, flip dout : UInt<32>, din : UInt<32>} + input stall : UInt<1> + input ctrl : {flip inst : UInt<32>, flip stall : UInt<1>, imm_sel : UInt<3>, wb_en : UInt<1>, wb_sel : UInt<2>, A_sel : UInt<1>, B_sel : UInt<1>, alu_op : UInt<4>, br_type : UInt<3>, data_re : UInt<1>, st_type : UInt<2>, ld_type : UInt<3>, csr_cmd : UInt<2>, pc_sel : UInt<1>, inst_type : UInt<1>, inst_re : UInt<1>} + output icache : {re : UInt<1>, we : UInt<4>, addr : UInt<32>, flip dout : UInt<32>, din : UInt<32>} + + inst alu of ALU + inst brCond of BrCond + inst regFile of RegFile + inst immGen of ImmGenWire + reg fe_inst : UInt<32> + on-reset fe_inst := Pad(UInt<32>(0),?) + reg fe_pc : UInt + reg ew_inst : UInt<32> + on-reset ew_inst := Pad(UInt<32>(0),?) + reg ew_pc : UInt + reg ew_alu : UInt + node T_552 = sub-wrap(Pad(UInt<14>(8192),?), Pad(UInt<3>(4),?)) + reg pc : UInt + on-reset pc := Pad(T_552,?) + node T_553 = eq(Pad(ctrl.pc_sel,?), Pad(UInt<1>(1),?)) + node T_554 = bit-or(T_553, brCond.taken) + node T_555 = add-wrap(Pad(pc,?), Pad(UInt<3>(4),?)) + node iaddr = mux(Pad(T_554,?), Pad(alu.sum,?), Pad(T_555,?)) + node T_556 = eq(Pad(ctrl.inst_type,?), Pad(UInt<1>(1),?)) + node T_557 = bit-or(T_556, brCond.taken) + node inst = mux(Pad(T_557,?), Pad(UInt<5>(19),?), Pad(icache.dout,?)) + icache.addr := Pad(iaddr,?) + icache.re := Pad(ctrl.inst_re,?) + node T_558 = bit-or-reduce(dcache.we) + node T_559 = bit-not(T_558) + node T_560 = bit-and(icache.re, T_559) + node T_561 = mux(Pad(T_560,?), Pad(iaddr,?), Pad(pc,?)) + pc := Pad(T_561,?) + node T_562 = bit-not(stall) + when T_562 : + fe_pc := Pad(pc,?) + fe_inst := Pad(inst,?) + ctrl.inst := Pad(fe_inst,?) + ctrl.stall := Pad(stall,?) + node rd_addr = bits(fe_inst, 11, 7) + node rs1_addr = bits(fe_inst, 19, 15) + node rs2_addr = bits(fe_inst, 24, 20) + regFile.raddr1 := Pad(rs1_addr,?) + regFile.raddr2 := Pad(rs2_addr,?) + immGen.inst := Pad(fe_inst,?) + immGen.sel := Pad(ctrl.imm_sel,?) + node rs1NotZero = bit-or-reduce(rs1_addr) + node rs2NotZero = bit-or-reduce(rs2_addr) + node T_563 = eq(Pad(ctrl.wb_sel,?), Pad(UInt<2>(0),?)) + node alutype = bit-and(ctrl.wb_en, T_563) + node ex_rd_addr = bits(ew_inst, 11, 7) + node T_564 = bit-and(alutype, rs1NotZero) + node T_565 = eq(Pad(rs1_addr,?), Pad(ex_rd_addr,?)) + node T_566 = bit-and(T_564, T_565) + node rs1 = mux(Pad(T_566,?), Pad(ew_alu,?), Pad(regFile.rdata1,?)) + node T_567 = bit-and(alutype, rs2NotZero) + node T_568 = eq(Pad(rs2_addr,?), Pad(ex_rd_addr,?)) + node T_569 = bit-and(T_567, T_568) + node rs2 = mux(Pad(T_569,?), Pad(ew_alu,?), Pad(regFile.rdata2,?)) + node T_570 = eq(Pad(ctrl.A_sel,?), Pad(UInt<1>(0),?)) + node T_571 = mux(Pad(T_570,?), Pad(rs1,?), Pad(fe_pc,?)) + alu.A := Pad(T_571,?) + node T_572 = eq(Pad(ctrl.B_sel,?), Pad(UInt<1>(0),?)) + node T_573 = mux(Pad(T_572,?), Pad(rs2,?), Pad(immGen.out,?)) + alu.B := Pad(T_573,?) + alu.alu_op := Pad(ctrl.alu_op,?) + brCond.rs1 := Pad(rs1,?) + brCond.rs2 := Pad(rs2,?) + brCond.br_type := Pad(ctrl.br_type,?) + node T_574 = bit(alu.sum, 1) + node T_575 = dshl(T_574, UInt<3>(4)) + node T_576 = bit(alu.sum, 0) + node T_577 = dshl(T_576, UInt<2>(3)) + node woffset = bit-or(Pad(T_575,?), Pad(T_577,?)) + dcache.re := Pad(ctrl.data_re,?) + node T_578 = mux(Pad(stall,?), Pad(ew_alu,?), Pad(alu.sum,?)) + dcache.addr := Pad(T_578,?) + node T_579 = bits(alu.sum, 1, 0) + node T_580 = dshl(UInt<2>(3), T_579) + node T_581 = bits(alu.sum, 1, 0) + node T_582 = dshl(UInt<1>(1), T_581) + node T_583 = eq(Pad(UInt<2>(2),?), Pad(ctrl.st_type,?)) + node T_584 = mux(Pad(T_583,?), Pad(T_582,?), Pad(UInt<1>(0),?)) + node T_585 = eq(Pad(UInt<2>(1),?), Pad(ctrl.st_type,?)) + node T_586 = mux(Pad(T_585,?), Pad(T_580,?), Pad(T_584,?)) + node T_587 = eq(Pad(UInt<2>(0),?), Pad(ctrl.st_type,?)) + node T_588 = mux(Pad(T_587,?), Pad(UInt<4>(15),?), Pad(T_586,?)) + node T_589 = mux(Pad(stall,?), Pad(UInt<1>(0),?), Pad(T_588,?)) + dcache.we := Pad(T_589,?) + node T_590 = dshl(rs2, woffset) + dcache.din := Pad(T_590,?) + node T_591 = bit-not(stall) + when T_591 : + ew_pc := Pad(fe_pc,?) + ew_inst := Pad(fe_inst,?) + ew_alu := Pad(alu.out,?) + node T_592 = bit(ew_alu, 1) + node T_593 = dshl(T_592, UInt<3>(4)) + node T_594 = bit(ew_alu, 0) + node T_595 = dshl(T_594, UInt<2>(3)) + node loffset = bit-or(Pad(T_593,?), Pad(T_595,?)) + node lshift = dshr(dcache.dout, loffset) + node T_596 = bits(lshift, 15, 0) + wire T_597 : SInt + T_597 := T_596 + node T_598 = Pad(T_597, 32) + wire T_599 : UInt + T_599 := T_598 + node T_600 = bits(lshift, 7, 0) + wire T_601 : SInt + T_601 := T_600 + node T_602 = Pad(T_601, 32) + wire T_603 : UInt + T_603 := T_602 + node T_604 = bits(lshift, 15, 0) + wire T_605 : UInt + T_605 := T_604 + node T_606 = bits(lshift, 7, 0) + wire T_607 : UInt + T_607 := T_606 + node T_608 = eq(Pad(UInt<3>(4),?), Pad(ctrl.ld_type,?)) + node T_609 = mux(Pad(T_608,?), Pad(T_607,?), Pad(dcache.dout,?)) + node T_610 = eq(Pad(UInt<3>(3),?), Pad(ctrl.ld_type,?)) + node T_611 = mux(Pad(T_610,?), Pad(T_605,?), Pad(T_609,?)) + node T_612 = eq(Pad(UInt<3>(2),?), Pad(ctrl.ld_type,?)) + node T_613 = mux(Pad(T_612,?), Pad(T_603,?), Pad(T_611,?)) + node T_614 = eq(Pad(UInt<3>(1),?), Pad(ctrl.ld_type,?)) + node load = mux(Pad(T_614,?), Pad(T_599,?), Pad(T_613,?)) + inst csr of CSR + csr.host := host + csr.src := Pad(ew_alu,?) + node T_615 = bits(ew_inst, 31, 20) + csr.addr := Pad(T_615,?) + csr.cmd := Pad(ctrl.csr_cmd,?) + node T_616 = add-wrap(Pad(ew_pc,?), Pad(UInt<3>(4),?)) + node T_617 = eq(Pad(UInt<2>(3),?), Pad(ctrl.wb_sel,?)) + node T_618 = mux(Pad(T_617,?), Pad(csr.data,?), Pad(ew_alu,?)) + node T_619 = eq(Pad(UInt<2>(2),?), Pad(ctrl.wb_sel,?)) + node T_620 = mux(Pad(T_619,?), Pad(T_616,?), Pad(T_618,?)) + node T_621 = eq(Pad(UInt<2>(1),?), Pad(ctrl.wb_sel,?)) + node regWrite = mux(Pad(T_621,?), Pad(load,?), Pad(T_620,?)) + regFile.wen := Pad(ctrl.wb_en,?) + regFile.waddr := Pad(ex_rd_addr,?) + regFile.wdata := Pad(regWrite,?) diff --git a/test/errors/high-form/Flip-Mem.fir b/test/errors/high-form/Flip-Mem.fir new file mode 100644 index 00000000..67fae14f --- /dev/null +++ b/test/errors/high-form/Flip-Mem.fir @@ -0,0 +1,6 @@ +; RUN: firrtl -i %s -o %s.flo -x X -p c | tee %s.out | FileCheck %s +; CHECK: Memory m cannot be a bundle type with flips. + +circuit Flip-Mem : + module Flip-Mem : + mem m : {x : UInt<3>, flip y : UInt<5>}[10] diff --git a/test/errors/high-form/Top.fir b/test/errors/high-form/Top.fir new file mode 100644 index 00000000..1d663c9c --- /dev/null +++ b/test/errors/high-form/Top.fir @@ -0,0 +1,9 @@ + +; RUN: firrtl -i %s -o %s.flo -x X -p c | tee %s.out | FileCheck %s +; CHECK: A single module must be named Top. + +circuit Top : + module Top1 : + wire x : UInt<1> + module Top2 : + wire x : UInt<1> diff --git a/test/errors/parser/Nested-Module.fir b/test/errors/parser/Nested-Module.fir new file mode 100644 index 00000000..3f06db76 --- /dev/null +++ b/test/errors/parser/Nested-Module.fir @@ -0,0 +1,6 @@ +; RUN: firrtl -i %s -o %s.flo -x X -p c | tee %s.out | FileCheck %s +; CHECK: FIRRTL Parsing Error: Expected a statement here. + +circuit Nested-Module : + module Top : + module Child : diff --git a/test/errors/parser/Statements-in-Circuit.fir b/test/errors/parser/Statements-in-Circuit.fir new file mode 100644 index 00000000..5f675e82 --- /dev/null +++ b/test/errors/parser/Statements-in-Circuit.fir @@ -0,0 +1,5 @@ +; RUN: firrtl -i %s -o %s.flo -x X -p c | tee %s.out | FileCheck %s +; CHECK: FIRRTL Parsing Error: Expected a module declaration here. + +circuit Statement-in-Circuit : + node x : UInt(1) diff --git a/test/syntax/letrec-non-struct.fir b/test/syntax/letrec-non-struct.fir deleted file mode 100644 index 37fb2123..00000000 --- a/test/syntax/letrec-non-struct.fir +++ /dev/null @@ -1,9 +0,0 @@ -; RUN: firrtl %s | tee %s.out | FileCheck %s -circuit top: - module top: - input x : UInt(16) - output y : UInt(16) - letrec: - reg r : UInt(10) - in: - r := UInt(11) |
