READ ME Updated
This commit is contained in:
parent
c6a1ad6318
commit
468ef46543
151
README.md
151
README.md
|
@ -1,136 +1,27 @@
|
|||
Chisel Project Template
|
||||
=======================
|
||||
# EL2 SweRV RISC-V Core Chiselified Version from <> LAMPRO MELLON
|
||||
|
||||
You've done the Chisel [tutorials](https://github.com/ucb-bar/chisel-tutorial), and now you
|
||||
are ready to start your own chisel project. The following procedure should get you started
|
||||
with a clean running [Chisel3](https://github.com/freechipsproject/chisel3) project.
|
||||
This repository contains the SweRV EL2 Core design in CHISEL
|
||||
|
||||
> More and more users are finding IntelliJ to be a powerful tool for Chisel coding. See the
|
||||
[IntelliJ Installation Guide](https://github.com/ucb-bar/chisel-template/wiki/IntelliJ-Installation-Guide) for how to install it.
|
||||
## Back ground
|
||||
|
||||
## Make your own Chisel3 project
|
||||
### How to get started
|
||||
The first thing you want to do is clone this repo into a directory of your own. I'd recommend creating a chisel projects directory somewhere
|
||||
```sh
|
||||
mkdir ~/ChiselProjects
|
||||
cd ~/ChiselProjects
|
||||
The project is being made for learning purpose. Copy rights to the SweRV-EL2 belongs to Wrestern Digital
|
||||
|
||||
git clone https://github.com/ucb-bar/chisel-template.git MyChiselProject
|
||||
cd MyChiselProject
|
||||
```
|
||||
### Make your project into a fresh git repo
|
||||
There may be more elegant way to do it, but the following works for me. **Note:** this project comes with a magnificent 339 line (at this writing) .gitignore file.
|
||||
You may want to edit that first in case we missed something, whack away at it, or start it from scratch.
|
||||
|
||||
#### Clear out the old git stuff
|
||||
```sh
|
||||
rm -rf .git
|
||||
git init
|
||||
git add .gitignore *
|
||||
```
|
||||
## Directory Structure
|
||||
|
||||
#### Rename project in build.sbt file
|
||||
Use your favorite text editor to change the first line of the **build.sbt** file
|
||||
(it ships as ```name := "chisel-module-template"```) to correspond
|
||||
to your project.<br/>
|
||||
Perhaps as ```name := "my-chisel-project"```
|
||||
├── configs # Configurations Dir
|
||||
│ └── snapshots # Where generated configuration files are created
|
||||
├── design # Design root dir
|
||||
│ ├── dbg # Debugger
|
||||
│ ├── dec # Decode, Registers and Exceptions
|
||||
│ ├── dmi # DMI block
|
||||
│ ├── exu # EXU (ALU/MUL/DIV)
|
||||
│ ├── ifu # Fetch & Branch Prediction
|
||||
│ ├── include
|
||||
│ ├── lib
|
||||
│ └── lsu # Load/Store
|
||||
├── docs
|
||||
├── tools # Scripts/Makefiles
|
||||
└── testbench # (Very) simple testbench
|
||||
├── asm # Example assembly files
|
||||
└── hex # Canned demo hex files
|
||||
|
||||
#### Clean up the README.md file
|
||||
Again use you editor of choice to make the README specific to your project.
|
||||
Be sure to update (or delete) the License section and add a LICENSE file of your own.
|
||||
|
||||
#### Commit your changes
|
||||
```
|
||||
git commit -m 'Starting MyChiselProject'
|
||||
```
|
||||
Connecting this up to github or some other remote host is an exercise left to the reader.
|
||||
|
||||
### Did it work?
|
||||
You should now have a project based on Chisel3 that can be run.<br/>
|
||||
So go for it, at the command line in the project root.
|
||||
```sh
|
||||
sbt 'testOnly gcd.GCDTester -- -z Basic'
|
||||
```
|
||||
>This tells the test harness to only run the test in GCDTester that contains the word Basic
|
||||
There are a number of other examples of ways to run tests in there, but we just want to see that
|
||||
one works.
|
||||
|
||||
You should see a whole bunch of output that ends with something like the following lines
|
||||
```
|
||||
[info] [0.001] SEED 1540570744913
|
||||
test GCD Success: 168 tests passed in 1107 cycles in 0.067751 seconds 16339.24 Hz
|
||||
[info] [0.050] RAN 1102 CYCLES PASSED
|
||||
[info] GCDTester:
|
||||
[info] GCD
|
||||
[info] Basic test using Driver.execute
|
||||
[info] - should be used as an alternative way to run specification
|
||||
[info] using --backend-name verilator
|
||||
[info] running with --is-verbose
|
||||
[info] running with --generate-vcd-output on
|
||||
[info] running with --generate-vcd-output off
|
||||
[info] ScalaTest
|
||||
[info] Run completed in 3 seconds, 184 milliseconds.
|
||||
[info] Total number of tests run: 1
|
||||
[info] Suites: completed 1, aborted 0
|
||||
[info] Tests: succeeded 1, failed 0, canceled 0, ignored 0, pending 0
|
||||
[info] All tests passed.
|
||||
[info] Passed: Total 1, Failed 0, Errors 0, Passed 1
|
||||
[success] Total time: 5 s, completed Oct 26, 2018 9:19:07 AM
|
||||
```
|
||||
If you see the above then...
|
||||
|
||||
### It worked!
|
||||
You are ready to go. We have a few recommended practices and things to do.
|
||||
* Use packages and following conventions for [structure](http://www.scala-sbt.org/0.13/docs/Directories.html) and [naming](http://docs.scala-lang.org/style/naming-conventions.html)
|
||||
* Package names should be clearly reflected in the testing hierarchy
|
||||
* Build tests for all your work.
|
||||
* This template includes a dependency on the Chisel3 IOTesters, this is a reasonable starting point for most tests
|
||||
* You can remove this dependency in the build.sbt file if necessary
|
||||
* Change the name of your project in the build.sbt file
|
||||
* Change your README.md
|
||||
|
||||
There are [instructions for generating Verilog](https://github.com/freechipsproject/chisel3/wiki/Frequently-Asked-Questions#get-me-verilog) on the Chisel wiki.
|
||||
|
||||
Some backends (verilator for example) produce VCD files by default, while other backends (firrtl and treadle) do not.
|
||||
You can control the generation of VCD files with the `--generate-vcd-output` flag.
|
||||
|
||||
To run the simulation and generate a VCD output file regardless of the backend:
|
||||
```bash
|
||||
sbt 'test:runMain gcd.GCDMain --generate-vcd-output on'
|
||||
```
|
||||
|
||||
To run the simulation and suppress the generation of a VCD output file:
|
||||
```bash
|
||||
sbt 'test:runMain gcd.GCDMain --generate-vcd-output off'
|
||||
```
|
||||
|
||||
## Development/Bug Fixes
|
||||
This is the release version of chisel-template. If you have bug fixes or
|
||||
changes you would like to see incorporated in this repo, please checkout
|
||||
the master branch and submit pull requests against it.
|
||||
|
||||
## License
|
||||
This is free and unencumbered software released into the public domain.
|
||||
|
||||
Anyone is free to copy, modify, publish, use, compile, sell, or
|
||||
distribute this software, either in source code form or as a compiled
|
||||
binary, for any purpose, commercial or non-commercial, and by any
|
||||
means.
|
||||
|
||||
In jurisdictions that recognize copyright laws, the author or authors
|
||||
of this software dedicate any and all copyright interest in the
|
||||
software to the public domain. We make this dedication for the benefit
|
||||
of the public at large and to the detriment of our heirs and
|
||||
successors. We intend this dedication to be an overt act of
|
||||
relinquishment in perpetuity of all present and future rights to this
|
||||
software under copyright law.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
|
||||
OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
||||
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||
OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
For more information, please refer to <http://unlicense.org/>
|
||||
|
|
|
@ -9,7 +9,7 @@ class el2_ifu_bp_ctl extends Module with el2_lib {
|
|||
val in = Input(UInt(32.W))
|
||||
val out = Output(UInt())
|
||||
})
|
||||
io.out := el2_btb_tag_hash(io.in)
|
||||
io.out := el2_btb_tag_hash(io.in) | el2_btb_tag_hash(io.in)
|
||||
}
|
||||
|
||||
object ifu extends App {
|
||||
|
|
Binary file not shown.
Binary file not shown.
Loading…
Reference in New Issue