diff --git a/verif/generator/datagenerator.py b/verif/generator/datagenerator.py
index b5ef35d..743475c 100644
--- a/verif/generator/datagenerator.py
+++ b/verif/generator/datagenerator.py
@@ -78,7 +78,7 @@
             size_bytes = size * 2
             # Create buffer of bytes and initialize to zero
             buffer = (ct.c_ubyte * size_bytes)(0)
-        elif dtype == "INT32":
+        elif dtype == "INT32" or dtype == "SHAPE":
             # Create buffer and initialize to zero
             buffer = (ct.c_int32 * size)(0)
             size_bytes = size * 4
diff --git a/verif/generator/tosa_arg_gen.py b/verif/generator/tosa_arg_gen.py
index 00490fa..a655a50 100644
--- a/verif/generator/tosa_arg_gen.py
+++ b/verif/generator/tosa_arg_gen.py
@@ -731,7 +731,11 @@
                     # Change from inclusive to exclusive range
                     data_range = (data_range[0], data_range[1] + 1)
                 # Ignore lazy data gen option and create data array using any range limits
-                arr = testGen.getRandTensor(shape, dtype, data_range)
+
+                if "fixed_data" in argsDict and argsDict["fixed_data"][idx] is not None:
+                    arr = np.int64(argsDict["fixed_data"][idx])
+                else:
+                    arr = testGen.getRandTensor(shape, dtype, data_range)
                 if roundMode:
                     arr = np.round(arr)
                 if idx < pCount:
@@ -751,7 +755,13 @@
         for idx, shape in enumerate(shapeList):
 
             tens_meta = {}
-            tens_meta["generator"] = gtu.DataGenType(dg_type).name
+            if "fixed_data" in argsDict and argsDict["fixed_data"][idx] is not None:
+                tens_meta["generator"] = gtu.DataGenType(
+                    gtu.DataGenType.FIXED_DATA
+                ).name
+            else:
+                tens_meta["generator"] = gtu.DataGenType(dg_type).name
+
             tens_meta["data_type"] = gtu.DTYPE_ATTRIBUTES[dtypeList[idx]]["json"]
             tens_meta["shape"] = [int(i) for i in shape]
             tens_meta["input_pos"] = idx
@@ -764,23 +774,30 @@
 
             if dg_type == gtu.DataGenType.PSEUDO_RANDOM:
                 info = {}
-                # TODO - generate seed for this generator based on test
-                info["rng_seed"] = 42
+                if (
+                    tens_meta["generator"]
+                    == gtu.DataGenType(gtu.DataGenType.FIXED_DATA).name
+                ):
+                    info["data"] = [int(i) for i in argsDict["fixed_data"][idx]]
+                    tens_meta["fixed_data_info"] = info
+                else:
+                    # TODO - generate seed for this generator based on test
+                    info["rng_seed"] = 42
 
-                data_range = None
-                if "data_range_list" in argsDict:
-                    data_range = argsDict["data_range_list"][idx]["range"]
-                    if "round" in argsDict["data_range_list"][idx]:
-                        info["round"] = argsDict["data_range_list"][idx]["round"]
-                elif "data_range" in argsDict:
-                    data_range = argsDict["data_range"]
+                    data_range = None
+                    if "data_range_list" in argsDict:
+                        data_range = argsDict["data_range_list"][idx]["range"]
+                        if "round" in argsDict["data_range_list"][idx]:
+                            info["round"] = argsDict["data_range_list"][idx]["round"]
+                    elif "data_range" in argsDict:
+                        data_range = argsDict["data_range"]
 
-                if data_range is None:
-                    data_range = testGen.getDTypeRange(
-                        dtypeList[idx], high_inclusive=True
-                    )
-                info["range"] = [str(v) for v in data_range]
-                tens_meta["pseudo_random_info"] = info
+                    if data_range is None:
+                        data_range = testGen.getDTypeRange(
+                            dtypeList[idx], high_inclusive=True
+                        )
+                    info["range"] = [str(v) for v in data_range]
+                    tens_meta["pseudo_random_info"] = info
             elif dg_type == gtu.DataGenType.DOT_PRODUCT:
                 info = {}
                 info["s"] = argsDict["s"]
@@ -812,6 +829,9 @@
                 dg_tens_meta[temp_name] = tens_meta
                 # Create data now using the temporary name to access meta details
                 data = testGen.dgl.get_tensor_data(temp_name, tens_data)
+                if tens_meta["data_type"] == "SHAPE":
+                    # Tensor type SHAPE and Numpy file type must be the same
+                    data = np.int64(data)
                 # Remove the item as we will give it the correct name later
                 del dg_tens_meta[temp_name]
 
@@ -1014,6 +1034,27 @@
         return placeholders
 
     @staticmethod
