1
0
Commit Graph

5344 Commits

Author SHA1 Message Date
Wesley W. Terpstra
735e4f8ed6 diplomacy: use HeterogeneousBag instead of Vec
This makes it possible for the bundles to have different widths.

Previously, we had to widen all the bundles passing through a node
to the widest of all the possibilities.  This would mean that if
you had two source[] fields, they end up the same.
2017-02-22 17:05:22 -08:00
Henry Cook
027d6247b6 diplomacy: silence a warning (#560) 2017-02-22 11:28:04 -08:00
Jack Koenig
45d016a76f Bump chisel3 and firrtl (#557) 2017-02-17 20:52:18 -08:00
Wesley W. Terpstra
6ea35125d4 Merge pull request #556 from ucb-bar/rational-config
Rational config
2017-02-17 20:31:56 +01:00
Wesley W. Terpstra
9153a9a733 ClockDivider: add docs to appease the reviewer
... even though this means a delay of 1:30 hours :(
2017-02-17 19:35:08 +01:00
Wesley W. Terpstra
3931b0faff coreplex: assume L1 runs no slower than L2 2017-02-17 15:15:41 +01:00
Wesley W. Terpstra
5045696f92 TLRational: test all corners
In order to ensure that verilator is happy, we launch both clocks from a
clock divider.  Sadly, it does not follow the spec wrt.  derived clocks.

See the verilator manual section on "Generated Clocks".
2017-02-17 14:44:31 +01:00
Wesley W. Terpstra
91d1880dbf ClockDivider2: fix launch alignment of clocks (vcs)
Doing this in Chisel leads to non-determinism due to shitty
Verilog ordering semantis. Using an '=' ensures that all of
the clock posedges fire before concurrent register updates.

See "Gotcha 29: Sequential logic that requires blocking assignments"
in "Verilog and SystemVerilog Gotchas" by Stuart Sutherland, Don Mills.
2017-02-17 14:26:23 +01:00
Wesley W. Terpstra
924afebbd9 tilelink2: make TLRational have configurable direction 2017-02-17 13:59:54 +01:00
Wesley W. Terpstra
bb334a2cf5 util: add fast2slow direction option to rational crossings
If you manually specify which side of the crossing is slow, you
can move the registers fully to that clock domain.
2017-02-17 13:59:51 +01:00
Wesley W. Terpstra
e51609aec0 build: support waveform debug using opensource tools
VCS is not free. Neither is the vcd format.
Fortunately, verilator and gtkwave ARE free ... and faster too.

This patch adds targets:
	run-regression-tests-fst
	run-asm-tests-fst
... which create opensource-compatible fst waveforms for gtkwave.
2017-02-17 03:38:17 +01:00
Wesley W. Terpstra
abe344a1a4 tilelink2 Fuzzer: support read-only mode (#555) 2017-02-13 00:18:47 +01:00
Jacob Chang
5fc44bbcda Add externalIn and externalOut property to Nodes that indicates whether the edges are external or not. (#554) 2017-02-10 10:19:22 -08:00
Henry Cook
e8c8d2af71 Heterogeneous Tiles (#550)
Fundamental new features:

* Added tile package: This package is intended to hold components re-usable across different types of tile. Will be the future location of TL2-RoCC accelerators and new diplomatic versions of intra-tile interfaces.
* Adopted [ModuleName]Params convention: Code base was very inconsistent about what to name case classes that provide parameters to modules. Settled on calling them [ModuleName]Params to distinguish them from config.Parameters and config.Config. So far applied mostly only to case classes defined within rocket and tile.
* Defined RocketTileParams: A nested case class containing case classes for all the components of a tile (L1 caches and core). Allows all such parameters to vary per-tile.
* Defined RocketCoreParams: All the parameters that can be varied per-core.
* Defined L1CacheParams: A trait defining the parameters common to L1 caches, made concrete in different derived case classes.
* Defined RocketTilesKey: A sequence of RocketTileParams, one for every tile to be created.
* Provided HeterogeneousDualCoreConfig: An example of making a heterogeneous chip with two cores, one big and one little.
* Changes to legacy code: ReplacementPolicy moved to package util. L1Metadata moved to package tile. Legacy L2 cache agent removed because it can no longer share the metadata array implementation with the L1. Legacy GroundTests on life support.

Additional changes that got rolled in along the way:

* rocket: 	Fix critical path through BTB for I$ index bits > pgIdxBits
* coreplex: tiles connected via :=*
* groundtest: updated to use TileParams
* tilelink: cache cork requirements are relaxed to allow more cacheless masters
2017-02-09 13:59:09 -08:00
Henry Cook
f9acd4988c Merge pull request #551 from edwardcwang/configdoc
Update config override documentation
2017-02-09 11:56:38 -08:00
Henry Cook
fc7838ff7b Merge branch 'master' into configdoc 2017-02-09 10:09:30 -08:00
Henry Cook
fbefbb5549 Merge pull request #552 from ucb-bar/fix-abs-func
Fix up Absolute value.
2017-02-09 10:09:16 -08:00
Edward Wang
25db3d36c4 Update config override documentation
As per https://github.com/ucb-bar/rocket-chip/pull/507
2017-02-08 15:26:03 -08:00
Jim Lawson
307e0ca9c0 Fix up Absolute value.
As of ucb-bar/chisel#491 and 32885ac, abs now returns the same type as its argument. Add a cast to UInt.
2017-02-08 15:00:43 -08:00
Wesley W. Terpstra
69f4c1a144 AddressDecoder: support AddressSets with infinite bits (#547) 2017-02-04 15:59:50 -08:00
Wesley W. Terpstra
71f2445c62 Merge pull request #546 from ucb-bar/dev-zero
Dev zero
2017-02-03 19:49:56 -08:00
Wesley W. Terpstra
d1744a5667 coreplex: zero memory channels is also allowed 2017-02-03 19:00:08 -08:00
Wesley W. Terpstra
a3e56cfa5e rocketchip: add Zero device to the memory subsystem 2017-02-03 17:19:24 -08:00
Wesley W. Terpstra
b240505a15 rocketchip: move memory channel Xbar from coreplex to rocketchip
We want to keep the banks split in the outer SoC if there is an L3.
Furthermore, each channel might go to different memory subsystems,
like DDR/HMC/Zero, from rocketchip.
2017-02-03 17:19:21 -08:00
Wesley W. Terpstra
fc9ea62d38 HeterogeneousBag: a handy container for differently parameterized bundles 2017-02-03 16:21:33 -08:00
Wesley W. Terpstra
7afe383db3 Ecc: detect uncorrectable errors also for SEC 2017-02-03 16:21:09 -08:00
Wesley W. Terpstra
7aba066e67 tilelink2: add TLZero; /dev/zero suitable for putting behind locked cache ways 2017-02-03 16:20:27 -08:00
Wesley W. Terpstra
93b2fa197e Artefact output (#545)
* build: stop using empty .prm file

* generator: general-purpose mechanism for creating elaboration artefacts
2017-02-02 19:24:55 -08:00
Jacob Chang
094b3bc2b1 Merge pull request #544 from ucb-bar/jchang
Added access function
2017-02-02 14:56:23 -08:00
Jacob Chang
83a83c778a Added range function in IdRange
Added source accessor function in TLEdge
2017-02-02 12:35:57 -08:00
Andrew Waterman
8225676a86 For FMIN(sNaN, x) and FMIN(qNaN, qNaN), return canonical NaN
See https://github.com/riscv/riscv-isa-sim/issues/76
2017-02-02 11:55:08 -08:00
Andrew Waterman
75edf42323 Set xPIE=1 on xRET
We were setting xPIE=0 instead.  This is a benign bug, but still a bug.
2017-02-02 11:55:08 -08:00
Wesley W. Terpstra
b2ee5e7d38 Merge pull request #540 from ucb-bar/dedup
Dedup rocket
2017-01-31 17:16:43 -08:00
Wesley W. Terpstra
9ca8f514c0 rocket: creating Bundles in an object also break dedup! 2017-01-31 14:45:11 -08:00
Wesley W. Terpstra
e1577bb06e chisel3: bump chisel3 for work deduplication 2017-01-31 14:20:07 -08:00
Wesley W. Terpstra
e5af59db68 rocketchip: work-around ucb-bar/chisel3#472 2017-01-31 14:20:02 -08:00
Wesley W. Terpstra
9c0cc6fdf4 Merge pull request #537 from ucb-bar/l2-banks-together
BankedL2Config: use the same LazyModule for all L2 banks
2017-01-30 15:39:04 -08:00
Wesley W. Terpstra
dc66c8857f diplomacy: be more robust using Java introspection
If an error occures, some objects might only be partially initialized.
We want to still be able to get nice names for error messages.
2017-01-30 14:25:12 -08:00
Wesley W. Terpstra
280af9684b BankedL2Config: use the same LazyModule for all L2 banks
This makes it much easier for banked coherence managers to support
cross-bank functionality, like a common control port, for example.
2017-01-30 14:02:59 -08:00
Henry Cook
b567a2a356 Merge pull request #536 from ucb-bar/diplomacy-star-nodes
diplomacy: add :*= and :=* to support flexible # of edges
2017-01-30 11:19:33 -08:00
Wesley W. Terpstra
f7f52cc722 diplomacy: restore Monitor functionality 2017-01-29 17:25:14 -08:00
Wesley W. Terpstra
972953868c uncore: switch to new diplomacy Node API
Most adapters should work on multiple ports.
This patch changes them all.
2017-01-29 15:54:45 -08:00
Wesley W. Terpstra
4d646939b0 diplomacy: make flexible-port adapters possible 2017-01-29 14:26:02 -08:00
Wesley W. Terpstra
24ee7f45f5 rocketchip: pass variable l1tol2 connections into coreplex 2017-01-29 11:18:36 -08:00
Wesley W. Terpstra
d5fa159063 diplomacy: add :*= and :=* to support flexible # of edges 2017-01-28 21:32:36 -08:00
Wesley W. Terpstra
03f2fe02ac coreplex: support rational crossing to L2 (#534) 2017-01-27 17:09:43 -08:00
Richard Xia
61fbe62112 Ignore the built firrtl.jar. (#532) 2017-01-27 13:04:15 -08:00
Wesley W. Terpstra
19c58630d2 Merge pull request #533 from ucb-bar/rational-crossing
Rational clock crossing
2017-01-26 22:30:04 -08:00
Wesley W. Terpstra
830d01329d RationalCrossing: add some documentation 2017-01-26 21:27:34 -08:00
Wesley W. Terpstra
fc3b72084f tilelink2: add a rational clock crossing adapter 2017-01-26 20:07:28 -08:00