mirror of
https://github.com/openhwgroup/cvw
synced 2025-02-11 06:05:49 +00:00
tuning modules for ppa
This commit is contained in:
parent
31f372e7b3
commit
b82520237c
@ -180,12 +180,39 @@ module ppa_shiftleft #(parameter WIDTH=32) (
|
|||||||
assign y = a << amt;
|
assign y = a << amt;
|
||||||
endmodule
|
endmodule
|
||||||
|
|
||||||
|
module ppa_shifter_16 #(parameter WIDTH=16) (
|
||||||
|
input logic [WIDTH-1:0] A,
|
||||||
|
input logic [$clog2(WIDTH)-1:0] Amt,
|
||||||
|
input logic Right, Arith, W64,
|
||||||
|
output logic [WIDTH-1:0] Y);
|
||||||
|
|
||||||
|
ppa_shifter #(WIDTH) sh (.*);
|
||||||
|
endmodule
|
||||||
|
|
||||||
module ppa_shifter_32 #(parameter WIDTH=32) (
|
module ppa_shifter_32 #(parameter WIDTH=32) (
|
||||||
input logic [WIDTH-1:0] A,
|
input logic [WIDTH-1:0] A,
|
||||||
input logic [$clog2(WIDTH)-1:0] Amt,
|
input logic [$clog2(WIDTH)-1:0] Amt,
|
||||||
input logic Right, Arith, W64,
|
input logic Right, Arith, W64,
|
||||||
output logic [WIDTH-1:0] Y);
|
output logic [WIDTH-1:0] Y);
|
||||||
|
|
||||||
|
ppa_shifter #(WIDTH) sh (.*);
|
||||||
|
endmodule
|
||||||
|
|
||||||
|
module ppa_shifter_64 #(parameter WIDTH=64) (
|
||||||
|
input logic [WIDTH-1:0] A,
|
||||||
|
input logic [$clog2(WIDTH)-1:0] Amt,
|
||||||
|
input logic Right, Arith, W64,
|
||||||
|
output logic [WIDTH-1:0] Y);
|
||||||
|
|
||||||
|
ppa_shifter #(WIDTH) sh (.*);
|
||||||
|
endmodule
|
||||||
|
|
||||||
|
module ppa_shifter #(parameter WIDTH=32) (
|
||||||
|
input logic [WIDTH-1:0] A,
|
||||||
|
input logic [$clog2(WIDTH)-1:0] Amt,
|
||||||
|
input logic Right, Arith, W64,
|
||||||
|
output logic [WIDTH-1:0] Y);
|
||||||
|
|
||||||
logic [2*WIDTH-2:0] z, zshift;
|
logic [2*WIDTH-2:0] z, zshift;
|
||||||
logic [$clog2(WIDTH)-1:0] amttrunc, offset;
|
logic [$clog2(WIDTH)-1:0] amttrunc, offset;
|
||||||
|
|
||||||
@ -264,7 +291,7 @@ module ppa_prioriyencoder #(parameter N = 8) (
|
|||||||
end
|
end
|
||||||
endmodule
|
endmodule
|
||||||
|
|
||||||
module ppa_decoder (
|
module ppa_decoder #(parameter N = 8) (
|
||||||
input logic [$clog2(N)-1:0] a,
|
input logic [$clog2(N)-1:0] a,
|
||||||
output logic [N-1:0] y);
|
output logic [N-1:0] y);
|
||||||
always_comb begin
|
always_comb begin
|
||||||
|
17
synthDC/Synopsys_stack_trace_52064.txt
Normal file
17
synthDC/Synopsys_stack_trace_52064.txt
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
GNU gdb (GDB) Red Hat Enterprise Linux 8.2-16.el8
|
||||||
|
Copyright (C) 2018 Free Software Foundation, Inc.
|
||||||
|
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
|
||||||
|
This is free software: you are free to change and redistribute it.
|
||||||
|
There is NO WARRANTY, to the extent permitted by law.
|
||||||
|
Type "show copying" and "show warranty" for details.
|
||||||
|
This GDB was configured as "x86_64-redhat-linux-gnu".
|
||||||
|
Type "show configuration" for configuration details.
|
||||||
|
For bug reporting instructions, please see:
|
||||||
|
<http://www.gnu.org/software/gdb/bugs/>.
|
||||||
|
Find the GDB manual and other documentation resources online at:
|
||||||
|
<http://www.gnu.org/software/gdb/documentation/>.
|
||||||
|
|
||||||
|
For help, type "help".
|
||||||
|
Type "apropos word" to search for commands related to "word".
|
||||||
|
Attaching to process 52064
|
||||||
|
(gdb) (gdb) (gdb) (gdb)
|
17
synthDC/Synopsys_stack_trace_55441.txt
Normal file
17
synthDC/Synopsys_stack_trace_55441.txt
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
GNU gdb (GDB) Red Hat Enterprise Linux 8.2-16.el8
|
||||||
|
Copyright (C) 2018 Free Software Foundation, Inc.
|
||||||
|
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
|
||||||
|
This is free software: you are free to change and redistribute it.
|
||||||
|
There is NO WARRANTY, to the extent permitted by law.
|
||||||
|
Type "show copying" and "show warranty" for details.
|
||||||
|
This GDB was configured as "x86_64-redhat-linux-gnu".
|
||||||
|
Type "show configuration" for configuration details.
|
||||||
|
For bug reporting instructions, please see:
|
||||||
|
<http://www.gnu.org/software/gdb/bugs/>.
|
||||||
|
Find the GDB manual and other documentation resources online at:
|
||||||
|
<http://www.gnu.org/software/gdb/documentation/>.
|
||||||
|
|
||||||
|
For help, type "help".
|
||||||
|
Type "apropos word" to search for commands related to "word".
|
||||||
|
Attaching to process 55441
|
||||||
|
(gdb) (gdb) (gdb) (gdb)
|
67
synthDC/crte_000052064.txt
Normal file
67
synthDC/crte_000052064.txt
Normal file
@ -0,0 +1,67 @@
|
|||||||
|
CRTE_SNAPSHOT_START
|
||||||
|
|
||||||
|
SECTION_CRTE_VERSION
|
||||||
|
3.0
|
||||||
|
|
||||||
|
SECTION_PID
|
||||||
|
52064
|
||||||
|
|
||||||
|
SECTION_POLLING_INTERVAL
|
||||||
|
5
|
||||||
|
|
||||||
|
SECTION_DATE_TIME
|
||||||
|
Thu May 12 21:44:48 UTC 2022 (1652391888)
|
||||||
|
|
||||||
|
SECTION_OS_VERSION
|
||||||
|
osname: Linux
|
||||||
|
hostname: tera
|
||||||
|
arch: x86_64
|
||||||
|
release_version: 5.4.157-1-pve
|
||||||
|
|
||||||
|
SECTION_IPC_INFO
|
||||||
|
|
||||||
|
------ Message Queues --------
|
||||||
|
key msqid owner perms used-bytes messages
|
||||||
|
|
||||||
|
------ Shared Memory Segments --------
|
||||||
|
key shmid owner perms bytes nattch status
|
||||||
|
0x00000000 360451 nwhyte-agu 600 524288 2 dest
|
||||||
|
0x00000000 65540 kkim 600 134217728 2 dest
|
||||||
|
0x00000000 557061 nwhyte-agu 600 67108864 2 dest
|
||||||
|
0x00000000 6 harris 600 524288 2 dest
|
||||||
|
0x00000000 7 harris 600 524288 2 dest
|
||||||
|
0x00000000 5275656 harris 600 2097152 2 dest
|
||||||
|
0x00000000 11993097 kkim 600 524288 2 dest
|
||||||
|
0x00000000 11 harris 600 524288 2 dest
|
||||||
|
0x00000000 15204364 harris 644 790528 2 dest
|
||||||
|
0x00000000 7372813 chuang 600 524288 2 SECTION_ULIMIT
|
||||||
|
core file size (blocks, -c) 0
|
||||||
|
data seg size (kbytes, -d) unlimited
|
||||||
|
scheduling priority (-e) 0
|
||||||
|
file size (blocks, -f) unlimited
|
||||||
|
pending signals (-i) 515072
|
||||||
|
max locked memory (kbytes, -l) 64
|
||||||
|
max memory size (kbytes, -m) unlimited
|
||||||
|
open files (-n) 524288
|
||||||
|
pipe size (512 bytes, -p) 8
|
||||||
|
POSIX message queues (bytes, -q) 819200
|
||||||
|
real-time priority (-r) 0
|
||||||
|
stack size (kbytes, -s) unlimited
|
||||||
|
cpu time (seconds, -t) unlimited
|
||||||
|
max user processes (-u) 515072
|
||||||
|
virtual memory (kbytes, -v) unlimited
|
||||||
|
file locks (-x) unlimited
|
||||||
|
|
||||||
|
SECTION_SYSCONF
|
||||||
|
_SC_THREAD_SAFE_FUNCTIONS= 200809
|
||||||
|
_SC_CLK_TCK= 100
|
||||||
|
_SC_OPEN_MAX= 524288
|
||||||
|
_SC_PAGE_SIZE= 4096
|
||||||
|
_SC_ARG_MAX= 4611686018427387903
|
||||||
|
_SC_CHILD_MAX= 515072
|
||||||
|
_SC_LINE_MAX= 2048
|
||||||
|
|
||||||
|
SECTION_FULL_COMMAND
|
||||||
|
/cad/synopsys/SYN/linux64/syn/bin/common_shell_exec -64 -shell dc_shell -r /cad/synopsys/SYN -f scripts/synth.tcl
|
||||||
|
|
||||||
|
SECTION_CPUINFO
|
67
synthDC/crte_000055441.txt
Normal file
67
synthDC/crte_000055441.txt
Normal file
@ -0,0 +1,67 @@
|
|||||||
|
CRTE_SNAPSHOT_START
|
||||||
|
|
||||||
|
SECTION_CRTE_VERSION
|
||||||
|
3.0
|
||||||
|
|
||||||
|
SECTION_PID
|
||||||
|
55441
|
||||||
|
|
||||||
|
SECTION_POLLING_INTERVAL
|
||||||
|
5
|
||||||
|
|
||||||
|
SECTION_DATE_TIME
|
||||||
|
Thu May 12 21:47:47 UTC 2022 (1652392067)
|
||||||
|
|
||||||
|
SECTION_OS_VERSION
|
||||||
|
osname: Linux
|
||||||
|
hostname: tera
|
||||||
|
arch: x86_64
|
||||||
|
release_version: 5.4.157-1-pve
|
||||||
|
|
||||||
|
SECTION_IPC_INFO
|
||||||
|
|
||||||
|
------ Message Queues --------
|
||||||
|
key msqid owner perms used-bytes messages
|
||||||
|
|
||||||
|
------ Shared Memory Segments --------
|
||||||
|
key shmid owner perms bytes nattch status
|
||||||
|
0x00000000 360451 nwhyte-agu 600 524288 2 dest
|
||||||
|
0x00000000 65540 kkim 600 134217728 2 dest
|
||||||
|
0x00000000 557061 nwhyte-agu 600 67108864 2 dest
|
||||||
|
0x00000000 6 harris 600 524288 2 dest
|
||||||
|
0x00000000 7 harris 600 524288 2 dest
|
||||||
|
0x00000000 5275656 harris 600 2097152 2 dest
|
||||||
|
0x00000000 11993097 kkim 600 524288 2 dest
|
||||||
|
0x00000000 11 harris 600 524288 2 dest
|
||||||
|
0x00000000 15204364 harris 644 790528 2 dest
|
||||||
|
0x00000000 7372813 chuang 600 524288 2 SECTION_ULIMIT
|
||||||
|
core file size (blocks, -c) 0
|
||||||
|
data seg size (kbytes, -d) unlimited
|
||||||
|
scheduling priority (-e) 0
|
||||||
|
file size (blocks, -f) unlimited
|
||||||
|
pending signals (-i) 515072
|
||||||
|
max locked memory (kbytes, -l) 64
|
||||||
|
max memory size (kbytes, -m) unlimited
|
||||||
|
open files (-n) 524288
|
||||||
|
pipe size (512 bytes, -p) 8
|
||||||
|
POSIX message queues (bytes, -q) 819200
|
||||||
|
real-time priority (-r) 0
|
||||||
|
stack size (kbytes, -s) unlimited
|
||||||
|
cpu time (seconds, -t) unlimited
|
||||||
|
max user processes (-u) 515072
|
||||||
|
virtual memory (kbytes, -v) unlimited
|
||||||
|
file locks (-x) unlimited
|
||||||
|
|
||||||
|
SECTION_SYSCONF
|
||||||
|
_SC_THREAD_SAFE_FUNCTIONS= 200809
|
||||||
|
_SC_CLK_TCK= 100
|
||||||
|
_SC_OPEN_MAX= 524288
|
||||||
|
_SC_PAGE_SIZE= 4096
|
||||||
|
_SC_ARG_MAX= 4611686018427387903
|
||||||
|
_SC_CHILD_MAX= 515072
|
||||||
|
_SC_LINE_MAX= 2048
|
||||||
|
|
||||||
|
SECTION_FULL_COMMAND
|
||||||
|
/cad/synopsys/SYN/linux64/syn/bin/common_shell_exec -64 -shell dc_shell -r /cad/synopsys/SYN -f scripts/synth.tcl
|
||||||
|
|
||||||
|
SECTION_CPUINFO
|
@ -4,17 +4,19 @@ import subprocess
|
|||||||
from multiprocessing import Pool
|
from multiprocessing import Pool
|
||||||
import csv
|
import csv
|
||||||
import re
|
import re
|
||||||
import matplotlib.pyplot as plt
|
# import matplotlib.pyplot as plt
|
||||||
import numpy as np
|
# import numpy as np
|
||||||
|
|
||||||
|
print("hi")
|
||||||
|
|
||||||
def run_command(module, width, freq):
|
def run_command(module, width, freq):
|
||||||
command = "make synth DESIGN=ppa_{}_{} TECH=sky90 DRIVE=INV FREQ={} MAXOPT=1".format(module, width, freq)
|
command = "make synth DESIGN=ppa_{}_{} TECH=sky90 DRIVE=INV FREQ={} MAXOPT=1".format(module, width, freq)
|
||||||
subprocess.Popen(command, shell=True)
|
subprocess.Popen(command, shell=True)
|
||||||
|
|
||||||
widths = ['32']
|
widths = ['16']
|
||||||
modules = ['shifter']
|
modules = ['shifter']
|
||||||
freqs = ['10', '4000', '5000', '6000']
|
freqs = ['10']
|
||||||
|
|
||||||
|
|
||||||
LoT = []
|
LoT = []
|
||||||
for module in modules:
|
for module in modules:
|
||||||
@ -24,6 +26,7 @@ for module in modules:
|
|||||||
|
|
||||||
pool = Pool()
|
pool = Pool()
|
||||||
pool.starmap(run_command, LoT)
|
pool.starmap(run_command, LoT)
|
||||||
|
pool.close()
|
||||||
|
|
||||||
bashCommand = "grep 'Critical Path Length' runs/ppa_*/reports/*qor*"
|
bashCommand = "grep 'Critical Path Length' runs/ppa_*/reports/*qor*"
|
||||||
outputCPL = subprocess.check_output(['bash','-c', bashCommand])
|
outputCPL = subprocess.check_output(['bash','-c', bashCommand])
|
||||||
|
@ -35,11 +35,16 @@ mult,64,10,4.793300,46798.920227
|
|||||||
mult,64,4000,1.411752,93087.261425
|
mult,64,4000,1.411752,93087.261425
|
||||||
mult,64,5000,1.404875,94040.801492
|
mult,64,5000,1.404875,94040.801492
|
||||||
mult,64,6000,1.415466,89931.661403
|
mult,64,6000,1.415466,89931.661403
|
||||||
|
shifter,16,10,0.000000,0.000000
|
||||||
|
shifter,32,10,1.906335,1656.200032
|
||||||
shifter,32,10,1.906335,1656.200032
|
shifter,32,10,1.906335,1656.200032
|
||||||
shifter,32,10,1.906335,1656.200032
|
shifter,32,10,1.906335,1656.200032
|
||||||
shifter,32,4000,0.260606,3490.760054
|
shifter,32,4000,0.260606,3490.760054
|
||||||
shifter,32,4000,0.260606,3490.760054
|
shifter,32,4000,0.260606,3490.760054
|
||||||
|
shifter,32,4000,0.260606,3490.760054
|
||||||
|
shifter,32,5000,0.238962,4985.260077
|
||||||
shifter,32,5000,0.238962,4985.260077
|
shifter,32,5000,0.238962,4985.260077
|
||||||
shifter,32,5000,0.238962,4985.260077
|
shifter,32,5000,0.238962,4985.260077
|
||||||
shifter,32,6000,0.241742,4312.000069
|
shifter,32,6000,0.241742,4312.000069
|
||||||
shifter,32,6000,0.241742,4312.000069
|
shifter,32,6000,0.241742,4312.000069
|
||||||
|
shifter,32,6000,0.241742,4312.000069
|
||||||
|
|
Loading…
Reference in New Issue
Block a user