Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
59 commits
Select commit Hold shift + click to select a range
9e9bffb
Properly propagate `ARCHI_NO_FC` to enable boot without the FC.
luca-valente Mar 23, 2023
41b428d
Add target `pulp_cluster` to test the cluster alone.
luca-valente Mar 23, 2023
2302536
Enabled traces for debugging (at least in allocation functions).
Jun 16, 2023
968f04e
Making a single cluster with non-zero index successfully work.
Jun 23, 2023
138d8e3
Bumped number of cores to 12.
Jun 26, 2023
951a849
Added carfield-cluster target and remote function to write eoc.
Jul 11, 2023
74d4482
Fixup: L2 addresses in memory map.
Jul 12, 2023
464d55d
Fixed runtime issues and masked the cluster ID if the chip is carfield.
Aug 11, 2023
f90f2e6
Shifting up SDTOUT to allow printf in Carfield configuration (to be
Sep 30, 2023
8acf75d
Aligned standard out with Carfield.
Oct 3, 2023
89fe257
Added code for HMR.
Oct 3, 2023
45de393
Set cluster base address properly.
Oct 6, 2023
96a6336
Referencing to ORIGIN(L2) in .vectors and .l2_data sections.
Oct 19, 2023
ff4921f
Added function to write in the cluster internal return value.
Oct 19, 2023
90a189e
Make DMR regression work on standalone PULP cluster.
Oct 30, 2023
09b9da4
Fix missing space
Oct 4, 2023
cc51866
Use QUESTA environment variable coupled with vsim.
Jan 25, 2024
b7f2b67
Update `run` target in Makefile
Oct 4, 2023
197d06b
Use environment variable for VSIM
micprog Feb 6, 2024
e09b721
Fix missing argument `Loader` in `bwruntests.py`
ricted98 Feb 12, 2024
e90f6e5
Merge pull request #41 from pulp-platform/rt/fix-bwruntests
yvantor Feb 13, 2024
1cbf59c
Add APIs for TCDM scrubber.
Feb 27, 2024
7c791d0
Merge pull request #43 from pulp-platform/yt/tcdm-scrubber
yvantor Feb 28, 2024
5c38fea
Fix offset in scrubber APIs
ricted98 Feb 29, 2024
8b508dc
Merge pull request #44 from pulp-platform/rt/scrubber-api-fix
yvantor Feb 29, 2024
54a233a
Add dedicated astral config.
Mar 23, 2024
e3a8142
Small quality-of-life fixes
FrancescoConti Mar 5, 2024
f208e9f
Reduce number of cluster cores for Astral
ricted98 Mar 29, 2024
0bdc1d5
Merge pull request #47 from pulp-platform/yt/tout-config
yvantor Apr 8, 2024
ed59950
Merge pull request #45 from pulp-platform/fc/qol-fixes
FrancescoConti Apr 16, 2024
0782b2f
Align to QoL changes introduced previously in carfield-cluster
FrancescoConti Apr 16, 2024
d8972b0
Change L2 address.
Apr 23, 2024
f3e685f
Merge pull request #48 from pulp-platform/yt/tapeout-cfg
yvantor Apr 23, 2024
551a069
Add APIs for ECC-extended HCI
May 9, 2024
3aebe9a
Fix include
LuigiGhionda Jun 3, 2024
3ba9a34
Merge pull request #49 from pulp-platform/lg/hci-ecc
yvantor Jun 25, 2024
5a063a8
Fix wrong sync loop address for non-astral chips
Nov 13, 2024
6a8fff7
Upstream astral features
Dec 10, 2024
a5bc02e
Enable HMR unit for base pulp cluster
Dec 10, 2024
28406c4
Correctly set QUESTA variable for pulp cluster
Jan 28, 2025
272b0da
Fix run target for pulp cluster
Jan 28, 2025
af92a99
Conditional enabling of HMR unit
LuigiGhionda Feb 17, 2025
b3c239c
Fix unset PULP_OBJDUMP when specifying toolchain path
LuigiGhionda Jan 15, 2025
fcb9ce0
Initialize all registers to zero during boot
Oct 4, 2023
348d39f
Update linker script to reserve first word for startup synch loop
Oct 25, 2023
3bf75ab
Simplify `run` target for `platform=fpga`
luca-valente Jun 7, 2023
e2d4795
add dummy pmsis header and xpulpnn march flag to pulp_cluster target
da-gazzi Jun 11, 2024
61c7f10
Add iDMA driver and defines
da-gazzi Jun 27, 2024
efe12ed
add iDMA zeromem HAL function
da-gazzi Jul 1, 2024
8000372
add cluster-specific iDMA HAL functions
da-gazzi Jul 2, 2024
4d56809
[WIP] add pre-alpha iDMA drivers and #defines
da-gazzi Jun 27, 2024
c8d6768
Revert "[WIP] add pre-alpha iDMA drivers and #defines"
DanielKellerM Jun 2, 2025
b32ff8b
Fix bugs: Enable_ND configuration register correct value, add return …
DanielKellerM Nov 1, 2024
d85e7bb
[wip] 3D transfer functions
DanielKellerM Jun 3, 2025
3f1e98e
Merge of upstream commit 761d7d8 and my fixes from dkeller/chimera ol…
May 30, 2025
af75d00
Fix for ENTRY variable in default_rules.mk
Jun 13, 2025
33bc160
riscy core with TNN extensions not used for now
DanielKellerM Jul 24, 2025
118d86c
comment out rv32imcxpulpnn flag
DanielKellerM Jul 24, 2025
70b1a42
add attribute guards
DanielKellerM Aug 21, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 17 additions & 0 deletions configs/astral-cluster.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
#!/bin/bash -e

export PULPRT_TARGET=astral-cluster
export PULPRUN_TARGET=astral-cluster
export CONFIG_NO_FC=1
export ARCHI_HMR=1

if [ -n "${ZSH_VERSION:-}" ]; then
DIR="$(readlink -f -- "${(%):-%x}")"
scriptDir="$(dirname $DIR)"
else

scriptDir="$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")"

