Open dan-fritchman opened 1 year ago
Per the lef documentation (http://coriolis.lip6.fr/doc/lefdef/lefdefref/lefdefref.pdf) page 11, there is some overlap of allowed statements between what's in a tech-lef vs. a library-lef, is your idea to have something like this?
Lef
-> overlapping items here (version, busbitchars, via, site, beginext...)
-> Optional<LefTech> (LAYER, NONDEFAULTRULE and other tech-only statements)
-> Optional<LefLibrary> (MACRO and other library-only)
Wasn't sure honestly!
I think the primary options are
(a) that, or
(b) just having a bunch of overlapping fields (perhaps with some macro-assistance), or
(c) just one big thing called Lef
, no explicit LefLibrary
vs LefTech
Thinking about this a little more, there are two main approaches I can think of:
LAYER
, VIA
, VIARULE
, NONDEFAULTRULE
etc) this is no small feat, as the list of things arguably grows/changes over time and likely a lot more than the version to version changes that would be found in a MACRO
.LAYER layername
and END layername
as a vec of LefGenericAttribute
s which is stored in fairly generic fashion. E.g. a struct with a LefKey type and a vec of String that goes up to but does not include the trailing semicolon. Or just a simple vec of Strings.Skipping over the pros/cons of the first method, the second method has the following pros/cons
LefGenericAttribute
s inside tech constructs that look somewhat like a lef construct but are invalid would not be caught.A hybrid method is possible/practical: certain tech constructs could be fully parsed/supported and other unsupported/undersupported constructs would be captured as LefGenericAttribute
. Maybe this would be be more confusing, unsure.
The Lef21 docs begin with:
This issue: add the latter "tech-lef" content.
This will be especially valuable for other layout21 use cases which endeavor to auto-generate layout from existing technology data - especially from tech-LEF.
Likely Implementations
LefLibrary
, which is essentially the manifestation of the "LEF design library" ideaLefTech
(or similar), which includes all of the technology-specification contents (SITE
,LAYER
, etc.)LefLibrary
andLefTech
, which I suppose can just be calledLef
.