def get_all_compatible_blocks_of_certain_char()

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