Skip to content

Commit 594cf12

Browse files
committed
Add target pulp_cluster to test the cluster alone.
1 parent e7aba17 commit 594cf12

13 files changed

Lines changed: 1195 additions & 1 deletion

File tree

configs/pulp_cluster.sh

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
#!/bin/bash -e
2+
3+
export PULPRT_TARGET=pulp_cluster
4+
export PULPRUN_TARGET=pulp_cluster
5+
export CONFIG_NO_FC=1
6+
7+
if [ -n "${ZSH_VERSION:-}" ]; then
8+
DIR="$(readlink -f -- "${(%):-%x}")"
9+
scriptDir="$(dirname $DIR)"
10+
else
11+
12+
scriptDir="$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")"
13+
14+
fi
15+
16+
source $scriptDir/common.sh
Lines changed: 121 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,121 @@
1+
/*
2+
* Copyright (C) 2018 ETH Zurich and University of Bologna
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
17+
#ifndef __ARCHI_PULP_APB_SOC_H__
18+
#define __ARCHI_PULP_APB_SOC_H__
19+
20+
#define APB_SOC_BOOT_OTHER 0
21+
#define APB_SOC_BOOT_JTAG 1
22+
#define APB_SOC_BOOT_SPI 2
23+
#define APB_SOC_BOOT_ROM 3
24+
#define APB_SOC_BOOT_PRELOAD 4
25+
#define APB_SOC_BOOT_HYPER 5
26+
#define APB_SOC_BOOT_SPIM 6
27+
#define APB_SOC_BOOT_SPIM_QPI 7
28+
29+
#define APB_SOC_PLT_OTHER 0
30+
#define APB_SOC_PLT_FPGA 1
31+
#define APB_SOC_PLT_RTL 2
32+
#define APB_SOC_PLT_VP 3
33+
#define APB_SOC_PLT_CHIP 4
34+
35+
//PADs configuration is made of 8bits out of which only the first 6 are used
36+
//bit0 enable pull UP
37+
//bit1 enable pull DOWN
38+
//bit2 enable ST
39+
//bit3 enable SlewRate Limit
40+
//bit4..5 Driving Strength
41+
//bit6..7 not used
42+
43+
#define APB_SOC_BOOTADDR_OFFSET 0x04
44+
#define APB_SOC_INFO_OFFSET 0x00 //contains number of cores [31:16] and clusters [15:0]
45+
#define APB_SOC_INFOEXTD_OFFSET 0x04 //not used at the moment
46+
#define APB_SOC_NOTUSED0_OFFSET 0x08 //not used at the moment
47+
#define APB_SOC_CLUSTER_ISOLATE_OFFSET 0x0C //not used at the moment
48+
49+
#define APB_SOC_PADFUN0_OFFSET 0x10
50+
#define APB_SOC_PADCFG0_OFFSET 0x20
51+
52+
#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])
53+
#define APB_SOC_PADFUN_NO(pad) ((pad) >> 4)
54+
#define APB_SOC_PADFUN_PAD(padfun) ((padfun)*16)
55+
#define APB_SOC_PADFUN_SIZE 2
56+
#define ARCHI_APB_SOC_PADFUN_NB 4
57+
#define APB_SOC_PADFUN_BIT(pad) (((pad) & 0xF) << 1)
58+
59+
#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])
60+
#define APB_SOC_PADCFG_NO(pad) ((pad) >> 2)
61+
#define APB_SOC_PADCFG_PAD(padfun) ((padfun)*4)
62+
#define APB_SOC_PADCFG_SIZE 8
63+
#define APB_SOC_PADCFG_BIT(pad) (((pad) & 0x3) << 3)
64+
65+
#define APB_SOC_PWRCMD_OFFSET 0x60 //change power mode(not funtional yet)
66+
#define APB_SOC_PWRCFG_OFFSET 0x64 //configures power modes(not funtional yet)
67+
#define APB_SOC_PWRREG_OFFSET 0x68 //32 bit GP register used by power pngmt routines to see if is hard or cold reboot
68+
#define APB_SOC_BUSY_OFFSET 0x6C //not used at the moment
69+
#define APB_SOC_MMARGIN_OFFSET 0x70 //memory margin pins(not used at the moment)
70+
#define APB_SOC_JTAG_REG 0x74 // R/W register for interaction with the the chip environment
71+
#define APB_SOC_L2_SLEEP_OFFSET 0x78 //memory margin pins(not used at the moment)
72+
#define APB_SOC_NOTUSED3_OFFSET 0x7C //not used at the moment
73+
#define APB_SOC_CLKDIV0_OFFSET 0x80 //soc clock divider(to be removed)
74+
#define APB_SOC_CLKDIV1_OFFSET 0x84 //cluster clock divider(to be removed)
75+
#define APB_SOC_CLKDIV2_OFFSET 0x88 //not used at the moment
76+
#define APB_SOC_CLKDIV3_OFFSET 0x8C //not used at the moment
77+
#define APB_SOC_CLKDIV4_OFFSET 0x90 //not used at the moment
78+
#define APB_SOC_NOTUSED4_OFFSET 0x94 //not used at the moment
79+
#define APB_SOC_NOTUSED5_OFFSET 0x98 //not used at the moment
80+
#define APB_SOC_NOTUSED6_OFFSET 0x9C //not used at the moment
81+
#define APB_SOC_CORESTATUS_OFFSET 0xA0 //32bit GP register to be used during testing to return EOC(bit[31]) and status(bit[30:0])
82+
#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])
83+
#define APB_SOC_PADS_CONFIG 0xC4
84+
85+
#define APB_SOC_PADS_CONFIG_BOOTSEL_BIT 0
86+
87+
#define APB_SOC_JTAG_REG_EXT_BIT 8
88+
#define APB_SOC_JTAG_REG_EXT_WIDTH 4
89+
90+
#define APB_SOC_JTAG_REG_LOC_BIT 0
91+
#define APB_SOC_JTAG_REG_LOC_WIDTH 4
92+
93+
#define APB_SOC_INFO_CORES_OFFSET (APB_SOC_INFO_OFFSET + 2)
94+
#define APB_SOC_INFO_CLUSTERS_OFFSET (APB_SOC_INFO_OFFSET)
95+
96+
#define APB_SOC_STATUS_EOC_BIT 31
97+
#define APB_SOC_NB_CORE_BIT 16
98+
99+
100+
#define APB_SOC_BYPASS_OFFSET 0x70
101+
102+
#define APB_SOC_BYPASS_CLOCK_GATE_BIT 10
103+
#define APB_SOC_BYPASS_CLUSTER_STATE_BIT 3
104+
#define APB_SOC_BYPASS_USER0_BIT 14
105+
#define APB_SOC_BYPASS_USER1_BIT 15
106+
107+
108+
#define APB_SOC_FLL_CTRL_OFFSET 0xD0
109+
#define APB_SOC_CLKDIV_SOC_OFFSET 0xD4
110+
#define APB_SOC_CLKDIV_CLUSTER_OFFSET 0xD8
111+
#define APB_SOC_CLKDIV_PERIPH_OFFSET 0xDC
112+
113+
114+
#define APB_SOC_FLL_CTRL_SOC_BIT 0
115+
#define APB_SOC_FLL_CTRL_CLUSTER_BIT 1
116+
#define APB_SOC_FLL_CTRL_PERIPH_BIT 2
117+
118+
119+
#define APB_SOC_RTC_OFFSET 0x1D0
120+
121+
#endif
Lines changed: 115 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,115 @@
1+
2+
/* THIS FILE HAS BEEN GENERATED, DO NOT MODIFY IT.
3+
*/
4+
5+
/*
6+
* Copyright (C) 2018 ETH Zurich, University of Bologna
7+
*
8+
* Licensed under the Apache License, Version 2.0 (the "License");
9+
* you may not use this file except in compliance with the License.
10+
* You may obtain a copy of the License at
11+
*
12+
* http://www.apache.org/licenses/LICENSE-2.0
13+
*
14+
* Unless required by applicable law or agreed to in writing, software
15+
* distributed under the License is distributed on an "AS IS" BASIS,
16+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17+
* See the License for the specific language governing permissions and
18+
* limitations under the License.
19+
*/
20+
21+
#ifndef __INCLUDE_ARCHI_CHIPS_PULP_APB_SOC_CTRL_H__
22+
#define __INCLUDE_ARCHI_CHIPS_PULP_APB_SOC_CTRL_H__
23+
24+
#ifndef LANGUAGE_ASSEMBLY
25+
26+
#include <stdint.h>
27+
#include "archi/utils.h"
28+
29+
#endif
30+
31+
32+
33+
34+
//
35+
// REGISTERS
36+
//
37+
38+
// Value of pad bootsel
39+
#define APB_SOC_BOOTSEL_OFFSET 0xc4
40+
41+
42+
43+
//
44+
// REGISTERS FIELDS
45+
//
46+
47+
48+
49+
//
50+
// REGISTERS STRUCTS
51+
//
52+
53+
#ifndef LANGUAGE_ASSEMBLY
54+
55+
typedef union {
56+
struct {
57+
};
58+
unsigned int raw;
59+
} __attribute__((packed)) apb_soc_bootsel_t;
60+
61+
#endif
62+
63+
64+
65+
//
66+
// REGISTERS STRUCTS
67+
//
68+
69+
#ifdef __GVSOC__
70+
71+
class vp_apb_soc_bootsel : public vp::reg_32
72+
{
73+
public:
74+
};
75+
76+
#endif
77+
78+
79+
80+
//
81+
// REGISTERS GLOBAL STRUCT
82+
//
83+
84+
#ifndef LANGUAGE_ASSEMBLY
85+
86+
typedef struct {
87+
unsigned int bootsel ; // Value of pad bootsel
88+
} __attribute__((packed)) apb_soc_apb_soc_t;
89+
90+
#endif
91+
92+
93+
94+
//
95+
// REGISTERS ACCESS FUNCTIONS
96+
//
97+
98+
#ifndef LANGUAGE_ASSEMBLY
99+
100+
static inline uint32_t apb_soc_bootsel_get(uint32_t base) { return ARCHI_READ(base, APB_SOC_BOOTSEL_OFFSET); }
101+
static inline void apb_soc_bootsel_set(uint32_t base, uint32_t value) { ARCHI_WRITE(base, APB_SOC_BOOTSEL_OFFSET, value); }
102+
103+
#endif
104+
105+
106+
107+
//
108+
// REGISTERS FIELDS MACROS
109+
//
110+
111+
#ifndef LANGUAGE_ASSEMBLY
112+
113+
#endif
114+
115+
#endif
Lines changed: 128 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,128 @@
1+
/*
2+
* Copyright (C) 2018 ETH Zurich, University of Bologna
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
17+
18+
#ifndef __ARCHI_CHIPS_PULP_MEMORY_MAP_H__
19+
#define __ARCHI_CHIPS_PULP_MEMORY_MAP_H__
20+
21+
22+
/*
23+
* MEMORIES
24+
*/
25+
26+
#define ARCHI_L2_PRIV0_ADDR 0x1c000000
27+
#define ARCHI_L2_PRIV0_SIZE 0x00008000
28+
29+
#define ARCHI_L2_PRIV1_ADDR 0x1c008000
30+
#define ARCHI_L2_PRIV1_SIZE 0x00008000
31+
32+
#define ARCHI_L2_SHARED_ADDR 0x1c010000
33+
#define ARCHI_L2_SHARED_SIZE 0x00070000
34+
35+
36+
/*
37+
* SOC PERIPHERALS
38+
*/
39+
40+
#define ARCHI_SOC_PERIPHERALS_ADDR 0x1A100000
41+
42+
#define ARCHI_FC_TIMER_SIZE 0x00000800
43+
44+
45+
#define ARCHI_FLL_OFFSET 0x00000000
46+
#define ARCHI_GPIO_OFFSET 0x00001000
47+
#define ARCHI_UDMA_OFFSET 0x00002000
48+
#define ARCHI_APB_SOC_CTRL_OFFSET 0x00004000
49+
#define ARCHI_SOC_EU_OFFSET 0x00006000
50+
#define ARCHI_FC_ITC_OFFSET 0x00009800
51+
#define ARCHI_FC_TIMER_OFFSET 0x0000B000
52+
#define ARCHI_STDOUT_OFFSET 0x0000F000
53+
54+
55+
56+
#define ARCHI_GPIO_ADDR ( ARCHI_SOC_PERIPHERALS_ADDR + ARCHI_GPIO_OFFSET )
57+
#define ARCHI_UDMA_ADDR ( ARCHI_SOC_PERIPHERALS_ADDR + ARCHI_UDMA_OFFSET )
58+
#define ARCHI_APB_SOC_CTRL_ADDR ( ARCHI_SOC_PERIPHERALS_ADDR + ARCHI_APB_SOC_CTRL_OFFSET )
59+
#define ARCHI_SOC_EU_ADDR ( ARCHI_SOC_PERIPHERALS_ADDR + ARCHI_SOC_EU_OFFSET )
60+
#define ARCHI_FC_ITC_ADDR ( ARCHI_SOC_PERIPHERALS_ADDR + ARCHI_FC_ITC_OFFSET )
61+
#define ARCHI_FC_TIMER_ADDR ( ARCHI_SOC_PERIPHERALS_ADDR + ARCHI_FC_TIMER_OFFSET )
62+
#define ARCHI_STDOUT_ADDR 0x40000000
63+
64+
#define ARCHI_FLL_AREA_SIZE 0x00000010
65+
66+
67+
68+
69+
/*
70+
* FC
71+
*/
72+
73+
#define ARCHI_FC_ADDR 0x00000000
74+
#define ARCHI_FC_GLOBAL_ADDR 0x1B000000
75+
76+
77+
/*
78+
* CLUSTER
79+
*/
80+
81+
#define ARCHI_CLUSTER_ADDR 0x00000000
82+
#define ARCHI_CLUSTER_SIZE 0x00400000
83+
#define ARCHI_CLUSTER_GLOBAL_ADDR(cid) (0x10000000 + (cid)*ARCHI_CLUSTER_SIZE)
84+
85+
86+
87+
/*
88+
* CLUSTER PERIPHERALS
89+
*/
90+
91+
#define ARCHI_CLUSTER_PERIPHERALS_OFFSET 0x00200000
92+
93+
#define ARCHI_TIMER_SIZE 0x00000800
94+
95+
#define ARCHI_CLUSTER_CTRL_OFFSET 0x00000000
96+
#define ARCHI_TIMER_OFFSET 0x00000400
97+
#define ARCHI_EU_OFFSET 0x00000800
98+
#define ARCHI_HWCE_OFFSET 0x00001000
99+
#define ARCHI_ICACHE_CTRL_OFFSET 0x00001400
100+
#define ARCHI_MCHAN_EXT_OFFSET 0x00001800
101+
102+
#define ARCHI_CLUSTER_PERIPHERALS_ADDR ( ARCHI_CLUSTER_ADDR + ARCHI_CLUSTER_PERIPHERALS_OFFSET )
103+
#define ARCHI_CLUSTER_PERIPHERALS_GLOBAL_ADDR(cid) ( ARCHI_CLUSTER_GLOBAL_ADDR(cid) + ARCHI_CLUSTER_PERIPHERALS_OFFSET )
104+
105+
#define ARCHI_CLUSTER_CTRL_ADDR ( ARCHI_CLUSTER_PERIPHERALS_ADDR + ARCHI_CLUSTER_CTRL_OFFSET )
106+
#define ARCHI_ICACHE_CTRL_ADDR ( ARCHI_CLUSTER_PERIPHERALS_ADDR + ARCHI_ICACHE_CTRL_OFFSET )
107+
#define ARCHI_EU_ADDR ( ARCHI_CLUSTER_PERIPHERALS_ADDR + ARCHI_EU_OFFSET )
108+
#define ARCHI_HWCE_ADDR ( ARCHI_CLUSTER_PERIPHERALS_ADDR + ARCHI_HWCE_OFFSET )
109+
#define ARCHI_MCHAN_EXT_ADDR ( ARCHI_CLUSTER_PERIPHERALS_ADDR + ARCHI_MCHAN_EXT_OFFSET )
110+
111+
112+
113+
/*
114+
* CLUSTER DEMUX PERIPHERALS
115+
*/
116+
117+
#define ARCHI_DEMUX_PERIPHERALS_OFFSET 0x204000
118+
119+
#define ARCHI_EU_DEMUX_OFFSET ( 0x00000 )
120+
#define ARCHI_MCHAN_DEMUX_OFFSET ( 0x00400 )
121+
122+
123+
#define ARCHI_DEMUX_PERIPHERALS_ADDR ( ARCHI_CLUSTER_ADDR + ARCHI_DEMUX_PERIPHERALS_OFFSET )
124+
125+
#define ARCHI_EU_DEMUX_ADDR ( ARCHI_DEMUX_PERIPHERALS_ADDR + ARCHI_EU_DEMUX_OFFSET )
126+
#define ARCHI_MCHAN_DEMUX_ADDR ( ARCHI_DEMUX_PERIPHERALS_ADDR + ARCHI_MCHAN_DEMUX_OFFSET )
127+
128+
#endif

0 commit comments

Comments
 (0)