|
@@ -85,15 +85,24 @@ Void function translate_to_runtime(design_model : Element):
|
|
return !
|
|
return !
|
|
|
|
|
|
Void function create_schedule(model : Element, is_time_zero : Boolean):
|
|
Void function create_schedule(model : Element, is_time_zero : Boolean):
|
|
|
|
+ Element all_blocks
|
|
|
|
+ Element visited
|
|
|
|
+ Element to_visit
|
|
|
|
+ Element incoming_links
|
|
|
|
+ String schedule
|
|
|
|
+ String element_name
|
|
|
|
+ String link
|
|
|
|
+ Boolean ready
|
|
|
|
+
|
|
all_blocks = allInstances(model, "Block")
|
|
all_blocks = allInstances(model, "Block")
|
|
visited = create_node()
|
|
visited = create_node()
|
|
to_visit = create_node()
|
|
to_visit = create_node()
|
|
if (is_time_zero):
|
|
if (is_time_zero):
|
|
schedule = instantiate_node(model, "Schedule", "schedule_init")
|
|
schedule = instantiate_node(model, "Schedule", "schedule_init")
|
|
else:
|
|
else:
|
|
- schedule = instantiate_node(model, "Schedule", "schedule_running")
|
|
|
|
|
|
+ schedule = instantiate_node(model, "Schedule", "schedule_run")
|
|
|
|
|
|
- while (set_len(all_blocks) > 0):
|
|
|
|
|
|
+ while (bool_and(set_len(all_blocks) > 0)):
|
|
element_name = set_pop(all_blocks)
|
|
element_name = set_pop(all_blocks)
|
|
if (bool_not(set_in(visited, element_name))):
|
|
if (bool_not(set_in(visited, element_name))):
|
|
list_append(to_visit, element_name)
|
|
list_append(to_visit, element_name)
|
|
@@ -121,6 +130,8 @@ Void function create_schedule(model : Element, is_time_zero : Boolean):
|
|
instantiate_attribute(model, reverseKeyLookup(model["model"], schedule), "block", model["model"][element_name])
|
|
instantiate_attribute(model, reverseKeyLookup(model["model"], schedule), "block", model["model"][element_name])
|
|
instantiate_attribute(model, reverseKeyLookup(model["model"], schedule), "next", model["model"][new_schedule])
|
|
instantiate_attribute(model, reverseKeyLookup(model["model"], schedule), "next", model["model"][new_schedule])
|
|
schedule = new_schedule
|
|
schedule = new_schedule
|
|
|
|
+ list_delete(to_visit, list_len(to_visit) - 1)
|
|
|
|
+ set_add(visited, element_name)
|
|
|
|
|
|
return !
|
|
return !
|
|
|
|
|