1
0
Fork 0
Commit Graph

158 Commits

Author SHA1 Message Date
Wesley W. Terpstra 4ba8acb4aa
TLRAM: add support for ECC (#1304) 2018-03-22 14:27:43 -07:00
Henry Cook 12583af4a8
buswrapper: remove buffer chains from api (#1303)
Just take a single BufferParams for all couplers.
Add TLBuffer.chain in the thunk if you need it.
Preserves default bufferings.
2018-03-21 23:44:05 -07:00
Henry Cook 12997a644d tilelink: TLToAXI4IdMapEntry 2018-03-20 11:24:46 -07:00
John Wright 9a56e44e32 Fix typo in RAMModel Get printf (#1293) 2018-03-19 11:30:41 -07:00
Henry Cook 59d5e61366 regmapper: refactor how json is emitted 2018-03-12 08:24:36 -07:00
Megan Wachs 0fcacd37df RegFieldDesc: mark some more registers as volatile 2018-03-12 08:24:36 -07:00
Megan Wachs 2f239f2a9a RegFieldDesc: Add more features to support more IP-XACT like descriptions & emit them in the JSON 2018-03-12 08:24:36 -07:00
Jack Koenig 8c6e745653
Bump chisel and firrtl (#1232)
* Misc changes to better enable autoclonetype
* Bump chisel3 and firrtl and SBT to 1.1.1
2018-03-01 15:19:12 -08:00
Henry Cook 20a8876856
Merge pull request #1190 from freechipsproject/bus-api
BusWrapper API Update
2018-03-01 01:13:50 -08:00
Megan Wachs d13dc8ac2a RegFieldDesc: Emit enumerations if they exist 2018-02-28 09:42:25 -08:00
bipult 47d63d6baa
Merge pull request #1251 from freechipsproject/rocket_covers
Added functional covers
2018-02-25 09:01:33 -08:00
Wesley W. Terpstra 95294bbdcb
PatternPusher: put data at correct address when misaligned (#1249) 2018-02-23 15:20:56 -08:00
Henry Cook 5725e17969 subsystem: even more general coupler methods 2018-02-23 13:52:12 -08:00
Henry Cook 099bbec666 subsystem: more buswrapper coupling methods 2018-02-22 23:45:21 -08:00
Bipul Talukdar 2e548c9ad2 Added functional covers 2018-02-22 23:20:12 -08:00
Henry Cook 78883d13e8 subsystem: add TLIdentity.gen and make wrappers more flexible 2018-02-21 18:22:06 -08:00
Henry Cook a6d3965491 tilelink: bus wrapper scopes called 'couplers' 2018-02-21 14:43:47 -08:00
Henry Cook 62aee56807 diplomacy: base instance names on ValName and module names on className 2018-02-21 14:43:47 -08:00
Henry Cook 3f436a7612 subsystem: new bus attachment api 2018-02-21 14:43:47 -08:00
Henry Cook 8462ea3d5b coreplex => subsystem 2018-02-21 14:42:24 -08:00
Megan Wachs 5affd3bec2 RegFieldDesc: fix the output produced for undescribed registers 2018-02-16 10:24:12 -08:00
Megan Wachs cf7cd03d64
Merge pull request #1239 from freechipsproject/reduce_debug_flags
Reduce Debug Module "flags"
2018-02-16 08:53:41 -08:00
Wesley W. Terpstra dcfbdabe60 CacheCork: better document edge conditions 2018-02-15 19:14:30 -08:00
Wesley W. Terpstra ecd069dca4 tilelink: allow FIFO caches
Probably not a smart thing to build, but not illegal!
2018-02-15 19:09:37 -08:00
Megan Wachs e0c3b22d61
RegFieldDesc: same string used to insert/compare 2018-02-15 14:23:27 -08:00
Megan Wachs b95f68447f RegFieldDesc: Prevent different RegField JSONS from overwriting eachother. 2018-02-15 14:01:47 -08:00
Wesley W. Terpstra fa412246b3 Error: don't be an exception wrt. caching
Prior to this PR, the error device was allowed to be cached by
multiple actors despite never probing any of them. This is a
pretty unusual set of properties that has caused us trouble
several times now in the past.

Let's instead put the Error device into one of two very well
established categories: a straight-up MMIO device or a tracked
memory region.
2018-02-14 23:02:55 -08:00
Megan Wachs de91672e9a RegFieldDesc: simplify the output RegFieldDesc JSON to just a list of reg fields 2018-02-12 08:32:52 -08:00
Megan Wachs 08acbe1a29 RegFieldDesc: Clean up both descriptions and JSON presentations 2018-02-11 23:57:57 -08:00
Megan Wachs 5ab4204e8a RegField: the JSON will just leave things out of type None 2018-02-11 22:51:36 -08:00
Megan Wachs 3b44f380d8 TLRegMapper: emit a JSON file describing the register fields 2018-02-11 22:51:36 -08:00
Megan Wachs 4ab1585a78 Register Field: Add a more verbose description object
Add versions of the RegField functions to take it in, and
update Example device to use it.
2018-02-10 13:17:18 -08:00
Henry Cook fe277cf6f0
Merge branch 'master' into auto-plusargs 2018-02-06 18:38:44 -08:00
Wesley W. Terpstra 5854fb5f7c
SourceShrinker improvements (#1197)
* SourceShrinker: preserve FIFO guarantees of slaves

* tilelink: document that Releases can use TtoT, BtoB, and NtoN

TtoT is needed for write-through caches.
2018-01-17 18:02:19 -08:00
Schuyler Eldridge e52d52ae99 Link PlusArg to emulator command line options
- adds a mutable singleton (PlusArgArtefacts) to store information
  about Rocket PlusArgs
- adds methods to PlusArgArtefacts to emit C snippets that are
  consumed by emulator.cc for correct argument parsing and help text
  generation
- emits snippets in $(CONFIG).plusArgs via BaseCoreplex-set
  ElaborationArtefacts
- modify emulator/Makefrag-verilator to include $(CONFIG).plusArgs
- cleanup help text (docstring) for existing PlusArgs

Signed-off-by: Schuyler Eldridge <schuyler.eldridge@gmail.com>
2018-01-15 14:32:55 -05:00
Andrew Waterman 000cde2f8a Make ErrorDevice UNCACHEABLE instead of UNCACHED
...even though it still supports Acquire.  This avoids needing to flush
the D$ on FENCE.I because of the presence of the ErrorDevice.
2018-01-05 14:00:42 -08:00
Henry Cook 1cd018546c tile: BaseTile refactor, pt 1
* Make dts generation reusable across tile subclasses
* First attempt to standardize tile IO nodes and connect methods
* hartid => hartId when talking about scala Ints
2017-12-26 11:04:15 -08:00
Wesley W. Terpstra b8098d18be
diplomacy: remove the :=? operator in favour of magic :*=* (#1139)
The reason for the :=? operator was for when you have an adapter chain
whose direction of cardinality you could not know. We used explicit
directives to tell these compositions which way to go.

Unfortunately, that makes the API leaky. You think the chain of adapters
is just one adapter, but you have to use strange Cardinality scopes to
use it. That's just bad.

The new :*=* just automagically figures it out from the graph.
2017-12-01 18:28:37 -08:00
Wesley W. Terpstra 8781d2b2e7 diplomacy: provide a val name for all LazyModule constructions 2017-12-01 11:28:21 -08:00
Wesley W. Terpstra e489c4226e diplomacy: remove node arity and allow empty Nexus nodes (Xbars)
This removes the mostly obsolete 'numIn/Out' range restrictions on nodes.
It also makes it possible to connect optional crossbars that disappear.

val x = TLXbar()
x := master
slave := x

val y = TLXbar()
x :=* y // only connect y if it gets used

This will create crossbar x, but crossbar y will disappear.
2017-12-01 11:26:59 -08:00
Wesley W. Terpstra 6a25a3b7ac tilelink: we can have helper objects for terminal nodes now too!
The new rule is you should have an object.apply method if you only have a
single .node.
2017-12-01 11:26:59 -08:00
Wesley W. Terpstra fbbfc9c096 diplomacy: include edge type in inward/outward node handles
This is necessary capture the node implementation in the handle,
which is in turn necessary to support cloning a Node.
2017-12-01 11:26:58 -08:00
Wesley W. Terpstra 61ef560c75
tilelink: don't pollute TLParamters with AtomicAutomata's implementation (#1111) 2017-11-14 17:49:10 -08:00
Wesley W. Terpstra 8b79f0394e
Merge pull request #1105 from freechipsproject/axi4-xbar
axi4: add an Xbar
2017-11-14 16:18:23 -08:00
Wesley W. Terpstra 509a48c9c9
TLToAXI4: block TL early source re-use before it goes to AXI4 (#1110)
This is a follow-up to PR #1108.

Rather than increasing the number of transactions we allow to be inflight,
instead just block TL when early source re-use happens. This is a better
fix since it means we don't pay mostly wasted downstream hardware to handle
an additional transaction inflight that almost never happens.
2017-11-14 16:08:43 -08:00
Wesley W. Terpstra 1902ba063a Filter: can claim to be out-of-order when you are not 2017-11-14 15:09:09 -08:00
Wesley W. Terpstra 353ddffc11 RAMModel: add a convenience object 2017-11-14 15:09:09 -08:00
Wesley W. Terpstra 147fad6387
Fix AXI4 FIFO ordering for masters with early source reuse (#1108)
* TLToAXI4: fix WaR for single-source FIFO masters
* TLToAXI4: fix potential counter overflow => WaR hazard

If you have a FIFO master with 2^n-1 sources that performs early
source re-use, the old code could potentially break FIFO order.
2017-11-13 20:32:09 -08:00
Wesley W. Terpstra b59880fe8e
Fragmenter: add an option for earlyAck only on PutFulls (#1095)
Fragmenter: add a third case for earlyAck (PutFulls only)

It seems quite common to have a device that is backed by ECC. When
performing a multibeat PutPartial, these devices can exhibit their
first error on the last beat (if it had an incomplete write mask
for that beat, which required read-write-modifying corrupted data).

Generally, these devices have ECC granularity <= the bus width. In
those cases, if you send a PutFull, the first beat carries the
error value for the whole burst. Consider:
  If the PutFull was below the granularity, it was a single beat.
  If the PutFull was multi-beat, it exceeds the granularity.

Therefore, an important variation on the earlyAck optimization is
the case where only PutFulls receive an earlyAck.
2017-11-08 15:31:19 -08:00
Wesley W. Terpstra 7cc7cd5992 tilelink: AtomicAutomata; add errors to the unit test 2017-11-06 12:05:44 -08:00