fi

source $scriptDir/common.sh
17 changes: 17 additions & 0 deletions configs/carfield-cluster.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
#!/bin/bash -e

export PULPRT_TARGET=carfield-cluster
export PULPRUN_TARGET=carfield-cluster
export CONFIG_NO_FC=1
export ARCHI_HMR=1

if [ -n "${ZSH_VERSION:-}" ]; then
DIR="$(readlink -f -- "${(%):-%x}")"
scriptDir="$(dirname $DIR)"
else

scriptDir="$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")"

fi

source $scriptDir/common.sh
17 changes: 17 additions & 0 deletions configs/pulp_cluster.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
#!/bin/bash -e

export PULPRT_TARGET=pulp_cluster
export PULPRUN_TARGET=pulp_cluster
export CONFIG_NO_FC=1
export ARCHI_HMR=1

if [ -n "${ZSH_VERSION:-}" ]; then
DIR="$(readlink -f -- "${(%):-%x}")"
scriptDir="$(dirname $DIR)"
else

scriptDir="$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")"

fi

source $scriptDir/common.sh
121 changes: 121 additions & 0 deletions include/archi/chips/astral-cluster/apb_soc.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,121 @@
/*
* Copyright (C) 2018 ETH Zurich and University of Bologna
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

#ifndef __ARCHI_PULP_APB_SOC_H__
#define __ARCHI_PULP_APB_SOC_H__

#define APB_SOC_BOOT_OTHER 0
#define APB_SOC_BOOT_JTAG 1
#define APB_SOC_BOOT_SPI 2
#define APB_SOC_BOOT_ROM 3
#define APB_SOC_BOOT_PRELOAD 4
#define APB_SOC_BOOT_HYPER 5
#define APB_SOC_BOOT_SPIM 6
#define APB_SOC_BOOT_SPIM_QPI 7

#define APB_SOC_PLT_OTHER 0
#define APB_SOC_PLT_FPGA 1
#define APB_SOC_PLT_RTL 2
#define APB_SOC_PLT_VP 3
#define APB_SOC_PLT_CHIP 4

//PADs configuration is made of 8bits out of which only the first 6 are used
//bit0 enable pull UP
//bit1 enable pull DOWN
//bit2 enable ST
//bit3 enable SlewRate Limit
//bit4..5 Driving Strength
//bit6..7 not used

#define APB_SOC_BOOTADDR_OFFSET 0x04
#define APB_SOC_INFO_OFFSET 0x00 //contains number of cores [31:16] and clusters [15:0]
#define APB_SOC_INFOEXTD_OFFSET 0x04 //not used at the moment
#define APB_SOC_NOTUSED0_OFFSET 0x08 //not used at the moment
#define APB_SOC_CLUSTER_ISOLATE_OFFSET 0x0C //not used at the moment

#define APB_SOC_PADFUN0_OFFSET 0x10
#define APB_SOC_PADCFG0_OFFSET 0x20

#define APB_SOC_PADFUN_OFFSET(g) (APB_SOC_PADFUN0_OFFSET+(g)*4) //sets the mux for pins g*16+0 (bits [1:0]) to g*16+15 (bits [31:30])
#define APB_SOC_PADFUN_NO(pad) ((pad) >> 4)
#define APB_SOC_PADFUN_PAD(padfun) ((padfun)*16)
#define APB_SOC_PADFUN_SIZE 2
#define ARCHI_APB_SOC_PADFUN_NB 4
#define APB_SOC_PADFUN_BIT(pad) (((pad) & 0xF) << 1)

#define APB_SOC_PADCFG_OFFSET(g) (APB_SOC_PADCFG0_OFFSET+(g)*4) //sets config for pin g*4+0(bits [7:0]) to pin g*4+3(bits [31:24])
#define APB_SOC_PADCFG_NO(pad) ((pad) >> 2)
#define APB_SOC_PADCFG_PAD(padfun) ((padfun)*4)
#define APB_SOC_PADCFG_SIZE 8
#define APB_SOC_PADCFG_BIT(pad) (((pad) & 0x3) << 3)

#define APB_SOC_PWRCMD_OFFSET 0x60 //change power mode(not funtional yet)
#define APB_SOC_PWRCFG_OFFSET 0x64 //configures power modes(not funtional yet)
#define APB_SOC_PWRREG_OFFSET 0x68 //32 bit GP register used by power pngmt routines to see if is hard or cold reboot
#define APB_SOC_BUSY_OFFSET 0x6C //not used at the moment
#define APB_SOC_MMARGIN_OFFSET 0x70 //memory margin pins(not used at the moment)
#define APB_SOC_JTAG_REG 0x74 // R/W register for interaction with the the chip environment
#define APB_SOC_L2_SLEEP_OFFSET 0x78 //memory margin pins(not used at the moment)
#define APB_SOC_NOTUSED3_OFFSET 0x7C //not used at the moment
#define APB_SOC_CLKDIV0_OFFSET 0x80 //soc clock divider(to be removed)
#define APB_SOC_CLKDIV1_OFFSET 0x84 //cluster clock divider(to be removed)
#define APB_SOC_CLKDIV2_OFFSET 0x88 //not used at the moment
#define APB_SOC_CLKDIV3_OFFSET 0x8C //not used at the moment
#define APB_SOC_CLKDIV4_OFFSET 0x90 //not used at the moment
#define APB_SOC_NOTUSED4_OFFSET 0x94 //not used at the moment
#define APB_SOC_NOTUSED5_OFFSET 0x98 //not used at the moment
#define APB_SOC_NOTUSED6_OFFSET 0x9C //not used at the moment
#define APB_SOC_CORESTATUS_OFFSET 0xA0 //32bit GP register to be used during testing to return EOC(bit[31]) and status(bit[30:0])
#define APB_SOC_CORESTATUS_RO_OFFSET 0xC0 //32bit GP register to be used during testing to return EOC(bit[31]) and status(bit[30:0])
#define APB_SOC_PADS_CONFIG 0xC4

#define APB_SOC_PADS_CONFIG_BOOTSEL_BIT 0

#define APB_SOC_JTAG_REG_EXT_BIT 8
#define APB_SOC_JTAG_REG_EXT_WIDTH 4

#define APB_SOC_JTAG_REG_LOC_BIT 0
#define APB_SOC_JTAG_REG_LOC_WIDTH 4

#define APB_SOC_INFO_CORES_OFFSET (APB_SOC_INFO_OFFSET + 2)
#define APB_SOC_INFO_CLUSTERS_OFFSET (APB_SOC_INFO_OFFSET)

#define APB_SOC_STATUS_EOC_BIT 31
#define APB_SOC_NB_CORE_BIT 16


#define APB_SOC_BYPASS_OFFSET 0x70

#define APB_SOC_BYPASS_CLOCK_GATE_BIT 10
#define APB_SOC_BYPASS_CLUSTER_STATE_BIT 3
#define APB_SOC_BYPASS_USER0_BIT 14
#define APB_SOC_BYPASS_USER1_BIT 15


#define APB_SOC_FLL_CTRL_OFFSET 0xD0
#define APB_SOC_CLKDIV_SOC_OFFSET 0xD4
#define APB_SOC_CLKDIV_CLUSTER_OFFSET 0xD8
#define APB_SOC_CLKDIV_PERIPH_OFFSET 0xDC


#define APB_SOC_FLL_CTRL_SOC_BIT 0
#define APB_SOC_FLL_CTRL_CLUSTER_BIT 1
#define APB_SOC_FLL_CTRL_PERIPH_BIT 2


#define APB_SOC_RTC_OFFSET 0x1D0

#endif
115 changes: 115 additions & 0 deletions include/archi/chips/astral-cluster/apb_soc_ctrl.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,115 @@

/* THIS FILE HAS BEEN GENERATED, DO NOT MODIFY IT.
*/

