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

Microcode ROM from generic version doesn't synthesize in Vivado 2021.1 #2

Open
willisblackburn opened this issue Aug 14, 2021 · 4 comments

Comments

@willisblackburn
Copy link

I tried to use the generic core within Vivado 2021.1. The error I'm getting is:

[Synth 8-273] error in $readmem data: non-binary digit to $readmemb ["microcode.v":12]

I tried a lot of different things. Vivado doesn't want to open a file with an extension called "hex," so I tried "mem" and "rom," thinking that maybe the extension influences how Vivado parses the file. I tried removing all the comments. I'm not sure what the issue is; the file looks okay to me.

@Arlet
Copy link
Owner

Arlet commented Aug 15, 2021

Maybe it has trouble with the underscores ?

@willisblackburn
Copy link
Author

I’ll try that. It would be disappointing, as the file is nicely formatted and the underscores shouldn’t cause any parsing problems.

@m1geo
Copy link

m1geo commented Oct 13, 2024

Working fine with no file contents modifications in Vivado 2024.1. Did have to rename microcode.hex to microcode.mem to get the tool to recognise it as a memory file.

image

@m1geo
Copy link

m1geo commented Oct 19, 2024

Scrap my previous comment, it would simulate OK but when I come to synthesise it, it failed:
image

Turned out to be caused by Vivado needing a space between the "@" and the hex offset as detailed at the end of this forum post: https://adaptivesupport.amd.com/s/question/0D52E00006hpi7iSAA/readmemb-problem-synth-8273?language=en_US

Removing the space between the "@" and the hex address fixed the error, but then the parser silently failed, the CPU had no microcode, and the synthesis optimised it away. I had to massage the microcode into inline Verilog, as so:
image

Finally got it working, synthesised and running at 100 MHz on a Xilinx 7A35T!!

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

3 participants