GithubHelp home page GithubHelp logo

pulp-platform / carfield Goto Github PK

View Code? Open in Web Editor NEW
56.0 10.0 10.0 1.74 MB

A mixed-criticality platform built around Cheshire, with a number of safety/security and predictability features. Ready-to-use FPGA flow on multiple boards is available.

License: Other

SystemVerilog 26.40% Makefile 3.44% Tcl 32.24% C 6.28% Emacs Lisp 0.03% Python 21.97% Shell 0.21% Smarty 8.21% CSS 0.07% Verilog 1.14%
asic c fpga heterogeneous-computing mixed-criticality-systems riscv safety-critical simulation systemverilog

carfield's Introduction

Carfield

Carfield is an open-research heterogeneous platform for safety, resilient and time-predictable systems. Originally conceived as automotive-oriented SoC, the high configurability of the platform makes it tunable to target a broader class of mixed-criticality applications' domains, such as automotive, space or industry.

Carfield is developed as part of the PULP project, a joint effort between ETH Zurich and the University of Bologna.

Motivation

The rapid evolution of AI algorithms and the massive amount of sensed data across application-domains such as Automotive, Space and Cyber-Physical embedded systems (CPSs), call for a paradigm shift in the design of next generation of mixed-criticality systems (MCSs), from simple micro-controllers towards powerful and heterogeneous edge computers.

These must not only deliver outstanding performance and energy efficiency but also ensure steadfast safety, resilience, and security.

The Carfield platform aims to tackle these architectural challenges establishing itself as a pre-competitive heterogeneous platform for MCSs, underpinned by fully open-source Intellectual Properties (IPs).

Carfield showcases pioneering hardware solutions, addressing challenges related to time-predictable on/off-chip communication, robust fault recovery mechanisms, secure boot processes, cryptographic acceleration services, hardware-assisted virtualization, and accelerated computation for both floating-point and integer workloads.

Quick Start

  • To learn how to build and use Carfield, see Getting Started.
  • To learn about available simulation, FPGA, and ASIC targets, see Targets.
  • For detailed information on Carfield's inner workings, consult the User Manual.

If you are impatient and have all needed dependencies, type:

make car-all

and then run a simulation with Questasim by typing:

make car-vsim-sim-build
make car-vsim-sim-run CHS_BINARY=./sw/tests/bare-metal/hostd/helloworld.car.l2.elf

To display the main Make build targets and their usage, from the root repository type:

make help

The Make files are autodocumented.

License

