diff --git a/fab.dcm b/fab.dcm
index 07ef9893bd0e9741490659e853b9b7c9803d3676..3e1dffcac474276e96182009a2d5b8959ba701f2 100644
--- a/fab.dcm
+++ b/fab.dcm
@@ -109,6 +109,12 @@ K LED RGB diode common anode RABG
 F https://www.cree.com/led-components/media/documents/ds-CLV1A-FKB.pdf
 $ENDCMP
 #
+$CMP Logic_ICE40HX1K-TQ144
+D iCE40 HX FPGA, 1280 LUTs, 1.2V, TQFP-144
+K FPGA programmable logic
+F http://www.latticesemi.com/Products/FPGAandCPLD/iCE40
+$ENDCMP
+#
 $CMP MOSFET_N-CH_30V_1.7A
 D N-Channel mosfet NDS355AN in SOT-23 package
 K field effect transistor
@@ -241,12 +247,6 @@ K phototransistor NPN
 F https://www.everlight.com/file/ProductFile/PT15-21C-TR8.pdf
 $ENDCMP
 #
-$CMP ProgrammableLogic_ICE40HX1K-TQ144
-D iCE40 HX FPGA, 1280 LUTs, 1.2V, TQFP-144
-K FPGA programmable logic
-F http://www.latticesemi.com/Products/FPGAandCPLD/iCE40
-$ENDCMP
-#
 $CMP R
 D Resistor
 K R res resistor
diff --git a/fab.lib b/fab.lib
index 016bce57039f4ea8adbcdf32f61c96cb7862444c..1a421cc16c2bc8f27bdf72455ed064ea615e8436 100644
--- a/fab.lib
+++ b/fab.lib
@@ -1011,6 +1011,169 @@ X GK 4 -200 0 100 R 50 50 1 1 P
 ENDDRAW
 ENDDEF
 #
