Coder Social home page Coder Social logo

csail-csg / riscy-ooo Goto Github PK

View Code? Open in Web Editor NEW
145.0 145.0 28.0 291.22 MB

RiscyOO: RISC-V Out-of-Order Processor

License: MIT License

Bluespec 83.82% Makefile 0.98% Python 0.82% C++ 7.28% Shell 0.65% Verilog 6.18% Tcl 0.03% C 0.04% Assembly 0.10% Coq 0.10%

riscy-ooo's People

Contributors

jameyhicks avatar jonasalaif avatar sizhuo-zhang avatar threonorm avatar trevorcarlson 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

riscy-ooo's Issues

Getting Started on a Local Ubuntu Machine

I can't install the Bluespec compiler, because the version is too old. I used BSC instead of. However, i can't find the ddr3 ip .v. Because you have the two steps.
$ cd $RISCY_HOME/fpgautils/xilinx/vc707/ddr3_1GB_bluespec
$ ./copy_verilog.sh
Finally, i have to say i want to run riscy ooo based on vc707 board.

error during the boot (risc-pk/bbl) on F1 (AWS)

Hi @sizhuo-zhang,

I see the following error when I boot F1 with (riscv-pk/bbl and rom_core_1). Have you experienced this before?

ubuntu@ip-192-168-0-207:~/riscy-OOO/procs/build/RV64G_OOO.core_1.core_SMALL.cach
e_LARGE.weak.l1_cache_lru.check_deadlock/awsf1/bin$ ./ubuntu.exe --core-num $N --mem-size 2048 --ignore-user-stucks 1000000 --rom rom_core_$N --elf bbl
subprocess pid 8767 completed status=0 0
[initPortalHardwareOnce:284] fd 6 len 0
[checkSignature:176] read status from '/dev/connectal' was only 0 bytes long
checkSignature: driver 'pcieportal.c' signature mismatch 9a4e6520472c69f1577083d9f60b826c 47e961a4b445762e6b6024086a3ff16b
[checkSignature:170] failed to open /dev/portalmem No such file or directory
./ubuntu.exe: symbol lookup error: ./ubuntu.exe: undefined symbol: _Z8load_elfPKcP7memif_tPm

Any pointers would be greatly helpful.
Thanks!

use of make target 'hw/mkTop.bit'

Hi,

I just want to confirm that make target hw/mkTop.bit is a part of synthesis flow only for fpga boards (eg. zedboard, vc707 etc) and not for awsf1, right?.

Thanks!

Some illegal encodings not detected

The JALR and branch instructions have redundant encodings in their funct3 fields that are illegal. Based on my reading of the spec: for JALR, only 3'b000 is legal, and for branches, 3'b010 and 3'b011 are illegal. These cases aren't addressed in decode:

Jalr: begin
dInst.iType = Jr;
regs.dst = Valid(tagged Gpr rd);
regs.src1 = Valid(tagged Gpr rs1);
regs.src2 = Invalid;
dInst.imm = Valid(immI);
dInst.csr = tagged Invalid;
dInst.execFunc = tagged Br AT;
end
Branch: begin
dInst.iType = Br;
dInst.execFunc = tagged Br (case(funct3)
fnBEQ: Eq;
fnBNE: Neq;
fnBLT: Lt;
fnBLTU: Ltu;
fnBGE: Ge;
fnBGEU: Geu;
endcase);
regs.dst = Invalid;
regs.src1 = Valid(tagged Gpr rs1);
regs.src2 = Valid(tagged Gpr rs2);
dInst.imm = Valid(immB);
dInst.csr = tagged Invalid;
end

For JALR, this leads to it having 8 encodings that all behave identically. For branches, presumably the case gives an undefined result, which hopefully defaults to one of the other legal cases.

This came up as I was fuzzing and wasn't getting a trap on 0x0000a267: a JALR but with 3'b010 instead of 3'b000 in the funct3 field.

I'd be happy to make a PR to fix this if I've identified the issue correctly.

CPU cycle count

Kindly clarify the below mentioned issues:

  1. For RV32G variant, I want to find how many CPU cycles are required for execution of each instruction

I have searched a lot to find out that how many clock is needed for operation of each instruction in ISA RV32G variant, but I couldn’t find any thing.

  1. The base timing information is required for RV32G variant for determining the CPU cycle time. Can anyone Kindly suggest the information in this regard

Thanks in advance

Unnecessary TLB flush on write to SATP?

The makeSystemConsistent call in the CommitStage:

x.iType == SFence || write_satp, // TODO flush TLB when change sanctum regs?
flushes all TLBs on any write to SATP. This seems overzealous, as the ASID of entries is also saved in the TLB, so there should be no risk of incorrect aliasing. From the spec: "Changes in the satp register do not necessarily flush any such translation caches." If the processor is recycling an ASID, then the RISC-V spec requires an sfence.VMA.

This may prevent TLB entries sticking around across context switches if working sets are small, hurting performance, and will also require two consecutive flushes in the common case of changing SATP and calling sfence.VMA in short succession.

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.