Unless specified otherwise in the respective file headers, all code checked into this repository is made available under a permissive license. All hardware sources and tool scripts are licensed under the Solderpad Hardware License 0.51 (see LICENSE) with the exception of generated register file code (e.g. hw/regs/*.sv), which is generated by a fork of lowRISC's regtool and licensed under Apache 2.0. All software sources are licensed under Apache 2.0.

carfield's People

Contributors

alex96295 avatar bluewww avatar cyrilkoe avatar diyous avatar ezelioli avatar husterzc avatar luca-valente avatar lucabertaccini avatar meggiman avatar micprog avatar mp-17 avatar niwis avatar suehtamacv avatar yvantor 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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

carfield's Issues

Watchdog timer reset

  • Careful when routing the watchdog timer reset as it is a vital signal
  • Better to keep the watchdog disabled by default and then enable it

Missing hyper ram sdf

Simulation leaves you with these errors

# ** Error: (vsim-7) Failed to open SDF file "./tb/hyp_vip/s27ks0641_verilog.sdf" in read mode.
# No such file or directory. (errno = ENOENT)
# ** Error: (vsim-SDF-3445) Failed to parse SDF file "./tb/hyp_vip/s27ks0641_verilog.sdf".
#    Time: 0 ps  Iteration: 0  Region: /tb_carfield_soc/fix/car_vip/sdf_annotation[0]/sdf_annotation[0]
# Mem (          0,          0)
# ** Error: (vsim-7) Failed to open SDF file "./tb/hyp_vip/s27ks0641_verilog.sdf" in read mode.
# No such file or directory. (errno = ENOENT)
# ** Error: (vsim-SDF-3445) Failed to parse SDF file "./tb/hyp_vip/s27ks0641_verilog.sdf".
#    Time: 0 ps  Iteration: 0  Region: /tb_carfield_soc/fix/car_vip/sdf_annotation[0]/sdf_annotation[0]
# Mem (          0,          1)
# ** Error: (vsim-7) Failed to open SDF file "./tb/hyp_vip/s27ks0641_verilog.sdf" in read mode.
# No such file or directory. (errno = ENOENT)
# ** Error: (vsim-SDF-3445) Failed to parse SDF file "./tb/hyp_vip/s27ks0641_verilog.sdf".
#    Time: 0 ps  Iteration: 0  Region: /tb_carfield_soc/fix/car_vip/sdf_annotation[0]/sdf_annotation[0]
# Mem (          1,          0)
# ** Error: (vsim-7) Failed to open SDF file "./tb/hyp_vip/s27ks0641_verilog.sdf" in read mode.
# No such file or directory. (errno = ENOENT)
# ** Error: (vsim-SDF-3445) Failed to parse SDF file "./tb/hyp_vip/s27ks0641_verilog.sdf".
#    Time: 0 ps  Iteration: 0  Region: /tb_carfield_soc/fix/car_vip/sdf_annotation[0]/sdf_annotation[0]

make car-init fails

From the README.md:
"make car-init" should download carfield.
I get this:
bender -d Carfield/test01 checkout
Checkout safety_island ([email protected]:carfield/safety-island.git)
warning: Please ensure the commits are available on the remote or run bender update
error: Failed to checkout given commit in Bender.lock.
Git command (Command { std: cd "Carfield/test01/.bender/git/db/safety_island-faba656b56b385a7" && "git" "tag" "bender-tmp-d0771928a2b850272c7a3d1b2a4a767bfb7c30a9" "d0771928a2b850272c7a3d1b2a4a767bfb7c30a9" "--force", kill_on_drop: false }) in directory "Carfield/test01/.bender/git/db/safety_island-faba656b56b385a7" failed with exit code 128:

fatal: cannot update ref 'refs/tags/bender-tmp-d0771928a2b850272c7a3d1b2a4a767bfb7c30a9': trying to write ref 'refs/tags/bender-tmp-d0771928a2b850272c7a3d1b2a4a767bfb7c30a9' with nonexistent object d0771928a2b850272c7a3d1b2a4a767bfb7c30a9

Improve naming for Carfield's cores traces

This issue is a drawback of our systems developed to exist standalone.

The tracer of each of carfield's cores should follow the hart id of the core.

Not on the critical path, but eases debugging

Some warm resets fail

I don't know the cause yet but the reset sequence fails somewhere during isolation

  • Fix PULP warm reset
    * [ ] Fix Periph warm reset -> can be done, but no use case for peripheral domain reset
  • Fix Security island warm reset
  • Fix L2 warm reset

Add test for L2 ECC manager

We integrated an ECC manager in L2, we need a basic test to test functionality (register access, operation)

Align HARTIDs

Carfield includes several cores, we should align hartids at system level. Current proposal:

cva6 -> 0,1
Safey -> 8-10
HMR cluster -> 32-43
Spatz cluster -> 64-...

@micprog @yvantor we shall discuss about this

Speed up simulation

Add a make debug or similar target to simulate the design with full visibility (+acc and logging all the waves). To be tirggered when only full debug is required

@bluewww

Align Bender IPs

Align Bender IPs and point to stable versions. Some IPs that need attention for alignment:

  • FPU (cva6, safety_island, spatz)
  • iDMA (Cheshire, spatz) -> @yvantor
  • CLIC (Cheshire, safety_island) -> @alex96295

@micprog are you on board to keep track of this with me?

SYNTHESIS ERROR

Line 294 and 295 of carfield_pkg generate synthesis errors:

Error: /home/agarofalo/2023_prj/CARFIELD/CarfieldPD_Intel16/.bender/git/checkouts/carfield-98c7188642667437/hw/carfield_pkg.sv:294: The construct 'string' is not supported in synthesis.
Error: /home/agarofalo/2023_prj/CARFIELD/CarfieldPD_Intel16/.bender/git/checkouts/carfield-98c7188642667437/hw/carfield_pkg.sv:295: The construct 'string' is not supported in synthesis.

System-level printf from PULP cluster

Probably PULP does not print due to wrong driver usage. Need to adapt the UART driver in pulp-runtime (uDMA UART) to use the APB UART currently used in Cheshire.

Spurious latches

To fix:

  • hw/ip/debug_mode/rtl/debug_mode_preload.sv:60: Netlist for always_comb block contains a latch. @maicolciani
  • src/per2axi_res_channel.sv:89: Netlist for always_ff block contains a latch. @yvantor
  • src/hyperbus_axi.sv:257: Netlist for always_comb block contains a latch. @luca-valente
  • core/cva6_clic_controller.sv:43: Netlist for always_comb block contains a latch. @bluewww @alex96295 @niwis

Unaligned read to Safety Island SPM fails

A unaligned read from CVA6 to any address should result in an load exception.

Currently, a double word load to CAR_SAFETY_ISLAND_SPM_BASE_ADDR + 1 causes the core to lock up.

Clip minimum number of external AXI masters to 1 due to PULP cluster limitations.

There is an issue with this piece of logic. Since the PULP cluster has a separate CDC destination FIFO due to its different AXI ID widths respect to the rest of the SoC, if one wants to use a very basic Carfield configuration where Cfg.AxiExtNumMst becomes 0, that for has an iterative spanning from 0 to 0-1, and the code does not compile. To mitigate this, as a temporary solution we prevent Cfg.AxiExtNumMst from being zero with this workaround. The "final solution" would be to unify all the AXI IDs so that the PULP cluster does not need a dedicated port and the iterative of that for can freely span from 0 to Cfg.AxiExtNumMst, with a consequent increase in the area of the AXI crossbar that should be investigated.

Track AXI4 crossbar scaling

โš ๏ธ Keep track of AXI crossbar scaling when using only one xbar in Cheshire

@anga93 this is important to keep on top of our heads

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.