reorganize moving non-submodule packages into src/main/scala
This commit is contained in:
		
							
								
								
									
										5
									
								
								Makefrag
									
									
									
									
									
								
							
							
						
						
									
										5
									
								
								Makefrag
									
									
									
									
									
								
							| @@ -20,9 +20,8 @@ $(FIRRTL_JAR): $(shell find $(base_dir)/firrtl/src/main/scala -iname "*.scala") | |||||||
| CHISEL_ARGS := --targetDir $(generated_dir) | CHISEL_ARGS := --targetDir $(generated_dir) | ||||||
|  |  | ||||||
| src_path = src/main/scala | src_path = src/main/scala | ||||||
| default_submodules = . junctions uncore hardfloat rocket groundtest coreplex context-dependent-environments | default_submodules = . hardfloat context-dependent-environments chisel3 | ||||||
| chisel_srcs = $(foreach submodule,$(default_submodules) $(ROCKETCHIP_ADDONS),$(wildcard $(base_dir)/$(submodule)/$(src_path)/*.scala)) | chisel_srcs = $(foreach submodule,$(default_submodules) $(ROCKETCHIP_ADDONS),$(shell find $(base_dir)/$(submodule)/$(src_path) -name "*.scala")) | ||||||
| chisel_srcs += $(foreach submodule,$(default_submodules) $(ROCKETCHIP_ADDONS),$(wildcard $(base_dir)/$(submodule)/$(src_path)/*/*.scala)) |  | ||||||
|  |  | ||||||
| disasm := 2> | disasm := 2> | ||||||
| which_disasm := $(shell which spike-dasm 2> /dev/null) | which_disasm := $(shell which spike-dasm 2> /dev/null) | ||||||
|   | |||||||
| @@ -1,10 +0,0 @@ | |||||||
| organization := "edu.berkeley.cs" |  | ||||||
|  |  | ||||||
| version := "1.0" |  | ||||||
|  |  | ||||||
| name := "coreplex" |  | ||||||
|  |  | ||||||
| scalaVersion := "2.11.6" |  | ||||||
|  |  | ||||||
| libraryDependencies ++= (Seq("chisel", "uncore", "junctions", "rocket", "groundtest").map { |  | ||||||
|   dep: String => sys.props.get(dep + "Version") map { "edu.berkeley.cs" %% dep % _ }}).flatten |  | ||||||
							
								
								
									
										1
									
								
								groundtest/.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								groundtest/.gitignore
									
									
									
									
										vendored
									
									
								
							| @@ -1 +0,0 @@ | |||||||
