diff options
author | Clifford Wolf <clifford@clifford.at> | 2018-06-13 12:38:28 +0200 |
---|---|---|
committer | Clifford Wolf <clifford@clifford.at> | 2018-06-13 12:38:28 +0200 |
commit | 145c849596bdcd24f3b4e617eeb4ee06e1b93452 (patch) | |
tree | 243d63251d31498f4e92bfdae3ae0d0f087f9957 /tests | |
parent | 4d7f18dd98a7ef9540a279a8e27cb9dbef355af7 (diff) | |
parent | de0918c28758b09f638e02ffc04fad989321da1b (diff) | |
download | nextpnr-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.cc | 9 | ||||
-rw-r--r-- | tests/dummy/main.cpp | 18 | ||||
-rw-r--r-- | tests/ice40/hx1k.cc | 87 | ||||
-rw-r--r-- | tests/ice40/hx8k.cc | 87 | ||||
-rw-r--r-- | tests/ice40/lp1k.cc | 87 | ||||
-rw-r--r-- | tests/ice40/lp384.cc | 87 | ||||
-rw-r--r-- | tests/ice40/lp8k.cc | 87 | ||||
-rw-r--r-- | tests/ice40/main.cc | 8 | ||||
-rw-r--r-- | tests/ice40/main.cpp | 18 | ||||
-rw-r--r-- | tests/ice40/up5k.cc | 87 |
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); + } + } +} |