Using the open-source toolchain (OSS)

You can use the open-source toolchain to synthesize custom bitstreams for the C0-microSD. The open-source toolchain includes Yosys, NextPnR and Icestorm. You can install the toolchain by compiling it for your environment, or find pre-compiled binaries here.

PCF file reference

In the Place and Route stage of the workflow, NextPnR can use a .pcf file to describe physical constraints. You can find more information in the NextPnR documentation.

Following is an example .pcf pinout configuration file for the C0-microSD.

#
#	Copyright (c) 2021 – 2024 Signaloid.
#	All rights reserved.
#

set_io		SD_DAT0			A1	# GPIO pin connected to the SD bus DAT0
set_io		SD_DAT1			A2	# GPIO pin connected to the SD bus DAT1
set_io		SD_DAT2			E5	# GPIO pin connected to the SD bus DAT2
set_io		SD_DAT3			F5	# GPIO pin connected to the SD bus DAT3
set_io		SD_CMD			A4	# GPIO pin connected to the SD bus CMD
set_io		SD_CLK			B3	# GPIO pin connected to the SD bus CLK

set_io		LED_GREEN		A5	# Green status LED
set_io		LED_RED			B5	# Red status LED

set_io		CONFIG_MOSI		F1	# MOSI pin of SPI configuration port
set_io		CONFIG_MISO		E1	# MISO pin of SPI configuration port
set_io		CONFIG_SCLK		D1	# Clock pin of SPI configuration port
set_io		CONFIG_CS_N		C1	# Chip select of SPI configuration port (active low)
set_io		CONFIG_CDONE		D3	# Configuration done pin

Generating and flashing your custom bitstream

You can generate the final bitstream configuration for the C0-microSD using the icepack tool, which is part of the Icestorm toolkit. You can find details on how to flash your custom bitstream here.