/*
* Copyright (C) 2018 ETH Zurich, University of Bologna
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

#ifndef __INCLUDE_ARCHI_CHIPS_PULP_APB_SOC_CTRL_H__
#define __INCLUDE_ARCHI_CHIPS_PULP_APB_SOC_CTRL_H__

#ifndef LANGUAGE_ASSEMBLY

#include <stdint.h>
#include "archi/utils.h"

#endif




//
// REGISTERS
//

// Value of pad bootsel
#define APB_SOC_BOOTSEL_OFFSET 0xc4



//
// REGISTERS FIELDS
//



//
// REGISTERS STRUCTS
//

#ifndef LANGUAGE_ASSEMBLY

typedef union {
struct {
};
unsigned int raw;
} __attribute__((packed)) apb_soc_bootsel_t;

#endif



//
// REGISTERS STRUCTS
//

#ifdef __GVSOC__

class vp_apb_soc_bootsel : public vp::reg_32
{
public:
};

#endif



//
// REGISTERS GLOBAL STRUCT
//

#ifndef LANGUAGE_ASSEMBLY

typedef struct {
unsigned int bootsel ; // Value of pad bootsel
} __attribute__((packed)) apb_soc_apb_soc_t;

#endif



//
// REGISTERS ACCESS FUNCTIONS
//

#ifndef LANGUAGE_ASSEMBLY

static inline uint32_t apb_soc_bootsel_get(uint32_t base) { return ARCHI_READ(base, APB_SOC_BOOTSEL_OFFSET); }
static inline void apb_soc_bootsel_set(uint32_t base, uint32_t value) { ARCHI_WRITE(base, APB_SOC_BOOTSEL_OFFSET, value); }

#endif



//
// REGISTERS FIELDS MACROS
//

#ifndef LANGUAGE_ASSEMBLY

#endif

#endif
Loading