+# Logic_ICE40HX1K-TQ144
+#
+DEF Logic_ICE40HX1K-TQ144 U 0 20 Y Y 5 L N
+F0 "U" -250 1450 50 H V C CNN
+F1 "Logic_ICE40HX1K-TQ144" 400 1450 50 H V C CNN
+F2 "fab:TQFP-144_20x20mm_P0.5mm" 0 -1450 50 H I C CNN
+F3 "" -850 1400 50 H I C CNN
+$FPLIST
+ TQFP*20x20mm*P0.5mm*
+$ENDFPLIST
+DRAW
+S -350 1250 350 -1250 1 1 10 f
+S -350 1350 350 -1350 2 1 10 f
+S -350 1150 350 -1150 3 1 10 f
+S -350 1350 350 -1350 4 1 10 f
+S -450 550 450 -550 5 1 10 f
+X IOT_73 112 -500 1100 150 R 50 50 1 1 B
+X IOT_74 113 -500 1000 150 R 50 50 1 1 B
+X IOT_75 114 -500 900 150 R 50 50 1 1 B
+X IOT_76 115 -500 800 150 R 50 50 1 1 B
+X IOT_77 116 -500 700 150 R 50 50 1 1 B
+X IOT_78 117 -500 600 150 R 50 50 1 1 B
+X IOT_79 118 -500 500 150 R 50 50 1 1 B
+X IOT_80 119 -500 400 150 R 50 50 1 1 B
+X IOT_81 120 -500 300 150 R 50 50 1 1 B
+X IOT_82 121 -500 200 150 R 50 50 1 1 B
+X IOT_83 122 -500 100 150 R 50 50 1 1 B
+X VCCIO_0 123 0 1400 150 D 50 50 1 1 W
+X IOT_84_GBIN1 128 -500 0 150 R 50 50 1 1 B
+X IOT_85_GBIN0 129 -500 -100 150 R 50 50 1 1 B
+X VCCIO_0 133 0 1400 150 D 50 50 1 1 P N
+X IOT_87 134 -500 -200 150 R 50 50 1 1 B
+X IOT_88 135 -500 -300 150 R 50 50 1 1 B
+X IOT_89 136 -500 -400 150 R 50 50 1 1 B
+X IOT_90 137 -500 -500 150 R 50 50 1 1 B
+X IOT_91 138 -500 -600 150 R 50 50 1 1 B
+X IOT_92 139 -500 -700 150 R 50 50 1 1 B
+X IOT_93 141 -500 -800 150 R 50 50 1 1 B
+X IOT_94 142 -500 -900 150 R 50 50 1 1 B
+X IOT_95 143 -500 -1000 150 R 50 50 1 1 B
+X IOT_96 144 -500 -1100 150 R 50 50 1 1 B
+X NC 15 300 400 150 L 50 50 1 1 N N
+X NC 16 300 300 150 L 50 50 1 1 N N
+X NC 17 300 200 150 L 50 50 1 1 N N
+X NC 18 300 -300 150 L 50 50 1 1 N N
+X NC 77 300 -400 150 L 50 50 1 1 N N
+X VCCIO_1 100 0 1500 150 D 50 50 2 1 P N
+X IOR_67 101 -500 -700 150 R 50 50 2 1 B
+X IOR_68 102 -500 -800 150 R 50 50 2 1 B
+X IOR_69 104 -500 -900 150 R 50 50 2 1 B
+X IOR_70 105 -500 -1000 150 R 50 50 2 1 B
+X IOR_71 106 -500 -1100 150 R 50 50 2 1 B
+X IOR_72 107 -500 -1200 150 R 50 50 2 1 B
+X NC 40 300 400 150 L 50 50 2 1 N N
+X NC 53 300 300 150 L 50 50 2 1 N N
+X NC 54 300 200 150 L 50 50 2 1 N N
+X NC 55 300 -300 150 L 50 50 2 1 N N
+X IOR_48 73 -500 1200 150 R 50 50 2 1 B
+X IOR_49 74 -500 1100 150 R 50 50 2 1 B
+X IOR_50 75 -500 1000 150 R 50 50 2 1 B
+X IOR_51 76 -500 900 150 R 50 50 2 1 B
+X IOR_52 78 -500 800 150 R 50 50 2 1 B
+X IOR_53 79 -500 700 150 R 50 50 2 1 B
+X IOR_54 80 -500 600 150 R 50 50 2 1 B
+X IOR_55 81 -500 500 150 R 50 50 2 1 B
+X NC 82 300 -400 150 L 50 50 2 1 N N
+X IOR_56 87 -500 400 150 R 50 50 2 1 B
+X IOR_57 88 -500 300 150 R 50 50 2 1 B
+X VCCIO_1 89 0 1500 150 D 50 50 2 1 W
+X IOR_58 90 -500 200 150 R 50 50 2 1 B
+X IOR_59 91 -500 100 150 R 50 50 2 1 B
+X IOR_60_GBIN3 93 -500 0 150 R 50 50 2 1 B
+X IOR_61_GBIN2 94 -500 -100 150 R 50 50 2 1 B
+X IOR_62 95 -500 -200 150 R 50 50 2 1 B
+X IOR_63 96 -500 -300 150 R 50 50 2 1 B
+X IOR_64 97 -500 -400 150 R 50 50 2 1 B
+X IOR_65 98 -500 -500 150 R 50 50 2 1 B
+X IOR_66 99 -500 -600 150 R 50 50 2 1 B
+X NC 110 300 -400 150 L 50 50 3 1 N N
+X NC 124 300 -700 150 L 50 50 3 1 N N
+X IOB_24 37 -500 900 150 R 50 50 3 1 B
+X IOB_25 38 -500 800 150 R 50 50 3 1 B
+X IOB_26 39 -500 700 150 R 50 50 3 1 B
+X IOB_27 41 -500 600 150 R 50 50 3 1 B
+X IOB_28 42 -500 500 150 R 50 50 3 1 B
+X IOB_29 43 -500 400 150 R 50 50 3 1 B
+X IOB_30 44 -500 300 150 R 50 50 3 1 B
+X IOB_31 45 -500 200 150 R 50 50 3 1 B
+X VCCIO_2 46 0 1300 150 D 50 50 3 1 W
+X IOB_32 47 -500 100 150 R 50 50 3 1 B
+X IOB_33 48 -500 0 150 R 50 50 3 1 B
+X IOB_35_GBIN5 49 -500 -100 150 R 50 50 3 1 B
+X IOB_36_GBIN4 50 -500 -200 150 R 50 50 3 1 B
+X IOB_34 52 -500 -300 150 R 50 50 3 1 B
+X IOB_37 56 -500 -400 150 R 50 50 3 1 B
+X VCCIO_2 57 0 1300 150 D 50 50 3 1 P N
+X IOB_38 58 -500 -500 150 R 50 50 3 1 B
+X IOB_39 60 -500 -600 150 R 50 50 3 1 B
+X IOB_40 61 -500 -700 150 R 50 50 3 1 B
+X IOB_41 62 -500 -800 150 R 50 50 3 1 B
+X IOB_42_CBSEL0 63 -500 -900 150 R 50 50 3 1 B
+X IOB_43_CBSEL1 64 -500 -1000 150 R 50 50 3 1 B
+X NC 83 300 400 150 L 50 50 3 1 N N
+X NC 84 300 300 150 L 50 50 3 1 N N
+X NC 85 300 -500 150 L 50 50 3 1 N N
+X IOL_1A 1 -500 1100 150 R 50 50 4 1 B
+X IOL_4B 10 -500 400 150 R 50 50 4 1 B
+X IOL_5A 11 -500 300 150 R 50 50 4 1 B
+X IOL_5B 12 -500 200 150 R 50 50 4 1 B
+X NC 125 300 400 150 L 50 50 4 1 N N
+X NC 126 300 300 150 L 50 50 4 1 N N
+X NC 127 300 200 150 L 50 50 4 1 N N
+X NC 130 300 -300 150 L 50 50 4 1 N N
+X NC 131 300 -400 150 L 50 50 4 1 N N
+X IOL_6A 19 -500 100 150 R 50 50 4 1 B
+X IOL_1B 2 -500 1000 150 R 50 50 4 1 B
+X IOL_6B_GBIN7 20 -500 0 150 R 50 50 4 1 B
+X IOL_7A_GBIN6 21 -500 -100 150 R 50 50 4 1 B
+X IOL_7B 22 -500 -200 150 R 50 50 4 1 B
+X IOL_8A 23 -500 -300 150 R 50 50 4 1 B
+X IOL_8B 24 -500 -400 150 R 50 50 4 1 B
+X IOL_9A 25 -500 -500 150 R 50 50 4 1 B
+X IOL_9B 26 -500 -600 150 R 50 50 4 1 B
+X IOL_10A 28 -500 -700 150 R 50 50 4 1 B
+X IOL_10B 29 -500 -800 150 R 50 50 4 1 B
+X IOL_2A 3 -500 900 150 R 50 50 4 1 B
+X VCCIO_3 30 0 1500 150 D 50 50 4 1 P N
+X IOL_11A 31 -500 -900 150 R 50 50 4 1 B
+X IOL_11B 32 -500 -1000 150 R 50 50 4 1 B
+X IOL_12A 33 -500 -1100 150 R 50 50 4 1 B
+X IOL_12B 34 -500 -1200 150 R 50 50 4 1 B
+X IOL_2B 4 -500 800 150 R 50 50 4 1 B
+X VCCIO_3 6 0 1500 150 D 50 50 4 1 W
+X IOL_3A 7 -500 700 150 R 50 50 4 1 B
+X IOL_3B 8 -500 600 150 R 50 50 4 1 B
+X IOL_4A 9 -500 500 150 R 50 50 4 1 B
+X GND 103 0 -700 150 U 50 50 5 1 P N
+X VPP_2V5 108 100 700 150 D 50 50 5 1 W
+X VPP_FAST 109 -100 700 150 D 50 50 5 1 W
+X VCC 111 0 700 150 D 50 50 5 1 P N
+X GND 13 0 -700 150 U 50 50 5 1 P N
+X GND 132 0 -700 150 U 50 50 5 1 P N
+X GND 14 0 -700 150 U 50 50 5 1 P N
+X GND 140 0 -700 150 U 50 50 5 1 P N
+X VCC 27 0 700 150 D 50 50 5 1 W
+X GNDPLL 35 300 -700 150 U 50 50 5 1 W
+X VCCPLL 36 300 700 150 D 50 50 5 1 W
+X GND 5 0 -700 150 U 50 50 5 1 W
+X VCC 51 0 700 150 D 50 50 5 1 P N
+X GND 59 0 -700 150 U 50 50 5 1 P N
+X CDONE 65 600 0 150 L 50 50 5 1 C
+X ~CRESET_B 66 -600 -400 150 R 50 50 5 1 I
+X IOB_44_SDO 67 -600 100 150 R 50 50 5 1 B
+X IOB_45_SDI 68 -600 0 150 R 50 50 5 1 B
+X GND 69 0 -700 150 U 50 50 5 1 P N
+X IOB_46_SCK 70 -600 -100 150 R 50 50 5 1 B
+X IOB_47_SS 71 -600 -200 150 R 50 50 5 1 B
+X VCC_SPI 72 -300 700 150 D 50 50 5 1 W
+X GND 86 0 -700 150 U 50 50 5 1 P N
+X VCC 92 0 700 150 D 50 50 5 1 P N
+ENDDRAW
+ENDDEF
+#
 # MICRO-USB_1_100
 #
 DEF MICRO-USB_1_100 M 0 40 N Y 1 L N
