<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def coresight_configure(self, ir_pre=0, dr_pre=0, ir_post=0, dr_post=0, ir_len=0, perform_tif_init=True):
 """Prepares target and J-Link for CoreSight function usage. Args: self (JLink):
 the ``JLink`` instance ir_pre (int):
 sum of instruction register length of all JTAG devices in the JTAG chain, close to TDO than the actual one, that J-Link shall communicate with dr_pre (int):
 number of JTAG devices in the JTAG chain, closer to TDO than the actual one, that J-Link shall communicate with ir_post (int):
 sum of instruction register length of all JTAG devices in the JTAG chain, following the actual one, that J-Link shall communicate with dr_post (int):
 Number of JTAG devices in the JTAG chain, following the actual one, J-Link shall communicate with ir_len (int):
 instruction register length of the actual device that J-Link shall communicate with perform_tif_init (bool):
 if ``False``, then do not output switching sequence on completion Returns: ``None`` Note: This must be called before calling ``coresight_read()`` or ``coresight_write()``. """

        if self.tif == enums.JLinkInterfaces.SWD:
            # No special setup is needed for SWD, just need to output the
            # switching sequence.
            res = self._dll.JLINKARM_CORESIGHT_Configure('')
            if res < 0:
                raise errors.JLinkException(res)

            return None

        # JTAG requires more setup than SWD.
        config_string = 'IRPre=%s;DRPre=%s;IRPost=%s;DRPost=%s;IRLenDevice=%s;'
        config_string = config_string % (ir_pre, dr_pre, ir_post, dr_post, ir_len)

        if not perform_tif_init:
            config_string = config_string + ('PerformTIFInit=0;')

        res = self._dll.JLINKARM_CORESIGHT_Configure(config_string.encode())
        if res < 0:
            raise errors.JLinkException(res)

        return None