Exemplo n.º 1
0
def process(log):

    # Match patterns here
    lines = log.split('\n')

    print 'runtime',

    ln_start = 0
    while True:

        ln1 = log_util.get_next_ln_starts_with(lines, ln_start,
                                               'Co-efficient Ratio Summary:')
        if ln1 == ln_start:
            break
        t1 = log_util.get_elapse_time(lines, ln1, forward=True)

        ln2 = log_util.get_next_ln_starts_with(lines, ln1,
                                               'END_CMD: route_opt_cmd')
        if ln2 == ln1:
            break
        t2 = log_util.get_elapse_time(lines, ln2, forward=True)

        print t1, t2,
        ln_start = ln2
        break

    return
Exemplo n.º 2
0
def process(log):

    # Match patterns here
    lines = log.split('\n')

    print 'runtime',

    ln_start = 0
    while True:

        ln1 = log_util.get_next_ln_starts_with(lines, ln_start,
                                               'START_CMD: clock_opt')
        if ln1 == ln_start:
            break
        t1 = log_util.get_elapse_time(lines, ln1, forward=True)

        ln2 = log_util.get_next_ln_starts_with(lines, ln1,
                                               'END_CMD: clock_opt')
        if ln2 == ln1:
            break
        t2 = log_util.get_elapse_time(lines, ln2, forward=True)

        print t1, t2,
        ln_start = ln2

    return
Exemplo n.º 3
0
def process(log):

    # Match patterns here
    lines = log.split('\n')

    ln_fo = log_util.get_next_ln_starts_with(
        lines, 0, 'Running final optimization step.')
    ln_lgl1 = log_util.get_next_ln_starts_with(
        lines, ln_fo, 'START_FUNC: legalize_placement')

    t1 = log_util.get_elapse_time(lines, ln_fo, forward=True)
    t2 = log_util.get_elapse_time(lines, ln_lgl1, forward=False)

    print t2 - t1

    return
def process(log):

  # Match patterns here
  lines = log.split('\n')

  ln_init = log_util.get_next_ln_starts_with(lines, 0, '    *   * ')
  hb1 = lines[ln_init]

  ln_delay = log_util.get_next_ln_starts_with(lines, ln_init, 'INFO: check if proc nro_prelude_delay-Wlb-Tlb exists')
  t_delay = log_util.get_elapse_time(lines, ln_delay, forward=False)

  ln_sbo = log_util.get_next_ln_starts_with(lines, ln_delay, '    SBO Optimization Summary')
  t_sbo = log_util.get_elapse_time(lines, ln_sbo, forward=True)

  ln_end = log_util.get_next_ln_starts_with(lines, ln_sbo, '    *   * ')
  t_end = log_util.get_elapse_time(lines, ln_end, forward=False)
  hb2 = lines[ln_end]

  # print scenarios
  scenarios = []
  for m in range(ln_end - 3, max(0, ln_end - 100), -1):
    match = re.search('^\s+\d+\s+\*\s+', lines[m])
    if match:
      scenarios.append(lines[m])
    if lines[m].startswith('Scene'):
      break
  for l in reversed(scenarios):
    print l

  qor1 = log_util.parse_heartbeat(hb1)
  qor2 = log_util.parse_heartbeat(hb2)
  if qor1['valid'] and qor2['valid']:
    print 'runtime', t_delay, t_sbo, t_end
    print "wns", qor1['wns'], qor2['wns']
    print "tns", qor1['tns'], qor2['tns']
    print "maxtran", qor1['maxtran'], qor2['maxtran']
    print "area", qor1['area'], qor2['area']
    print "buf", qor1['bufcnt'], qor2['bufcnt']
    print "inv", qor1['invcnt'], qor2['invcnt']

  return
Exemplo n.º 5
0
def process(log):

    # Match patterns here
    lines = log.split('\n')

    ln_init = log_util.get_next_ln_starts_with(lines, 0, '    *   * ')

    ln_delay = log_util.get_next_ln_starts_with(
        lines, ln_init, 'INFO: check if proc nro_prelude_delay-Wlb-Tb exists')
    t_delay = log_util.get_elapse_time(lines, ln_delay, forward=False)

    ln_prev_hb = log_util.get_next_ln_starts_with(lines,
                                                  ln_delay,
                                                  '    *   * ',
                                                  forward=False)
    if ln_prev_hb == None:
        hb1 = ""
    else:
        hb1 = lines[ln_prev_hb]

    print "SCN BEFORE:"
    print_scn_table(lines, ln_prev_hb)

    ln_sbo = log_util.get_next_ln_starts_with(lines, ln_delay,
                                              '    SBO Optimization Summary')
    t_sbo = log_util.get_elapse_time(lines, ln_sbo, forward=True)

    ln_pbo_w1 = log_util.get_next_ln_starts_with(lines, ln_sbo,
                                                 'PBO-WNS: Iteration 2')
    t_pbo_wns_1 = log_util.get_elapse_time(lines, ln_pbo_w1, forward=True)

    ln_pbo_w2 = log_util.get_next_ln_starts_with(
        lines, ln_pbo_w1, '    WNS Optimization Summary')
    t_pbo_wns_2 = log_util.get_elapse_time(lines, ln_pbo_w2, forward=True)

    ln_pbo_t1 = log_util.get_next_ln_starts_with(lines, ln_pbo_w2,
                                                 'PBO-TNS: Iteration 2')
    t_pbo_tns_1 = log_util.get_elapse_time(lines, ln_pbo_t1, forward=True)

    ln_end = log_util.get_next_ln_starts_with(lines, ln_pbo_t1, '    *   * ')
    t_end = log_util.get_elapse_time(lines, ln_end, forward=False)
    if ln_end == None:
        hb2 = ""
    else:
        hb2 = lines[ln_end]

    print "SCN AFTER:"
    print_scn_table(lines, ln_end)

    qor1 = log_util.parse_heartbeat(hb1)
    qor2 = log_util.parse_heartbeat(hb2)
    if qor1['valid'] and qor2['valid']:
        print 'runtime', t_delay, t_sbo, t_pbo_wns_1, t_pbo_wns_2, t_pbo_tns_1, t_end
        print "wns", qor1['wns'], qor2['wns']
        print "tns", qor1['tns'], qor2['tns']
        print "maxtran", qor1['maxtran'], qor2['maxtran']
        print "area", qor1['area'], qor2['area']
        print "buf", qor1['bufcnt'], qor2['bufcnt']
        print "inv", qor1['invcnt'], qor2['invcnt']
    else:
        print 'runtime'
        print "wns"
        print "tns"
        print "maxtran"
        print "area"
        print "buf"
        print "inv"

    return