Skip to content

Commit 6c32476

Browse files
committed
util: bazel plot_congestion
Signed-off-by: Øyvind Harboe <[email protected]>
1 parent de2e957 commit 6c32476

File tree

5 files changed

+74
-7
lines changed

5 files changed

+74
-7
lines changed

flow/BUILD.bazel

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
load("@bazel-orfs//:openroad.bzl", "orfs_flow")
2-
load("@rules_python//python:pip.bzl", "compile_pip_requirements")
32

43
filegroup(
54
name = "constraints-gcd",
@@ -250,9 +249,3 @@ filegroup(
250249
srcs = glob(include = ["designs/src/ethmac_lvt/*.v"]),
251250
visibility = [":__subpackages__"],
252251
)
253-
254-
compile_pip_requirements(
255-
name = "requirements",
256-
src = "util/requirements.in",
257-
requirements_txt = "util/requirements_lock.txt",
258-
)

flow/util/BUILD.bazel

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
load("@orfs-pip//:requirements.bzl", "requirement")
2+
load("@rules_python//python:pip.bzl", "compile_pip_requirements")
3+
4+
exports_files(["open_plots.sh"])
5+
6+
py_binary(
7+
name = "plot_congestion",
8+
srcs = ["plot_congestion.py"],
9+
main = "plot_congestion.py",
10+
visibility = ["//visibility:public"],
11+
deps = [requirement("matplotlib")],
12+
)
13+
14+
compile_pip_requirements(
15+
name = "requirements",
16+
src = "requirements.in",
17+
requirements_txt = "requirements_lock.txt",
18+
)

flow/util/open_plots.sh

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
#!/bin/bash
2+
xdg-open $1

flow/util/plot_congestion.bzl

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
"""Plots congestion against some parameter such as PLACE_DENSITY"""
2+
3+
def plot_congestion(name, srcs, argument, values):
4+
native.filegroup(
5+
name = "{name}_congestion".format(name = name),
6+
srcs = srcs,
7+
output_group = "congestion.rpt",
8+
)
9+
10+
native.genrule(
11+
name = "{}_pdf".format(name),
12+
srcs = ["{name}_congestion".format(name = name)],
13+
outs = ["{}.pdf".format(name)],
14+
cmd = "$(execpath //util:plot_congestion) {argument} $@ $(locations :{name}_congestion) {values}".format(values = " ".join(values), argument = argument, name = name),
15+
tools = ["//util:plot_congestion"],
16+
)
17+
18+
native.sh_binary(
19+
name = name,
20+
srcs = ["//util:open_plots.sh"],
21+
args = ["$(location :{}.pdf)".format(name)],
22+
data = ["{}.pdf".format(name)],
23+
)

flow/util/plot_congestion.py

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
import matplotlib.pyplot as plt
2+
import numpy as np
3+
import sys
4+
import re
5+
import os
6+
7+
8+
sweep = sys.argv[1]
9+
output = sys.argv[2]
10+
remainder = sys.argv[3:]
11+
files = remainder[: len(remainder) // 2]
12+
values = remainder[len(remainder) // 2 :]
13+
14+
# count lines in each file and divide by 3 and create a list of those
15+
# numbers
16+
congestion = []
17+
for file in files:
18+
with open(file, "r") as f:
19+
lines = f.readlines()
20+
congestion.append(len(lines) // 4)
21+
22+
# xy plot of density vs DRC errors
23+
x = list(map(float, values))
24+
y = congestion
25+
plt.plot(x, y, "o-")
26+
plt.xlabel(sweep)
27+
plt.ylabel("DRC Errors")
28+
plt.title(sweep + " vs DRC Errors")
29+
plt.grid()
30+
plt.yscale("log")
31+
plt.savefig(output)

0 commit comments

Comments
 (0)