diff --git a/libtrellis/tests/.gitignore b/libtrellis/tests/.gitignore
deleted file mode 100644
index 9d931c4..0000000
--- a/libtrellis/tests/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-work/
diff --git a/libtrellis/tests/bitstream_io.py b/libtrellis/tests/bitstream_io.py
deleted file mode 100644
index b02b3aa..0000000
--- a/libtrellis/tests/bitstream_io.py
+++ /dev/null
@@ -1,28 +0,0 @@
-import pytrellis
-
-pytrellis.load_database("./testdata")
-c = pytrellis.Chip("testdev")
-bits = {
-    (0, 0),
-    (10, 0),
-    (399, 0),
-    (0, 98),
-    (399, 97)
-}
-for b in bits:
-    c.cram.set_bit(b[0], b[1], 1)
-
-bs = pytrellis.Bitstream.serialise_chip(c)
-bs.metadata.append("test_metadata")
-bs.write_bit("work/bitstream_io.bit")
-
-bs2 = pytrellis.Bitstream.read_bit("work/bitstream_io.bit")
-assert(list(bs2.metadata) == ["test_metadata"])
-c2 = bs2.deserialise_chip()
-for f in range(c2.cram.frames()):
-    for b in range(c2.cram.bits()):
-        if (f, b) in bits:
-            assert c2.cram.bit(f, b)
-        else:
-            assert not c2.cram.bit(f, b)
-
diff --git a/libtrellis/tests/run_all.sh b/libtrellis/tests/run_all.sh
deleted file mode 100755
index 804095b..0000000
--- a/libtrellis/tests/run_all.sh
+++ /dev/null
@@ -1,31 +0,0 @@
-#!/usr/bin/bash
-
-# Run all Python scripts testing prjtrellis functions
-# Script return codes: 0=success, 1=failure, 2=skipped
-DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
-export PYTHONPATH=../
-total=0
-pass=0
-skipped=0
-fail=0
-
-mkdir -p ${DIR}/work
-
-for f in ${DIR}/*.py; do
-    python3 $f
-    RC="$?"
-    let total++
-    if [[ "$RC" -eq 0 ]]; then
-        echo "******** Test ${f} passed."
-        let pass++
-    elif [[ "$RC" -eq 1 ]]; then
-        echo "******** Test ${f} failed."
-        let fail++
-    elif [[ "$RC" -eq 2 ]]; then
-        echo "******** Test ${f} skipped."
-        let skipped++
-    fi
-
-done
-
-echo "${total} total, ${pass} passed, ${skipped} skipped, ${fail} failed"
diff --git a/libtrellis/tests/testdata/devices.json b/libtrellis/tests/testdata/devices.json
deleted file mode 100644
index 9409cc3..0000000
--- a/libtrellis/tests/testdata/devices.json
+++ /dev/null
@@ -1,30 +0,0 @@
-{
-  "families": {
-    "ECP5": {
-      "devices": {
-        "LFE5U-25F": {
-          "packages": ["csfBGA285", "caBGA256", "caBGA381", "caBGA554", "caBGA756"],
-          "idcode": "0x41111043",
-          "frames": 7562,
-          "bits_per_frame": 592,
-          "pad_bits_after_frame": 0,
-          "pad_bits_before_frame": 0,
-          "fuzz": 1
-        }
-      }
-    },
-    "test": {
-      "devices": {
-        "testdev": {
-          "packages": ["QFN32"],
-          "idcode": "0xDEADBEEF",
-          "frames": 400,
-          "bits_per_frame": 100,
-          "pad_bits_after_frame": 4,
-          "pad_bits_before_frame": 0,
-          "fuzz": 1
-        }
-      }
-    }
-  }
-}
diff --git a/libtrellis/tests/testdata/test/testdev/tilegrid.json b/libtrellis/tests/testdata/test/testdev/tilegrid.json
deleted file mode 100644
index 9fc1a8d..0000000
--- a/libtrellis/tests/testdata/test/testdev/tilegrid.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
-  "TEST_R0C0:TESTTILE": {
-    "cols": 20,
-    "rows": 10,
-    "sites": [
-
-    ],
-    "start_bit": 15,
-    "start_frame": 10,
-    "type": "TESTTILE"
-  }
-}
diff --git a/libtrellis/tests/testdata/test/tiledata/TESTTILE/bits.db b/libtrellis/tests/testdata/test/tiledata/TESTTILE/bits.db
deleted file mode 100644
index 108ee3d..0000000
--- a/libtrellis/tests/testdata/test/tiledata/TESTTILE/bits.db
+++ /dev/null
@@ -1,17 +0,0 @@
-.mux A0
-H0 F0B0 F0B2
-H1 F0B1 F0B2
-H2 F0B0 F0B3
-Q0 F0B1 F0B3
-
-.config INIT 1111
-!F1B0
-!F1B1
-!F1B2
-!F1B3
-
-.config_enum MODE LOGIC
-LOGIC
-CARRY F2B0
-DPRAM F2B1
-
diff --git a/libtrellis/tests/tile_cram.py b/libtrellis/tests/tile_cram.py
deleted file mode 100644
index 03f70f6..0000000
--- a/libtrellis/tests/tile_cram.py
+++ /dev/null
@@ -1,24 +0,0 @@
-#!/usr/bin/env python3
-import pytrellis
-
-pytrellis.load_database("./testdata")
-c = pytrellis.Chip("testdev")
-bits = {
-    (0, 0),
-    (15, 10),
-    (34, 11),
-    (34, 19)
-}
-for b in bits:
-    c.cram.set_bit(b[0], b[1], 1)
-
-tcram = c.tiles["TEST_R0C0:TESTTILE"].cram
-assert tcram.frames() == 20
-assert tcram.bits() == 10
-
-for f in range(tcram.frames()):
-    for b in range(tcram.bits()):
-        if (f + 10, b + 15) in bits:
-            assert tcram.bit(f, b)
-        else:
-            assert not tcram.bit(f, b)
diff --git a/libtrellis/tests/tile_db.py b/libtrellis/tests/tile_db.py
deleted file mode 100755
index 5d3a67d..0000000
--- a/libtrellis/tests/tile_db.py
+++ /dev/null
@@ -1,36 +0,0 @@
-#!/usr/bin/env python3
-import pytrellis
-
-pytrellis.load_database("./testdata")
-c = pytrellis.Chip("testdev")
-
-assert c.get_max_row() == 0
-assert c.get_max_col() == 0
-
-bits = {
-    (0, 0),
-    (0, 3),
-    (1, 0),
-    (1, 2),
-    (2, 0),
-    (5, 3)
-}
-for b in bits:
-    c.cram.set_bit(10 + b[0], 15 + b[1], 1)
-
-tcram = c.tiles["TEST_R0C0:TESTTILE"].cram
-assert tcram.frames() == 20
-assert tcram.bits() == 10
-
-tl = pytrellis.TileLocator("test", "testdev", "TESTTILE")
-
-tiledb = pytrellis.get_tile_bitdata(tl)
-cfg = tiledb.tile_cram_to_config(tcram)
-assert len(cfg.carcs) == 1
-assert cfg.carcs[0].source == "H2" and cfg.carcs[0].sink == "A0"
-assert len(cfg.cwords) == 1
-assert cfg.cwords[0].name == "INIT" and list(cfg.cwords[0].value) == [0, 1, 0, 1]
-assert len(cfg.cenums) == 1
-assert cfg.cenums[0].name == "MODE" and cfg.cenums[0].value == "CARRY"
-assert len(cfg.cunknowns) == 1
-assert cfg.cunknowns[0].frame == 5 and cfg.cunknowns[0].bit == 3
