forked from PAWPAW-Mirror/lib_xua
Rationalisation of test_i2s_loopback config building
This commit is contained in:
@@ -11,16 +11,21 @@ import sys
|
|||||||
def test_file(request):
|
def test_file(request):
|
||||||
return str(request.node.fspath)
|
return str(request.node.fspath)
|
||||||
|
|
||||||
|
|
||||||
def do_test(
|
def do_test(
|
||||||
pcm_format, i2s_role, channel_count, sample_rate, test_file, options, capfd
|
pcm_format, i2s_role, channel_count, sample_rate, word_length, test_file, options, capfd
|
||||||
):
|
):
|
||||||
|
|
||||||
build_options = []
|
build_options = []
|
||||||
output = []
|
output = []
|
||||||
testname, _ = os.path.splitext(os.path.basename(test_file))
|
testname, _ = os.path.splitext(os.path.basename(test_file))
|
||||||
|
|
||||||
desc = f"simulation_{pcm_format}_{i2s_role}_{channel_count}in_{channel_count}out_{sample_rate}"
|
build_options += [f"pcm_format={pcm_format}"]
|
||||||
|
build_options += [f"i2s_role={i2s_role}"]
|
||||||
|
build_options += [f"channel_count={channel_count}"]
|
||||||
|
build_options += [f"sample_rate={sample_rate}"]
|
||||||
|
build_options += [f"word_length={word_length}"]
|
||||||
|
|
||||||
|
desc = f"simulation_{pcm_format}_{i2s_role}_{channel_count}in_{channel_count}out_{sample_rate}_{word_length}bit"
|
||||||
binary = f"{testname}/bin/{desc}/{testname}_{desc}.xe"
|
binary = f"{testname}/bin/{desc}/{testname}_{desc}.xe"
|
||||||
|
|
||||||
tester = testers.ComparisonTester(open("pass.expect"))
|
tester = testers.ComparisonTester(open("pass.expect"))
|
||||||
@@ -52,6 +57,7 @@ def do_test(
|
|||||||
|
|
||||||
result = Pyxsim.run_on_simulator(
|
result = Pyxsim.run_on_simulator(
|
||||||
binary,
|
binary,
|
||||||
|
build_options=build_options,
|
||||||
tester=tester,
|
tester=tester,
|
||||||
simargs=simargs,
|
simargs=simargs,
|
||||||
capfd=capfd,
|
capfd=capfd,
|
||||||
@@ -65,25 +71,26 @@ def do_test(
|
|||||||
@pytest.mark.parametrize("i2s_role", ["master", "slave"])
|
@pytest.mark.parametrize("i2s_role", ["master", "slave"])
|
||||||
@pytest.mark.parametrize("pcm_format", ["i2s", "tdm"])
|
@pytest.mark.parametrize("pcm_format", ["i2s", "tdm"])
|
||||||
@pytest.mark.parametrize("channel_count", [2, 8, 16])
|
@pytest.mark.parametrize("channel_count", [2, 8, 16])
|
||||||
@pytest.mark.parametrize("sample_rate", ["48khz", "96khz", "192khz"])
|
@pytest.mark.parametrize("word_length", [32]) # I2S world length in bits
|
||||||
|
@pytest.mark.parametrize("sample_rate", [48000, 96000, 192000])
|
||||||
def test_i2s_loopback(
|
def test_i2s_loopback(
|
||||||
i2s_role, pcm_format, channel_count, sample_rate, test_file, options, capfd
|
i2s_role, pcm_format, channel_count, sample_rate, word_length, test_file, options, capfd
|
||||||
):
|
):
|
||||||
|
|
||||||
if pcm_format == "i2s" and channel_count == 16:
|
if pcm_format == "i2s" and channel_count == 16:
|
||||||
pytest.skip("Invalid parameter combination")
|
pytest.skip("Invalid parameter combination")
|
||||||
|
|
||||||
if pcm_format == "i2s" and sample_rate not in ["48khz", "192khz"]:
|
if pcm_format == "i2s" and sample_rate not in [48000, 192000]:
|
||||||
pytest.skip("Invalid parameter combination")
|
pytest.skip("Invalid parameter combination")
|
||||||
|
|
||||||
if pcm_format == "tdm" and channel_count == 2:
|
if pcm_format == "tdm" and channel_count == 2:
|
||||||
pytest.skip("Invalid parameter combination")
|
pytest.skip("Invalid parameter combination")
|
||||||
|
|
||||||
if pcm_format == "tdm" and sample_rate == "192khz":
|
if pcm_format == "tdm" and sample_rate == 192000:
|
||||||
pytest.skip("Invalid parameter combination")
|
pytest.skip("Invalid parameter combination")
|
||||||
|
|
||||||
result = do_test(
|
result = do_test(
|
||||||
pcm_format, i2s_role, channel_count, sample_rate, test_file, options, capfd
|
pcm_format, i2s_role, channel_count, sample_rate, word_length, test_file, options, capfd
|
||||||
)
|
)
|
||||||
|
|
||||||
assert result
|
assert result
|
||||||
|
|||||||
@@ -1,126 +1,43 @@
|
|||||||
TARGET = xk-audio-216-mc.xn
|
TARGET = xk-audio-216-mc.xn
|
||||||
USED_MODULES = lib_xua lib_i2c lib_logging
|
USED_MODULES = lib_xua lib_i2c lib_logging
|
||||||
|
|
||||||
BUILD_FLAGS = -O0 -g -lflash -DXUD_CORE_CLOCK=600 -fxscope -save-temps -march=xs2a -DUSB_TILE=tile[1]
|
BUILD_FLAGS = -O3 -g -lflash -DXUD_CORE_CLOCK=600 -fxscope -save-temps -march=xs2a -DUSB_TILE=tile[1] \
|
||||||
|
-DXUA_ADAT_RX_EN=0 -DXUA_ADAT_TX_EN=0 -DXUA_SPDIF_RX_EN=0 -DXUA_SPDIF_TX_EN=0 -DMIDI=0 \
|
||||||
|
-DSIMULATION=1
|
||||||
|
|
||||||
BUILD_FLAGS_i2s_master_2in_2out_48khz = $(BUILD_FLAGS) \
|
ifndef pcm_format
|
||||||
-D XUA_ADAT_RX_EN=0 -D XUA_ADAT_TX_EN=0 -D XUA_SPDIF_RX_EN=0 -D XUA_SPDIF_TX_EN=0 -D MIDI=0 \
|
$(error pcm_format is not set)
|
||||||
-D NUM_USB_CHAN_IN=2 -D NUM_USB_CHAN_OUT=2 -DI2S_CHANS_ADC=2 -DI2S_CHANS_DAC=2 \
|
endif
|
||||||
-D DEFAULT_FREQ=48000
|
|
||||||
|
|
||||||
BUILD_FLAGS_i2s_slave_2in_2out_48khz = $(BUILD_FLAGS) \
|
ifndef i2s_role
|
||||||
-D XUA_ADAT_RX_EN=0 -D XUA_ADAT_TX_EN=0 -D XUA_SPDIF_RX_EN=0 -D XUA_SPDIF_TX_EN=0 -D MIDI=0 \
|
$(error i2s_role is not set)
|
||||||
-D NUM_USB_CHAN_IN=2 -D NUM_USB_CHAN_OUT=2 -DI2S_CHANS_ADC=2 -DI2S_CHANS_DAC=2 \
|
endif
|
||||||
-D DEFAULT_FREQ=48000 -DCODEC_MASTER=1
|
|
||||||
|
|
||||||
BUILD_FLAGS_i2s_master_2in_2out_192khz = $(BUILD_FLAGS) \
|
ifndef channel_count
|
||||||
-D XUA_ADAT_RX_EN=0 -D XUA_ADAT_TX_EN=0 -D XUA_SPDIF_RX_EN=0 -D XUA_SPDIF_TX_EN=0 -D MIDI=0 \
|
$(error channel_count is not set)
|
||||||
-D NUM_USB_CHAN_IN=2 -D NUM_USB_CHAN_OUT=2 -D I2S_CHANS_ADC=2 -D I2S_CHANS_DAC=2 \
|
endif
|
||||||
-D DEFAULT_FREQ=192000
|
|
||||||
|
|
||||||
BUILD_FLAGS_i2s_slave_2in_2out_192khz = $(BUILD_FLAGS) \
|
ifndef sample_rate
|
||||||
-D XUA_ADAT_RX_EN=0 -D XUA_ADAT_TX_EN=0 -D XUA_SPDIF_RX_EN=0 -D XUA_SPDIF_TX_EN=0 -D MIDI=0 \
|
$(error sample_rate is not set)
|
||||||
-D NUM_USB_CHAN_IN=2 -D NUM_USB_CHAN_OUT=2 -DI2S_CHANS_ADC=2 -DI2S_CHANS_DAC=2 \
|
endif
|
||||||
-D DEFAULT_FREQ=192000 -DCODEC_MASTER=1
|
|
||||||
|
|
||||||
BUILD_FLAGS_i2s_master_8in_8out_48khz = $(BUILD_FLAGS) \
|
ifndef word_length
|
||||||
-D XUA_ADAT_RX_EN=0 -D XUA_ADAT_TX_EN=0 -D XUA_SPDIF_RX_EN=0 -D XUA_SPDIF_TX_EN=0 -D MIDI=0 \
|
$(error word_length is not set)
|
||||||
-D NUM_USB_CHAN_IN=8 -D NUM_USB_CHAN_OUT=8 -D I2S_CHANS_ADC=8 -D I2S_CHANS_DAC=8 \
|
endif
|
||||||
-D DEFAULT_FREQ=48000
|
|
||||||
|
|
||||||
BUILD_FLAGS_i2s_slave_8in_8out_48khz = $(BUILD_FLAGS) \
|
ifeq ($(pcm_format),tdm)
|
||||||
-D XUA_ADAT_RX_EN=0 -D XUA_ADAT_TX_EN=0 -D XUA_SPDIF_RX_EN=0 -D XUA_SPDIF_TX_EN=0 -D MIDI=0 \
|
BUILD_FLAGS += -DXUA_PCM_FORMAT=XUA_PCM_FORMAT_TDM
|
||||||
-D NUM_USB_CHAN_IN=8 -D NUM_USB_CHAN_OUT=8 -D I2S_CHANS_ADC=8 -D I2S_CHANS_DAC=8 \
|
endif
|
||||||
-D DEFAULT_FREQ=48000 -DCODEC_MASTER=1
|
ifeq ($(i2s_role),slave)
|
||||||
|
BUILD_FLAGS += -DCODEC_MASTER=1
|
||||||
|
endif
|
||||||
|
|
||||||
BUILD_FLAGS_i2s_master_8in_8out_192khz = $(BUILD_FLAGS) \
|
XCC_FLAGS_simulation_${pcm_format}_${i2s_role}_$(channel_count)in_$(channel_count)out_$(sample_rate)_$(word_length)bit = $(BUILD_FLAGS) \
|
||||||
-D XUA_ADAT_RX_EN=0 -D XUA_ADAT_TX_EN=0 -D XUA_SPDIF_RX_EN=0 -D XUA_SPDIF_TX_EN=0 -D MIDI=0 \
|
-DNUM_USB_CHAN_IN=${channel_count} \
|
||||||
-D NUM_USB_CHAN_IN=8 -D NUM_USB_CHAN_OUT=8 -D I2S_CHANS_ADC=8 -D I2S_CHANS_DAC=8 \
|
-DNUM_USB_CHAN_OUT=${channel_count} \
|
||||||
-D DEFAULT_FREQ=192000 \
|
-DI2S_CHANS_DAC=${channel_count} \
|
||||||
-O2 # optimisations to meet timing
|
-DI2S_CHANS_ADC=${channel_count} \
|
||||||
|
-DEFAULT_FREQ=${sample_rate}
|
||||||
BUILD_FLAGS_i2s_slave_8in_8out_192khz = $(BUILD_FLAGS) \
|
|
||||||
-D XUA_ADAT_RX_EN=0 -D XUA_ADAT_TX_EN=0 -D XUA_SPDIF_RX_EN=0 -D XUA_SPDIF_TX_EN=0 -D MIDI=0 \
|
|
||||||
-D NUM_USB_CHAN_IN=8 -D NUM_USB_CHAN_OUT=8 -D I2S_CHANS_ADC=8 -D I2S_CHANS_DAC=8 \
|
|
||||||
-D DEFAULT_FREQ=192000 -DCODEC_MASTER=1 \
|
|
||||||
-O2 # optimisations to meet timing
|
|
||||||
|
|
||||||
BUILD_FLAGS_tdm_master_8in_8out_48khz = $(BUILD_FLAGS) -D XUA_PCM_FORMAT=XUA_PCM_FORMAT_TDM \
|
|
||||||
-D XUA_ADAT_RX_EN=0 -D XUA_ADAT_TX_EN=0 -D XUA_SPDIF_RX_EN=0 -D XUA_SPDIF_TX_EN=0 -D MIDI=0 \
|
|
||||||
-D NUM_USB_CHAN_IN=8 -D NUM_USB_CHAN_OUT=8 -D I2S_CHANS_ADC=8 -D I2S_CHANS_DAC=8 \
|
|
||||||
-D DEFAULT_FREQ=48000 \
|
|
||||||
-O2 # optimisations to meet timing
|
|
||||||
|
|
||||||
BUILD_FLAGS_tdm_master_8in_8out_96khz = $(BUILD_FLAGS) -D XUA_PCM_FORMAT=XUA_PCM_FORMAT_TDM \
|
|
||||||
-D XUA_ADAT_RX_EN=0 -D XUA_ADAT_TX_EN=0 -D XUA_SPDIF_RX_EN=0 -D XUA_SPDIF_TX_EN=0 -D MIDI=0 \
|
|
||||||
-D NUM_USB_CHAN_IN=8 -D NUM_USB_CHAN_OUT=8 -D I2S_CHANS_ADC=8 -D I2S_CHANS_DAC=8 \
|
|
||||||
-D DEFAULT_FREQ=96000 \
|
|
||||||
-O3 # optimisations to meet timing
|
|
||||||
|
|
||||||
BUILD_FLAGS_tdm_slave_8in_8out_48khz = $(BUILD_FLAGS) -D XUA_PCM_FORMAT=XUA_PCM_FORMAT_TDM \
|
|
||||||
-D XUA_ADAT_RX_EN=0 -D XUA_ADAT_TX_EN=0 -D XUA_SPDIF_RX_EN=0 -D XUA_SPDIF_TX_EN=0 -D MIDI=0 \
|
|
||||||
-D NUM_USB_CHAN_IN=8 -D NUM_USB_CHAN_OUT=8 -D I2S_CHANS_ADC=8 -D I2S_CHANS_DAC=8 \
|
|
||||||
-D DEFAULT_FREQ=48000 -DCODEC_MASTER=1 \
|
|
||||||
-O2 # optimisations to meet timing
|
|
||||||
|
|
||||||
BUILD_FLAGS_tdm_slave_8in_8out_96khz = $(BUILD_FLAGS) -D XUA_PCM_FORMAT=XUA_PCM_FORMAT_TDM \
|
|
||||||
-D XUA_ADAT_RX_EN=0 -D XUA_ADAT_TX_EN=0 -D XUA_SPDIF_RX_EN=0 -D XUA_SPDIF_TX_EN=0 -D MIDI=0 \
|
|
||||||
-D NUM_USB_CHAN_IN=8 -D NUM_USB_CHAN_OUT=8 -D I2S_CHANS_ADC=8 -D I2S_CHANS_DAC=8 \
|
|
||||||
-D DEFAULT_FREQ=96000 -DCODEC_MASTER=1 \
|
|
||||||
-O2 # optimisations to meet timing
|
|
||||||
|
|
||||||
BUILD_FLAGS_tdm_master_16in_16out_48khz = $(BUILD_FLAGS) -D XUA_PCM_FORMAT=XUA_PCM_FORMAT_TDM \
|
|
||||||
-D XUA_ADAT_RX_EN=0 -D XUA_ADAT_TX_EN=0 -D XUA_SPDIF_RX_EN=0 -D XUA_SPDIF_TX_EN=0 -D MIDI=0 \
|
|
||||||
-D NUM_USB_CHAN_IN=16 -D NUM_USB_CHAN_OUT=16 -D I2S_CHANS_ADC=16 -D I2S_CHANS_DAC=16 \
|
|
||||||
-D DEFAULT_FREQ=48000 \
|
|
||||||
-O2 # optimisations to meet timing
|
|
||||||
|
|
||||||
BUILD_FLAGS_tdm_master_16in_16out_96khz = $(BUILD_FLAGS) -D XUA_PCM_FORMAT=XUA_PCM_FORMAT_TDM \
|
|
||||||
-D XUA_ADAT_RX_EN=0 -D XUA_ADAT_TX_EN=0 -D XUA_SPDIF_RX_EN=0 -D XUA_SPDIF_TX_EN=0 -D MIDI=0 \
|
|
||||||
-D NUM_USB_CHAN_IN=16 -D NUM_USB_CHAN_OUT=16 -D I2S_CHANS_ADC=16 -D I2S_CHANS_DAC=16 \
|
|
||||||
-D DEFAULT_FREQ=96000 \
|
|
||||||
-O2 # optimisations to meet timing
|
|
||||||
|
|
||||||
BUILD_FLAGS_tdm_slave_16in_16out_48khz = $(BUILD_FLAGS) -D XUA_PCM_FORMAT=XUA_PCM_FORMAT_TDM \
|
|
||||||
-D XUA_ADAT_RX_EN=0 -D XUA_ADAT_TX_EN=0 -D XUA_SPDIF_RX_EN=0 -D XUA_SPDIF_TX_EN=0 -D MIDI=0 \
|
|
||||||
-D NUM_USB_CHAN_IN=16 -D NUM_USB_CHAN_OUT=16 -D I2S_CHANS_ADC=16 -D I2S_CHANS_DAC=16 \
|
|
||||||
-D DEFAULT_FREQ=48000 -DCODEC_MASTER=1 \
|
|
||||||
-O2 # optimisations to meet timing
|
|
||||||
|
|
||||||
BUILD_FLAGS_tdm_slave_16in_16out_96khz = $(BUILD_FLAGS) -D XUA_PCM_FORMAT=XUA_PCM_FORMAT_TDM \
|
|
||||||
-D XUA_ADAT_RX_EN=0 -D XUA_ADAT_TX_EN=0 -D XUA_SPDIF_RX_EN=0 -D XUA_SPDIF_TX_EN=0 -D MIDI=0 \
|
|
||||||
-D NUM_USB_CHAN_IN=16 -D NUM_USB_CHAN_OUT=16 -D I2S_CHANS_ADC=16 -D I2S_CHANS_DAC=16 \
|
|
||||||
-D DEFAULT_FREQ=96000 -DCODEC_MASTER=1 \
|
|
||||||
-O2 # optimisations to meet timing
|
|
||||||
|
|
||||||
|
|
||||||
#XCC_FLAGS_hardware_i2s_master_2in_2out_48khz = -D HARDWARE $(BUILD_FLAGS_i2s_master_2in_2out_48khz)
|
|
||||||
#XCC_FLAGS_hardware_i2s_master_2in_2out_192khz = -D HARDWARE $(BUILD_FLAGS_i2s_master_2in_2out_192khz)
|
|
||||||
#XCC_FLAGS_hardware_i2s_master_8in_8out_48khz = -D HARDWARE $(BUILD_FLAGS_i2s_master_8in_8out_48khz)
|
|
||||||
#XCC_FLAGS_hardware_i2s_master_8in_8out_192khz = -D HARDWARE $(BUILD_FLAGS_i2s_master_8in_8out_192khz)
|
|
||||||
#XCC_FLAGS_hardware_tdm_master_8in_8out_48khz = -D HARDWARE $(BUILD_FLAGS_tdm_master_8in_8out_48khz)
|
|
||||||
|
|
||||||
XCC_FLAGS_simulation_i2s_master_2in_2out_48khz = -D SIMULATION $(BUILD_FLAGS_i2s_master_2in_2out_48khz)
|
|
||||||
XCC_FLAGS_simulation_i2s_slave_2in_2out_48khz = -D SIMULATION $(BUILD_FLAGS_i2s_slave_2in_2out_48khz)
|
|
||||||
|
|
||||||
XCC_FLAGS_simulation_i2s_master_2in_2out_192khz = -D SIMULATION $(BUILD_FLAGS_i2s_master_2in_2out_192khz)
|
|
||||||
XCC_FLAGS_simulation_i2s_slave_2in_2out_192khz = -D SIMULATION $(BUILD_FLAGS_i2s_slave_2in_2out_192khz)
|
|
||||||
|
|
||||||
XCC_FLAGS_simulation_i2s_master_8in_8out_48khz = -D SIMULATION $(BUILD_FLAGS_i2s_master_8in_8out_48khz)
|
|
||||||
XCC_FLAGS_simulation_i2s_slave_8in_8out_48khz = -D SIMULATION $(BUILD_FLAGS_i2s_slave_8in_8out_48khz)
|
|
||||||
|
|
||||||
XCC_FLAGS_simulation_i2s_master_8in_8out_192khz = -D SIMULATION $(BUILD_FLAGS_i2s_master_8in_8out_192khz)
|
|
||||||
XCC_FLAGS_simulation_i2s_slave_8in_8out_192khz = -D SIMULATION $(BUILD_FLAGS_i2s_slave_8in_8out_192khz)
|
|
||||||
|
|
||||||
XCC_FLAGS_simulation_tdm_master_8in_8out_48khz = -D SIMULATION $(BUILD_FLAGS_tdm_master_8in_8out_48khz)
|
|
||||||
XCC_FLAGS_simulation_tdm_master_8in_8out_96khz = -D SIMULATION $(BUILD_FLAGS_tdm_master_8in_8out_96khz)
|
|
||||||
XCC_FLAGS_simulation_tdm_slave_8in_8out_48khz = -D SIMULATION $(BUILD_FLAGS_tdm_slave_8in_8out_48khz)
|
|
||||||
XCC_FLAGS_simulation_tdm_slave_8in_8out_96khz = -D SIMULATION $(BUILD_FLAGS_tdm_slave_8in_8out_96khz)
|
|
||||||
|
|
||||||
XCC_FLAGS_simulation_tdm_master_16in_16out_48khz = -D SIMULATION $(BUILD_FLAGS_tdm_master_16in_16out_48khz)
|
|
||||||
XCC_FLAGS_simulation_tdm_master_16in_16out_96khz = -D SIMULATION $(BUILD_FLAGS_tdm_master_16in_16out_96khz)
|
|
||||||
XCC_FLAGS_simulation_tdm_slave_16in_16out_48khz = -D SIMULATION $(BUILD_FLAGS_tdm_slave_16in_16out_48khz)
|
|
||||||
XCC_FLAGS_simulation_tdm_slave_16in_16out_96khz = -D SIMULATION $(BUILD_FLAGS_tdm_slave_16in_16out_96khz)
|
|
||||||
|
|
||||||
XMOS_MAKE_PATH ?= ../..
|
XMOS_MAKE_PATH ?= ../..
|
||||||
-include $(XMOS_MAKE_PATH)/xcommon/module_xcommon/build/Makefile.common
|
-include $(XMOS_MAKE_PATH)/xcommon/module_xcommon/build/Makefile.common
|
||||||
|
|||||||
Reference in New Issue
Block a user