MLBEDSW-6563: networks failing with memory area exceeded in vela

 - For allocations that have a hard memory limit the Hill Climb allocator
should be given more attempts to find a solution that would fit
 - The fix is to use a memory limit when there is a hard constraint, and
a minimum iteration count, reset on every improvement, when there is a soft
constraint
 - Added maximum number iterations CLI option

Signed-off-by: Tim Hall <tim.hall@arm.com>
Change-Id: I19ff53a0b68412de280263626778a3102cbe52fa
diff --git a/ethosu/vela/greedy_allocation.py b/ethosu/vela/greedy_allocation.py
index 6f4f801..f6d7a3a 100644
--- a/ethosu/vela/greedy_allocation.py
+++ b/ethosu/vela/greedy_allocation.py
@@ -19,11 +19,7 @@
 
 
 class GreedyAllocator:
-    def __init__(self, nng, arch, live_ranges, mem_area):
-        self.nng = nng
-        self.arch = arch
-        self.mem_area = mem_area
-
+    def __init__(self, live_ranges):
         self.live_ranges = live_ranges
         self.memory_required = 0
 
@@ -75,6 +71,6 @@
         return self.memory_required
 
 
-def allocate_live_ranges(nng, arch, live_ranges, mem_area, alignment):
-    g = GreedyAllocator(nng, arch, live_ranges, mem_area)
+def allocate_live_ranges(live_ranges, alignment):
+    g = GreedyAllocator(live_ranges)
     return g.allocate_live_ranges(alignment)