-
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
Differents from the port para and core para #31
Comments
Hi ^^
So the naxriscv data cache will always cache the instruction it reads. for that reason, it only has a single memory bus to read instructions. The toPeripheral allows then to split that single memory bus into 2. One to be used for high speed access on the main memory, one which can be used to read a embedded rom / ram in the SoC (the peripheral one).
Yes it is work in progess https://github.com/SpinalHDL/NaxRiscv/tree/coherency It would be tilelink, i'm currently experimenting to see if i can provide a more user friendly paradigme than rocket / chipyard. |
Thanks for your reply!
OK, so the toPerp is just a condition to split single port into double ports.
So the tilelink will be add to nax independently, or the generator will be a part of the spinal "bus" lib?Anyway,that's a good news! |
I think directly in spinal.lib.bus |
@zyn810039594 Hi ^^ So, i'm tweeking around, trying to find the "good" middle ground with an API do design SoC.
Could you elaborate more on it ? I mean, i agree with you, but question is more about idenfitying the reasons. For instance, we can map the problem over multiple axes :
I'm not saying having a good SoC API which check all the cases is easy ^^ Regards |
Yeah i agree with you, it makes implicits value everywhere,and the sturcture like Russian dolls,make it's tightly coupled.It's just difficult to build and use it(i have to say all the things of rocket has low cohesion). Maybe it's because I'm a rookie of the scala hdl, i could not understand it easily.
For me it's just ok. Anyway,i'm a noob of spinalhdl.before nax i use it as a advanced verilog to build some peripheral, and i think the coding style of nax is better than that of rocket. For me it's much easier to understand(except for few comment, but it's a result of few manpower,is it?).Just make it more general, and be a lib of spinalhdl like pipeline. |
Hi, Sorry i missed your answer :/
Ahh things likely just grew overtime.
Yes, manpower is sooo squized :/ Lot of limitting factors, main ones seems to be :
Ahhh so, one way to see it is that instead of having hardware interface, you have to define software interfaces (which will give you hardware later on) For instance : So, there is still interfaces to be designed in some ways. Just that things do not rely on Modules. This may interest you : It is a tilelink interconnect which is kinda negociating stuff around using a very very similar aproache than NaxRiscv :) |
Hello!
I'm learning the code and the structure of Nax, and now I'm trying to build a soc with it. But I can't understand some settings of port paras.
As the issue says #28 ,fetchRange => Is used to specify on which memory address range the CPU is allowed to fetch instructions.But at this code
class FetchAxi4(ramDataWidth : Int, ioDataWidth : Int, toPeripheral : FetchL1Cmd => Bool ) extends Plugin
there's a para "toPeripheral ", this para seems doing the same thing(or just a opposite way)with the "fetchRange", it looks like they just take effect in the different place,Is there some misinterpretations?
And, is there any plans about building a multi-core system?Add something like Tilelink?(but the tilelink code of Rocket is....a little bit .....hard to understand?hhh)
Thank you for your help!
The text was updated successfully, but these errors were encountered: