-
Notifications
You must be signed in to change notification settings - Fork 38
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
Different result in same config #38
Comments
My plan is: |
Hi ^^ It maybe due to the randomized state of the branch predictor after boot ? (in part at least) Regards |
I use IVerilog in this project(because of my sim model), and I set all the reg without initial and mem random. I try to init all the reg with zero, but it does same. So, maybe it's because the mem is random at first? |
I try to initial mem with zero, and it succeeds. The problem is at the GShare memory?I'll have a test, but I don't want to change all the mem.(And, when I finish it, should I pull it directly or make another project?) |
Now the problem is that it seems random comes from more or other places, initial only for branch Mem seems useless...... |
Yes but not only, there is overall :
|
Mems of lsu and hazard can be replaced by register to add a reset value, but mems of gshare and btb is too big to be replaced...Is there any way to solve that? |
For simulation, you could add a initBigInt on them. If in for the SpinalConfig, you do a .includeSimulation, it will include some of them : So you can do : object Gen extends App{
...
val spinalConfig = SpinalConfig(inlineRom = true)
spinalConfig.includeSimulation
... |
I just wanna make it synthesizable...but some designes are not suitable for synthese as register(I mean, gshare and btb, they are too big to change to register) |
What FPGA / ASIC are you targetting ? |
FPGA verification, and then, ASIC. So it shouldn't have any initialized ram in it. |
hmm, i guess one solution to stay safe would be to add a few more initialisation state machine to write every memories of the design to zero (using some counter to go on every addresses). It is already done for the i$ d$ tags. Could be added for the other memories |
So is there anyway to give a init value to mems that generate to register? |
No there is not, unless you blackbox everything and fix it in the blackbox themself. |
Everything solved, close it |
Hello!
I've found a strange situation when I simulate double same cores. They just...have different ability. They have same flash, same ram, same bus and same perp. But they just do like this:
So why can they be that? I just want to use your core to make a double core lockstep(I'll pull it when it tests completely), but this strange "characteristic" make it impossible.....
Wish for you help!
The text was updated successfully, but these errors were encountered: