Last active
November 26, 2024 20:32
-
-
Save daniel-endraws/17d8086814aad268b74cef3996855b3b to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
set_cmd_units\ | |
-time ns\ | |
-capacitance pF\ | |
-current mA\ | |
-voltage V\ | |
-resistance kOhm\ | |
-distance um | |
read_liberty "/home/dendraws/.volare/volare/sky130/versions/0fe599b2afb6708d281543108caf8310912f54af/sky130A/libs.ref/sky130_fd_sc_hd/lib/sky130_fd_sc_hd__tt_025C_1v80.lib" | |
read_verilog runs/drum/50-openroad-fillinsertion/square.nl.v | |
link_design square | |
read_spef runs/drum/52-openroad-rcx/nom/square.nom.spef | |
report_checks -unconstrained -fields {slew cap input nets fanout} -path_delay max |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
set_cmd_units\ | |
-time ns\ | |
-capacitance pF\ | |
-current mA\ | |
-voltage V\ | |
-resistance kOhm\ | |
-distance um | |
read_liberty "/home/dendraws/.volare/volare/sky130/versions/0fe599b2afb6708d281543108caf8310912f54af/sky130A/libs.ref/sky130_fd_sc_hd/lib/sky130_fd_sc_hd__tt_025C_1v80.lib" | |
read_verilog runs/drum/06-yosys-synthesis/square.nl.v | |
link_design square | |
# set pins [get_pins -of_objects [get_nets *d1_x_in_q[*] ] -filter "direction==input"] | |
# report_checks -through [get_nets *d1_x_in_q[*]] -unconstrained | |
report_checks -unconstrained -fields {slew cap input nets fanout} -path_delay max |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
n | k | delay_pre_pnr | delay_post_pnr | std_cell_cnt | area | power_internal | power_switching | power_leakage | power_total | |
---|---|---|---|---|---|---|---|---|---|---|
10 | 3 | 2.74 | 2.77 | 534 | 1207.41 | 1.413710560882464e-05 | 3.176662721671164e-05 | 3.155573802260392e-09 | 4.590688695316203e-05 | |
10 | 4 | 2.17 | 2.60 | 553 | 1383.83 | 2.033684722846374e-05 | 4.843902206630446e-05 | 3.280678173567253e-09 | 6.8779154389631e-05 | |
10 | 5 | 5.08 | 4.95 | 625 | 2148.31 | 0.00012896800762973726 | 0.0001995161728700623 | 4.169710354773315e-09 | 0.00032848832779563963 | |
10 | 6 | 4.96 | 4.53 | 639 | 2265.92 | 0.00010431143164169043 | 0.0001639211259316653 | 4.320279689551398e-09 | 0.0002682368503883481 | |
10 | 7 | 6.00 | 5.86 | 701 | 2838.97 | 0.0005395640037022531 | 0.0007069063722155988 | 4.76090544765384e-09 | 0.0012464751489460468 | |
10 | 8 | 5.96 | 5.35 | 732 | 2947.83 | 0.000477970257634297 | 0.0007059926283545792 | 4.975327261291795e-09 | 0.0011839679209515452 | |
10 | 9 | 4.62 | 4.42 | 778 | 3071.7 | 0.0003583106736186892 | 0.0005540750571526587 | 4.801871789084089e-09 | 0.0009123905329033732 | |
10 | 10 | 4.76 | 4.69 | 934 | 4748.3 | 0.0005460557877086103 | 0.0007990064914338291 | 6.538876107242686e-09 | 0.0013450687984004617 | |
16 | 6 | 6.82 | 5.93 | 748 | 3320.68 | 0.00029735753196291625 | 0.00040026084752753377 | 5.686603188337358e-09 | 0.0006976240547373891 | |
16 | 7 | 8.25 | 7.27 | 833 | 4165.24 | 0.0006229003192856908 | 0.0008005151175893843 | 6.407050889833954e-09 | 0.0014234218979254365 | |
16 | 8 | 7.80 | 6.83 | 930 | 4516.83 | 0.0008102348074316978 | 0.0010803058976307511 | 6.664804264033819e-09 | 0.0018905473407357931 | |
24 | 6 | 7.93 | 7.23 | 827 | 4138.97 | 0.00030967663042247295 | 0.0005211451789364219 | 7.104019594805777e-09 | 0.0008308289106935263 | |
24 | 7 | 7.67 | 7.66 | 928 | 5247.53 | 0.001056209672242403 | 0.001332187675870955 | 8.020236919037416e-09 | 0.0023884051479399204 | |
24 | 8 | 8.45 | 7.91 | 989 | 5350.13 | 0.0008592579397372901 | 0.0010842389892786741 | 7.93856624881073e-09 | 0.0019435049034655094 | |
32 | 6 | 7.69 | 7.18 | 925 | 5372.65 | 0.00032668153289705515 | 0.0005787513800896704 | 9.388064547977137e-09 | 0.0009054422844201326 | |
32 | 7 | 10.52 | 9.43 | 1039 | 6312.3 | 0.0016191414324566722 | 0.0022836090065538883 | 9.435511039157518e-09 | 0.003902760101482272 | |
32 | 8 | 10.36 | 9.28 | 1156 | 6766.49 | 0.0009066107450053096 | 0.0011804619571194053 | 9.551590629541806e-09 | 0.0020870822481811047 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import re | |
import json | |
from dataclasses import dataclass, fields, asdict | |
import csv | |
STA_REGEX = r"\s*([^\s]+)\s*data arrival time" | |
@dataclass | |
class Entry: | |
n: int | |
k: int | |
delay_pre_pnr: float | |
delay_post_pnr: float | |
std_cell_cnt: int | |
area: float | |
power_internal: float | |
power_switching: float | |
power_leakage: float | |
power_total: float | |
drum_stats = [] | |
full_stats = [] | |
def get_stats(name, n, k): | |
try: | |
prefix = f"logs/{name}_{n}_{k}" | |
with open(f"{prefix}_sta_pre_pnr.log", "r") as f: | |
delay_pre_pnr = re.search(STA_REGEX, f.read())[1] | |
with open(f"{prefix}_sta_post_pnr.log", "r") as f: | |
delay_post_pnr = re.search(STA_REGEX, f.read())[1] | |
with open(f"{prefix}_final_metrics.json", "r") as f: | |
data = json.load(f) | |
entry = Entry( | |
n, k, delay_pre_pnr, delay_post_pnr, | |
data["design__instance__count"], | |
data["design__instance__area"], | |
data["power__internal__total"], | |
data["power__switching__total"], | |
data["power__leakage__total"], | |
data["power__total"], | |
) | |
return entry | |
except Exception as e: | |
print(f"Did not find {name} {n} {k}") | |
for k in range(3, 11): | |
drum_stats.append(get_stats("drum", 10, k)) | |
for k in range(3, 11): | |
full_stats.append(get_stats("full", 10, k)) | |
for n in [16, 24, 32]: | |
for k in [6, 7, 8]: | |
drum_stats.append(get_stats("drum", n, k)) | |
full_stats.append(get_stats("full", n, n)) | |
for name, stat_list in [("drum_stats", drum_stats), ("full_stats", full_stats)]: | |
with open(f"{name}.csv", "w") as f: | |
field_names = [f.name for f in fields(Entry)] | |
w = csv.DictWriter(f, field_names) | |
w.writeheader() | |
w.writerows([asdict(entry) for entry in stat_list]) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
n | k | delay_pre_pnr | delay_post_pnr | std_cell_cnt | area | power_internal | power_switching | power_leakage | power_total | |
---|---|---|---|---|---|---|---|---|---|---|
10 | 3 | 0.45 | 0.62 | 1020 | 1363.81 | 1.756913547978911e-06 | 4.739042196888477e-06 | 4.554537191836516e-09 | 6.500510608020704e-06 | |
10 | 4 | 0.41 | 0.65 | 1025 | 1446.39 | 4.123993221583078e-06 | 9.658832823333796e-06 | 4.690924537698038e-09 | 1.378751767333597e-05 | |
10 | 5 | 1.63 | 1.94 | 1053 | 1736.67 | 2.1853755242773332e-05 | 4.0922128391684964e-05 | 5.074255682302464e-09 | 6.278095679590479e-05 | |
10 | 6 | 2.27 | 2.65 | 1085 | 2019.44 | 4.739794530905783e-05 | 8.329876436619088e-05 | 5.247267065300321e-09 | 0.00013070197019260377 | |
10 | 7 | 3.67 | 3.35 | 1154 | 2496.14 | 7.080696377670392e-05 | 0.00012740172678604722 | 5.782021972322582e-09 | 0.00019821447494905442 | |
10 | 8 | 3.54 | 3.61 | 1231 | 3294.41 | 0.0001834277791203931 | 0.00027367021539248526 | 6.8130452390846585e-09 | 0.00045710481936112046 | |
10 | 9 | 3.54 | 3.76 | 1288 | 3696.04 | 0.0002482568961568177 | 0.00041396316373720765 | 7.20645987328794e-09 | 0.0006622272776439786 | |
10 | 10 | 4.34 | 4.43 | 1438 | 4934.73 | 0.0004132709000259638 | 0.0006798076792620122 | 8.313500110546101e-09 | 0.0010930869029834867 | |
16 | 16 | 5.58 | 5.63 | 2202 | 11493.5 | 0.002633115043863654 | 0.0038948864676058292 | 1.5635855277196242e-08 | 0.006528017111122608 | |
24 | 24 | 7.22 | 7.55 | 3876 | 24659.9 | 0.007803516462445259 | 0.012044630013406277 | 2.766299900258673e-08 | 0.0198481734842062 | |
32 | 32 | 7.99 | 8.57 | 6217 | 44554 | 0.02198158949613571 | 0.03103804960846901 | 4.732950031893779e-08 | 0.0530196875333786 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env bash | |
# cd ~/openlane2 | |
# nix-shell | |
# cd - | |
mkdir -p logs | |
rm -rf logs/* | |
run_flow () { | |
name=${1} | |
n=${2} | |
k=${3} | |
set_n ${n} | |
set_k ${k} | |
mkdir -p runs/drum | |
rm -rf runs/drum/* | |
openlane --condensed --run-tag drum --force-run-dir runs/drum src/config_merged.json | |
sta -exit -no_splash scripts/delay_synth.tcl > logs/${name}_${n}_${k}_sta_pre_pnr.log | |
sta -exit -no_splash scripts/delay_rcx.tcl > logs/${name}_${n}_${k}_sta_post_pnr.log | |
cp runs/drum/06-yosys-synthesis/reports/stat.rpt logs/${name}_${n}_${k}_synth_stat.rpt | |
cp /home/dendraws/Documents/tt08-donut/runs/drum/final/metrics.json logs/${name}_${n}_${k}_final_metrics.json | |
} | |
set_drum () { | |
sed -i -r -e "s/(parameter IS_DRUM =) (0|1)/\1 ${1}/" src/square.v | |
} | |
set_n () { | |
sed -i -r -e "s/(parameter N =) [0-9]+/\1 ${1}/" src/square.v | |
} | |
set_k () { | |
sed -i -r -e "s/(parameter K =) [0-9]+/\1 ${1}/" src/square.v | |
} | |
set_n 10 | |
set_drum 1 | |
for i in {3..10} | |
do | |
run_flow drum 10 ${i} | |
done | |
set_drum 0 | |
for i in {3..10} | |
do | |
run_flow full 10 ${i} | |
done | |
set_n 16 | |
set_drum 1 | |
run_flow drum 16 6 | |
run_flow drum 16 7 | |
run_flow drum 16 8 | |
set_drum 0 | |
run_flow full 16 16 | |
set_n 24 | |
set_drum 1 | |
run_flow drum 24 6 | |
run_flow drum 24 7 | |
run_flow drum 24 8 | |
set_drum 0 | |
run_flow full 24 24 | |
set_n 32 | |
set_drum 1 | |
run_flow drum 32 6 | |
run_flow drum 32 7 | |
run_flow drum 32 8 | |
set_drum 0 | |
run_flow full 32 32 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment