base: added method for parsing bins.csv files

Signed-off-by: Grzegorz Latosinski <glatosinski@antmicro.com>
This commit is contained in:
Grzegorz Latosinski 2020-11-25 18:53:14 +01:00
parent 77bad0df65
commit ee006e4a3f
1 changed files with 23 additions and 2 deletions

View File

@ -22,12 +22,16 @@ import os
from dataclasses import dataclass
from dataclasses_json import dataclass_json
from enum import Enum
from typing import Optional, Union, Tuple
from typing import Optional, Union, Tuple, List
from collections import namedtuple
from pathlib import Path
import csv
from .utils import comparable_to_none
from .utils import dataclass_json_passthru_config as dj_pass_cfg
FETBin = namedtuple('FETBin', ['device', 'bin', 'w', 'l'])
LibraryOrCell = Union['Library', 'Cell']
@ -545,6 +549,24 @@ class Cell:
self))
return "{}__{}".format(self.library.fullname, self.name)
@classmethod
def parse_bins(cls, binsfile) -> List[FETBin]:
"""
Parse bins.csv file.
Parameters
----------
binsfile: path to the bins.csv file
"""
with open(binsfile, 'r') as f:
reader = csv.reader(f)
next(reader)
res = []
for line in reader:
res.append(FETBin(line[0], int(line[1]), float(line[2]), float(line[3])))
return res
@classmethod
def parse(cls, s):
kw = {}
@ -555,7 +577,6 @@ class Cell:
return cls(**kw)
if __name__ == "__main__":
import doctest
doctest.testmod()