MLBEDSW-7754: Performance estimator is not using write/read shapes

- npu_performance now uses write/read shapes instead of using ifm/ofms
for memory cycle estimations.

- also fixes a would be bug in the tflite_graph_optimiser, where one
read shape is not Shape4D.

Change-Id: I2067069a713d2cf9e65a5cc227e803de79940fff
Signed-off-by: William Isaksson <william.isaksson@arm.com>
diff --git a/ethosu/vela/npu_performance.py b/ethosu/vela/npu_performance.py
index eb9f66c..dfb7006 100644
--- a/ethosu/vela/npu_performance.py
+++ b/ethosu/vela/npu_performance.py
@@ -618,15 +618,15 @@
     macs = 0
 
     query = PerformanceQuery(op.op_type.npu_block_type)
-    query.ifm_shape = op.ifm.shape
+    query.ifm_shape = op.ifm_read_shape
     query.ifm_format = op.ifm.format
     query.ifm_memory_area = op.ifm.connection.parent_tens.mem_area  # Mem Area is set directly on parent_tens
     query.ifm_bits = op.ifm.dtype.size_in_bits()
-    query.ifm2_shape = op.ifm2 and op.ifm2.shape
+    query.ifm2_shape = op.ifm2_read_shape
     query.ifm2_format = op.ifm2 and op.ifm2.format
     query.ifm2_memory_area = op.ifm2 and op.ifm2.connection.parent_tens.mem_area
     query.ifm2_bits = op.ifm2 and op.ifm2.dtype.size_in_bits()
-    query.ofm_shape = op.ofm.shape
+    query.ofm_shape = op.ofm_write_shape
     query.ofm_memory_area = op.ofm.connection.parent_tens.mem_area
     query.ofm_bits = op.ofm.dtype.size_in_bits()
     query.ofm_format = op.ofm.format