From 026a98d56a602d2501a0f36a50a9dfa44cb73a38 Mon Sep 17 00:00:00 2001 From: bluew Date: Thu, 4 Nov 2021 17:47:57 +0100 Subject: [PATCH] pulp-runtime: Fix uart frequency and bad fll access Control-pulp doesn't have an FLL so we hardcode the frequency domain values. Furthermore we allow these hardcoded values to change depending on whether we target the FPGA (zcu102) or rtl sim. --- configs/control-pulp.sh | 4 ++++ configs/fpgas/control-pulp/zcu102.sh | 21 +++++++++++++++++++ include/archi/chips/control-pulp/properties.h | 1 - kernel/chips/control-pulp/soc.c | 19 ++++------------- 4 files changed, 29 insertions(+), 16 deletions(-) create mode 100644 configs/fpgas/control-pulp/zcu102.sh diff --git a/configs/control-pulp.sh b/configs/control-pulp.sh index d2071c0..0783da5 100644 --- a/configs/control-pulp.sh +++ b/configs/control-pulp.sh @@ -13,3 +13,7 @@ else fi source $scriptDir/common.sh + +export PULPRT_CONFIG_CFLAGS='-DARCHI_ASIC_PER_FREQUENCY=100000000 \ + -DARCHI_ASIC_FC_FREQUENCY=100000000 \ + -DARCHI_ASIC_CL_FREQUENCY=100000000' diff --git a/configs/fpgas/control-pulp/zcu102.sh b/configs/fpgas/control-pulp/zcu102.sh new file mode 100644 index 0000000..c058a27 --- /dev/null +++ b/configs/fpgas/control-pulp/zcu102.sh @@ -0,0 +1,21 @@ +#!/bin/bash -e + +export PULPRT_TARGET=control-pulp +export PULPRUN_TARGET=control-pulp + +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 + +export PULPRUN_PLATFORM=fpga + +export PULPRT_CONFIG_CFLAGS='-DARCHI_FPGA_PER_FREQUENCY=10000000 \ + -DARCHI_FPGA_FC_FREQUENCY=20000000 \ + -DARCHI_FPGA_CL_FREQUENCY=20000000' + +export io=uart diff --git a/include/archi/chips/control-pulp/properties.h b/include/archi/chips/control-pulp/properties.h index 1f45793..c488903 100644 --- a/include/archi/chips/control-pulp/properties.h +++ b/include/archi/chips/control-pulp/properties.h @@ -22,7 +22,6 @@ * FPGA */ -#define ARCHI_FPGA_FREQUENCY 5000000 /* * MEMORIES diff --git a/kernel/chips/control-pulp/soc.c b/kernel/chips/control-pulp/soc.c index 8626f91..89db229 100644 --- a/kernel/chips/control-pulp/soc.c +++ b/kernel/chips/control-pulp/soc.c @@ -19,24 +19,13 @@ void pos_soc_init() { #if __PLATFORM__ != ARCHI_PLATFORM_FPGA - - pos_fll_constructor(); - - pos_freq_domains[PI_FREQ_DOMAIN_FC] = pos_fll_init(POS_FLL_FC); - - pos_freq_domains[PI_FREQ_DOMAIN_PERIPH] = pos_fll_init(POS_FLL_PERIPH); - - - pos_freq_domains[PI_FREQ_DOMAIN_CL] = pos_fll_init(POS_FLL_CL); - + pos_freq_domains[PI_FREQ_DOMAIN_FC] = ARCHI_ASIC_FC_FREQUENCY; + pos_freq_domains[PI_FREQ_DOMAIN_PERIPH] = ARCHI_ASIC_PER_FREQUENCY; + pos_freq_domains[PI_FREQ_DOMAIN_CL] = ARCHI_ASIC_CL_FREQUENCY; #else - pos_freq_domains[PI_FREQ_DOMAIN_FC] = ARCHI_FPGA_FC_FREQUENCY; - - pos_freq_domains[PI_FREQ_DOMAIN_PERIPH] = ARCHI_FPGA_FREQUENCY; - + pos_freq_domains[PI_FREQ_DOMAIN_PERIPH] = ARCHI_FPGA_PER_FREQUENCY; pos_freq_domains[PI_FREQ_DOMAIN_CL] = ARCHI_FPGA_CL_FREQUENCY; - #endif }