diff --git a/compute_kernel_writer/validation/Validation.cpp b/compute_kernel_writer/validation/Validation.cpp
index da0ce8a..0a28883 100644
--- a/compute_kernel_writer/validation/Validation.cpp
+++ b/compute_kernel_writer/validation/Validation.cpp
@@ -88,7 +88,7 @@
     }
     else
     {
-        std::runtime_error("One or more tests failed");
+        throw std::runtime_error("One or more tests failed");
     }
 
     return 0;
diff --git a/compute_kernel_writer/validation/tests/CLTileTest.hpp b/compute_kernel_writer/validation/tests/CLTileTest.hpp
index f3fdcd1..7847f0e 100644
--- a/compute_kernel_writer/validation/tests/CLTileTest.hpp
+++ b/compute_kernel_writer/validation/tests/CLTileTest.hpp
@@ -53,7 +53,7 @@
         // The status of this variable can change in VALIDATE_TEST()
         bool all_tests_passed = true;
 
-        const TileInfo info(dt, width, height);
+        const TileInfo info(dt, height, width);
 
         int32_t test_idx = 0;
         for(const auto &tile_name : _tile_name)
@@ -108,7 +108,7 @@
         {
             const int32_t width  = _width[i];
             const int32_t height = _height[i];
-            const TileInfo info(DataType::Fp32, width, height);
+            const TileInfo info(DataType::Fp32, height, width);
             const CLTile tile("src", info);
             const auto vars = tile.all();
             const int32_t num_vars = vars.size();
@@ -152,7 +152,7 @@
 
     bool run() override
     {
-        const TileInfo info(dt, width, height);
+        const TileInfo info(dt, height, width);
         const CLTile tile(tile_name, info);
 
         VALIDATE_ON_MSG(_x_coord.size() == _y_coord.size(), "The number of x-coords and y-coords does not match");
@@ -231,7 +231,7 @@
 
             const int32_t x_coord_clamped = clamp(x_coord, static_cast<int32_t>(0), width - 1);
 
-            const TileInfo info(dt, width, height);
+            const TileInfo info(dt, height, width);
             const CLTile tile(tile_name, info);
 
             const TileVariable var = tile.scalar(y_coord, x_coord);
@@ -301,7 +301,7 @@
 
             const int32_t y_coord_clamped = clamp(y_coord, static_cast<int32_t>(0), height - 1);
 
-            const TileInfo info(dt, width, height);
+            const TileInfo info(dt, height, width);
             const CLTile tile(tile_name, info);
 
             const TileVariable var = tile.scalar(y_coord, x_coord);
@@ -356,7 +356,7 @@
         int32_t test_idx = 0;
         for(const auto &height : _heights)
         {
-            const TileInfo info(dt, width, height);
+            const TileInfo info(dt, height, width);
             const CLTile tile(tile_name, info);
 
             for(int32_t row = 0; row < height; ++row)
@@ -415,7 +415,7 @@
         {
             for(const auto &subwidth : _subwidths)
             {
-                const TileInfo info(dt, width, height);
+                const TileInfo info(dt, height, width);
                 const CLTile tile(tile_name, info);
 
                 for(int32_t row = 0; row < height; ++row)
