Mapping will automatically generated
This commit is contained in:
@@ -1,16 +1,27 @@
|
||||
#!/usr/bin/perl
|
||||
use List::Util 'max';
|
||||
use warnings;
|
||||
use strict;
|
||||
|
||||
my $filename = shift || die;
|
||||
my $filename = shift || die("Please provide a input STL file");
|
||||
|
||||
my $numberOfRows = 16384;
|
||||
my $numberOfBanks = 8;
|
||||
my $numberOfColumns = 1024;
|
||||
|
||||
my $numberOfRowBits = log($numberOfRows)/log(2);
|
||||
my $numberOfBankBits = log($numberOfBanks)/log(2);
|
||||
my $numberOfColumnBits = log($numberOfColumns)/log(2);
|
||||
|
||||
open(FH, "$filename");
|
||||
|
||||
my @activity_counter;
|
||||
my @activityCounter;
|
||||
my @mapping;
|
||||
|
||||
for(my $i = 0; $i < 32; $i++)
|
||||
{
|
||||
$activity_counter[$i] = 0;
|
||||
$activityCounter[$i] = 0;
|
||||
$mapping[$i] = "X";
|
||||
}
|
||||
|
||||
my $old_address = "00000000000000000000000000000000";
|
||||
@@ -18,7 +29,7 @@ my $old_address = "00000000000000000000000000000000";
|
||||
while(<FH>)
|
||||
{
|
||||
# Get the adress:
|
||||
$_ =~ /\d+:\s+\w+\s+0x([\w\d]+)/;
|
||||
$_ =~ /\d+:\s+\w+\s+0x([\w\d]+)\s*[\d\w]*/;
|
||||
my $address = $1;
|
||||
$address = sprintf( "%032b", hex( $address ) );
|
||||
|
||||
@@ -30,15 +41,73 @@ while(<FH>)
|
||||
|
||||
if($new ne $old)
|
||||
{
|
||||
$activity_counter[31-$i]++;
|
||||
$activityCounter[31-$i]++;
|
||||
}
|
||||
}
|
||||
|
||||
$old_address = $address;
|
||||
}
|
||||
|
||||
for(my $i = 0; $i < 32; $i++)
|
||||
# Print bit numbers:
|
||||
print "Bits\t";
|
||||
for(my $i = 31; $i >= 0; $i--)
|
||||
{
|
||||
print $i.":".$activity_counter[$i]."\n";
|
||||
print $i."\t";
|
||||
}
|
||||
|
||||
#Print Activity
|
||||
print "\nActivity\t";
|
||||
for(my $i = 31; $i >= 0; $i--)
|
||||
{
|
||||
print $activityCounter[$i]."\t";
|
||||
}
|
||||
|
||||
#Print relative Activity
|
||||
print "\nPercent\t";
|
||||
my $sum = 0;
|
||||
for(my $i = 31; $i >= 0; $i--)
|
||||
{
|
||||
$sum = $sum + $activityCounter[$i];
|
||||
}
|
||||
for(my $i = 31; $i >= 0; $i--)
|
||||
{
|
||||
my $string = $activityCounter[$i]/$sum."\t";
|
||||
$string =~ s/\./,/g;
|
||||
print $string;
|
||||
}
|
||||
|
||||
#Search Bank Locations
|
||||
for(my $i = 0; $i < $numberOfBankBits; $i++)
|
||||
{
|
||||
my $maximum = max(@activityCounter);
|
||||
my ($index) = grep $activityCounter[$_] == $maximum , 0.. $#activityCounter;
|
||||
$mapping[$index] = "B$i";
|
||||
$activityCounter[$index] = -1;
|
||||
}
|
||||
|
||||
#Search Column Locations
|
||||
for(my $i = 0; $i < $numberOfColumnBits; $i++)
|
||||
{
|
||||
my $maximum = max(@activityCounter);
|
||||
my ($index) = grep $activityCounter[$_] == $maximum , 0.. $#activityCounter;
|
||||
$mapping[$index] = "C$i";
|
||||
$activityCounter[$index] = -1;
|
||||
}
|
||||
|
||||
#Search Row Locations
|
||||
for(my $i = 0; $i < $numberOfRowBits; $i++)
|
||||
{
|
||||
my $maximum = max(@activityCounter);
|
||||
my ($index) = grep $activityCounter[$_] == $maximum , 0.. $#activityCounter;
|
||||
$mapping[$index] = "R$i";
|
||||
$activityCounter[$index] = -1;
|
||||
}
|
||||
|
||||
#Print final mapping
|
||||
print "\nMapping\t";
|
||||
my $maximum = max(@activityCounter);
|
||||
for(my $i = 31; $i >= 0; $i--)
|
||||
{
|
||||
print $mapping[$i]."\t";
|
||||
}
|
||||
print "\n";
|
||||
|
||||
Reference in New Issue
Block a user