aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorClifford Wolf <clifford@clifford.at>2018-06-13 12:38:28 +0200
committerClifford Wolf <clifford@clifford.at>2018-06-13 12:38:28 +0200
commit145c849596bdcd24f3b4e617eeb4ee06e1b93452 (patch)
tree243d63251d31498f4e92bfdae3ae0d0f087f9957 /tests
parent4d7f18dd98a7ef9540a279a8e27cb9dbef355af7 (diff)
parentde0918c28758b09f638e02ffc04fad989321da1b (diff)
downloadnextpnr-145c849596bdcd24f3b4e617eeb4ee06e1b93452.tar.gz
nextpnr-145c849596bdcd24f3b4e617eeb4ee06e1b93452.tar.bz2
nextpnr-145c849596bdcd24f3b4e617eeb4ee06e1b93452.zip
Merge branch 'master' of gitlab.com:SymbioticEDA/nextpnr
Diffstat (limited to 'tests')
-rw-r--r--tests/dummy/main.cc9
-rw-r--r--tests/dummy/main.cpp18
-rw-r--r--tests/ice40/hx1k.cc87
-rw-r--r--tests/ice40/hx8k.cc87
-rw-r--r--tests/ice40/lp1k.cc87
-rw-r--r--tests/ice40/lp384.cc87
-rw-r--r--tests/ice40/lp8k.cc87
-rw-r--r--tests/ice40/main.cc8
-rw-r--r--tests/ice40/main.cpp18
-rw-r--r--tests/ice40/up5k.cc87
10 files changed, 539 insertions, 36 deletions
diff --git a/tests/dummy/main.cc b/tests/dummy/main.cc
new file mode 100644
index 00000000..1270ccdf
--- /dev/null
+++ b/tests/dummy/main.cc
@@ -0,0 +1,9 @@
+#include "gtest/gtest.h"
+
+#include <vector>
+
+int main(int argc, char **argv)
+{
+ ::testing::InitGoogleTest(&argc, argv);
+ return RUN_ALL_TESTS();
+}
diff --git a/tests/dummy/main.cpp b/tests/dummy/main.cpp
deleted file mode 100644
index b8d22138..00000000
--- a/tests/dummy/main.cpp
+++ /dev/null
@@ -1,18 +0,0 @@
-#include "gtest/gtest.h"
-
-#include <vector>
-
-int main(int argc, char **argv) {
- ::testing::InitGoogleTest(&argc, argv);
- return RUN_ALL_TESTS();
-}
-
-TEST(example, sum_zero) {
- auto result = 0;
- ASSERT_EQ(result, 0);
-}
-
-TEST(example, sum_five) {
- auto result = 15;
- ASSERT_EQ(result, 15);
-}
diff --git a/tests/ice40/hx1k.cc b/tests/ice40/hx1k.cc
new file mode 100644
index 00000000..ceae4c45
--- /dev/null
+++ b/tests/ice40/hx1k.cc
@@ -0,0 +1,87 @@
+#include <vector>
+#include "gtest/gtest.h"
+#include "nextpnr.h"
+
+USING_NEXTPNR_NAMESPACE
+
+class HX1KTest : public ::testing::Test
+{
+ protected:
+ virtual void SetUp()
+ {
+ chipArgs.type = ChipArgs::HX1K;
+ design = new Design(chipArgs);
+ }
+
+ virtual void TearDown() { delete design; }
+
+ ChipArgs chipArgs;
+ Design *design;
+};
+
+TEST_F(HX1KTest, bel_names)
+{
+ int bel_count = 0;
+ for (auto bel : design->chip.getBels()) {
+ auto name = design->chip.getBelName(bel);
+ ASSERT_EQ(bel, design->chip.getBelByName(name));
+ bel_count++;
+ }
+ ASSERT_EQ(bel_count, 1416);
+}
+
+TEST_F(HX1KTest, wire_names)
+{
+ int wire_count = 0;
+ for (auto wire : design->chip.getWires()) {
+ auto name = design->chip.getWireName(wire);
+ assert(wire == design->chip.getWireByName(name));
+ wire_count++;
+ }
+ ASSERT_EQ(wire_count, 27682);
+}
+
+TEST_F(HX1KTest, pip_names)
+{
+ int pip_count = 0;
+ for (auto pip : design->chip.getPips()) {
+ auto name = design->chip.getPipName(pip);
+ assert(pip == design->chip.getPipByName(name));
+ pip_count++;
+ }
+ ASSERT_EQ(pip_count, 319904);
+}
+
+TEST_F(HX1KTest, uphill_to_downhill)
+{
+ for (auto dst : design->chip.getWires()) {
+ for (auto uphill_pip : design->chip.getPipsUphill(dst)) {
+ bool found_downhill = false;
+ for (auto downhill_pip : design->chip.getPipsDownhill(
+ design->chip.getPipSrcWire(uphill_pip))) {
+ if (uphill_pip == downhill_pip) {
+ ASSERT_FALSE(found_downhill);
+ found_downhill = true;
+ }
+ }
+ ASSERT_TRUE(found_downhill);
+ }
+ }
+}
+
+TEST_F(HX1KTest, downhill_to_uphill)
+{
+ for (auto dst : design->chip.getWires()) {
+ for (auto downhill_pip : design->chip.getPipsDownhill(dst)) {
+ bool found_uphill = false;
+ for (auto uphill_pip : design->chip.getPipsUphill(
+ design->chip.getPipDstWire(downhill_pip))) {
+ if (uphill_pip == downhill_pip) {
+ ASSERT_FALSE(found_uphill);
+ found_uphill = true;
+ }
+ }
+ ASSERT_TRUE(found_uphill);
+ }
+ }
+}
diff --git a/tests/ice40/hx8k.cc b/tests/ice40/hx8k.cc
new file mode 100644
index 00000000..060e34dd
--- /dev/null
+++ b/tests/ice40/hx8k.cc
@@ -0,0 +1,87 @@
+#include <vector>
+#include "gtest/gtest.h"
+#include "nextpnr.h"
+
+USING_NEXTPNR_NAMESPACE
+
+class HX8KTest : public ::testing::Test
+{
+ protected:
+ virtual void SetUp()
+ {
+ chipArgs.type = ChipArgs::HX8K;
+ design = new Design(chipArgs);
+ }
+
+ virtual void TearDown() { delete design; }
+
+ ChipArgs chipArgs;
+ Design *design;
+};
+
+TEST_F(HX8KTest, bel_names)
+{
+ int bel_count = 0;
+ for (auto bel : design->chip.getBels()) {
+ auto name = design->chip.getBelName(bel);
+ ASSERT_EQ(bel, design->chip.getBelByName(name));
+ bel_count++;
+ }
+ ASSERT_EQ(bel_count, 7968);
+}
+
+TEST_F(HX8KTest, wire_names)
+{
+ int wire_count = 0;
+ for (auto wire : design->chip.getWires()) {
+ auto name = design->chip.getWireName(wire);
+ assert(wire == design->chip.getWireByName(name));
+ wire_count++;
+ }
+ ASSERT_EQ(wire_count, 135174);
+}
+
+TEST_F(HX8KTest, pip_names)
+{
+ int pip_count = 0;
+ for (auto pip : design->chip.getPips()) {
+ auto name = design->chip.getPipName(pip);
+ assert(pip == design->chip.getPipByName(name));
+ pip_count++;
+ }
+ ASSERT_EQ(pip_count, 1652480);
+}
+
+TEST_F(HX8KTest, uphill_to_downhill)
+{
+ for (auto dst : design->chip.getWires()) {
+ for (auto uphill_pip : design->chip.getPipsUphill(dst)) {
+ bool found_downhill = false;
+ for (auto downhill_pip : design->chip.getPipsDownhill(
+ design->chip.getPipSrcWire(uphill_pip))) {
+ if (uphill_pip == downhill_pip) {
+ ASSERT_FALSE(found_downhill);
+ found_downhill = true;
+ }
+ }
+ ASSERT_TRUE(found_downhill);
+ }
+ }
+}
+
+TEST_F(HX8KTest, downhill_to_uphill)
+{
+ for (auto dst : design->chip.getWires()) {
+ for (auto downhill_pip : design->chip.getPipsDownhill(dst)) {
+ bool found_uphill = false;
+ for (auto uphill_pip : design->chip.getPipsUphill(
+ design->chip.getPipDstWire(downhill_pip))) {
+ if (uphill_pip == downhill_pip) {
+ ASSERT_FALSE(found_uphill);
+ found_uphill = true;
+ }
+ }
+ ASSERT_TRUE(found_uphill);
+ }
+ }
+}
diff --git a/tests/ice40/lp1k.cc b/tests/ice40/lp1k.cc
new file mode 100644
index 00000000..85b35652
--- /dev/null
+++ b/tests/ice40/lp1k.cc
@@ -0,0 +1,87 @@
+#include <vector>
+#include "gtest/gtest.h"
+#include "nextpnr.h"
+
+USING_NEXTPNR_NAMESPACE
+
+class LP1KTest : public ::testing::Test
+{
+ protected:
+ virtual void SetUp()
+ {
+ chipArgs.type = ChipArgs::LP1K;
+ design = new Design(chipArgs);
+ }
+
+ virtual void TearDown() { delete design; }
+
+ ChipArgs chipArgs;
+ Design *design;
+};
+
+TEST_F(LP1KTest, bel_names)
+{
+ int bel_count = 0;
+ for (auto bel : design->chip.getBels()) {
+ auto name = design->chip.getBelName(bel);
+ ASSERT_EQ(bel, design->chip.getBelByName(name));
+ bel_count++;
+ }
+ ASSERT_EQ(bel_count, 1416);
+}
+
+TEST_F(LP1KTest, wire_names)
+{
+ int wire_count = 0;
+ for (auto wire : design->chip.getWires()) {
+ auto name = design->chip.getWireName(wire);
+ assert(wire == design->chip.getWireByName(name));
+ wire_count++;
+ }
+ ASSERT_EQ(wire_count, 27682);
+}
+
+TEST_F(LP1KTest, pip_names)
+{
+ int pip_count = 0;
+ for (auto pip : design->chip.getPips()) {
+ auto name = design->chip.getPipName(pip);
+ assert(pip == design->chip.getPipByName(name));
+ pip_count++;
+ }
+ ASSERT_EQ(pip_count, 319904);
+}
+
+TEST_F(LP1KTest, uphill_to_downhill)
+{
+ for (auto dst : design->chip.getWires()) {
+ for (auto uphill_pip : design->chip.getPipsUphill(dst)) {
+ bool found_downhill = false;
+ for (auto downhill_pip : design->chip.getPipsDownhill(
+ design->chip.getPipSrcWire(uphill_pip))) {
+ if (uphill_pip == downhill_pip) {
+ ASSERT_FALSE(found_downhill);
+ found_downhill = true;
+ }
+ }
+ ASSERT_TRUE(found_downhill);
+ }
+ }
+}
+
+TEST_F(LP1KTest, downhill_to_uphill)
+{
+ for (auto dst : design->chip.getWires()) {
+ for (auto downhill_pip : design->chip.getPipsDownhill(dst)) {
+ bool found_uphill = false;
+ for (auto uphill_pip : design->chip.getPipsUphill(
+ design->chip.getPipDstWire(downhill_pip))) {
+ if (uphill_pip == downhill_pip) {
+ ASSERT_FALSE(found_uphill);
+ found_uphill = true;
+ }
+ }
+ ASSERT_TRUE(found_uphill);
+ }
+ }
+}
diff --git a/tests/ice40/lp384.cc b/tests/ice40/lp384.cc
new file mode 100644
index 00000000..c29938f1
--- /dev/null
+++ b/tests/ice40/lp384.cc
@@ -0,0 +1,87 @@
+#include <vector>
+#include "gtest/gtest.h"
+#include "nextpnr.h"
+
+USING_NEXTPNR_NAMESPACE
+
+class LP384Test : public ::testing::Test
+{
+ protected:
+ virtual void SetUp()
+ {
+ chipArgs.type = ChipArgs::LP384;
+ design = new Design(chipArgs);
+ }
+
+ virtual void TearDown() { delete design; }
+
+ ChipArgs chipArgs;
+ Design *design;
+};
+
+TEST_F(LP384Test, bel_names)
+{
+ int bel_count = 0;
+ for (auto bel : design->chip.getBels()) {
+ auto name = design->chip.getBelName(bel);
+ ASSERT_EQ(bel, design->chip.getBelByName(name));
+ bel_count++;
+ }
+ ASSERT_EQ(bel_count, 440);
+}
+
+TEST_F(LP384Test, wire_names)
+{
+ int wire_count = 0;
+ for (auto wire : design->chip.getWires()) {
+ auto name = design->chip.getWireName(wire);
+ assert(wire == design->chip.getWireByName(name));
+ wire_count++;
+ }
+ ASSERT_EQ(wire_count, 8294);
+}
+
+TEST_F(LP384Test, pip_names)
+{
+ int pip_count = 0;
+ for (auto pip : design->chip.getPips()) {
+ auto name = design->chip.getPipName(pip);
+ assert(pip == design->chip.getPipByName(name));
+ pip_count++;
+ }
+ ASSERT_EQ(pip_count, 86864);
+}
+
+TEST_F(LP384Test, uphill_to_downhill)
+{
+ for (auto dst : design->chip.getWires()) {
+ for (auto uphill_pip : design->chip.getPipsUphill(dst)) {
+ bool found_downhill = false;
+ for (auto downhill_pip : design->chip.getPipsDownhill(
+ design->chip.getPipSrcWire(uphill_pip))) {
+ if (uphill_pip == downhill_pip) {
+ ASSERT_FALSE(found_downhill);
+ found_downhill = true;
+ }
+ }
+ ASSERT_TRUE(found_downhill);
+ }
+ }
+}
+
+TEST_F(LP384Test, downhill_to_uphill)
+{
+ for (auto dst : design->chip.getWires()) {
+ for (auto downhill_pip : design->chip.getPipsDownhill(dst)) {
+ bool found_uphill = false;
+ for (auto uphill_pip : design->chip.getPipsUphill(
+ design->chip.getPipDstWire(downhill_pip))) {
+ if (uphill_pip == downhill_pip) {
+ ASSERT_FALSE(found_uphill);
+ found_uphill = true;
+ }
+ }
+ ASSERT_TRUE(found_uphill);
+ }
+ }
+}
diff --git a/tests/ice40/lp8k.cc b/tests/ice40/lp8k.cc
new file mode 100644
index 00000000..ca2fc424
--- /dev/null
+++ b/tests/ice40/lp8k.cc
@@ -0,0 +1,87 @@
+#include <vector>
+#include "gtest/gtest.h"
+#include "nextpnr.h"
+
+USING_NEXTPNR_NAMESPACE
+
+class LP8KTest : public ::testing::Test
+{
+ protected:
+ virtual void SetUp()
+ {
+ chipArgs.type = ChipArgs::LP8K;
+ design = new Design(chipArgs);
+ }
+
+ virtual void TearDown() { delete design; }
+
+ ChipArgs chipArgs;
+ Design *design;
+};
+
+TEST_F(LP8KTest, bel_names)
+{
+ int bel_count = 0;
+ for (auto bel : design->chip.getBels()) {
+ auto name = design->chip.getBelName(bel);
+ ASSERT_EQ(bel, design->chip.getBelByName(name));
+ bel_count++;
+ }
+ ASSERT_EQ(bel_count, 7968);
+}
+
+TEST_F(LP8KTest, wire_names)
+{
+ int wire_count = 0;
+ for (auto wire : design->chip.getWires()) {
+ auto name = design->chip.getWireName(wire);
+ assert(wire == design->chip.getWireByName(name));
+ wire_count++;
+ }
+ ASSERT_EQ(wire_count, 135174);
+}
+
+TEST_F(LP8KTest, pip_names)
+{
+ int pip_count = 0;
+ for (auto pip : design->chip.getPips()) {
+ auto name = design->chip.getPipName(pip);
+ assert(pip == design->chip.getPipByName(name));
+ pip_count++;
+ }
+ ASSERT_EQ(pip_count, 1652480);
+}
+
+TEST_F(LP8KTest, uphill_to_downhill)
+{
+ for (auto dst : design->chip.getWires()) {
+ for (auto uphill_pip : design->chip.getPipsUphill(dst)) {
+ bool found_downhill = false;
+ for (auto downhill_pip : design->chip.getPipsDownhill(
+ design->chip.getPipSrcWire(uphill_pip))) {
+ if (uphill_pip == downhill_pip) {
+ ASSERT_FALSE(found_downhill);
+ found_downhill = true;
+ }
+ }
+ ASSERT_TRUE(found_downhill);
+ }
+ }
+}
+
+TEST_F(LP8KTest, downhill_to_uphill)
+{
+ for (auto dst : design->chip.getWires()) {
+ for (auto downhill_pip : design->chip.getPipsDownhill(dst)) {
+ bool found_uphill = false;
+ for (auto uphill_pip : design->chip.getPipsUphill(
+ design->chip.getPipDstWire(downhill_pip))) {
+ if (uphill_pip == downhill_pip) {
+ ASSERT_FALSE(found_uphill);
+ found_uphill = true;
+ }
+ }
+ ASSERT_TRUE(found_uphill);
+ }
+ }
+}
diff --git a/tests/ice40/main.cc b/tests/ice40/main.cc
new file mode 100644
index 00000000..e85c836a
--- /dev/null
+++ b/tests/ice40/main.cc
@@ -0,0 +1,8 @@
+#include <vector>
+#include "gtest/gtest.h"
+
+int main(int argc, char **argv)
+{
+ ::testing::InitGoogleTest(&argc, argv);
+ return RUN_ALL_TESTS();
+}
diff --git a/tests/ice40/main.cpp b/tests/ice40/main.cpp
deleted file mode 100644
index b8d22138..00000000
--- a/tests/ice40/main.cpp
+++ /dev/null
@@ -1,18 +0,0 @@
-#include "gtest/gtest.h"
-
-#include <vector>
-
-int main(int argc, char **argv) {
- ::testing::InitGoogleTest(&argc, argv);
- return RUN_ALL_TESTS();
-}
-
-TEST(example, sum_zero) {
- auto result = 0;
- ASSERT_EQ(result, 0);
-}
-
-TEST(example, sum_five) {
- auto result = 15;
- ASSERT_EQ(result, 15);
-}
diff --git a/tests/ice40/up5k.cc b/tests/ice40/up5k.cc
new file mode 100644
index 00000000..38bb30fd
--- /dev/null
+++ b/tests/ice40/up5k.cc
@@ -0,0 +1,87 @@
+#include <vector>
+#include "gtest/gtest.h"
+#include "nextpnr.h"
+
+USING_NEXTPNR_NAMESPACE
+
+class UP5KTest : public ::testing::Test
+{
+ protected:
+ virtual void SetUp()
+ {
+ chipArgs.type = ChipArgs::UP5K;
+ design = new Design(chipArgs);
+ }
+
+ virtual void TearDown() { delete design; }
+
+ ChipArgs chipArgs;
+ Design *design;
+};
+
+TEST_F(UP5KTest, bel_names)
+{
+ int bel_count = 0;
+ for (auto bel : design->chip.getBels()) {
+ auto name = design->chip.getBelName(bel);
+ ASSERT_EQ(bel, design->chip.getBelByName(name));
+ bel_count++;
+ }
+ ASSERT_EQ(bel_count, 5414);
+}
+
+TEST_F(UP5KTest, wire_names)
+{
+ int wire_count = 0;
+ for (auto wire : design->chip.getWires()) {
+ auto name = design->chip.getWireName(wire);
+ assert(wire == design->chip.getWireByName(name));
+ wire_count++;
+ }
+ ASSERT_EQ(wire_count, 103383);
+}
+
+TEST_F(UP5KTest, pip_names)
+{
+ int pip_count = 0;
+ for (auto pip : design->chip.getPips()) {
+ auto name = design->chip.getPipName(pip);
+ assert(pip == design->chip.getPipByName(name));
+ pip_count++;
+ }
+ ASSERT_EQ(pip_count, 1219104);
+}
+
+TEST_F(UP5KTest, uphill_to_downhill)
+{
+ for (auto dst : design->chip.getWires()) {
+ for (auto uphill_pip : design->chip.getPipsUphill(dst)) {
+ bool found_downhill = false;
+ for (auto downhill_pip : design->chip.getPipsDownhill(
+ design->chip.getPipSrcWire(uphill_pip))) {
+ if (uphill_pip == downhill_pip) {
+ ASSERT_FALSE(found_downhill);
+ found_downhill = true;
+ }
+ }
+ ASSERT_TRUE(found_downhill);
+ }
+ }
+}
+
+TEST_F(UP5KTest, downhill_to_uphill)
+{
+ for (auto dst : design->chip.getWires()) {
+ for (auto downhill_pip : design->chip.getPipsDownhill(dst)) {
+ bool found_uphill = false;
+ for (auto uphill_pip : design->chip.getPipsUphill(
+ design->chip.getPipDstWire(downhill_pip))) {
+ if (uphill_pip == downhill_pip) {
+ ASSERT_FALSE(found_uphill);
+ found_uphill = true;
+ }
+ }
+ ASSERT_TRUE(found_uphill);
+ }
+ }
+}