Components¶
icepack¶
icepack packs and unpacks iCE40 bitstream files. It converts between the
binary .bin format (written to flash) and the text .asc format used
by icetime and icebox:
icepack design.asc design.bin # pack to binary
icepack -u design.bin design.asc # unpack to text
icebox¶
icebox is both a Python library and a collection of command-line utilities
for introspecting iCE40 netlists. It provides:
icebox_chipdb— generate chip database filesicebox_hlc— convert bitstream to high-level connectivity descriptionicebox_stat— print bitstream resource utilisation statisticsicebox_vlog— convert bitstream to Verilog netlist
As a Python library it exposes the full chip database and bitstream manipulation API:
import icebox
ic = icebox.iceconfig()
ic.read_file("design.asc")
icetime¶
icetime performs static timing analysis on an iCE40 .asc bitstream
and reports the maximum clock frequency for each clock domain:
icetime -d hx8k design.asc
icemulti¶
icemulti combines multiple iCE40 bitstreams into a single file for
multi-boot configurations:
icemulti -v -o multi.bin boot0.bin boot1.bin
icepll¶
icepll is an interactive PLL configuration calculator. Given a desired
output frequency it computes the PLL divider settings for the target iCE40
device:
icepll -i 12 -o 48
icebram¶
icebram replaces the BRAM initialisation data in an existing .asc
bitstream without a full re-synthesis, which is useful for updating firmware
images:
icebram firmware_old.hex firmware_new.hex < design.asc > updated.asc