+    def tvgReshape(testGen, op, dtypeList, shapeList, argsDict, error_name=None):
+        dtypeList[1] = DType.SHAPE
+        shapeList[1] = [len(argsDict["new_shape"])]
+        # Create a new list for the pre-generated data in argsDict["fixed_data"]
+        argsDict["fixed_data"] = [None, argsDict["new_shape"]]
+
+        return TosaTensorValuesGen.tvgLazyGenDefault(
+            testGen, op, dtypeList, shapeList, argsDict, error_name
+        )
+
+    @staticmethod
+    def tvgTile(testGen, op, dtypeList, shapeList, argsDict, error_name=None):
+        dtypeList[1] = DType.SHAPE
+        shapeList[1] = [len(argsDict["multiples"])]
+        argsDict["fixed_data"] = [None, argsDict["multiples"]]
+
+        return TosaTensorValuesGen.tvgLazyGenDefault(
+            testGen, op, dtypeList, shapeList, argsDict, error_name
+        )
+
+    @staticmethod
     def tvgSelect(testGen, opName, dtypeList, shapeList, argsDict, error_name=None):
         # Set datatype of condition tensor to boolean
         dtypeList[0] = DType.BOOL
diff --git a/verif/generator/tosa_test_gen.py b/verif/generator/tosa_test_gen.py
index 67ac367..159ee83 100644
--- a/verif/generator/tosa_test_gen.py
+++ b/verif/generator/tosa_test_gen.py
@@ -1558,22 +1558,14 @@
     ):
         assert len(inputs) == 2
         a = inputs[0]
-        # second input is not properly generated yet
-        # new_shape = inputs[1]
-
-        # modify inputs[1] by a shape tensor from new_shape arg value
-        new_shape_attr = args_dict["new_shape"]
-        shape_array = np.array(new_shape_attr)
-        shape = shape_array.shape
-        new_shape = self.ser.addPlaceholder(shape, DType.SHAPE, shape_array)
-        inputs[1] = new_shape
-
+        shape = inputs[1]
+        shape_attr = args_dict["new_shape"]
         result_tensor = OutputShaper.reshapeOp(
-            self.ser, self.rng, a, new_shape_attr, error_name
+            self.ser, self.rng, a, shape_attr, error_name
         )
 
         # Invalidate Input/Output list for error if checks.
-        input_list = [a.name, new_shape.name]
+        input_list = [a.name, shape.name]
         output_list = [result_tensor.name]
         pCount, cCount = op["operands"]
         num_operands = pCount + cCount
@@ -1725,16 +1717,8 @@
     ):
         assert len(inputs) == 2
         a = inputs[0]
-        # second input is not properly generated yet
-        # multiples = inputs[1]
-
-        # modify inputs[1] by a shape tensor from multiples arg value
+        multiples = inputs[1]
         multiples_attr = args_dict["multiples"]
-        shape_array = np.int64(np.array(multiples_attr))
-        shape = shape_array.shape
-        multiples = self.ser.addPlaceholder(shape, DType.SHAPE, shape_array)
-        inputs[1] = multiples
-
         result_tensor = OutputShaper.tileOp(
             self.ser, self.rng, a, multiples_attr, error_name
         )
@@ -4236,7 +4220,7 @@
             "build_fcn": (
                 build_reshape,
                 TosaTensorGen.tgBasic,
-                TosaTensorValuesGen.tvgLazyGenDefault,
+                TosaTensorValuesGen.tvgReshape,
                 TosaArgGen.agReshape,
             ),
             "types": TYPE_FIB,
@@ -4302,7 +4286,7 @@
             "build_fcn": (
                 build_tile,
                 TosaTensorGen.tgBasic,
-                TosaTensorValuesGen.tvgLazyGenDefault,
+                TosaTensorValuesGen.tvgTile,
                 TosaArgGen.agTile,
             ),
             "types": TYPE_FIB,
diff --git a/verif/generator/tosa_utils.py b/verif/generator/tosa_utils.py
index 3d733f4..33db95f 100644
--- a/verif/generator/tosa_utils.py
+++ b/verif/generator/tosa_utils.py
@@ -1,4 +1,4 @@
-# Copyright (c) 2021-2023, ARM Limited.
+# Copyright (c) 2021-2024, ARM Limited.
 # SPDX-License-Identifier: Apache-2.0
 import struct
 import sys
@@ -49,13 +49,14 @@
     OP_BOUNDARY = 2
     OP_FULLSET = 3
     OP_SPECIAL = 4
+    FIXED_DATA = 5
 
 
 def dtypeIsSupportedByCompliance(dtype):
     """Types supported by the new data generation and compliance flow."""
     if isinstance(dtype, list) or isinstance(dtype, tuple):
         dtype = dtype[0]
-    return dtype in (DType.FP32, DType.FP16)
+    return dtype in (DType.FP32, DType.FP16, DType.SHAPE)
 
 
 def getOpNameFromOpListName(opName):
