-
Notifications
You must be signed in to change notification settings - Fork 59
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
Added JTAG-to-memory-mapped bus (TL & AXI4) master bridge. #120
base: master
Are you sure you want to change the base?
Conversation
I haven't read through this completely yet but it seems very cool. Thanks for submitting it! The one big question I have is what you would expect the operation to be like if the user wanted to include this functionality and the version of jtag that uses a full processor? Can they share the same pins? Can they operate at the same time? |
Well, having in mind the Rocket chip diagram, and under the assumption that its debug unit supports all the commands as the proposed jtag2mm bridge, and that it can propagate those commands down to As I've said, the goal was just to provide a convenient and easy way of driving and testing memory-mapped peripherals during the development phase without instantiating a processor inside the design. Therefore, I view it as some kind of a side utility. |
Do you happen to have an example of how this is integrated in a chip context? Are you building some Rocketchip design with no Tiles, and only peripherals? |
I'm not sure whether you thought on this, but here you can find a simple example of a multiplexer wrapped inside
Actually, the background story is the following: we were participating in the free SKY130 shuttle with two designs (5 & 36) written in Chisel. Initially we wanted to use Chipyard, but they already provided a small RISC-V core in the harness part of the chip so it was meaningless for us to add another one. However, the problem was that they offered only the Wishbone Bus interconnect, hence we had to use a third-party bridge to connect our AXI4 accelerators. Since I wasn't sure that the other part will work, to mitigate risk, we decided to use an additional AXI4 bus master that we could control independently from a JTAG port. That's why we made JTAG2MM which we now use on a daily basis to test our |
Just FYI, we haven't forgotten about this. Before we merge, we should add an example in Chipyard demonstrating the integration. Haven't found the cycles to look at that yet. |
I've been talking with @colinschmidt today and perhaps the quickest illustrative demo example would be to tie some of the DspBlocks that already reside in Chipyard and just write to and read from their memory-mapped registers with the proposed JTAG bridge. Of course, it's up to @jerryz123 to decide on that, but this would be my proposal. |
That seems very reasonable to me, it would also demonstrate DSP tools usage |
This PR adds JTAG-to-memory-mapped bus master bridge, right now only for TL and AXI4, but could be potentially extended to other buses like AHB and/or APB. The main idea is to be able to test (in hardware) some memory-mapped peripherals (e.g., a
DspBlock
from dsptools) by reading from and writing to their status and configuration registers without having to invoke a complete processor core like Rocket.