mirror of
https://github.com/openhwgroup/cvw
synced 2025-01-23 13:04:28 +00:00
New extractArea script to generate area tables
This commit is contained in:
parent
8db49c83c4
commit
ec3ab7a93b
118
synthDC/extractArea.pl
Executable file
118
synthDC/extractArea.pl
Executable file
@ -0,0 +1,118 @@
|
||||
#!/bin/perl -W
|
||||
|
||||
###########################################
|
||||
## extractArea.pl
|
||||
##
|
||||
## Written: David_Harris@hmc.edu
|
||||
## Created: 19 Feb 2023
|
||||
## Modified:
|
||||
##
|
||||
## Purpose: Pull area statistics from run directory
|
||||
##
|
||||
## A component of the CORE-V-WALLY configurable RISC-V project.
|
||||
##
|
||||
## Copyright (C) 2021-23 Harvey Mudd College & Oklahoma State University
|
||||
##
|
||||
## SPDX-License-Identifier: Apache-2.0 WITH SHL-2.1
|
||||
##
|
||||
## Licensed under the Solderpad Hardware License v 2.1 (the “License”); you may not use this file
|
||||
## except in compliance with the License, or, at your option, the Apache License version 2.0. You
|
||||
## may obtain a copy of the License at
|
||||
##
|
||||
## https:##solderpad.org/licenses/SHL-2.1/
|
||||
##
|
||||
## Unless required by applicable law or agreed to in writing, any work distributed under the
|
||||
## License is distributed on an “AS IS” BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
|
||||
## either express or implied. See the License for the specific language governing permissions
|
||||
## and limitations under the License.
|
||||
################################################################################################
|
||||
|
||||
|
||||
use strict;
|
||||
use warnings;
|
||||
import os;
|
||||
|
||||
my %configResults;
|
||||
my $dir = "runs";
|
||||
my $macro = "Macro/Black Box area:";
|
||||
my $seq = "Noncombinational area:";
|
||||
my $buf = "Buf/Inv area:";
|
||||
my $comb = "Combinational area:";
|
||||
my $macroC = "Number of macros/black boxes:";
|
||||
my $seqC = "Number of sequential cells:";
|
||||
my $bufC = "Number of buf/inv:";
|
||||
my $combC = "Number of combinational cells:";
|
||||
my @keywords = ("ifu", "ieu", "lsu", "hzu", "ebu.ebu", "priv.priv", "mdu.mdu", "fpu.fpu", "wallypipelinedcore", $macro, $seq, $buf, $comb, $macroC, $seqC, $bufC, $combC);
|
||||
my @keywordsp = ("ifu", "ieu", "lsu", "hzu", "ebu.ebu", "priv.priv", "mdu.mdu", "fpu.fpu", "wallypipelinedcore",
|
||||
"RAMs", "Flip-flops", "Inv/Buf", "Logic", "RAMs Cnt", "Flip-flops Cnt", "Inv/Buf Cnt", "Logic Cnt", "Total Cnt");
|
||||
my @configs = ("rv32e", "rv32i", "rv32imc", "rv32gc", "rv64i", "rv64gc");
|
||||
|
||||
opendir(DIR, $dir) or die "Could not open $dir";
|
||||
|
||||
while (my $filename = readdir(DIR)) {
|
||||
if ($filename =~ /orig_tsmc28psyn/) {
|
||||
# print "$filename\n";
|
||||
&processRun("$dir/$filename");
|
||||
}
|
||||
}
|
||||
closedir(DIR);
|
||||
|
||||
# print table of results
|
||||
printf("%20s\t", "");
|
||||
foreach my $config (@configs) {
|
||||
printf("%s\t", $config);
|
||||
}
|
||||
print ("\n");
|
||||
foreach my $kw (@keywordsp) {
|
||||
my $kws = substr($kw, 0, 3);
|
||||
printf("%20s\t", $kw);
|
||||
foreach my $config (@configs) {
|
||||
my $r = $configResults{$config};
|
||||
if (exists ${$r}{$kw}) {
|
||||
my $area = ${$r}{$kw};
|
||||
while ($area =~ s/(\d+)(\d\d\d)/$1\,$2/){};
|
||||
#print "${$r}{$kw}\t";
|
||||
print "$area\t";
|
||||
} else {
|
||||
print("\t");
|
||||
}
|
||||
}
|
||||
print("\n");
|
||||
}
|
||||
|
||||
sub processRun {
|
||||
my $fname = shift;
|
||||
my $ffname = "$fname/reports/wallypipelinedcore_area.rep";
|
||||
open(FILE, "$ffname") or die ("Could not read $ffname");
|
||||
|
||||
# Extract configuration from fname;
|
||||
$fname =~ /_([^_]*)_orig/;
|
||||
my $config = $1;
|
||||
#print("Reading $config from $ffname\n");
|
||||
|
||||
# Search for results
|
||||
my %results;
|
||||
while (my $line = <FILE>) {
|
||||
foreach my $kw (@keywords) {
|
||||
# print "$kw $line\n";
|
||||
if ($line =~ /^${kw}\s+(\S*)/) {
|
||||
#print "$line $kw $1\n";
|
||||
$results{$kw} = int($1);
|
||||
}
|
||||
}
|
||||
}
|
||||
foreach my $kw (@keywords) {
|
||||
#print "$kw\t$results{$kw}\n";
|
||||
}
|
||||
$results{"Logic"} = $results{$comb} - $results{$buf};
|
||||
$results{"Inv/Buf"} = $results{$buf};
|
||||
$results{"Flip-flops"} = $results{$seq};
|
||||
$results{"RAMs"} = $results{$macro};
|
||||
$results{"Logic Cnt"} = $results{$combC} - $results{$bufC};
|
||||
$results{"Inv/Buf Cnt"} = $results{$bufC};
|
||||
$results{"Flip-flops Cnt"} = $results{$seqC};
|
||||
$results{"RAMs Cnt"} = $results{$macroC};
|
||||
$results{"Total Cnt"} = $results{$macroC} + $results{$seqC} + $results{$combC};
|
||||
close(FILE);
|
||||
$configResults{$config} = \%results;
|
||||
}
|
Loading…
Reference in New Issue
Block a user