sail-riscv VS riscv-gnu-toolchain

Compare sail-riscv vs riscv-gnu-toolchain and see what are their differences.

InfluxDB - Power Real-Time Data Analytics at Scale
Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
www.influxdata.com
featured
SaaSHub - Software Alternatives and Reviews
SaaSHub helps you find the best software and product alternatives
www.saashub.com
featured
sail-riscv riscv-gnu-toolchain
9 11
390 6
2.6% -
8.2 0.0
2 days ago almost 2 years ago
Coq C
GNU General Public License v3.0 or later GNU General Public License v3.0 or later
The number of mentions indicates the total number of mentions that we've tracked plus the number of user suggested alternatives.
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.

sail-riscv

Posts with mentions or reviews of sail-riscv. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2024-04-28.
  • How to improve the RISC-V specification
    9 projects | news.ycombinator.com | 28 Apr 2024
    I've been doing a lot of work with Sail (not SAIL btw) and I'm not sure I agree with the points about it.

    There's already a way to extract functions into asciidoc as the author noted. I've used it. It works well.

    The liquid types do take some getting used to but they aren't actually used in most of the code; mostly for utility function definitions like `zero_extend`. If you look at the definition for simple instructions they can be very readable and practically pseudocode:

    https://github.com/riscv/sail-riscv/blob/0aae5bc7f57df4ebedd...

    A lot of instructions are more complex or course but that's what you get if you want to precisely define them.

    Overall Sail is a really fantastic language and the liquid types really help avoid bugs.

    The biggest actual problems are:

    1. The RISC-V spec is chock full of undefined / implementation defined behaviour. How do you capture that in code, where basically everything is defined. The biggest example is probably WARL fields which can do basically anything. Another example is decomposing misaligned accesses. You can decompose them into any number of atomic memory operations and do them in any order. E.g. Spike decomposes them into single byte accesses. (This problem isn't really unique to Sail tbf).

    2. The RISC-V Sail model doesn't do a good job of letting you configure it currently. E.g. you can't even set the spec version at the moment. This is just an engineering problem though. We're hoping to fix it one day using riscv-config which is a YAML file that's supposed to specify all the configurable behaviour about a RISC-V chip.

    I definitely agree about the often wooly language in the spec though. It doesn't even use RFC-style MUST/SHOULD/MAY terms.

  • RISC-V Vector benchmark results
    4 projects | news.ycombinator.com | 11 Nov 2023
    The official formal specification of the Vector Extension has just been merged into the Golden RISC-V model:

    https://github.com/riscv/sail-riscv/commit/c90cf2e6eff5fa4ef...

  • Cascade: CPU Fuzzing via Intricate Program Generation
    3 projects | news.ycombinator.com | 23 Oct 2023
    the retired instruction counters when written by software.

    Funnily enough the Sail model had this bug too! https://github.com/riscv/sail-riscv/issues/256

  • Arm’s Cortex A510: Two Kids in a Trench Coat
    1 project | news.ycombinator.com | 2 Oct 2023
    > loose specification of the RISC-V ISA.

    This is being worked on with the Sail model [1]. In order for a RISC-V extension to be ratified it ought to be implemented in Sail. The understanding is also that the RISC-V ISA manual should be built with code snippets from the Sail model (similar to how the Arm Arm is build from ASL definition). The main issue is a lack of people willing and able to write Sail for RISC-V. But that is beginning to change, since RISC-V member companies are increasingly use Sail. As an example, the RISC-V exception type is defined in [2]. Is that precise enough for you?

    [1] https://github.com/riscv/sail-riscv

    [2] https://github.com/riscv/sail-riscv/blob/master/model/riscv_...

  • RISC-V CPU formal specification F# edition
    6 projects | news.ycombinator.com | 28 Jul 2023
    >it allows to formally verify the correctness of a particular ISA

    That must be hypothetical. Functionalness of the language doesn't make anything that is written in it automatically subject to formal verification. (mechanized or pen and paper). What kind of correctness properties does it actually allow to formally verify? I understand if it was the F* language, which is a full blown dependently typed proof checker, but with F#, which is defined by the implementation and 300 page English spec, I don't think you can verify anything interesting. As far as I know F# itself doesn't have mechanized formal semantics and its type system could be unsound.

    https://github.com/mit-plv/riscv-coq and https://github.com/riscv/sail-riscv (don't know how complete they are) approaches actually allow to formally (mechanically) verify riscv properties.

  • 64-bit Arm ∩ 64-bit RISC V
    2 projects | /r/asm | 7 Jun 2023
  • C++17 RISC-V RV32/64/128 userspace emulator library
    5 projects | news.ycombinator.com | 18 Nov 2022
  • Starting up with RISC-V
    3 projects | /r/RISCV | 4 Feb 2022
    I guess you will also use Spike and the Sail model for RISC-V.
  • Areas to contribute in RISC-V RTL verification
    5 projects | /r/RISCV | 6 Mar 2021
    Doing something leveraging the SAIL model would be valuable, as that's the official formal model: https://github.com/rems-project/sail-riscv

riscv-gnu-toolchain

Posts with mentions or reviews of riscv-gnu-toolchain. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2023-11-11.
  • RISC-V Vector benchmark results
    4 projects | news.ycombinator.com | 11 Nov 2023
    That shouldn't be news.

    Other than the CanMV-K230 (Kendryte K230, single 1.6 GHz C908 core implementing RVV) which just started shipping in the last two weeks, every RISC-V board with RVV has either C906 or C910 cores which implement draft 0.7.1.

    Those CPU cores were announced in mid 2019 (when RVV 0.7.1 was the current draft) and boards using them start arriving in mid to late 2021.

    RVV 1.0 boards will start arriving in force next year, probably starting with the StarFive JH8110 SoC, and (apparently, though I'm not sure I believe it) an update of the SG2042 in the Pioneer, and also the 16 core (but faster cores) SG2380.

    > Do you happen to have the name of the gcc branch

    The branch has been deleted from the official repo. I have a snapshot on my github:

    https://github.com/brucehoult/riscv-gnu-toolchain

    Note that it is primarily binutils which understands RVV 0.7.1. GCC understands it only to the extent of accepting "v" in "-march" and passing the right flags to the assembler. This enables using the gcc driver to build .s files and inline RVV asm in C. There is no support for RVV intrinsic functions or auto-vectorisation.

    It's also a somewhat old gcc. I use it to build .o files from assembly language, and then link them with C compiled by a newer gcc or llvm. Or not, most of the time gcc 9 is fine.

    THead have RVV 0.7.1 support in newer gcc, but I haven't been tracking that closely.

  • Lichee Pi 4A: Serious RISC-V Desktop Computing [video]
    2 projects | news.ycombinator.com | 20 Aug 2023
    The TH1520 has much faster memcpy speeds at every level of cache and DRAM.

    https://hoult.org/JH7110_memcpy.txt

    https://hoult.org/JH7110_memcpy.txt

    And yet ... both Richard Jones at Fedora and I have found that the VisionFive 2 is actually slightly faster at building software packages!

    My result was that building the same binutils + gcc + newlib snapshot (an old one with RVV 0.7.1 support)...

    https://github.com/brucehoult/riscv-gnu-toolchain

    ... the VisionFive 2 takes 108 minutes while the Lichee Pi 4A takes 122 minutes.

    That's with the supplied fan on the LPi4A (and confirmed it's not throttling) and no cooling at all on the VisionFive 2. I used the same Samsung external USB3 SSD on both -- the VisionFive 2 gets slightly faster transfer speeds (IIRC 190 MB/s vs 160) with that, but that's not enough to matter: just 12s difference on the time to tar up the source directory, compared to a 14 minute build time difference. Both have enough RAM to cache everything anyway.

    > VF2 GPU: IMG BXE-4-32 Lichee Pi: ?? Anyone?

    BXM-4-64

  • RISC-V Lichee Pi 4A vs. VisionFive 2 vs. HiFive Unmatched vs. Raspberry Pi 4B
    1 project | news.ycombinator.com | 25 Jul 2023
    I've also found the 1.5 GHz in-order VF2 does remarkably well vs the 1.85 GHz OoO LPi4A on software build tasks, though not as extreme as Richard shows.

    I'm lazy and using the original Image-55 on my 8 GB VF2, and the Debian that came preloaded in the eMMC on the LPi4A. My mass-production LPi4A arrived yesterday, I haven't tried it yet, tests are on the beta board that arrived a couple of months ago.

    On pure CPU core + L1 cache tests (e.g. https://hoult.org/primes.txt) the LPi4A is considerably faster.

    The LPi4A is also much faster on memcpy tests.

    https://hoult.org/TH1520_memcpy.txt

    https://hoult.org/JH7110_memcpy.txt

    My build test is an RVV 0.7.1-enabled snapshot of the gnu toolchain (gcc 9.2) that I use on the TH1520 and SG2042. Newlib, non-multilib (just rv64gcv) build. I used the same Samsung 2 TB external USB3 SSD drive for src/build trees on both boards. https://github.com/brucehoult/riscv-gnu-toolchain

    VF2:

    real 107m52.116s

  • The IMPOSSIBLE RISCV HACK: Vector Extension 0.7.1-draft w/ current Linux kernel! – René Rebe
    5 projects | /r/RISCV | 25 Jun 2023
    To build rvv programs I use brucehoults rvv 0.7.1 toolchain and some assembly macros, so I can write a subset of rvv 1.0 that I can run on rvv 0.7.1: https://github.com/brucehoult/riscv-gnu-toolchain https://github.com/camel-cdr/rvv-d1/blob/main/rvv-rollback.S
  • rvv rollback via assembly macros for writing rvv 1.0 code that is compatible with rvv 0.7.1
    2 projects | /r/RISCV | 13 Jun 2023
    I'm using a rvv 0.7.1 toolchain, which doesn't support the rvv 1.0 mnemonics.
  • Xuantie toolchain on Apple Silicon M1
    2 projects | /r/RISCV | 15 Apr 2023
  • Building a toolchain suitable for compiling V extension code
    6 projects | /r/RISCV | 10 Apr 2023
    Step 1. Build the RISC-V GNU toolchain suitable for compiling and assembling RVV 0.7.1 instructions, and that would be https://github.com/brucehoult/riscv-gnu-toolchain. For grins I built this on a RISC-V machine, the Unmatched. It took a few hours, but there's something sublime about using RISC-V everywhere you can.
  • LLVM 17 Lands Initial Support For RISC-V Vector Crypto Extension ISA
    1 project | /r/RISCV | 26 Mar 2023
  • Allwinner D1 extensions
    5 projects | /r/RISCV | 30 May 2022

What are some alternatives?

When comparing sail-riscv and riscv-gnu-toolchain you can also consider the following projects:

litmus-tests-riscv - RISC-V architecture concurrency model litmus tests

riscv-binutils-gdb - RISC-V backports for binutils-gdb. Development is done upstream at the FSF.

riscv-isa-sim - Spike, a RISC-V ISA Simulator

rvv-d1 - Enable rvv on MangoPi MQ-Pro (Allwinner D1) linux

riscv-dv - Random instruction generator for RISC-V processor verification

riscv-v-spec - Working draft of the proposed RISC-V V vector extension

riscv-coq - RISC-V Specification in Coq

pine_ox64

libriscv - C++20 RISC-V RV32/64/128 userspace emulator library

qemu

force-riscv - Instruction Set Generator initially contributed by Futurewei

thead-kernel - Original from https://gitee.com/thead-yocto/kernel