-
Notifications
You must be signed in to change notification settings - Fork 57
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
Better verilog standard compliance #80
base: master
Are you sure you want to change the base?
Conversation
Compiles successfully in Quartus 17.0 |
Hi, thanks for looking into that. I think my changes to conf_str were causing the changes in block ram/logic utilization. |
Hmm the ignored filter warnings are still there. Wait a minute, I will commit a fix. |
OK I adjusted the sdc accordingly. The sdc warnings are now gone. |
Yup, the SDC issues seem to be fixed. |
Now that you're looking at that... are these changes working with simulators? The current code is rather incompatible with simulation tools from several vendors. I think your changes will make it more compatible. Did you give it a go? |
@jotego The changes here are mainly to fix vivado syntax errors during elaboration.
But there is also:
Which means it won't work when it is compiled down to C. But all of those are not related with the changes in this PR. |
In practice, the MiSTer cores that use verilator often don't include the framework present in the template. Jimmystones' verilator template completely leaves out the sys folder. |
I also leave the framework out in simulations, which is a shame because we should be able to simulate the whole system. Anyway, this PR is a step in the right direction. |
MiSTer is currently uses Intel/Altera FPGA and corresponding compiler. Different manufacturers have different requirements, but i see no point to make it complaint with other compilers and make code more complicated. |
ok. i'll leave it open for some reasons. |
Означает ли это, что если я откатываю это изменение, его можно будет объединить? |
I think default values for parameters are required by the standard and should be in place. Many tools produce errors if default values are missing. Just set a default value that would be compatible with the current situation, i.e a default value that would cause the same effect as not having a definition in the current code. |
I set the default values the same as in the instance site . |
@jotego I am seeing with this version quartus seems to infer more register. This is a bit weird, because the output reg signals were all part of synchronous always blocks, so they should have inferred registers anyway. |
@jotego |
Minor adjustments in the amount of registers happens because of seeding changing sometimes. The fitter is like an aluminum annealing algorithm, there is no absolute solution, it's a best fit given a pseudorandom starting point and a time limit for how much effort to apply. If you add whitespaces to the code you will see registers fluctuate by these small amounts because the physical starting points lead to buffer logic being added sometimes, or not being needed. |
These items show up as compile errors when compiling in Vivado:
reg
type