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
2092cb4ec8
diplomacy: reprotect Node bundles after module construction is completed
2017-12-01 11:26:59 -08:00
Wesley W. Terpstra
cc789e9063
diplomacy: protect more of the unstable API
2017-12-01 11:26:59 -08:00
Wesley W. Terpstra
1f23f9f865
diplomacy: categorize parameter resolution by direction+side
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
a060c37173
diplomacy: expose the API to query a Node for its neighbours
2017-10-26 15:08:06 -07:00
Wesley W. Terpstra
6276ea4291
diplomacy: it possible for NodeHandles to put indirection on their attachment
2017-10-26 13:04:32 -07:00
Wesley W. Terpstra
e894d64bca
diplomacy: support := composition
...
This makes it possible to treat chained composition associatively.
x := y :=? z :=* a ...
It also makes it easy to chain multiple optional adapters:
node :=? (Seq(a, b) ++ c ++ d)
2017-10-26 13:04:32 -07:00
Wesley W. Terpstra
7453186b59
diplomacy: add reflection for parent modules to nodes
2017-10-25 16:56:50 -07:00
Wesley W. Terpstra
e35d3df6ea
diplomacy: detect and report cycles in the diplomatic graph
2017-09-27 11:46:06 -07:00
Wesley W. Terpstra
5af08966d8
coreplex: fix WithoutTLMonitors
...
closes #1017
2017-09-27 00:57:18 -07:00
Wesley W. Terpstra
d87536ff8b
diplomacy: make NodeHandle recursively composable
2017-09-26 18:47:16 -07:00
Wesley W. Terpstra
da40573a64
diplomacy: replace LazyModule.stack with an optional scope
2017-09-26 14:56:50 -07:00
Wesley W. Terpstra
a27e853101
diplomacy: move rendering properties to edges
...
FlipRendering { implicit p => ... } now changes the render direction of edges.
diplomatic NodeImps can specify a default render flip using the new 'render' method.
2017-09-26 13:24:36 -07:00
Wesley W. Terpstra
76c2aa1661
diplomacy: introduce the typing-saving SimpleNodeImp
2017-09-26 12:28:59 -07:00
Wesley W. Terpstra
d22ec1eddf
diplomacy: beautify node signal prefixes
2017-09-26 11:56:53 -07:00
Wesley W. Terpstra
bc225a4e82
diplomacy: place Monitors inside LazyModules sinks
...
We used to place Monitors at the point of the ':='.
This was problematic because the clock domain might be wrong.
Thus, we needed to shove Monitors a lot.
Furthermore, now that we have cross-module ':=', you might not even
have access to the wires at the point where ':=' is invoked.
2017-09-22 23:36:17 -07:00
Wesley W. Terpstra
cfb7f13408
diplomacy: capture SourceInfo at point of := in Edge parameters
2017-09-22 22:25:56 -07:00
Wesley W. Terpstra
16969eb1f6
diplomacy: spelling fix
2017-09-22 15:01:42 -07:00
Wesley W. Terpstra
b9a2e4c243
diplomacy: API beautification
2017-09-22 15:01:42 -07:00
Wesley W. Terpstra
9217baf9d4
diplomacy: change API to auto-create node bundles => cross-module refs
2017-09-22 15:01:39 -07:00
Wesley W. Terpstra
53f6999ea8
Splitter: reuse TLCustom node instead of special diplomacy case
2017-09-22 14:58:39 -07:00
Wesley W. Terpstra
d89ee9d9d4
nodes: grab a name on construction
2017-09-22 14:38:47 -07:00
Wesley W. Terpstra
bef593c21a
diplomacy: edges now capture their Parameters
2017-09-07 16:03:35 -07:00
Wesley W. Terpstra
80ed27683e
diplomacy: protect against API leakage
2017-09-07 16:03:35 -07:00
Wesley W. Terpstra
1365c5f90c
diplomacy: implement DisableMonitors scope
2017-09-07 16:03:35 -07:00
Wesley W. Terpstra
7a8364ef08
diplomacy: leverage new Parameters defaults
2017-09-07 16:03:35 -07:00
Wesley W. Terpstra
1b705f62f6
diplomacy: support :=? for unknown star inference
2017-09-07 16:03:35 -07:00
Megan Wachs
f61fe2be1e
diplomacy: More verbose require
2017-07-28 10:05:45 -07:00
Henry Cook
01ca3efc2b
Combine Coreplex and System Module Hierarchies ( #875 )
...
* coreplex collapse: peripherals now in coreplex
* coreplex: better factoring of TLBusWrapper attachement points
* diplomacy: allow monitorless :*= and :=*
* rocket: don't connect monitors to tile tim slave ports
* rename chip package to system
* coreplex: only sbus has a splitter
* TLFragmenter: Continuing my spot battles on requires without explanatory strings
* pbus: toFixedWidthSingleBeatSlave
* tilelink: more verbose requires
* use the new system package for regression
* sbus: add more explicit FIFO attachment points
* delete leftover top-level utils
* cleanup ResetVector and RTC
2017-07-23 08:31:04 -07:00
Wesley W. Terpstra
c8a7648169
diplomacy: only evaluate a Nexus node's map function once
2017-07-12 16:20:55 -07:00
Henry Cook
4c595d175c
Refactor package hierarchy and remove legacy bus protocol implementations ( #845 )
...
* Refactors package hierarchy.
Additionally:
- Removes legacy ground tests and configs
- Removes legacy bus protocol implementations
- Removes NTiles
- Adds devices package
- Adds more functions to util package
2017-07-07 10:48:16 -07:00
Henry Cook
6e5a4c687f
diplomacy: a type of connect that always disables monitors ( #828 )
2017-06-28 21:48:10 -07:00
Henry Cook
5368ea60fe
Merge pull request #757 from freechipsproject/isp-port
...
Inter-System-Port
2017-06-15 13:07:19 -07:00
Henry Cook
2e8a40a23f
diplomacy: Allow LazyModuleImps to be based on RawModules or MultiIOModules
...
And add a MonitorBase class to be connect's return type.
2017-06-13 13:55:27 -07:00
Wesley W. Terpstra
5a2a6b0386
diplomacy: add a CustomNode type that allows direct overload of methods
2017-06-02 20:42:17 -07:00
Wesley W. Terpstra
0a2a93c27d
diplomacy: add the new Splitter node type
2017-06-02 20:42:16 -07:00
Wesley W. Terpstra
c695237050
diplomacy: make :=* and :*= resolution more flexible
2017-06-02 20:42:16 -07:00
Wesley W. Terpstra
1f2236cdb3
diplomacy: appease Jack by removing unused 1st bundles argument
2017-05-17 06:46:07 -07:00
Wesley W. Terpstra
191dad7800
diplomacy: provide connect access to edges without bundles
...
Forcing the bundles to exist early can mess up module ownership.
2017-05-17 06:29:03 -07:00
Wesley W. Terpstra
fcf774f125
graphML: reverse interrupt arrows
2017-04-14 18:09:14 -07:00
Jacob Chang
d3925f0998
Add hooks to print debug information into the graphml file
2017-04-14 18:09:14 -07:00
Wesley W. Terpstra
7ff9f88ad7
rocket: connect interrupt map for Plic+Clint
2017-03-02 21:19:22 -08:00
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
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
Wesley W. Terpstra
f7f52cc722
diplomacy: restore Monitor functionality
2017-01-29 17:25:14 -08:00
Wesley W. Terpstra
4d646939b0
diplomacy: make flexible-port adapters possible
2017-01-29 14:26:02 -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
9dc7f180b6
diplomacy: support zero-port Nodes
2017-01-19 19:08:01 -08:00
Wesley W. Terpstra
e7b35b4bb6
diplomacy: support multiple ports behind a BlindNode
2017-01-19 19:07:14 -08:00