Coder Social home page Coder Social logo

ucb-bar / constellation Goto Github PK

View Code? Open in Web Editor NEW
143.0 16.0 21.0 1.63 MB

A Chisel RTL generator for network-on-chip interconnects

Home Page: http://constellation.readthedocs.io

License: BSD 3-Clause "New" or "Revised" License

Scala 89.66% Python 1.35% C++ 7.56% Verilog 1.30% Shell 0.14%
chisel hardware interconnect network-on-chip noc rtl soc

constellation's Introduction

The Constellation NoC Generator

Documentation: constellation.readthedocs.io.

Constellation is a Chisel NoC RTL generator framework designed to provide the core interconnect fabric for heterogeneous many-core, many-accelerator SoCs.

  • Constellation generates packet-switched wormhole-routed networks with virtual networks and credit-based flow control
  • Constellation supports arbitrary directed graph network topologies, including irregular and hierarchical network topologies
  • Constellation includes a routing algorithm verifier and routing-table compiler, which can verify and generate deadlock-free routing tables for arbitrary topologies
  • Constellation is a protocol-independent transport layer, yet is capable of compliant deadlock-free transport of protocols like AXI-4 and TileLink
  • Constellation supports drop-in integration in Chipyard/Rocketchip SoCs
  • Constellation is rigorously tested, with almost 100 different tests across as many network configurations

Constellation SoC

Publications

Constellation: An Open-Source SoC-Capable NoC Generator

