diff --git a/lib/analysis/ecb.rb b/lib/analysis/ecb.rb index ba3d9092c5f0a3f5a1359eec72c98491dd57273f..1933a2c2e4c5cc05cda7b26c01e96c9f9795e15e 100644 --- a/lib/analysis/ecb.rb +++ b/lib/analysis/ecb.rb @@ -38,7 +38,7 @@ class ECBAnalysis # Calculates set of accessed cache blocks locally for this stream of # instructions. Modifications of the cache by calls are ignored. def ecb(instructions, cache_config) - cache = Cache.new(cache_config) + cache = Cache.new(cache_config) # Only used for address calculation ecb = Set.new instructions.each do |instr| tag, set, addr = cache.split_address(instr.address) diff --git a/lib/analysis/wca.rb b/lib/analysis/wca.rb index 5bd7690b3a4492ba81bae802df993aec65c0c7f2..e45eb38ec8e1ef172173d9cc7225a1ba92b9f70c 100644 --- a/lib/analysis/wca.rb +++ b/lib/analysis/wca.rb @@ -374,9 +374,11 @@ class WCA wcet[wcet_for_obj] = [cycles, power_states.to_a] node.successors.select { |s| s.isr_entry? }.each { |int| + # find successors of isr_entries that activate tasks activators = topological_sort(int, GCFGLocalTrait.new).select { |n| n.abb.nil? ? false : n.abb.task_activation? } + # find nodes of activated tasks which are the global successors of the activation nodes activations = activators.map { |act| topological_sort(act, GCFGLocalTrait.new).map { |n| n.successors(:global) } }.flatten