| target |  | ||||||
| @@ -1,150 +0,0 @@ | |||||||
| # groundtest |  | ||||||
|  |  | ||||||
| A memory tester circuit for Rocket Chip's memory system. The generator tile |  | ||||||
| plugs into the existing SoC generator as what looks like a CPU. However, |  | ||||||
| instead of running programs, the tile generates fixed memory requests out to |  | ||||||
| the L2. There are both cached and uncached generators. The cached generator |  | ||||||
| has an intervening L1 cache, the uncached generator sends TileLink requests |  | ||||||
| directly to the L2. |  | ||||||
|  |  | ||||||
| Assertions are set to fail if the wrong data comes back or if a request times |  | ||||||
| out waiting for the response. |  | ||||||
|  |  | ||||||
| ## Configuring Rocket-Chip with groundtest |  | ||||||
|  |  | ||||||
| The groundtest package defines a GroundTestTile, which extends a |  | ||||||
| rocket-chip Tile.  A number of Configs in rocket-chip instantiate |  | ||||||
| GroundTestTile(s) in place of other types of Tiles (see |  | ||||||
| [TestConfigs.scala](https://github.com/ucb-bar/rocket-chip/blob/master/src/main/scala/TestConfigs.scala)). |  | ||||||
|  |  | ||||||
| Running a ground test can be achieved in rocket-chip as follows |  | ||||||
| (assuming the `build.sh` script in the |  | ||||||
| `rocket-chip/riscv-tools` directory has already been run). |  | ||||||
|  |  | ||||||
| ``` |  | ||||||
| cd emulator |  | ||||||
| make CONFIG=<GroundTestConfigName> |  | ||||||
| ln -s ../riscv-tools/riscv-tests/build/isa/rv64ui-p-simple |  | ||||||
| ./emulator-Top-<GroundTestConfigName> rv64ui-p-simple <other args> |  | ||||||
| ``` |  | ||||||
|  |  | ||||||
| Currently the Configs which include GroundTestTile(s) are: |  | ||||||
|  |  | ||||||
| - MemtestConfig |  | ||||||
| - MemtestL2Config |  | ||||||
| - BroadcastRegressionTestConfig |  | ||||||
| - CacheRegressionTestConfig |  | ||||||
| - UnitTestConfig |  | ||||||
| - TraceGenConfig |  | ||||||
| - ComparatorConfig |  | ||||||
| - ComparatorL2Config |  | ||||||
|  |  | ||||||
| The usual Make targets run-asm-tests and run-bmark-tests still work for these configurations, though they don't do much. |  | ||||||
|  |  | ||||||
| ## Using TraceGenConfig |  | ||||||
|  |  | ||||||
| The trace generator in groundtest |  | ||||||
| ([tracegen.scala](https://github.com/ucb-bar/groundtest/blob/master/src/main/scala/tracegen.scala)) has the ability to generate random memory-subsystem traces, i.e. random sequences of memory requests, along with their responses. The idea is that these traces can be validated by an external checker, such as [axe](https://github.com/CTSRD-CHERI/axe). |  | ||||||
|  |  | ||||||
| Putting the generator and the checker together, we can automatically search for invalid traces, i.e. possible bugs in the memory subsystem. This is useful for intensive testing, but also debugging: it is possible to search for simple failing cases. |  | ||||||
|  |  | ||||||
| ### Quick Reference |  | ||||||
|  |  | ||||||
| The [tracegen+check.sh](https://github.com/ucb-bar/groundtest/blob/master/scripts/tracegen%2Bcheck.sh) script provides an automated way to run a number of randomized tests. The number of tests, initial seed, and other parameters can be set via environment variables or the command line, see the script for more details.  |  | ||||||
|  |  | ||||||
| Before running the script, first ensure that: |  | ||||||
|  |  | ||||||
| - the file `rocket-chip/riscv-tools/riscv-tests/build/isa/rv64ui-p-simple` |  | ||||||
|   exists (this is produced by the `build.sh` script in the |  | ||||||
|   `rocket-chip/riscv-tools` directory); |  | ||||||
| - `rocket-chip/groundtest/scripts` in your `PATH`; |  | ||||||
| - `rocket-chip/emulator` is your current working directory. |  | ||||||
|  |  | ||||||
| Now the script can be run as follows. |  | ||||||
|  |  | ||||||
| ``` |  | ||||||
| > make CONFIG=TraceGenConfig |  | ||||||
| > tracegen+check.sh |  | ||||||
| Testing against WMO model: |  | ||||||
|   |  | ||||||
|        0: .......... .......... .......... .......... ..........  |  | ||||||
|       50: .......... .......... .......... .......... .......... |  | ||||||
|  |  | ||||||
| OK, passed 100 tests |  | ||||||
| LR/SC success rate: 88% |  | ||||||
| Load-external rate: 45% |  | ||||||
| ``` |  | ||||||
|  |  | ||||||
| ### Running Manually |  | ||||||
|  |  | ||||||
| Suppose we have built the Rocket Chip emulator with the TraceGenConfig |  | ||||||
| configuration as above. Running it using the |  | ||||||
| [tracegen.py](https://github.com/ucb-bar/groundtest/blob/master/scripts/tracegen.py) |  | ||||||
| wrapper script with a few command-line options gives us a random |  | ||||||
| trace: |  | ||||||
|  |  | ||||||
| ``` |  | ||||||
|   > tracegen.py ./emulator-Top-TraceGenConfig 1 rv64ui-p-simple |  | ||||||
|   1: load-req     0x0000000008 #0 @64 |  | ||||||
|   1: store-req  5 0x0000100008 #1 @65 |  | ||||||
|   1: store-req  7 0x0000000010 #2 @66 |  | ||||||
|   0: store-req  2 0x0000000008 #0 @303 |  | ||||||
|   0: load-req     0x0000000008 #1 @304 |  | ||||||
|   0: store-req  6 0x0000100008 #2 @305 |  | ||||||
|   1: resp       0              #0 @96 |  | ||||||
|   0: resp       0              #0 @350 |  | ||||||
|   0: resp       2              #1 @351 |  | ||||||
|   0: load-req     0x0000000010 #3 @353 |  | ||||||
|   1: resp       0              #1 @149 |  | ||||||
|   1: load-req     0x0000000108 #3 @152 |  | ||||||
|   1: resp       0              #3 @184 |  | ||||||
|   0: resp       5              #2 @422 |  | ||||||
|   0: resp       0              #3 @424 |  | ||||||
|   1: resp       0              #2 @226 |  | ||||||
|   ... |  | ||||||
| ``` |  | ||||||
|  |  | ||||||
| Main points: |  | ||||||
|  |  | ||||||
| - the second command-line option sets the random seed; |  | ||||||
| - the first number on each line of the trace is the core id; |  | ||||||
| - \#N denotes a request-id N; |  | ||||||
| - @T denotes a time T in clock cycles; |  | ||||||
| - hex numbers denote addresses; |  | ||||||
| - remaining decimal numbers denote values being loaded or stored; |  | ||||||
| - the value written by every store is unique (this simplifies trace checking and reasoning); |  | ||||||
| - this trace contains only loads, stores and responses, but the generator (and axe) also support LR/SC pairs, atomics, and fences. |  | ||||||
|  |  | ||||||
|  |  | ||||||
| We convert these traces to axe format using the |  | ||||||
| [toaxe.py](https://github.com/ucb-bar/groundtest/blob/master/scripts/toaxe.py) script. |  | ||||||
|  |  | ||||||
| ``` |  | ||||||
|   > tracegen.py ./emulator-Top-TraceGenConfig 1 rv64ui-p-simple | toaxe.py - |  | ||||||
|   # &M[2] == 0x0000000010 |  | ||||||
|   # &M[0] == 0x0000000008 |  | ||||||
|   # &M[3] == 0x0000000108 |  | ||||||
|   # &M[1] == 0x0000100008 |  | ||||||
|   1: M[0] == 0 @ 64:96 |  | ||||||
|   1: M[1] := 5 @ 65: |  | ||||||
|   1: M[2] := 7 @ 66: |  | ||||||
|   0: M[0] := 2 @ 303: |  | ||||||
|   0: M[0] == 2 @ 304:351 |  | ||||||
|   0: M[1] := 6 @ 305: |  | ||||||
|   0: M[2] == 0 @ 353:424 |  | ||||||
|   1: M[3] == 0 @ 152:184 |  | ||||||
|   ... |  | ||||||
| ``` |  | ||||||
|  |  | ||||||
| Main points: |  | ||||||
|  |  | ||||||
| - lines begining # are comments, showing the addresses being used; |  | ||||||
| - after @ are the optional begin and end times of the operation. |  | ||||||
|  |  | ||||||
| Axe traces can be validated using the [axe](https://github.com/CTSRD-CHERI/axe) tool (must be downloaded and installed seperately): |  | ||||||
| ``` |  | ||||||
| > tracegen.py ./emulator-Top-TraceGenConfig 1 rv64ui-p-simple | toaxe.py - | axe check WMO - |  | ||||||
| OK |  | ||||||
| ``` |  | ||||||
|  |  | ||||||
| Axe reports that this trace is valid according to the WMO model. |  | ||||||
| @@ -1,10 +0,0 @@ | |||||||
| organization := "edu.berkeley.cs" |  | ||||||
|  |  | ||||||
| version := "1.0" |  | ||||||
|  |  | ||||||
| name := "groundtest" |  | ||||||
|  |  | ||||||
| scalaVersion := "2.11.6" |  | ||||||
|  |  | ||||||
| libraryDependencies ++= (Seq("chisel", "uncore", "junctions", "rocket").map { |  | ||||||
|   dep: String => sys.props.get(dep + "Version") map { "edu.berkeley.cs" %% dep % _ }}).flatten |  | ||||||
							
								
								
									
										17
									
								
								junctions/.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										17
									
								
								junctions/.gitignore
									
									
									
									
										vendored
									
									
								
							| @@ -1,17 +0,0 @@ | |||||||
| *.class |  | ||||||
| *.log |  | ||||||
|  |  | ||||||
| # sbt specific |  | ||||||
| .cache |  | ||||||
| .history |  | ||||||
| .lib/ |  | ||||||
| dist/* |  | ||||||
| target/ |  | ||||||
| lib_managed/ |  | ||||||
| src_managed/ |  | ||||||
| project/boot/ |  | ||||||
| project/plugins/project/ |  | ||||||
|  |  | ||||||
| # Scala-IDE specific |  | ||||||
| .scala_dependencies |  | ||||||
| .worksheet |  | ||||||
| @@ -1,28 +0,0 @@ | |||||||
| Copyright (c) 2015, The Regents of the University of California (Regents) |  | ||||||
| All rights reserved. |  | ||||||
|  |  | ||||||
| Redistribution and use in source and binary forms, with or without |  | ||||||
| modification, are permitted provided that the following conditions are met: |  | ||||||
|  |  | ||||||
| * Redistributions of source code must retain the above copyright notice, this |  | ||||||
|   list of conditions and the following disclaimer. |  | ||||||
|  |  | ||||||
| * Redistributions in binary form must reproduce the above copyright notice, |  | ||||||
|   this list of conditions and the following disclaimer in the documentation |  | ||||||
|   and/or other materials provided with the distribution. |  | ||||||
|  |  | ||||||
| * Neither the name of junctions nor the names of its |  | ||||||
|   contributors may be used to endorse or promote products derived from |  | ||||||
|   this software without specific prior written permission. |  | ||||||
|  |  | ||||||
| IN NO EVENT SHALL REGENTS BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, |  | ||||||
| SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS, ARISING |  | ||||||
| OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF REGENTS HAS |  | ||||||
| BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |  | ||||||
|  |  | ||||||
| REGENTS SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, |  | ||||||
| THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR |  | ||||||
| PURPOSE. THE SOFTWARE AND ACCOMPANYING DOCUMENTATION, IF ANY, PROVIDED |  | ||||||
| HEREUNDER IS PROVIDED "AS IS". REGENTS HAS NO OBLIGATION TO PROVIDE |  | ||||||
| MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. |  | ||||||
|  |  | ||||||
| @@ -1,6 +0,0 @@ | |||||||
| # junctions |  | ||||||
| A repository for peripheral components and IO devices associated with the RocketChip project. |  | ||||||
|  |  | ||||||
| To uses these modules, include this repo as a git submodule within the your chip repository and add it as Project in your chip's build.scala. These components are only dependent on Chisel, i.e. |  | ||||||
|  |  | ||||||
|     lazy val junctions = project.dependsOn(chisel) |  | ||||||
| @@ -1,19 +0,0 @@ | |||||||
| organization := "edu.berkeley.cs" |  | ||||||
|  |  | ||||||
| version := "1.0" |  | ||||||
|  |  | ||||||
| name := "junctions" |  | ||||||
|  |  | ||||||
| scalaVersion := "2.11.6" |  | ||||||
|  |  | ||||||
| // Provide a managed dependency on chisel if -DchiselVersion="" is supplied on the command line. |  | ||||||
| libraryDependencies ++= (Seq("chisel","cde").map { |  | ||||||
|   dep: String => sys.props.get(dep + "Version") map { "edu.berkeley.cs" %% dep % _ }}).flatten |  | ||||||
|  |  | ||||||
| site.settings |  | ||||||
|  |  | ||||||
| site.includeScaladoc() |  | ||||||
|  |  | ||||||
| ghpages.settings |  | ||||||
|  |  | ||||||
| git.remoteRepo := "git@github.com:ucb-bar/junctions.git" |  | ||||||
| @@ -1,5 +0,0 @@ | |||||||
| resolvers += "jgit-repo" at "http://download.eclipse.org/jgit/maven" |  | ||||||
|  |  | ||||||
| addSbtPlugin("com.typesafe.sbt" % "sbt-ghpages" % "0.5.3") |  | ||||||
|  |  | ||||||
| addSbtPlugin("com.typesafe.sbt" % "sbt-site" % "0.8.1") |  | ||||||
| @@ -19,12 +19,7 @@ object BuildSettings extends Build { | |||||||
|   lazy val chisel = project in file("chisel3") |   lazy val chisel = project in file("chisel3") | ||||||
|   lazy val cde        = project in file("context-dependent-environments") |   lazy val cde        = project in file("context-dependent-environments") | ||||||
|   lazy val hardfloat  = project.dependsOn(chisel) |   lazy val hardfloat  = project.dependsOn(chisel) | ||||||
|   lazy val junctions  = project.dependsOn(chisel, cde) |   lazy val rocketchip = (project in file(".")).settings(chipSettings).dependsOn(chisel, cde, hardfloat) | ||||||
|   lazy val uncore     = project.dependsOn(junctions) |  | ||||||
|   lazy val rocket     = project.dependsOn(hardfloat, uncore) |  | ||||||
|   lazy val groundtest = project.dependsOn(rocket) |  | ||||||
|   lazy val coreplex   = project.dependsOn(groundtest) |  | ||||||
|   lazy val rocketchip = (project in file(".")).settings(chipSettings).dependsOn(coreplex) |  | ||||||
|  |  | ||||||
|   lazy val addons = settingKey[Seq[String]]("list of addons used for this build") |   lazy val addons = settingKey[Seq[String]]("list of addons used for this build") | ||||||
|   lazy val make = inputKey[Unit]("trigger backend-specific makefile command") |   lazy val make = inputKey[Unit]("trigger backend-specific makefile command") | ||||||
|   | |||||||
							
								
								
									
										1
									
								
								rocket/.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								rocket/.gitignore
									
									
									
									
										vendored
									
									
								
							| @@ -1 +0,0 @@ | |||||||
| target |  | ||||||
| @@ -1,24 +0,0 @@ | |||||||
| Copyright (c) 2011-2014, The Regents of the University of California |  | ||||||
| (Regents).  All Rights Reserved. |  | ||||||
|  |  | ||||||
| Redistribution and use in source and binary forms, with or without |  | ||||||
| modification, are permitted provided that the following conditions are met: |  | ||||||
| 1. Redistributions of source code must retain the above copyright |  | ||||||
|    notice, this list of conditions and the following disclaimer. |  | ||||||
| 2. Redistributions in binary form must reproduce the above copyright |  | ||||||
|    notice, this list of conditions and the following disclaimer in the |  | ||||||
|    documentation and/or other materials provided with the distribution. |  | ||||||
| 3. Neither the name of the Regents nor the |  | ||||||
|    names of its contributors may be used to endorse or promote products |  | ||||||
|    derived from this software without specific prior written permission. |  | ||||||
|  |  | ||||||
| IN NO EVENT SHALL REGENTS BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, |  | ||||||
| SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS, ARISING |  | ||||||
| OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF REGENTS HAS |  | ||||||
| BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |  | ||||||
|  |  | ||||||
| REGENTS SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, |  | ||||||
| THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR |  | ||||||
| PURPOSE. THE SOFTWARE AND ACCOMPANYING DOCUMENTATION, IF ANY, PROVIDED |  | ||||||
| HEREUNDER IS PROVIDED "AS IS". REGENTS HAS NO OBLIGATION TO PROVIDE |  | ||||||
| MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. |  | ||||||
| @@ -1,29 +0,0 @@ | |||||||
| Rocket Core |  | ||||||
| =========== |  | ||||||
|  |  | ||||||
| Rocket is a 6-stage single-issue in-order pipeline that executes the 64-bit |  | ||||||
| scalar RISC-V ISA.  Rocket implements an MMU that supports page-based virtual |  | ||||||
| memory and is able to boot modern operating systems such as Linux.  Rocket |  | ||||||
| also has an optional IEEE 754-2008-compliant FPU, which implements both |  | ||||||
| single- and double-precision floating-point operations, including fused |  | ||||||
| multiply-add. |  | ||||||
|  |  | ||||||
| This repository is not intended to be a self-running repository. To |  | ||||||
| instantiate a Rocket core, please use the Rocket chip generator found in the |  | ||||||
| rocket-chip git repository. |  | ||||||
|  |  | ||||||
| The following table compares a 32-bit ARM Cortex-A5 core to a 64-bit RISC-V |  | ||||||
| Rocket core built in the same TSMC process (40GPLUS). Fourth column is the |  | ||||||
| ratio of RISC-V Rocket to ARM Cortex-A5. Both use single-instruction-issue, |  | ||||||
| in-order pipelines, yet the RISC-V core is faster, smaller, and uses less |  | ||||||
| power. |  | ||||||
|  |  | ||||||
| ISA/Implementation | ARM Cortex-A5 | RISC-V Rocket | R/A |  | ||||||
| --- | --- | --- | --- |  | ||||||
| ISA Register Width | 32 bits | 64 bits | 2 |  | ||||||
| Frequency | >1 GHz | >1 GHz | 1 |  | ||||||
| Dhrystone Performance | 1.57 DMIPS/MHz | 1.72 DMIPS/MHz | 1.1 |  | ||||||
| Area excluding caches | 0.27 mm<sup>2</sup> | 0.14 mm<sup>2</sup> | 0.5 |  | ||||||
| Area with 16KB caches | 0.53 mm<sup>2</sup> | 0.39 mm<sup>2</sup> | 0.7 |  | ||||||
| Area Efficiency | 2.96 DMIPS/MHz/mm<sup>2</sup> | 4.41 DMIPS/MHz/mm<sup>2</sup> | 1.5 |  | ||||||
| Dynamic Power | <0.08 mW/MHz | 0.034 mW/MHz | >= 0.4 |  | ||||||
| @@ -1,10 +0,0 @@ | |||||||
| organization := "edu.berkeley.cs" |  | ||||||
|  |  | ||||||
| version := "1.2" |  | ||||||
|  |  | ||||||
| name := "rocket" |  | ||||||
|  |  | ||||||
| scalaVersion := "2.11.6" |  | ||||||
|  |  | ||||||
| libraryDependencies ++= (Seq("chisel", "hardfloat", "uncore", "junctions", "cde").map { |  | ||||||
|   dep: String => sys.props.get(dep + "Version") map { "edu.berkeley.cs" %% dep % _ }}).flatten |  | ||||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user