#! /usr/bin/perl

$netsfile = shift;
$plfile = shift;

# ------------------------------ read placement

open FILE, $plfile;
while (<FILE>) {
  chop;
  if (/(\w+)\s+([\-\d\.]+)\s+([\-\d\.]+)\s+\:/) {
    $loc{$1} = "$2 $3";
  }
}
close FILE;

open FILE, $netsfile;
while (<FILE>) {
  chop;
  $net = $2 if /NetDegree\s+\:\s+(\d+)\s+(\w+)/;
  if (/(\w+)\s+(\w+)\s+\:/) {
    $netconn{$net} .= "$1 ";
    $cellconn{$1} .= "$net ";
  }
}
close FILE;

# ----------------------------- compute HPWL

$hpwl = 0;
foreach $net (keys %netconn) {
  @conns = split ' ',$netconn{$net};
  $min_x = $min_y = 1e12;
  $max_x = $max_y = -1e12;
  foreach $cell (@conns) {
    if (!exists $loc{$cell}) {
      print "WARNING: Unknown cell location: $cell\n";
    } else {
      ($x, $y) = split ' ',$loc{$cell};
      $min_x = $x if $x < $min_x;
      $min_y = $y if $y < $min_y;
      $max_x = $x if $x > $max_x;
      $max_y = $y if $y > $max_y;
    }
  }
  
  if ($min_x eq 1e12 or $min_y eq 1e12 or
      $max_x eq -1e12 or $max_y eq -1e12) {
    print "WARNING: Unbounded box\n";
  } else {
    $hpwl = $hpwl + $max_x - $min_x + $max_y - $min_y;
  }
}

print "HPWL = ";
printf "%e",$hpwl;
print "\n";
