in design_utils/des_handler.py [0:0]
def get_all_compatible_blocks_of_certain_char(self, ex_dp, block, metric, metric_dir, tasks, mode):
metric_dir = -1
imm_blcks_non_unique_1 = [el for el in self.database.equal_sample_up_sample_down_sample_block_fast(block, metric, metric_dir,
tasks) if not isinstance(el,str)] # get the first value
metric_dir = 1
imm_blcks_non_unique_2 = [el for el in self.database.equal_sample_up_sample_down_sample_block_fast(block, metric, metric_dir,
tasks) if not isinstance(el,str)] # get the first value
results = []
if mode =="frequency_modulation":
for blk in imm_blcks_non_unique_1 + imm_blcks_non_unique_2:
if not blk.get_block_freq() == block.get_block_freq() and (blk.subtype == block.subtype) and (blk.get_block_bus_width() == block.get_block_bus_width()) and blk.get_loop_itr_cnt() == block.get_loop_itr_cnt():
results.append(blk)
elif mode =="allocation":
for blk in imm_blcks_non_unique_1 + imm_blcks_non_unique_2:
if not blk.subtype == block.subtype and blk.get_block_freq() == block.get_block_freq() and (blk.get_block_bus_width() == block.get_block_bus_width()) and blk.get_loop_itr_cnt() == block.get_loop_itr_cnt():
results.append(blk)
elif mode == "bus_width_modulation":
for blk in imm_blcks_non_unique_1 + imm_blcks_non_unique_2:
if not (blk.get_block_bus_width() == block.get_block_bus_width() and blk.subtype == block.subtype and blk.get_block_freq() == block.get_block_freq() and blk.get_loop_itr_cnt() == block.get_loop_itr_cnt()):
results.append(blk)
elif mode == "loop_iteration_modulation":
for blk in imm_blcks_non_unique_1 + imm_blcks_non_unique_2:
if not blk.get_loop_itr_cnt() == block.get_loop_itr_cnt() and blk.subtype == block.subtype and blk.get_block_freq() == block.get_block_freq() and (blk.get_block_bus_width() == block.get_block_bus_width()):
results.append(blk)
else:
print("this mode:" + mode + "not supported")
exit(0)
return results