-
Notifications
You must be signed in to change notification settings - Fork 41
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
merge Rvls update into main #138
Merged
Merged
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
…y in memory management and object lifetimes
… to missing parameters
NaxRiscv update for compatibility with naxriscv branches of rvls/risc-isa-sim
- Added Makefile for build and test orchestration. - Added multiple CI scripts for environment setup and dependency installation: - build_regress_simulator.sh - build_spike_rvls.sh - clone-submodules.sh - install-elfio.sh - install-libsdl.sh - install-openjdk.sh - install-riscv-gnu-toolchain.sh - install-rvls.sh - install-sbt.sh - install-spike-spinalhdl.sh - install-verilator.sh - Added README.md in src/test for installation and test-related documentation.
Moved the installation paths of ELFIO and SDL libraries from INCLUDE_DIR to SPIKE_DIR for better organization and grouping of related dependencies.
Reason: Removed the local installation of the RISC-V toolchain as it significantly increases installation time. The toolchain will now be assumed to be pre-installed or managed externally.
ci/install-elfio.sh ci/install-libsdl.sh ci/install-spike-spinalhdl.sh Replaced with: NaxRiscv/ci/install-libsdl-elfio-spikespinalhdl.sh Reason: Consolidated the installation of ELFIO, libSDL, and Spike into a single script (install-libsdl-elfio-spikespinalhdl.sh) to streamline the process and reduce redundancy.
Changes: Integrated the installation of ELFIO and SDL into the script to ensure all dependencies are handled during the build process. Reason: Simplifies the setup by automating the installation of required libraries (ELFIO and SDL) before building Spike and RVLS, reducing manual steps and improving reliability.
Changes: Updated SPIKE_INCLUDE and SPIKE_LIB paths to correctly point to /include and /lib respectively. Reason: Ensures the Makefile accurately references the Spike installation's include and library directories(ELFIO & SDL), resolving potential build issues caused by incorrect paths.
Changes: Removed redundant test file definitions and streamlined the install-toolchain process. Integrated the installation of ELFIO and SDL into the install-toolchain target using the consolidated script install-libsdl-elfio-spikespinalhdl.sh. Removed separate installation targets for ELFIO and SDL, as they are now handled by the consolidated script. Added install-core as a prerequisite for install-toolchain-initial to ensure submodules are cloned before toolchain installation. Added a new test-regression target for running NaxRiscv regression tests. Improved cleanup targets (clean-submodules, clean-toolchain, and clean-toolchain-all) for better organization. Reason: Simplifies the build process by consolidating ELFIO and SDL installation into a single script. Ensures proper dependency management by cloning submodules before toolchain installation. Adds regression testing support for better validation of the NaxRiscv implementation. Improves maintainability and clarity of the Makefile.
src/test/README.md: Updated the description of make install-toolchain-initial to reflect the removal of the RISC-V GNU toolchain installation. Clarified the purpose of make install-core to indicate that it clones submodules and applies necessary patches. Enhanced the description of make install to provide a more detailed explanation of the full installation process. Updated the make build-spike-rvls description to specify that it rebuilds Spike (including ELFIO and SDL libraries) and RVLS after modifications. .gitignore: Added toolchain/ to the list of ignored directories to prevent toolchain-related files from being tracked by Git. Reason: Improves documentation clarity by accurately reflecting changes to the build and installation process. Ensures the .gitignore file is up-to-date with the project's directory structure, avoiding unnecessary file tracking.
.github/workflows/scala.yml: Simplified the tool installation process by replacing separate install_cached and install_uncached steps with a single install_all step. Removed the explicit installation of SpinalHDL, as it is now handled by the make install command. .github/workflows/tools.sh: Added a new install_all function that sets the NAXRISCV environment variable and runs make install to handle the complete installation process. Reason: Streamlines the CI workflow by consolidating tool installation into a single step. Ensures consistency by leveraging the make install command, which handles all dependencies and installations (including SpinalHDL, ELFIO, SDL, Spike, and RVLS).
… additional plugin options Description: - Added support for command-line argument parsing using scopt.OParser. - Introduced configuration variables such as withRvc, withFloat, withDouble, withSupervisor, and withUser to enable or disable specific features dynamically. - Extended the Config.plugins method to accept and utilize these new options. - Refactored the Gen and Gen64 objects to handle dynamic configurations, allowing greater flexibility for customizing the generation process. - Improved code readability and maintainability with structured argument parsing and clearer configuration management.
- Added support for new CLI options: withRvc, withFloat, withDouble, workspace-path, workspace-name, and others for enhanced simulation configuration. - Implemented ISA extensions for RV32/64I, MA, F, D, and C support in simulation traces. - Enabled loading and execution of additional binary data formats via load-u32. - Improved handling of ELF file symbols for start, pass, and fail with dynamic PC setting and result logging. - Introduced workspace and output directory management for structured simulation artifacts. - Integrated Linux command handling for getc and putc workflows in buildroot simulations. - Refactored test result recording with detailed logs and success/fail file generation. - Enhanced DualSim and standard simulation execution logic for multi-test scenarios.
…SocDemo - Extended SocDemo to include new parameters: withRvc, withFloat, and withDouble. - Updated TilelinkNaxRiscvFiber configuration to support these options. - Improved flexibility for CPU configuration in simulation.
- Added loadU32 method to TraceBackend for 32-bit data loading. - Enhanced trap method to include fault_addr parameter for detailed fault handling. - Updated DummyBackend, FileBackend, and RvlsBackend implementations to support these changes. - Improved logging in FileBackend to reflect the new trap and loadU32 functionalities.
…simulation - Introduced a trait and a queue for organizing tasks during boot simulation. - Added WaitPutc, DoSuccess, and DoGetc classes for specific task scheduling scenarios. - Improved handling of PUTC with putcTarget and putcHistory to trigger actions based on output. - Enhanced GETC handling to support custom input via customCin queue in addition to system input. - Added utility methods like testScheduleQueueNext and endsWith for managing task execution and string matching. - Ensured compatibility with existing simulation flows while enabling more complex boot sequences.
- Fix VERILATOR_ROOT path to point to installation directory instead of bin/
…stall script - Remove hardcoded ~/tools/verilator copy operations - Simplify script to focus on local directory installation
- Change Spike installation prefix to project-local directory (ext/riscv-isa-sim/) - Add shared library (package.so) compilation step linking Spike components - Include Boost Regex/System and pthread dependencies in shared library - Update build comments to clarify library compilation
- Update Spike installation prefix to use SPIKE_NAX_HOME instead of global RISCV path - Add shared library (package.so) compilation step after main build
- Reorganize documentation hierarchy with clearer section headers - Add detailed RVLS regression testing methodology with: * Step-by-step configuration examples * Artifact directory structure documentation * Supported ISA configuration matrix - Expand feature flag matrix with test coverage details - Include complete test generation parameters reference - Remove redundant horizontal separators for better readability - Update installation section with explicit path reference - Add test automation workflow description for both methods: * RVLS-based verification process * Traditional regression testing approach - Clarify advanced configuration options with parameter tables
- Check if VERILATOR_ROOT is defined to use custom installs verilator binary - Fallback to system-wide verilator if VERILATOR_ROOT is not set - Resolves verilator_bin not found error by ensuring correct /bin subdirectory
- Added set -e to stop the script on errors - Refactored variable names for better clarity - Fixed the order of git clone and git checkout commands - Added explicit installation messages
- Use relative path for VNaxRiscv binary - Remove VERILATOR_ROOT conditional - Update make command to use obj_dir/ directly
- Unset VERILATOR_ROOT before cloning and building Verilator - Removed redundant make install step
…event commit failures when traceIt is disabled. Previously, when traceIt was set to false, the absence of spikeLogCommit() caused commit failures during simulation. This change ensures that spikeLogCommit() is always called, regardless of the traceIt setting, while keeping spikeDebug() optional. Updated SocSim logic: - Always enable spikeLogCommit() to maintain proper commit handling. - Keep spikeDebug() conditional based on traceIt. This prevents missing commits and ensures stable simulation behavior.
…then through RVLS (lockstep)
…la to avoid GitHub Actions timeout Description: Commented out multiple doTest calls to prevent the job from exceeding the 360-minute execution limit on GitHub Actions. Only the rv64imafdcsu configuration remains active with RVLS simulation. This change aims to reduce execution time and prevent workflow failures due to timeouts.
Add CI scripts and setup files to automate installation
# Conflicts: # .github/workflows/tools.sh # ext/riscv-isa-sim
@Dolu1990 I noticed that my name does not appear on the list of contributors ^^ |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
No description provided.