def adjust_vitis_sigmoid(self):
        """Adjust quantize info of VitisSigmoid nodes.

        DPU compiler constraints for VitisSigmoid:
        1. input pos of VitisSigmoid >= 0 && <= 15
        2. output pos of VitisSigmoid >= 7
        3. shift_sigmoid >= 0 && shift_sigmoid <= 31 where
            shift_sigmoid = 14 + 'input pos' - ' output pos'
        """
        for i, node in enumerate(self.model.model.graph.node):
            if node.op_type not in ["Sigmoid"]:
                continue
            ipos_name = self.get_ipos_name(node)
            ipos, _ = self.get_pos_by_name(ipos_name)

            opos_name = self.get_opos_name(node)
            opos, _ = self.get_pos_by_name(opos_name)

            if ipos is None or opos is None:
                logger.warning(
                    "Found a pos that is None. Adjust quantize info of VitisSigmoid "
                    "nodes of layer {} has not taken effect.".format(node.name)
                )
                continue

            new_ipos = ipos if ipos > 0 else 0
            new_ipos = new_ipos if new_ipos <= 15 else 15

            new_opos = opos if opos > 7 else 7
            shift_sigmoid = 14 + new_ipos - new_opos  # will not bigger than 31 now
            new_opos = new_opos if shift_sigmoid > 0 else 14 + new_ipos

            if new_ipos != ipos:
                self.set_pos(self.get_node_by_name(node.input[0].strip(postfix)), new_ipos)
            logger.info(
                "Input quantize pos of VitisSimoid layer {} is {}, modify it to {} to meet the DPU constraints.".format(
                    node.input[0], int(ipos), int(new_ipos)
                )
            )

            if new_opos != opos:
                self.set_pos(self.get_node_by_name(self.find_o_name(node.output[0])), new_opos)
            logger.info(
                "Output quantize pos of VitisSimoid layer {} is {}, modify it to {} "
                "to meet the DPU constraints.".format(node.output[0], int(opos), int(new_opos))
            )
Adjust quantize info of VitisSigmoid nodes.

        DPU compiler constraints for VitisSigmoid:
        1. input pos of VitisSigmoid >= 0 && <= 15
        2. output pos of VitisSigmoid >= 7
        3. shift_sigmoid >= 0 && shift_sigmoid <= 31 where
            shift_sigmoid = 14 + 'input pos' - ' output pos'
        
olive/passes/onnx/vitis_ai/refine.py