@@ -2611,169 +2774,6 @@ X E 2 100 -200 100 U 50 50 1 1 P
 ENDDRAW
 ENDDEF
 #
-# ProgrammableLogic_ICE40HX1K-TQ144
-#
-DEF ProgrammableLogic_ICE40HX1K-TQ144 U 0 20 Y Y 5 L N
-F0 "U" -250 1450 50 H V C CNN
-F1 "ProgrammableLogic_ICE40HX1K-TQ144" 400 1450 50 H V C CNN
-F2 "fab:TQFP-144_20x20mm_P0.5mm" 0 -1450 50 H I C CNN
-F3 "" -850 1400 50 H I C CNN
-$FPLIST
- TQFP*20x20mm*P0.5mm*
-$ENDFPLIST
-DRAW
-S -350 1250 350 -1250 1 1 10 f
-S -350 1350 350 -1350 2 1 10 f
-S -350 1150 350 -1150 3 1 10 f
-S -350 1350 350 -1350 4 1 10 f
-S -450 550 450 -550 5 1 10 f
-X IOT_73 112 -500 1100 150 R 50 50 1 1 B
-X IOT_74 113 -500 1000 150 R 50 50 1 1 B
-X IOT_75 114 -500 900 150 R 50 50 1 1 B
-X IOT_76 115 -500 800 150 R 50 50 1 1 B
-X IOT_77 116 -500 700 150 R 50 50 1 1 B
-X IOT_78 117 -500 600 150 R 50 50 1 1 B
-X IOT_79 118 -500 500 150 R 50 50 1 1 B
-X IOT_80 119 -500 400 150 R 50 50 1 1 B
-X IOT_81 120 -500 300 150 R 50 50 1 1 B
-X IOT_82 121 -500 200 150 R 50 50 1 1 B
-X IOT_83 122 -500 100 150 R 50 50 1 1 B
-X VCCIO_0 123 0 1400 150 D 50 50 1 1 W
-X IOT_84_GBIN1 128 -500 0 150 R 50 50 1 1 B
-X IOT_85_GBIN0 129 -500 -100 150 R 50 50 1 1 B
-X VCCIO_0 133 0 1400 150 D 50 50 1 1 P N
-X IOT_87 134 -500 -200 150 R 50 50 1 1 B
-X IOT_88 135 -500 -300 150 R 50 50 1 1 B
-X IOT_89 136 -500 -400 150 R 50 50 1 1 B
-X IOT_90 137 -500 -500 150 R 50 50 1 1 B
-X IOT_91 138 -500 -600 150 R 50 50 1 1 B
-X IOT_92 139 -500 -700 150 R 50 50 1 1 B
-X IOT_93 141 -500 -800 150 R 50 50 1 1 B
-X IOT_94 142 -500 -900 150 R 50 50 1 1 B
-X IOT_95 143 -500 -1000 150 R 50 50 1 1 B
-X IOT_96 144 -500 -1100 150 R 50 50 1 1 B
-X NC 15 300 400 150 L 50 50 1 1 N N
-X NC 16 300 300 150 L 50 50 1 1 N N
-X NC 17 300 200 150 L 50 50 1 1 N N
-X NC 18 300 -300 150 L 50 50 1 1 N N
-X NC 77 300 -400 150 L 50 50 1 1 N N
-X VCCIO_1 100 0 1500 150 D 50 50 2 1 P N
-X IOR_67 101 -500 -700 150 R 50 50 2 1 B
-X IOR_68 102 -500 -800 150 R 50 50 2 1 B
-X IOR_69 104 -500 -900 150 R 50 50 2 1 B
-X IOR_70 105 -500 -1000 150 R 50 50 2 1 B
-X IOR_71 106 -500 -1100 150 R 50 50 2 1 B
-X IOR_72 107 -500 -1200 150 R 50 50 2 1 B
-X NC 40 300 400 150 L 50 50 2 1 N N
-X NC 53 300 300 150 L 50 50 2 1 N N
-X NC 54 300 200 150 L 50 50 2 1 N N
-X NC 55 300 -300 150 L 50 50 2 1 N N
-X IOR_48 73 -500 1200 150 R 50 50 2 1 B
-X IOR_49 74 -500 1100 150 R 50 50 2 1 B
-X IOR_50 75 -500 1000 150 R 50 50 2 1 B
-X IOR_51 76 -500 900 150 R 50 50 2 1 B
-X IOR_52 78 -500 800 150 R 50 50 2 1 B
-X IOR_53 79 -500 700 150 R 50 50 2 1 B
-X IOR_54 80 -500 600 150 R 50 50 2 1 B
-X IOR_55 81 -500 500 150 R 50 50 2 1 B
-X NC 82 300 -400 150 L 50 50 2 1 N N
-X IOR_56 87 -500 400 150 R 50 50 2 1 B
-X IOR_57 88 -500 300 150 R 50 50 2 1 B
-X VCCIO_1 89 0 1500 150 D 50 50 2 1 W
-X IOR_58 90 -500 200 150 R 50 50 2 1 B
-X IOR_59 91 -500 100 150 R 50 50 2 1 B
-X IOR_60_GBIN3 93 -500 0 150 R 50 50 2 1 B
-X IOR_61_GBIN2 94 -500 -100 150 R 50 50 2 1 B
-X IOR_62 95 -500 -200 150 R 50 50 2 1 B
-X IOR_63 96 -500 -300 150 R 50 50 2 1 B
-X IOR_64 97 -500 -400 150 R 50 50 2 1 B
-X IOR_65 98 -500 -500 150 R 50 50 2 1 B
-X IOR_66 99 -500 -600 150 R 50 50 2 1 B
-X NC 110 300 -400 150 L 50 50 3 1 N N
-X NC 124 300 -700 150 L 50 50 3 1 N N
-X IOB_24 37 -500 900 150 R 50 50 3 1 B
-X IOB_25 38 -500 800 150 R 50 50 3 1 B
-X IOB_26 39 -500 700 150 R 50 50 3 1 B
-X IOB_27 41 -500 600 150 R 50 50 3 1 B
-X IOB_28 42 -500 500 150 R 50 50 3 1 B
-X IOB_29 43 -500 400 150 R 50 50 3 1 B
-X IOB_30 44 -500 300 150 R 50 50 3 1 B
-X IOB_31 45 -500 200 150 R 50 50 3 1 B
-X VCCIO_2 46 0 1300 150 D 50 50 3 1 W
-X IOB_32 47 -500 100 150 R 50 50 3 1 B
-X IOB_33 48 -500 0 150 R 50 50 3 1 B
-X IOB_35_GBIN5 49 -500 -100 150 R 50 50 3 1 B
-X IOB_36_GBIN4 50 -500 -200 150 R 50 50 3 1 B
-X IOB_34 52 -500 -300 150 R 50 50 3 1 B
-X IOB_37 56 -500 -400 150 R 50 50 3 1 B
-X VCCIO_2 57 0 1300 150 D 50 50 3 1 P N
-X IOB_38 58 -500 -500 150 R 50 50 3 1 B
-X IOB_39 60 -500 -600 150 R 50 50 3 1 B
-X IOB_40 61 -500 -700 150 R 50 50 3 1 B
-X IOB_41 62 -500 -800 150 R 50 50 3 1 B
-X IOB_42_CBSEL0 63 -500 -900 150 R 50 50 3 1 B
-X IOB_43_CBSEL1 64 -500 -1000 150 R 50 50 3 1 B
-X NC 83 300 400 150 L 50 50 3 1 N N
-X NC 84 300 300 150 L 50 50 3 1 N N
-X NC 85 300 -500 150 L 50 50 3 1 N N
-X IOL_1A 1 -500 1100 150 R 50 50 4 1 B
-X IOL_4B 10 -500 400 150 R 50 50 4 1 B
-X IOL_5A 11 -500 300 150 R 50 50 4 1 B
-X IOL_5B 12 -500 200 150 R 50 50 4 1 B
-X NC 125 300 400 150 L 50 50 4 1 N N
-X NC 126 300 300 150 L 50 50 4 1 N N
-X NC 127 300 200 150 L 50 50 4 1 N N
-X NC 130 300 -300 150 L 50 50 4 1 N N
-X NC 131 300 -400 150 L 50 50 4 1 N N
-X IOL_6A 19 -500 100 150 R 50 50 4 1 B
-X IOL_1B 2 -500 1000 150 R 50 50 4 1 B
-X IOL_6B_GBIN7 20 -500 0 150 R 50 50 4 1 B
-X IOL_7A_GBIN6 21 -500 -100 150 R 50 50 4 1 B
-X IOL_7B 22 -500 -200 150 R 50 50 4 1 B
-X IOL_8A 23 -500 -300 150 R 50 50 4 1 B
-X IOL_8B 24 -500 -400 150 R 50 50 4 1 B
-X IOL_9A 25 -500 -500 150 R 50 50 4 1 B
-X IOL_9B 26 -500 -600 150 R 50 50 4 1 B
-X IOL_10A 28 -500 -700 150 R 50 50 4 1 B
-X IOL_10B 29 -500 -800 150 R 50 50 4 1 B
-X IOL_2A 3 -500 900 150 R 50 50 4 1 B
-X VCCIO_3 30 0 1500 150 D 50 50 4 1 P N
-X IOL_11A 31 -500 -900 150 R 50 50 4 1 B
-X IOL_11B 32 -500 -1000 150 R 50 50 4 1 B
-X IOL_12A 33 -500 -1100 150 R 50 50 4 1 B
-X IOL_12B 34 -500 -1200 150 R 50 50 4 1 B
-X IOL_2B 4 -500 800 150 R 50 50 4 1 B
-X VCCIO_3 6 0 1500 150 D 50 50 4 1 W
-X IOL_3A 7 -500 700 150 R 50 50 4 1 B
-X IOL_3B 8 -500 600 150 R 50 50 4 1 B
-X IOL_4A 9 -500 500 150 R 50 50 4 1 B
-X GND 103 0 -700 150 U 50 50 5 1 P N
-X VPP_2V5 108 100 700 150 D 50 50 5 1 W
-X VPP_FAST 109 -100 700 150 D 50 50 5 1 W
-X VCC 111 0 700 150 D 50 50 5 1 P N
-X GND 13 0 -700 150 U 50 50 5 1 P N
-X GND 132 0 -700 150 U 50 50 5 1 P N
-X GND 14 0 -700 150 U 50 50 5 1 P N
-X GND 140 0 -700 150 U 50 50 5 1 P N
-X VCC 27 0 700 150 D 50 50 5 1 W
-X GNDPLL 35 300 -700 150 U 50 50 5 1 W
-X VCCPLL 36 300 700 150 D 50 50 5 1 W
-X GND 5 0 -700 150 U 50 50 5 1 W
-X VCC 51 0 700 150 D 50 50 5 1 P N
-X GND 59 0 -700 150 U 50 50 5 1 P N
-X CDONE 65 600 0 150 L 50 50 5 1 C
-X ~CRESET_B 66 -600 -400 150 R 50 50 5 1 I
-X IOB_44_SDO 67 -600 100 150 R 50 50 5 1 B
-X IOB_45_SDI 68 -600 0 150 R 50 50 5 1 B
-X GND 69 0 -700 150 U 50 50 5 1 P N
-X IOB_46_SCK 70 -600 -100 150 R 50 50 5 1 B
-X IOB_47_SS 71 -600 -200 150 R 50 50 5 1 B
-X VCC_SPI 72 -300 700 150 D 50 50 5 1 W
-X GND 86 0 -700 150 U 50 50 5 1 P N
-X VCC 92 0 700 150 D 50 50 5 1 P N
-ENDDRAW
-ENDDEF
-#
 # R
 #
 DEF R R 0 0 N Y 1 F N