[build] Change memory_layout from csv to yaml

I realized we don't need yet another format for configuration. As a
bonus, yaml also allows for a more descriptive file.
This commit is contained in:
Justin C. Miller
2022-01-13 20:17:00 -08:00
parent 950360fddc
commit 939022bb5e
7 changed files with 39 additions and 25 deletions

View File

@@ -4,27 +4,29 @@ class Layout:
sizes = {'G': 1024 ** 3, 'T': 1024 ** 4}
@staticmethod
def get_size(desc):
size, mag = int(desc[:-1]), desc[-1]
try:
mult = Layout.sizes[mag]
except KeyError:
raise RuntimeError(f"No magnitude named '{mag}'.")
return size * mult
def __init__(self, path):
import csv
from yaml import safe_load
regions = []
addr = 1 << 64
with open(path, newline='') as infile:
reader = csv.reader(infile)
for row in reader:
name, size = row[:2]
shared = (len(row) > 2 and "shared" in row[2])
size, mag = int(size[:-1]), size[-1]
try:
mult = Layout.sizes[mag]
except KeyError:
raise RuntimeError(f"No magnitude named '{mag}'.")
size *= mult
with open(path, 'r') as infile:
data = safe_load(infile.read())
for r in data:
size = Layout.get_size(r["size"])
addr -= size
regions.append(Layout.Region(name, addr, size, shared))
regions.append(Layout.Region(r["name"], addr, size,
r.get("shared", False)))
self.regions = tuple(regions)