GithubHelp home page GithubHelp logo

pulp-platform / carfield Goto Github PK

View Code? Open in Web Editor NEW
59.0 11.0 10.0 1.96 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 25.47% Makefile 3.49% Tcl 32.56% C 6.49% Emacs Lisp 0.04% Python 22.23% Shell 0.21% Smarty 8.29% CSS 0.07% Verilog 1.15%
asic c fpga heterogeneous-computing mixed-criticality-systems riscv safety-critical simulation systemverilog

carfield's Issues

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

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

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

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.

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.

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]

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

module 'xilinx_rom_bank_1024x22' not found

Hi,
When I tried to geretate bitstream for vcu128, I ran comman as :

make car-xil-all XILINX_FLAVOR=vanilla VIVADO=vivado VIVADO_MODE=batch

Vivado report:
module 'xilinx_rom_bank_1024x22' not found in
carfield/.bender/git/checkouts/opentitan-818279ef745672fc/hw/ip/prim/rtl/prim_otp_wrap_adv.sv:90

And I find : opentitan/hw/ip/prim_generic/rtl/prim_generic_rom.sv: xilinx_rom_bank_8192x40 is also missing.

Any help?
Thanks.

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

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?

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

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.

Add test for L2 ECC manager

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

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.

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

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.