Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Suggestion/query: handling of interleaved ROMs #101

Open
philpem opened this issue Jun 15, 2024 · 1 comment
Open

Suggestion/query: handling of interleaved ROMs #101

philpem opened this issue Jun 15, 2024 · 1 comment

Comments

@philpem
Copy link

philpem commented Jun 15, 2024

I'm currently reverse-engineering some NCR-made standard-cell arrays, which have a slightly unusual (to me) interleaved mask-ROM layout:
image

To me this looks like there are eight data bits exiting from the top, forming eight banks.
Each bank contains sixteen bit lines going across as columns (this suggests to me that these are the decoded form of the four lowest-order address lines). The remaining decoded bits form rows from top to bottom.

I also have this larger version which contains about 5K of data (of all things, 65C02 code!)
image
This once again has 8 bits per bank, but each bank (output bit) has 32 lanes instead of 16.

I haven't been able to find much information on how the decoders work - is it possible to describe to Maskromtool/Gatorom how to decode these into bytes?

I'm not sure about the bit ordering (MSB-LSB or LSB-MSB) but I expect that's something which could be figured out later.

@travisgoodspeed
Copy link
Owner

The solver should have no trouble figuring out the MSB/LSB ordering, but it is confused by many forms of interleaving. I'd suggest figuring out as much as possible from the address decoder, then forking GatoDecoderColsLeft into a new class for it and writing a Yara rule for some common sequence of 6502 code.

Another way to think of interleaving is that two different rules are used for alternating bits of each word. GatoDecoderSqueezeLR implements one of those, and perhaps if we had enough of the others, the solver would be complete for generic interleaving?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants