LinqToStdf
LinqToStdf copied to clipboard
I published some of my new code for LinqToStdf
I'm finally fully approved to publish my LinqToStdf code changes.
https://github.com/mgoldste1/LinqToStdf/tree/marklio/net7
All my changes are based off of the net7 branch. I downgraded the project to net7 instead of net8.
Let me know what parts you want included in the pull request.
- Pretty much copied the spec into the project… Each record’s class/variable has a ton of information from the spec so you can hover over the class/variable name and see what it is.
- (deleted - was about json)
- Added VUR/PSR functionality. VURs in the spec claim to have a string in them but I am reading them in as a string array because that is what actually worked. PSR’s aren’t tested very well because our PSRs are barebones. It's processed 10k+ stdfs with barebones PSRs though. a. Added a FlaggedArrayFieldLayout attribute for PSR functionality. This is just an attribute that inherits from the array field layout and implements a flagged field layout interface I made. The normal flagged field layout class implements this too and the code generators check for the interface instead of the flagged field class now. b. Removed the exception being thrown on string arrays. I don’t know why it was there or what the implications are for allowing string arrays.
- Made it easier to write stdf files (simple extensions)
- PMR lookup functionality. You can feed it an index of a PMR or an array of indexes for pmr records and it will return them. Also added a GetPmrs extension for Mprs so you can fetch them all at quickly and easily.
- For the stdf record classes, I added a variable to the field layout attributes on the class level that maps from the stdf spec variable name to the variable name in LinqToStdf. a. Added a little lookup class so you can get the associations easily.
- Added OfExactType extensions that takes a string inputs instead of the class in < > brackets. Confirmed this still uses the V4 indexing strategy.
- Added multidut file detection (checks if all the heads/sites are the same and caches the result).
- Added an extension to group up the data for each die and return it in a DieGroup object that contains the Pir, Prr, and the children. If it’s not a multidut file the get children method doesn’t care about the head/site. a. Made a v4 indexing strat extension for this version of the get children as well as a normal extension.
- Added some constructors to the stdf file class so you can feed it an indexing strategy when you initialize the stdf file
- Changed the default indexing strategy to v4 since it was absolutely critical for my converter to function on large stdf files. For the unit tests it still uses the simple one.
- Added a safer get record type method to the stdf record object so you could group up on the record types without having to worry about exceptions being thrown (SOS/EOS records cause problems)
- Added a cache for the non-die level records
- Threw a guid into the stdf file object so my test cases could detect if a new stdf file was read in. This way it can automatically clean up the caches I made.
- There was an offset variable that limited the size of the STDFs that could be used. I changed it from an int to a int64
Opens: With TSRs, I wanted to be able to access the optional flags so I added a variable for it. I don't know why, but it causes the round trip test to fail so I commented this change out.
I have not touched the silverlight stuff.
This is great news. My holidays were jam packed full of unexpected things, so I haven't had time to do anything. All this sounds pretty good. I'll take a look. I don't care anything about the silverlight stuff. That stuff is super old.
FYI just in case anyone grabbed my version - The VUR parsing needed changes because there are two different styles of VUR records. V93K testers write them as an array of strings (does not meet the spec) where as others sometimes write a string.
First time making a custom reader/writer so hopefully it's good to go... round trip tests pass but I haven't inspected what it's doing in a hex editor.