Commit Graph
76 Commits
Author SHA1 Message Date
Megan WachsandWesley W. Terpstra 5090ff945b DebugModule: Be more paranoid about addressing corner cases. 2016-10-31 11:42:13 -07:00
Megan WachsandWesley W. Terpstra 10d084b9f3 DebugModule: Use the power of RegisterRouter to simplify the DebugROM code. 2016-10-31 11:41:18 -07:00
Megan WachsandWesley W. Terpstra af924d8c51 DebugModule: Instantiate TL2 DebugModule in BaseCoreplex 2016-10-31 11:41:18 -07:00
Megan WachsandWesley W. Terpstra d530ef7236 DebugModule: translate to TL2 with {32,64}-bit XLen width 2016-10-31 11:41:18 -07:00
Megan Wachs fd2d48acda lazy_module: If the user actually specifies a name, just use it without appending module name. 2016-10-25 15:58:09 -07:00
mwachs5andGitHub 3a1d8fe482 debug: use a different form of the crossing which doesn't create an AsyncScope (#394) 2016-10-09 20:33:18 -07:00
mwachs5andGitHub b5d4b72313 register_crossing: Remove the need for AsyncScope by specifying the master clock and reset. (#393) 2016-10-09 15:51:23 -07:00
mwachs5andGitHub a84a961a39 async_queue: Give names to all the registers which show up in the queue (#390)
This is to aid debugging but even more so for backend constraint writers, who generally
need predictable names for registers to set false paths, etc.
2016-10-08 17:50:50 -07:00
mwachs5andGitHub 4c49fef242 Merge pull request #388 from ucb-bar/cp-safer-crossings
tilelink2: split isolation gates by direction
2016-10-07 13:45:23 -07:00
mwachs5andWesley W. Terpstra e952f8f222 asyncqueue: Fix typo in the Async Queue (#381)
* asyncqueue: Fix typo in the Async Queue that would cause the sync depth to be one less than expected.

* asyncqueue: Typo in the typo fix
2016-10-04 21:02:06 -07:00
mwachs5andGitHub 784f0cf0b6 Merge pull request #370 from ucb-bar/move_clint_and_plic
clint & plic: Move the default addresses
2016-10-01 16:18:54 -07:00
Megan Wachs 28eba9b5ac clint/plic: Move the default addresses 2016-10-01 15:46:55 -07:00
mwachs5andGitHub 9a381e88d1 Suggest sane names for common objects (#369)
* Suggest sane names for common objects frequently instantiated with factory methods

* Suggest names for common primitives using more Scala-esque Options
2016-09-30 16:19:25 -07:00
Megan WachsandAndrew Waterman 1e43512142 jtag: Actually apply the sticky bits 2016-09-29 13:49:34 -07:00
Megan WachsandAndrew Waterman a4b81aebe0 jtag: Apply sticky bits for error and busy according to the current Debug Spec 2016-09-29 13:49:26 -07:00
Megan WachsandAndrew Waterman fc4d6ed0c6 jtag: clean up debug flags in regression/Makefile 2016-09-29 13:49:21 -07:00
Megan WachsandAndrew Waterman 45bd63fcc6 jtag: Prevent Debug RAM accesses from wrapping around, and bring the DTM closer to the Debug Spec 2016-09-29 13:49:14 -07:00
Megan WachsandAndrew Waterman 449d689a4e jtag: Connect the JTAG DTM side of the synchronizer! 2016-09-29 13:48:55 -07:00
mwachs5andGitHub f9e0a7ac24 Merge branch 'master' into async_register_crossing 2016-09-27 15:54:34 -07:00
Megan Wachs 3ce08f40a5 crossing: Remove reset from the logic in Register Crossing because it is no longer needed when the underlying crossings are asynchronously reset. Update the order of operations 2016-09-27 13:36:28 -07:00
mwachs5andGitHub 77a0f76289 Cleanup jtag dtm (#342)
* debug: Clean up Debug TransportModule synchronizer

With async reset async queues, I feel its safe/cleaner
to remove the one-off "AsyncMailbox verilog black-box
and use the common primitive.

I also added some comments about correct usage of this
block. Probably the 'TRST' signal should be renamed
to make it less confusing, as it requires some processing
of the real JTAG 'TRST' signal.
2016-09-26 11:10:27 -07:00
mwachs5andGitHub 8641639873 Async rst async queue (#336)
* crossing: use async reset

* crossings: asyncqueue needs Asynchronous reset.

* crossing: Actually enable the head of the synchronizer flop chain

* crossing: remove reset from logic. This flop will no longer be written during reset because valid will be low.

* crossing: Tidy up code  & comments
2016-09-26 11:08:38 -07:00
mwachs5andYunsup Lee 9acb352cf6 Correct Merge Conflitct -- clock, not clk (#327)
I think there was a merge conflict somewhere. This should be 'clock', not 'clk'
2016-09-21 20:02:01 -07:00
mwachs5andAndrew Waterman 3a809b209f Allow Makefile override of RESET_DELAY (#322) 2016-09-21 18:28:30 -07:00
mwachs5andYunsup Lee a031686763 util: Do BlackBox Async Set/Reset Registers more properly (#305)
* util: Do Set/Reset Async Registers more properly

The way BlackBox "init" registers were coded before was
not really kosher verilog for most synthesis tools.
Also, the enable logic wasn't really pushed down into the flop.

This change is more explicit about set/reset flops,
again this is only a 'temporary' problem that would go away
with parameterizable blackboxes (or general async reset support).

* Tabs, not spaces, in Makefiles

* util: Fix typos in Async BB Reg Comments
2016-09-16 13:50:09 -07:00
mwachs5andGitHub ae026edeb3 Merge pull request #293 from ucb-bar/async_clk_utils
Add some async/clock utilities
2016-09-14 16:59:27 -07:00
Megan Wachs 1308680f75 Add some async/clock utilities 2016-09-14 16:30:59 -07:00
mwachs5andWesley W. Terpstra 47acbf928b Give AsyncCrossing slave interfaces registers visibility into when they were written (#288) 2016-09-14 00:17:26 -07:00
mwachs5andGitHub 395bc16da6 Merge pull request #271 from ucb-bar/black_box_regs_fix
Get rid of the unecessary Parameters for Async Reset Reg
2016-09-10 14:14:12 -07:00
Megan Wachs 77e4aa63f8 Get rid of the unecessary Parameters for Async Reset Reg 2016-09-09 16:24:35 -07:00
mwachs5andGitHub 8273ca1ae7 Merge pull request #265 from ucb-bar/black_box_regs
Make it possible to have Async Reset Flops
2016-09-09 13:54:04 -07:00
Megan Wachs 5f5989848c Merge remote-tracking branch 'origin/master' into black_box_regs 2016-09-09 13:12:52 -07:00
Megan Wachs fda4c2bd76 Add a way to create Async Reset Registers and a way to easily access them with TL2 2016-09-08 20:02:07 -07:00
Megan Wachs c1eb1f12a2 tilelink2: Rename GPIO to Example to avoid conflicts with real GPIO devices 2016-09-08 20:02:07 -07:00
Megan Wachs e95fe646a3 mem_gen failure doesn't create the target 2016-09-06 16:29:29 -07:00
Megan Wachs 48098f5e2d Bump FIRRTL to instantiate Sequential Memory Macros 2016-09-06 14:48:28 -07:00
Megan Wachs 1fec9807f6 allow override of vlsi_mem_gen script 2016-09-06 14:44:12 -07:00
Megan Wachs af364bc7bc Rename RTC to RTCTick to clarify that it needs to be a Boolean signal, not a Clock type signal 2016-09-02 15:14:39 -07:00
Megan Wachs 8163a6b597 Make it easier to override the 'placeholder' Real-Time-Clock, to allow more real-world applications 2016-09-02 11:11:40 -07:00
mwachs5andGitHub 35948918b6 Merge pull request #226 from ucb-bar/coreplex_peripheral_interrupts
Allow some External Interrupts to come from Periphery
2016-08-26 11:52:04 -07:00
Megan Wachs 53ee54dbd1 Incorporate feedback to make the NExtPerhipheryInterrupts come from DeviceBlock itself 2016-08-26 10:40:39 -07:00
Megan Wachs 41aa80c5d7 Merge remote-tracking branch 'origin/master' into coreplex_peripheral_interrupts 2016-08-26 09:32:36 -07:00
Megan Wachs 428eed79a1 Allow some External Interrupts to come from Periphery 2016-08-25 14:16:33 -07:00
mwachs5andGitHub 8ff739d3fa Merge pull request #225 from ucb-bar/remove-openocd
Remove openocd from .gitmodules
2016-08-25 11:01:17 -07:00
Megan Wachs 3a674b413d Remove openocd from .gitmodules 2016-08-25 10:05:30 -07:00
mwachs5andGitHub d5d076200e Merge pull request #213 from ucb-bar/new_test_jtag_DTM
Adds Logic & test support for JTAG implementation of Debug Transport Module.
2016-08-23 18:18:18 -07:00
Megan Wachs 67467c65f5 Add a jtag-dtm-regression target to the regression
This doesn't get added to Travis, but this target can be used
by other automated testing tools which may want to do further
testing on rocket-chip.
2016-08-23 16:53:50 -07:00
Megan Wachs 32118269c1 Remove } introduced in merge 2016-08-23 08:20:52 -07:00
Megan Wachs c22c77c7a4 remove pointer to openOCD 2016-08-23 07:35:48 -07:00
Megan Wachs 9974626d6a Merge remote-tracking branch 'origin/master' into HEAD
Conflicts:
	src/main/scala/rocketchip/TestHarness.scala
2016-08-23 07:34:01 -07:00
mwachs5andAndrew Waterman 22ffe36258 Add a queue for timing QoR between L2->MMIO network (#217) 2016-08-19 22:51:49 -07:00
Megan Wachs 75efc7dee7 JtagIO's DRV_TDO should be an INPUT 2016-08-19 16:38:03 -07:00
Megan Wachs 723cc063cb Move files after the file reorganization 2016-08-19 16:11:41 -07:00
Megan Wachs 48c5ec3551 add missing jtag file 2016-08-19 16:08:32 -07:00
Megan Wachs 66a253a0db Remove unncessary file 2016-08-19 16:08:31 -07:00
Megan Wachs 3dd51ff734 This commit adds Logic & test support for JTAG implementation of Debug Transport Module.
- The DebugTransportModuleJtag is written in Verilog. It probably could be written in
  Chisel except for some negative edge clocking requirement.
- For real implementations, the AsyncDebugBusTo/From is insufficient. This commit
  includes cases where they are used, but because they are not reset asynchronously,
  a Verilog 'AsyncMailbox' is used when p(AsyncDebug) is false.
- This commit differs significantly from the earlier attempt. Now, the
  DTM and synchronizer is instantiated within Top, as it is a real piece of
  hardware (vs. test infrastructure).
-TestHarness takes a parameter vs. creating an entirely new TestHarness class.
It does not make sense to instantiate TestHarness when p(IncludeJtagDTM) is false,
and it would not make sense to insantiate some other TestHarness if p(IncludeJtagDTM)
is true.

To build Verilog which includes the JtagDTM within Top:

make CONFIG=WithJtagDTM_...

To test using gdb->OpenOCD->jtag_vpi->Verilog:

First, install openocd (included in this commit)

./bootstrap
./configure --prefix=$OPENOCD --enable-jtag-vpi
make
make install

Then to run a simulation:

On a 32-bit core:

$(ROCKETCHIP)/riscv-tools/riscv-tests/debug/gdbserver.py \
  --run ./simv-TestHarness-WithJtagDTM_... \
  --cmd="$OPENOCD/bin/openocd --s $OPENOCD/share/openocd/scripts/" \
  --freedom-e300-sim \
  SimpleRegisterTest.test_s0

On a 64-bit core:

$(ROCKETCHIP)/riscv-tools/riscv-tests/debug/gdbserver.py \
  --run ./simv-TestHarness-WithJtagDTM_... \
  --cmd="$OPENOCD/bin/openocd --s $OPENOCD/share/openocd/scripts/" \
  --freedom-u500-sim \
  SimpleRegisterTest.test_s0
2016-08-19 16:08:31 -07:00
Megan Wachs dd4a50c452 Add JTAG DTM and test support in simulation
Initial cut

checkpoint which compiles and runs but there is some off-by-1 in the protocol

Debugging the clock crossing logic

checkpoint which works

Clean up the AsyncMailbox black box
2016-08-19 16:08:17 -07:00
Megan Wachs 55c992bb3a Use FoldRight() instead of for loop 2016-08-01 16:56:33 -07:00
Megan Wachs 8db2e8829f Allow aggregate CONFIG on Command Line 2016-08-01 14:24:16 -07:00
mwachs5andAndrew Waterman 4465260469 Update README.md
- List things that are no longer submodules as subpackages instead
- clean up some formatting issues
2016-07-29 17:56:42 -07:00
Megan WachsandHoward Mao c31c650def If NTiles == 1, only use MEI. Also Create configuration for ManagerToClientStatelessBridge. 2016-07-21 13:54:28 -07:00
Megan WachsandHoward Mao eb9e998c08 Add ManagerToClientStatelessBridge 2016-07-21 13:49:16 -07:00
mwachs5andAndrew Waterman cff8de9814 Use new Mul/Div parameters vs UseFastMulDiv (#48)
* Use new Mul/Div parameters vs UseFastMulDiv

* Rename MulDivUnroll to MulUnroll
2016-07-15 15:41:20 -07:00
Megan Wachs 407bc95c42 Rename MulDivUnroll to MulUnroll 2016-07-15 15:40:17 -07:00
Megan Wachs 4c26a6bc96 Create seperate Mul/Div paramters instead of UseFastMulDiv 2016-07-15 14:40:37 -07:00
mwachs5andAndrew Waterman 36720d915a Update README.md (#161)
Correct typo in heading
2016-07-11 00:34:13 -07:00
mwachs5andAndrew Waterman 2d2096e509 Add smaller ROM/RAM for 32-bit debug (#60) 2016-06-15 15:07:43 -07:00
Megan WachsandAndrew Waterman cee0cf345e [debug] Update Debug ROM contents to write F..F to RAM in case of exception 2016-06-09 14:05:30 -07:00
mwachs5andAndrew Waterman 93c1b17b52 [debug] Remove erroneous buffer on SB read data (#56) 2016-06-08 23:31:13 -04:00
Megan WachsandAndrew Waterman b832689642 Correct Debug ROM contents 2016-06-05 19:35:25 -07:00
Megan WachsandAndrew Waterman 605fb5b92f [debug]: fix issue with subword select logic 2016-06-05 19:31:07 -07:00
Megan WachsandAndrew Waterman 3e8322816b Correct DMINFO Fields 2016-06-05 19:29:50 -07:00
Megan WachsandAndrew Waterman 7e550ab07c [debug] rocket: fix for issue 121, correct debug ROM and stall logic 2016-06-05 19:29:44 -07:00
mwachs5andAndrew Waterman 740a6073f6 Add Debug Module (#49)
* Add Debug Module

* [debug] Remove unit tests, update System Bus register addresses, parameterize nComponents

* [debug] Update Debug ROM contents to match updated addresses
2016-06-01 16:33:33 -07:00
mwachs5 a81334f505 Update README links to point to this repo 2016-04-06 14:10:04 -07:00
mwachs5andHenry Cook 22e7b3ff2f Update README.md
- adding instructions of how to run with groundtest
- correct some MD syntax in README
- add some spaces
- minor changes to wording
- remove spurious 'class'
- add commands for running w/ TraceGenConfig
- add code from http://www.cl.cam.ac.uk/~mn416/tracegen.html
- Update README.md
- add WSO note
- correct some syntax within the code blocks and add note about run-asm-tests, run-bmark-tests
- Add one more command to the "quick reference" to show the complete flow
- Correct WSO to WMO
- Add information about tracegen+check.sh
- Use tracegen.py commands instead of running the emulator directly
- added a missing newline
- remove extra head command
2016-03-31 14:20:14 -07:00