Comments (5)
An update - we seem to get around the problem by reading the value of DBG_NPC
and writing it back to cause a pipeline flush, as in: https://github.com/embecosm/ri5cy/blob/verilator-model/verilator-model/testbench.cpp#L279
Is this a bug somewhere, or is it always required to read/write DBG_NPC
before resuming/single-stepping?
from cv32e40p.
We also noticed that the problem isn't just limited to the debug unit - whilst executing some programs that stall the pipeline with a load, the contents of the prefetch fifo become corrupted.
It turns out that we observe these issues only when INSTR_RDATA_WIDTH
is 32, and the prefetch_buffer
(prefetch_32
) is used. When INSTR_RDATA_WIDTH
is 128 and the prefetch_L0_buffer
(prefetch_128
) is used, we can use the debug unit without flushing the pipeline by writing to DEBUG_NPC
, and the programs that stalled the pipeline don't seem to result in the contents of the fifo getting corrupted.
Is it possible that there's an issue with prefetch_buffer
? I notice that the last commit to it (cc82192) was intended to address issues like the one we are seeing - could we be hitting an edge case that somehow got through?
Or maybe there's something else that needs to be done that we're not doing when using the prefetch_buffer
?
from cv32e40p.
Hello,
thanks for reporting it!
I will try to replicate it, can you tell us more details to replicate such pipeline issue?
Maybe some waveforms or the piece of code with relative stalls would be also helpful for us.
Let us start with the example without debug :)
Thanks a lot,
Davide
from cv32e40p.
I've just tried changing INSTR_RDATA_WIDTH
back to 32 in the most recent revision (was using 128 to workaround the issue as mentioned above), and I can no longer replicate the issue - I guess some of the changes recently that made fixes to the prefetcher have maybe resolved it?
from cv32e40p.
Hello,
I have actually fixed the prefetcher buffer in these 2 commits:
and here
I hope this also solved your issue :)
from cv32e40p.
Related Issues (20)
- What is "MPEC" that is mentioned in the documentation? HOT 2
- Why aren't post-increment loads with RD==RS1 treated as illegal? HOT 6
- Help needed: Integration of cvFPU with cv32e40p and adding a custom instruction HOT 5
- HW Loop Constraints question HOT 5
- Error in Analysis and Synthesis in Quartus HOT 21
- Missing files HOT 3
- Seeking Information on RTL Access HOT 8
- Incorporating FPU HOT 2
- Suggested update to the FPGA Synthesis sub-section of the User Manual HOT 1
- cv32e40p_obi_interface: When TRANS_STABLE=0, unstable transaction can still pass through to obi interface. HOT 4
- Branch predictor in cv32e40p core will take more time. HOT 8
- cv32e40p_prefetch_buffer: Is it ok to assert hwlp_jump_i when there are no outstanding instr_ requests (ie cnt_q == 0)? HOT 4
- How can I build this core? HOT 2
- cv32e40p implementation on Arty a7 100T FPGA HOT 2
- Missing case default HOT 1
- Impossible to cover case default HOT 1
- FPU power consumption HOT 1
- Clarification on cv.clipr signedness HOT 2
- HWLoop count not updated when last instruction is a CSR access with pipeline flush HOT 1
- Ensure Makefiles support both SNPS VCS and Siemens Questa for the above HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from cv32e40p.