@inproceedings{zhao2022constellation,
  title={Constellation: An Open-Source SoC-Capable NoC Generator},
  author={Zhao, Jerry and Agrawal, Animesh and Nikolic, Borivoje and Asanovi{\'c}, Krste},
  booktitle={2022 15th IEEE/ACM International Workshop on Network on Chip Architectures (NoCArc)},
  pages={1--7},
  year={2022},
  organization={IEEE}
}

Acknowledgements

Research was partially funded by SLICE Lab industrial sponsors and affiliates Amazon, Apple, Google, Intel, Qualcomm, and Western Digital. The views and opinions of authors expressed herein do not necessarily state or reflect those of the United States Government or any agency thereof.

constellation's People

Contributors

animeshagrawal avatar ekiwi avatar jerryz123 avatar jl102 avatar singularitykchen avatar toruniina avatar tymcauley avatar whutddk avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

constellation's Issues

Error encountered while testing hierarchical topology in Chipyard 1.8.1

Hi, guys

I've encountered while testing hierarchical topology in Chipyard 1.8.1. I tried to run TestConfig66, 67, and 68, but encountered a FIRRTL error while running 67 and 68.(66 seems not have an error)

I am using the Chipyard 1.8.1 tag and suspect that there may be an issue with TestConfig67 and 68. If there is a fixed version of these tests available, could you please share it with me?

Thank you in advance.

Question: What are the parameters in the example Butterfly config?

Hi,

Quick question. I'm new to the concept of butterfly networks. In the Butterfly topology example (https://constellation.readthedocs.io/en/latest/Configuration/Topologies.html), what are the values of kAry and nFly to generate the example? Is it the same as the Wikipedia example (https://en.wikipedia.org/wiki/Butterfly_network#/media/File:Butterfly_Network_Routing.jpg, they say the degree is 4) but with one fewer stages?

Also, the direction of data flow in the Wikipedia example seems unclear. Does the direction not matter for a Butterfly network?

Thanks!

Run Minimal-Standalone Testing Fail

Commend

CONSTELLATION_STANDALONE=1 sbt "testOnly constellation.NoCTest00"

Describe

When I trying to run Minimal-Standalone Testing, it failed when enter lineCONSTELLATION_STANDALONE=1 sbt "testOnly constellation.NoCTest00 I want to ask for some help.

Error Info

[error] sbt.librarymanagement.ResolveException: Error downloading edu.berkeley.cs:api-config-chipsalliance_2.12:1.2-SNAPSHOT
[error]   Not found
[error]   Not found
[error]   not found: /root/.ivy2/local/edu.berkeley.cs/api-config-chipsalliance_2.12/1.2-SNAPSHOT/ivys/ivy.xml
[error]   not found: https://repo1.maven.org/maven2/edu/berkeley/cs/api-config-chipsalliance_2.12/1.2-SNAPSHOT/api-config-chipsalliance_2.12-1.2-SNAPSHOT.pom
[error] Error downloading edu.berkeley.cs:rocketchip_2.12:1.2-SNAPSHOT
[error]   Not found
[error]   Not found
[error]   not found: /root/.ivy2/local/edu.berkeley.cs/rocketchip_2.12/1.2-SNAPSHOT/ivys/ivy.xml
[error]   not found: https://repo1.maven.org/maven2/edu/berkeley/cs/rocketchip_2.12/1.2-SNAPSHOT/rocketchip_2.12-1.2-SNAPSHOT.pom
[error] Error downloading edu.berkeley.cs:rocket-macros_2.12:1.2-SNAPSHOT
[error]   Not found
[error]   Not found
[error]   not found: /root/.ivy2/local/edu.berkeley.cs/rocket-macros_2.12/1.2-SNAPSHOT/ivys/ivy.xml
[error]   not found: https://repo1.maven.org/maven2/edu/berkeley/cs/rocket-macros_2.12/1.2-SNAPSHOT/rocket-macros_2.12-1.2-SNAPSHOT.pom
[error] 	at lmcoursier.CoursierDependencyResolution.unresolvedWarningOrThrow(CoursierDependencyResolution.scala:258)
[error] 	at lmcoursier.CoursierDependencyResolution.$anonfun$update$38(CoursierDependencyResolution.scala:227)
[error] 	at scala.util.Either$LeftProjection.map(Either.scala:573)
[error] 	at lmcoursier.CoursierDependencyResolution.update(CoursierDependencyResolution.scala:227)
[error] 	at sbt.librarymanagement.DependencyResolution.update(DependencyResolution.scala:60)
[error] 	at sbt.internal.LibraryManagement$.resolve$1(LibraryManagement.scala:53)
[error] 	at sbt.internal.LibraryManagement$.$anonfun$cachedUpdate$12(LibraryManagement.scala:103)
[error] 	at sbt.util.Tracked$.$anonfun$lastOutput$1(Tracked.scala:73)
[error] 	at sbt.internal.LibraryManagement$.$anonfun$cachedUpdate$20(LibraryManagement.scala:116)
[error] 	at scala.util.control.Exception$Catch.apply(Exception.scala:228)
[error] 	at sbt.internal.LibraryManagement$.$anonfun$cachedUpdate$11(LibraryManagement.scala:116)
[error] 	at sbt.internal.LibraryManagement$.$anonfun$cachedUpdate$11$adapted(LibraryManagement.scala:97)
[error] 	at sbt.util.Tracked$.$anonfun$inputChangedW$1(Tracked.scala:219)
[error] 	at sbt.internal.LibraryManagement$.cachedUpdate(LibraryManagement.scala:130)
[error] 	at sbt.Classpaths$.$anonfun$updateTask0$5(Defaults.scala:3525)
[error] 	at scala.Function1.$anonfun$compose$1(Function1.scala:49)
[error] 	at sbt.internal.util.$tilde$greater.$anonfun$$u2219$1(TypeFunctions.scala:62)
[error] 	at sbt.std.Transform$$anon$4.work(Transform.scala:68)
[error] 	at sbt.Execute.$anonfun$submit$2(Execute.scala:282)
[error] 	at sbt.internal.util.ErrorHandling$.wideConvert(ErrorHandling.scala:23)
[error] 	at sbt.Execute.work(Execute.scala:291)
[error] 	at sbt.Execute.$anonfun$submit$1(Execute.scala:282)
[error] 	at sbt.ConcurrentRestrictions$$anon$4.$anonfun$submitValid$1(ConcurrentRestrictions.scala:265)
[error] 	at sbt.CompletionService$$anon$2.call(CompletionService.scala:64
[error] 	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
[error] 	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
[error] 	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
[error] 	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
[error] 	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
[error] 	at java.base/java.lang.Thread.run(Thread.java:829)
[error] (update) sbt.librarymanagement.ResolveException: Error downloading edu.berkeley.cs:api-config-chipsalliance_2.12:1.2-SNAPSHOT
[error]   Not found
[error]   Not found
[error]   not found: /root/.ivy2/local/edu.berkeley.cs/api-config-chipsalliance_2.12/1.2-SNAPSHOT/ivys/ivy.xml
[error]   not found: https://repo1.maven.org/maven2/edu/berkeley/cs/api-config-chipsalliance_2.12/1.2-SNAPSHOT/api-config-chipsalliance_2.12-1.2-SNAPSHOT.pom
[error] Error downloading edu.berkeley.cs:rocketchip_2.12:1.2-SNAPSHOT
[error]   Not found
[error]   Not found
[error]   not found: /root/.ivy2/local/edu.berkeley.cs/rocketchip_2.12/1.2-SNAPSHOT/ivys/ivy.xml
[error]   not found: https://repo1.maven.org/maven2/edu/berkeley/cs/rocketchip_2.12/1.2-SNAPSHOT/rocketchip_2.12-1.2-SNAPSHOT.pom
[error] Error downloading edu.berkeley.cs:rocket-macros_2.12:1.2-SNAPSHOT
[error]   Not found
[error]   Not found
[error]   not found: /root/.ivy2/local/edu.berkeley.cs/rocket-macros_2.12/1.2-SNAPSHOT/ivys/ivy.xml
[error]   not found: https://repo1.maven.org/maven2/edu/berkeley/cs/rocket-macros_2.12/1.2-SNAPSHOT/rocket-macros_2.12-1.2-SNAPSHOT.pom
[error] Total time: 3 s, completed Feb 8, 2023, 11:59:04 AM

Run AXI4TestConfig02 fail in the chipyard

the error is Error-[URMI] Unresolved modules
/home/cyh/workspace/chipyard/sims/vcs/generated-src/constellation.test.AXI4TestHarness.AXI4TestConfig02/gen-collateral/ProtocolNoC_AXI4TestHarness_UNIQUIFIED.sv, 1277
this is my commond
make SUB_PROJECT=constellation BINARY=none CONFIG=AXI4TestConfig02 MODEL=AXI4TestHarness run-binary-debug
thanks for your reply.

Failed: Chipyard-Standalone Testing

Hi,

I follow the steps of

  • Installing Espresso
  • Installing Minimal-Standalone

and I'm able to run Minimal-Standalone Testing so above steps seems fine

  • Installing with Chipyard and do:
    make -C generators/constellation/src/main/resources/csrc/netrace netrace.o CFLAGS="-fPIC -O3"

In chipyard/
I do source ./env.sh

And then in chipyard/sims/verilator
I do
❱ make SUB_PROJECT=constellation BINARY=none CONFIG=TestConfig00 run-binary-debug

and get:
Running with RISCV=/home/tom/basement/hw/sbt_play/dpdnc/chipyard/.conda-env/riscv-tools /home/tom/basement/hw/sbt_play/dpdnc/chipyard/common.mk:123: warning: overriding recipe for target '&' /home/tom/basement/hw/sbt_play/dpdnc/chipyard/common.mk:118: warning: ignoring old recipe for target '&' /home/tom/basement/hw/sbt_play/dpdnc/chipyard/common.mk:131: warning: overriding recipe for target '&' /home/tom/basement/hw/sbt_play/dpdnc/chipyard/common.mk:123: warning: ignoring old recipe for target '&' /home/tom/basement/hw/sbt_play/dpdnc/chipyard/common.mk:166: warning: overriding recipe for target '&' /home/tom/basement/hw/sbt_play/dpdnc/chipyard/common.mk:131: warning: ignoring old recipe for target '&' /home/tom/basement/hw/sbt_play/dpdnc/chipyard/common.mk:203: warning: overriding recipe for target '&' /home/tom/basement/hw/sbt_play/dpdnc/chipyard/common.mk:166: warning: ignoring old recipe for target '&' /home/tom/basement/hw/sbt_play/dpdnc/chipyard/common.mk:225: warning: overriding recipe for target '&' /home/tom/basement/hw/sbt_play/dpdnc/chipyard/common.mk:203: warning: ignoring old recipe for target '&' /home/tom/basement/hw/sbt_play/dpdnc/chipyard/common.mk:264: warning: overriding recipe for target '&' /home/tom/basement/hw/sbt_play/dpdnc/chipyard/common.mk:225: warning: ignoring old recipe for target '&' /home/tom/basement/hw/sbt_play/dpdnc/chipyard/common.mk:282: warning: overriding recipe for target '&' /home/tom/basement/hw/sbt_play/dpdnc/chipyard/common.mk:264: warning: ignoring old recipe for target '&' /home/tom/basement/hw/sbt_play/dpdnc/chipyard/common.mk:293: warning: overriding recipe for target '&' /home/tom/basement/hw/sbt_play/dpdnc/chipyard/common.mk:282: warning: ignoring old recipe for target '&' /home/tom/basement/hw/sbt_play/dpdnc/chipyard/common.mk:297: warning: overriding recipe for target '&' /home/tom/basement/hw/sbt_play/dpdnc/chipyard/common.mk:293: warning: ignoring old recipe for target '&' make VM_PARALLEL_BUILDS=1 -C /home/tom/basement/hw/sbt_play/dpdnc/chipyard/sims/verilator/generated-src/constellation.test.TestHarness.TestConfig00/constellation.test.TestHarness.TestConfig00.debug -f VTestDriver.mk make[1]: Entering directory '/home/tom/basement/hw/sbt_play/dpdnc/chipyard/sims/verilator/generated-src/constellation.test.TestHarness.TestConfig00/constellation.test.TestHarness.TestConfig00.debug' ccache g++ -Os -I. -MMD -I/usr/local/share/verilator/include -I/usr/local/share/verilator/include/vltstd -DVM_COVERAGE=0 -DVM_SC=0 -DVM_TRACE=1 -DVM_TRACE_FST=0 -DVM_TRACE_VCD=1 -faligned-new -fcf-protection=none -Wno-bool-operation -Wno-sign-compare -Wno-uninitialized -Wno-unused-but-set-variable -Wno-unused-parameter -Wno-unused-variable -Wno-shadow -O3 -std=c++17 -I/home/tom/basement/hw/sbt_play/dpdnc/chipyard/.conda-env/riscv-tools/include -I/home/tom/basement/hw/sbt_play/dpdnc/chipyard/tools/DRAMSim2 -I/home/tom/basement/hw/sbt_play/dpdnc/chipyard/sims/verilator/generated-src/constellation.test.TestHarness.TestConfig00/gen-collateral -DVERILATOR -include /home/tom/basement/hw/sbt_play/dpdnc/chipyard/sims/verilator/generated-src/constellation.test.TestHarness.TestConfig00/constellation.test.TestHarness.TestConfig00.plusArgs -include /home/tom/basement/hw/sbt_play/dpdnc/chipyard/sims/verilator/generated-src/constellation.test.TestHarness.TestConfig00/constellation.test.TestHarness.TestConfig00.debug/VTestDriver.h -DVL_TIME_CONTEXT -fcoroutines -c -o verilated.o /usr/local/share/verilator/include/verilated.cpp g++: error: unrecognized command line option ‘-fcoroutines’ make[1]: *** [/usr/local/share/verilator/include/verilated.mk:251: verilated.o] Error 1 make[1]: Leaving directory '/home/tom/basement/hw/sbt_play/dpdnc/chipyard/sims/verilator/generated-src/constellation.test.TestHarness.TestConfig00/constellation.test.TestHarness.TestConfig00.debug' make: *** [Makefile:213: /home/tom/basement/hw/sbt_play/dpdnc/chipyard/sims/verilator/simulator-constellation.test-TestConfig00-debug] Error 2 (/home/tom/basement/hw/sbt_play/dpdnc/chipyard/.conda-env)

It looks like the script assigned c++17 as compiling option with a c++20 flag '-fcoroutines' (in my understanding)

How do I solve this?

Thanks for helping!

PS
my verilator version is Verilator 5.012 2023-06-13 rev v5.012-34-g4f13c4d1b

Edit
I downgrade verilator to v5.008
and still got g++: error: unrecognized command line option ‘-fcoroutines’
also in chipyard/sims/verilator/,
i do make for the default example
got g++: error: unrecognized command line option ‘-fcoroutines’ too

and i tried make clean first too

No .v(verilog) file generated after running Chipyard-Standalone Testing

Hi,
i'm operating in docker, and chipyard default example works fine after i did make,
so i think chipard works correctly.
yet when i did make SUB_PROJECT=constellation BINARY=none CONFIG=TestConfig00 run-binary-debug in sims/verilator/
i couldn't find constellation.test.TestHarness.TestConfig00.top.v in generated-src/constellation.test.TestHarness.TestConfig00/
did i miss anything of the steps?

Improve routing

  • Add API for specifying routing priority
  • Selective RR arbiters for routing packets of equal priority
  • Support shared buffers for virtual channels

Code Enhancements

  • RoutingRelation.f doesn't need to take in a nodeId since sourceChannel should already contain that information
  • document that lower vc -> higher priority

confuse about inNodeMapping and outNodeMapping

WithSbusNoC :
why serial-tl maps to fbus in inNodeMapping, and no cbus mapping in outNodeMapping.
Gemmini10ReRoCCOrigNoCConfig :
the outNodeMapping has four system[0-3], but WithNBanks(8) means there are 8 L2 banks. Additionally, why there are 8 serdesser[7]?

Running a Simple Evaluation

Hi,

I am trying to run a simple evaluation using chipyard's standalone mode. My chipyard version is 1.8.1. When I execute the command "make SUB_PROJECT=constellation BINARY=none CONFIG=EvalTestConfig00 MODEL=EvalHarness run-binary-debug" inside /chipyard/sims/verilator,
I get these:
Constellation: test Checking full connectivity
Constellation: test Checking virtual subnet connectivity
Constellation: test Checking for possibility of deadlock
Constellation: test Finished parameter validation
Constellation: test Starting NoC RTL generation
Constellation: test Finished NoC RTL generation
And then,
I get few errors such as:
[error] Picked up JAVA_TOOL_OPTIONS: -Xmx8G -Xss8M -Djava.io.tmpdir=/home/chips/Storage/willi/chipyard/.java_tmp
[error] WARNING: Empty *.mems.conf file. No memories generated
In the end, I get: %Error: Specified --top-module 'TestHarness' was not found in design.
%Error: Exiting due to 1 error(s)
However, a noceval.cfg is generated. But I still get: %Error: Specified --top-module 'TestHarness' was not found in design.
%Error: Exiting due to 1 error(s) after rerunning the simulation.

What might be going wrong? Also, I am refering https://constellation.readthedocs.io/en/latest/Evaluation/index.html

Thanks

May I ignore the "[error] Picked up JAVA_TOOL_OPTIONS" error?

Hi,
I'm trying to test constellation using the instructions here. But I'm getting the following error:

[error] Picked up JAVA_TOOL_OPTIONS: -Xmx8G -Xss8M -Dsbt.supershell=false -Djava.io.tmpdir=/home/manili/Desktop/chipyard/.java_tmp

Also, there is no constellation.test.TestHarness.TestConfig00.top.v in the folder. Is the error root cause of missing *.top.v file?

Setup Issue

Hi,
On the setup of the constellation environment from the latest commit in Standalone mode.
I followed the Installation Instructions at https://constellation.readthedocs.io/en/latest/Introduction/Installation.html
The rocket-chip and sub projects are installed, the artifacts are located at ~/.ivy2/local/edu.berkeley.cs, including :
cde_2.13 hardfloat_2.13 rocketchip_2.13 rocket-macros_2.13
espresso is also built and installed(running the espresso executable doesn't output anything )
constellation git repo is cloned.
when trying to run the first test,
CONSTELLATION_STANDALONE=1 sbt "testOnly constellation.NoCTest00"
Following Error is reported, It seems not correctly configured and reports bunch of errors saying some object is not a member of chisel3.experimental.
It would be great help if you could give some suggestions, Thank you!

The error output is:

[info] welcome to sbt 1.4.9 (Private Build Java 1.8.0_362)
[info] loading global plugins from /home/hukang/.sbt/1.0/plugins
[info] loading project definition from /home/hukang/data/work/source/constellation/project
[info] loading settings for project constellation from build.sbt ...
[info] set current project to constellation (in build file:/home/hukang/data/work/source/constellation/)
[info] compiling 42 Scala sources to /home/hukang/data/work/source/constellation/target/scala-2.13/classes ...
[error] /home/hukang/data/work/source/constellation/src/main/scala/channel/Nodes.scala:4:8: object SourceInfo is not a member of package chisel3.experimental
[error] import chisel3.experimental.SourceInfo
[error]        ^
[error] /home/hukang/data/work/source/constellation/src/main/scala/channel/Nodes.scala:13:75: not found: type SourceInfo
[error]   def edge(pd: EmptyParams, pu: ChannelParams, p: Parameters, sourceInfo: SourceInfo) = {
[error]                                                                           ^
[error] /home/hukang/data/work/source/constellation/src/main/scala/channel/Nodes.scala:42:82: not found: type SourceInfo
[error]   def edge(pd: EmptyParams, pu: IngressChannelParams, p: Parameters, sourceInfo: SourceInfo) = {
[error]                                                                                  ^
[error] /home/hukang/data/work/source/constellation/src/main/scala/channel/Nodes.scala:54:81: not found: type SourceInfo
[error]   def edge(pd: EmptyParams, pu: EgressChannelParams, p: Parameters, sourceInfo: SourceInfo) = {
[error]                                                                                 ^
[warn] /home/hukang/data/work/source/constellation/src/main/scala/noc/Parameters.scala:249:42: Auto-application to `()` is deprecated. Supply the empty argument list `()` explicitly to invoke method subsets,
[warn] or remove the empty argument list from its definition (Java-defined methods are exempt).
[warn] In Scala 3, an unapplied method like this will be eta-expanded into a function.
[warn]         val blockeeSets = blockees.toSet.subsets.filter(_.size > 0)
[warn]                                          ^
[warn] /home/hukang/data/work/source/constellation/src/main/scala/protocol/AXI4.scala:390:27: procedure syntax is deprecated: instead, add `: Unit =` to explicitly declare `printNodeMappings`'s return type
[warn]   def printNodeMappings() {
[warn]                           ^
[warn] /home/hukang/data/work/source/constellation/src/main/scala/protocol/Protocol.scala:59:44: procedure syntax is deprecated: instead, add `: Unit` to explicitly declare `interface`'s return type
[warn]     protocol: Data)(implicit p: Parameters)
[warn]                                            ^
[warn] /home/hukang/data/work/source/constellation/src/main/scala/protocol/Tilelink.scala:511:27: procedure syntax is deprecated: instead, add `: Unit =` to explicitly declare `printNodeMappings`'s return type
[warn]   def printNodeMappings() {
[warn]                           ^
[warn] /home/hukang/data/work/source/constellation/src/main/scala/router/ControlUnit.scala:33:28: procedure syntax is deprecated: instead, add `: Unit =` to explicitly declare `r`'s return type
[warn]   def r(t: Int, reg: UInt) {
[warn]                            ^
[warn] /home/hukang/data/work/source/constellation/src/main/scala/router/ControlUnit.scala:37:29: procedure syntax is deprecated: instead, add `: Unit =` to explicitly declare `rw`'s return type
[warn]   def rw(t: Int, reg: UInt) {
[warn]                             ^
[warn] /home/hukang/data/work/source/constellation/src/main/scala/test/AXI4TestHarness.scala:77:57: Auto-application to `()` is deprecated. Supply the empty argument list `()` explicitly to invoke method serialize_cHeader,
[warn] or remove the empty argument list from its definition (Java-defined methods are exempt).
[warn] In Scala 3, an unapplied method like this will be eta-expanded into a function.
[warn]   ElaborationArtefacts.add("plusArgs", PlusArgArtefacts.serialize_cHeader)
[warn]                                                         ^
[warn] /home/hukang/data/work/source/constellation/src/main/scala/test/TLTestHarness.scala:68:57: Auto-application to `()` is deprecated. Supply the empty argument list `()` explicitly to invoke method serialize_cHeader,
[warn] or remove the empty argument list from its definition (Java-defined methods are exempt).
[warn] In Scala 3, an unapplied method like this will be eta-expanded into a function.
[warn]   ElaborationArtefacts.add("plusArgs", PlusArgArtefacts.serialize_cHeader)
[warn]                                                         ^
[warn] /home/hukang/data/work/source/constellation/src/main/scala/test/TestHarness.scala:294:57: Auto-application to `()` is deprecated. Supply the empty argument list `()` explicitly to invoke method serialize_cHeader,
[warn] or remove the empty argument list from its definition (Java-defined methods are exempt).
[warn] In Scala 3, an unapplied method like this will be eta-expanded into a function.
[warn]   ElaborationArtefacts.add("plusArgs", PlusArgArtefacts.serialize_cHeader)
[warn]                                                         ^
[warn] /home/hukang/data/work/source/constellation/src/main/scala/test/TrafficEvalHarness.scala:159:57: Auto-application to `()` is deprecated. Supply the empty argument list `()` explicitly to invoke method serialize_cHeader,
[warn] or remove the empty argument list from its definition (Java-defined methods are exempt).
[warn] In Scala 3, an unapplied method like this will be eta-expanded into a function.
[warn]   ElaborationArtefacts.add("plusArgs", PlusArgArtefacts.serialize_cHeader)
[warn]                                                         ^
[warn] 10 warnings found
[error] four errors found
[error] (Compile / compileIncremental) Compilation failed
[error] Total time: 9 s, completed Mar 1, 2024 10:19:13 AM

Also after import to intellijIDEA, the chisel,freechips and chipalliance packages are not found by the IDE, I'm not sure if the default build.sbt still need some modification in order to run the project or Am I doing something wrong?

netrace compile with `-fPIC` option

System: Ubuntu 20.04.3
Commit: beb6115

When trying to run the example test, (constellation.test.TestConfig00), I encountered the following

/usr/bin/ld: ../../../src/main/resources/csrc/netrace/netrace.o: relocation R_X86_64_PC32 against symbol `stderr@@GLIBC_2.2.5' can not be used when making a shared object; recompile with -fPIC

Re-compiling with the fPIC set in CLFAGS resolved this issue. Should the Installation.rst be updated with this or the Makefile be updated?

Failed: Running Minimal-Standalone Testing

Greetings

I ran the minimal-standalone testing following the insturctions:

cd constellation
CONSTELLATION_STANDALONE=1 sbt "testOnly constellation.NoCTest00"

And i got:

❱ CONSTELLATION_STANDALONE=1 sbt "testOnly constellation.NoCTest00"
[info] welcome to sbt 1.4.9 (Temurin Java 1.8.0_382)
[info] loading project definition from /home/tom/basement/hw/sbt_play/dpdnc/constellation/project
[info] loading settings for project constellation from build.sbt ...
[info] set current project to constellation (in build file:/home/tom/basement/hw/sbt_play/dpdnc/constellation/)
[info] Updating
[info] Resolved dependencies
[warn]
[warn] Note: Unresolved dependencies path:
[error] sbt.librarymanagement.ResolveException: Error downloading edu.berkeley.cs:rocketchip_2.13:1.6.0
[error] Not found
[error] Not found
[error] not found: /home/tom/.ivy2/local/edu.berkeley.cs/rocketchip_2.13/1.6.0/ivys/ivy.xml
[error] not found: https://repo1.maven.org/maven2/edu/berkeley/cs/rocketchip_2.13/1.6.0/rocketchip_2.13-1.6.0.pom
[error] at lmcoursier.CoursierDependencyResolution.unresolvedWarningOrThrow(CoursierDependencyResolution.scala:258)
[error] at lmcoursier.CoursierDependencyResolution.$anonfun$update$38(CoursierDependencyResolution.scala:227)
[error] at scala.util.Either$LeftProjection.map(Either.scala:573)
[error] at lmcoursier.CoursierDependencyResolution.update(CoursierDependencyResolution.scala:227)
[error] at sbt.librarymanagement.DependencyResolution.update(DependencyResolution.scala:60)
[error] at sbt.internal.LibraryManagement$.resolve$1(LibraryManagement.scala:53)
[error] at sbt.internal.LibraryManagement$.$anonfun$cachedUpdate$12(LibraryManagement.scala:103)
[error] at sbt.util.Tracked$.$anonfun$lastOutput$1(Tracked.scala:73)
[error] at sbt.internal.LibraryManagement$.$anonfun$cachedUpdate$20(LibraryManagement.scala:116)
[error] at scala.util.control.Exception$Catch.apply(Exception.scala:228)
[error] at sbt.internal.LibraryManagement$.$anonfun$cachedUpdate$11(LibraryManagement.scala:116)
[error] at sbt.internal.LibraryManagement$.$anonfun$cachedUpdate$11$adapted(LibraryManagement.scala:97)
[error] at sbt.util.Tracked$.$anonfun$inputChangedW$1(Tracked.scala:219)
[error] at sbt.internal.LibraryManagement$.cachedUpdate(LibraryManagement.scala:130)
[error] at sbt.Classpaths$.$anonfun$updateTask0$5(Defaults.scala:3525)
[error] at scala.Function1.$anonfun$compose$1(Function1.scala:49)
[error] at sbt.internal.util.$tilde$greater.$anonfun$$u2219$1(TypeFunctions.scala:62)
[error] at sbt.std.Transform$$anon$4.work(Transform.scala:68)
[error] at sbt.Execute.$anonfun$submit$2(Execute.scala:282)
[error] at sbt.internal.util.ErrorHandling$.wideConvert(ErrorHandling.scala:23)
[error] at sbt.Execute.work(Execute.scala:291)
[error] at sbt.Execute.$anonfun$submit$1(Execute.scala:282)
[error] at sbt.ConcurrentRestrictions$$anon$4.$anonfun$submitValid$1(ConcurrentRestrictions.scala:265)
[error] at sbt.CompletionService$$anon$2.call(CompletionService.scala:64)
[error] at java.util.concurrent.FutureTask.run(FutureTask.java:266)
[error] at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
[error] at java.util.concurrent.FutureTask.run(FutureTask.java:266)
[error] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
[error] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
[error] at java.lang.Thread.run(Thread.java:750)
[error] (update) sbt.librarymanagement.ResolveException: Error downloading edu.berkeley.cs:rocketchip_2.13:1.6.0
[error] Not found
[error] Not found
[error] not found: /home/tom/.ivy2/local/edu.berkeley.cs/rocketchip_2.13/1.6.0/ivys/ivy.xml
[error] not found: https://repo1.maven.org/maven2/edu/berkeley/cs/rocketchip_2.13/1.6.0/rocketchip_2.13-1.6.0.pom
[error] Total time: 4 s, completed Jul 25, 2023 3:14:32 PM

and my build.sbt (which i did not change):

name := "constellation"
version := "0.1"
scalaVersion := "2.13.10"

scalacOptions ++= Seq(
"-language:reflectiveCalls",
"-deprecation",
"-feature"
)

val standalone = sys.env.get("CONSTELLATION_STANDALONE").isDefined

// SNAPSHOT repositories
libraryDependencies ++= (if (standalone) {
Seq(
"edu.berkeley.cs" %% "rocketchip" % "1.6.0",
"edu.berkeley.cs" %% "cde" % "1.6.0",
"edu.berkeley.cs" %% "rocket-macros" % "1.6.0",
"edu.berkeley.cs" %% "chiseltest" % "0.5.4" % "test"
)
} else {
Nil
})

addCompilerPlugin("edu.berkeley.cs" % "chisel3-plugin"
% (if (standalone) "3.5.6" else "3.5.6") cross CrossVersion.full)

import Tests._

Test / fork := true
Test / testGrouping := (Test / testGrouping).value.flatMap { group =>
group.tests.map { test =>
Group(test.name, Seq(test), SubProcess(ForkOptions()))
}
}
concurrentRestrictions := Seq(Tags.limit(Tags.ForkedTestGroup, 72))

Looks like i was not able to download files from edu.berkeley.cs:rocketchip_2.13:1.6.0 and i'm not sure about it

Please help and thanks in advance!

Is there anyway to generate seperate verilog files for each component?

Hi there,

I'm interested in performing area analysis for a NoC, specifically for the router component. I'm planning to use Constellation to generate a router design for this task first, but I'm wondering if there's a way to generate a Verilog file that only contains the code for a single router.

Any advice or guidance you could provide would be greatly appreciated!

Thanks

about Minimal-Standalone Testing

follow the Documentation: http://constellation.readthedocs.io/
install Espresso
and input those commind :

  1. cd constellation
  2. CONSTELLATION_STANDALONE=1 sbt "testOnly constellation.NoCTest00"

terminal report error:

$ CONSTELLATION_STANDALONE=1 sbt "testOnly constellation.NoCTest00"
[info] welcome to sbt 1.4.9 (Oracle Corporation Java 1.8.0_25)
[info] loading project definition from /home/wpc/NOC_gen/constellation/project
[info] loading settings for project constellation from build.sbt ...
[info] set current project to constellation (in build file:/home/wpc/NOC_gen/constellation/)
[info] Updating
[info] Resolved dependencies
[warn]
[warn] Note: Unresolved dependencies path:
[error] sbt.librarymanagement.ResolveException: Error downloading edu.berkeley.cs:cde_2.13:1.6.0
[error] Not found
[error] Not found
[error] not found: /root/.ivy2/localedu.berkeley.cs/cde_2.13/1.6.0/ivys/ivy.xml
[error] not found: https://repo1.maven.org/maven2/edu/berkeley/cs/cde_2.13/1.6.0/cde_2.13-1.6.0.pom
[error] not found: https://repo.scala-sbt.org/scalasbt/maven-releases/edu/berkeley/cs/cde_2.13/1.6.0/cde_2.13-1.6.0.pom
[error] download error: Caught javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target (sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target) while downloading https://repo.scala-sbt.org/scalasbt/maven-snapshots/edu/berkeley/cs/cde_2.13/1.6.0/cde_2.13-1.6.0.pom
[error] download error: Caught javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target (sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target) while downloading https://repo.typesafe.com/typesafe/ivy-releases/edu.berkeley.cs/cde_2.13/1.6.0/ivys/ivy.xm

How to solve this problem?help me !

Run NocTestAXI403 Fail

Command

CONSTELLATION_STANDALONE=1 sbt "testOnly constellation.NoCTestAXI403"

Error Info

Constellation: AXI4NoC Starting NoC RTL generation
Constellation: AXI4NoC Finished NoC RTL generation
[info] constellation.NoCTestAXI403 *** ABORTED ***
[info]   java.lang.OutOfMemoryError: GC overhead limit exceeded
[info]   at scala.LowPriorityImplicits.wrapRefArray(Predef.scala:614)
[info]   at firrtl.ir.Block.mapStmt(IR.scala:653)
[info]   at firrtl.Mappers$StmtMagnet$$anon$3.map(Mappers.scala:31)
[info]   at firrtl.Mappers$StmtMap$.map$extension(Mappers.scala:48)
[info]   at firrtl.passes.TrimIntervals.alignStmtBP(TrimIntervals.scala:67)
[info]   at firrtl.passes.TrimIntervals.$anonfun$alignModuleBP$1(TrimIntervals.scala:54)
[info]   at firrtl.passes.TrimIntervals$$Lambda$4922/1738622642.apply(Unknown Source)
[info]   at firrtl.ir.Module.mapStmt(IR.scala:1198)
[info]   at firrtl.Mappers$ModuleMagnet$$anon$14.map(Mappers.scala:108)
[info]   at firrtl.Mappers$ModuleMap$.map$extension(Mappers.scala:121)
[info]   ...
[error] Uncaught exception when running constellation.NoCTestAXI403: java.lang.OutOfMemoryError: GC overhead limit exceeded
[error] sbt.ForkMain$ForkError: java.lang.OutOfMemoryError: GC overhead limit exceeded
[error] 	at scala.LowPriorityImplicits.wrapRefArray(Predef.scala:614)
[error] 	at firrtl.ir.Block.mapStmt(IR.scala:653)
[error] 	at firrtl.Mappers$StmtMagnet$$anon$3.map(Mappers.scala:31)
[error] 	at firrtl.Mappers$StmtMap$.map$extension(Mappers.scala:48)
[error] 	at firrtl.passes.TrimIntervals.alignStmtBP(TrimIntervals.scala:67)
[error] 	at firrtl.passes.TrimIntervals.$anonfun$alignModuleBP$1(TrimIntervals.scala:54)
[error] 	at firrtl.passes.TrimIntervals$$Lambda$4922/1738622642.apply(Unknown Source)
[error] 	at firrtl.ir.Module.mapStmt(IR.scala:1198)
[error] 	at firrtl.Mappers$ModuleMagnet$$anon$14.map(Mappers.scala:108)
[error] 	at firrtl.Mappers$ModuleMap$.map$extension(Mappers.scala:121)
[error] 	at firrtl.passes.TrimIntervals.alignModuleBP(TrimIntervals.scala:54)
[error] 	at firrtl.passes.TrimIntervals.$anonfun$run$3(TrimIntervals.scala:36)
[error] 	at firrtl.passes.TrimIntervals$$Lambda$4920/737069963.apply(Unknown Source)
[error] 	at scala.collection.TraversableLike.$anonfun$map$1(TraversableLike.scala:285)
[error] 	at scala.collection.TraversableLike$$Lambda$63/1484594489.apply(Unknown Source)
[error] 	at scala.collection.mutable.ResizableArray.foreach(ResizableArray.scala:62)
[error] 	at scala.collection.mutable.ResizableArray.foreach$(ResizableArray.scala:55)
[error] 	at scala.collection.mutable.ArrayBuffer.foreach(ArrayBuffer.scala:49)
[error] 	at scala.collection.TraversableLike.map(TraversableLike.scala:285)
[error] 	at scala.collection.TraversableLike.map$(TraversableLike.scala:278)
[error] 	at scala.collection.AbstractTraversable.map(Traversable.scala:108)
[error] 	at firrtl.ir.Circuit.mapModule(IR.scala:1235)
[error] 	at firrtl.Mappers$CircuitMagnet$$anon$18.map(Mappers.scala:130)
[error] 	at firrtl.Mappers$CircuitMap$.map$extension(Mappers.scala:140)
[error] 	at firrtl.passes.TrimIntervals.run(TrimIntervals.scala:36)
[error] 	at firrtl.passes.Pass.execute(Pass.scala:14)
[error] 	at firrtl.passes.Pass.execute$(Pass.scala:14)
[error] 	at firrtl.passes.TrimIntervals.execute(TrimIntervals.scala:23)
[error] 	at firrtl.Transform.transform(Compiler.scala:280)
[error] 	at firrtl.Transform.transform$(Compiler.scala:280)
[error] 	at firrtl.passes.TrimIntervals.transform(TrimIntervals.scala:23)
[error] 	at firrtl.stage.transforms.ExpandPrepares.execute(ExpandPrepares.scala:19)
[info] Run completed in 2 minutes, 52 seconds.
[info] Total number of tests run: 0
[info] Suites: completed 0, aborted 1
[info] Tests: succeeded 0, failed 0, canceled 0, ignored 0, pending 0
[info] *** 1 SUITE ABORTED ***
[error] Error during tests:
[error] 	constellation.NoCTestAXI403
[error] (Test / testOnly) sbt.TestsFailedException: Tests unsuccessful
[error] Total time: 179 s (02:59), completed Jan 18, 2023 2:57:25 PM

Add Wishbone protocol support

Hi,

I would like to add Wishbone protocol support to Constellation. However, the documentation is confusing me. Furthermore, due to the changes made to Chipyard (refer to #41), it is challenging to follow the documentation and understand what is happening under the hood. Do you have any suggestions on how I can get started with this process?

Enhancements for C++ Testing

  • Make system work with build.sbt test system
  • Don't require users to specify ingress/egress routing if ingress/egress can't access each other (virtual subnetworks)
  • Error if user tries to do above with nonzero flow (but ok if chisel NoC also does this)

Max throughput of Random traffic

Hi,

I got the max throughput of 2d 6x6 Mesh with Random traffic is about 0.07 flits/node/cycle for 1 VC (4 buffers).
Is this an expected result ? Thanks

---Z. Liu

report error when execute Minimal-Standalone Testing

I read Documentation: constellation.readthedocs.io.
and follow the steps of

  • Installing Espresso
  • Installing Minimal-Standalone
    Then I git clone constellation and execute commands:
cd constellation
CONSTELLATION_STANDALONE=1 sbt "testOnly constellation.NoCTest00"

However,sbt report error:
image
Does the source code match the version of the documentation?How can I fix it and generate verilog succesfully?

Visualization utility

  • Make visualization script more pythonic
  • Add visualization of queue occupancy (instead of channel utilization)

genenarate top.v fail

I keep getting the following error when I run the command that generates top.v.myfirtool is 1.4.5.

[info] running (fork) barstools.tapeout.transforms.GenerateModelStageMain --no-dedup --output-file /1/chipyard/sims/vcs/generated-src/constellation.test.TestHarness.TestConfig00/constellation.test.TestHarness.TestConfig00.sfc --output-annotation-file /1/chipyard/sims/vcs/generated-src/constellation.test.TestHarness.TestConfig00/constellation.test.TestHarness.TestConfig00.sfc.anno.json --target-dir /1/chipyard/sims/vcs/generated-src/constellation.test.TestHarness.TestConfig00/gen-collateral --input-file /1/chipyard/sims/vcs/generated-src/constellation.test.TestHarness.TestConfig00/constellation.test.TestHarness.TestConfig00.fir --annotation-file /1/chipyard/sims/vcs/generated-src/constellation.test.TestHarness.TestConfig00/constellation.test.TestHarness.TestConfig00.appended.anno.json --log-level error --allow-unrecognized-annotations -X none
[error] Picked up JAVA_TOOL_OPTIONS: -Xmx8G -Xss8M -Dsbt.supershell=false -Djava.io.tmpdir=/1/chipyard/.java_tmp
[success] Total time: 3 s, completed Jul 13, 2023 8:15:06 PM
mv /1/chipyard/sims/vcs/generated-src/constellation.test.TestHarness.TestConfig00/constellation.test.TestHarness.TestConfig00.sfc.lo.fir /1/chipyard/sims/vcs/generated-src/constellation.test.TestHarness.TestConfig00/constellation.test.TestHarness.TestConfig00.sfc.fir 2> /dev/null # Optionally change file type when SFC generates LowFIRRTL
/1/chipyard/common.mk:196: recipe for target '/1/chipyard/sims/vcs/generated-src/constellation.test.TestHarness.TestConfig00/model_module_hierarchy.json' failed
make: [/1/chipyard/sims/vcs/generated-src/constellation.test.TestHarness.TestConfig00/model_module_hierarchy.json] Error 1 (ignored)
firtool
--format=fir
--dedup
--export-module-hierarchy
--emit-metadata
--verify-each=true
--warn-on-unprocessed-annotations
--disable-annotation-classless
--disable-annotation-unknown
--mlir-timing
--lowering-options=emittedLineLength=2048,noAlwaysComb,disallowLocalVariables,verifLabels,locationInfoStyle=wrapInAtSquareBracket
--repl-seq-mem
--repl-seq-mem-file=/1/chipyard/sims/vcs/generated-src/constellation.test.TestHarness.TestConfig00/constellation.test.TestHarness.TestConfig00.mems.conf
--repl-seq-mem-circuit=TestHarness
--annotation-file=/1/chipyard/sims/vcs/generated-src/constellation.test.TestHarness.TestConfig00/constellation.test.TestHarness.TestConfig00.sfc.anno.json
--split-verilog
-o /1/chipyard/sims/vcs/generated-src/constellation.test.TestHarness.TestConfig00/gen-collateral
/1/chipyard/sims/vcs/generated-src/constellation.test.TestHarness.TestConfig00/constellation.test.TestHarness.TestConfig00.sfc.fir
firtool: Unknown command line argument '--emit-metadata'. Try: 'firtool --help'
firtool: Did you mean '--emit-bytecode'?
firtool: Unknown command line argument '--repl-seq-mem-circuit=TestHarness'. Try: 'firtool --help'
firtool: Did you mean '--repl-seq-mem-file=TestHarness'?
/1/chipyard/common.mk:196: recipe for target '/1/chipyard/sims/vcs/generated-src/constellation.test.TestHarness.TestConfig00/model_module_hierarchy.json' failed
make: *** [/1/chipyard/sims/vcs/generated-src/constellation.test.TestHarness.TestConfig00/model_module_hierarchy.json] Error 1

connecting the cores of the SOC with TLNOC

when connect the cores of the SOC with TLNOC and the accelerators are tightly coupled with the RISCV core through ROCC,how to achieve direct communication between different accelerators by NOC ? Looking forward to your answer thanks

NoC RTL simulaton

Hi sir, your work is really amazing. I also completed a NoC with chisel, and the basic unit passed the unit test of chiseltest, but I don't know how to do RTL simulation test for the complete NoC written in chisel language. I would like to ask you, how did you test when you completed the NOC that was not integrated into the chipyard framework.

`DiplomaticNetworkNodeMapping` fails with more than 9 cores

Method getNode in DiplomaticNetworkNodeMapping cannot handle more than 9 cores. The issue is with how string matching is performed, consider:

getNode("Core 10 DCache[0],Core 10 DCache MMIO[0],Core 10 ICache[0]", ListMap("Core 10" -> 1, "Core 1" -> 0))

Here we will have matches = List(true, true), because "Core 10" contains both "Core 1" and "Core 10". I would say the desired results should have been matches = List(true, false).

A quick fix is:

 def getNode(l: String, nodeMapping: ListMap[String, Int]): Option[Int] = {
    val keys = nodeMapping.keys.toSeq
    val patterns = keys.map { k =>
      val regexSpecial = Seq(
        "+","*", "?", "^", "$", "(", ")", "[", "]", "{", "}","|"
      )
      val escaped = regexSpecial.foldLeft(k) { case (kk, ch) =>
        kk.replace(ch, "\\" + ch)
      }
      raw".*${escaped}[A-Z,a-z,\,,\[,\],\s,\|]+.*".r
    }
    val matches = patterns.map { p => p.findFirstIn(l) }
    if (matches.filter(_.nonEmpty).size == 1) {
      val index = matches.indexWhere(_.nonEmpty)
      Some(nodeMapping.values.toSeq(index))
    } else {
      None
    }
  }

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.