Removed files that are under GNU licenses

This commit is contained in:
Clifford Wolf 2017-08-31 14:55:36 +02:00
parent 7b07cd489d
commit 8354bc6086
8 changed files with 0 additions and 2541 deletions

View File

@ -18,11 +18,6 @@ chipdb-8k.txt: icebox.py iceboxdb.py icebox_chipdb.py
python3 icebox_chipdb.py -8 > chipdb-8k.new
mv chipdb-8k.new chipdb-8k.txt
check: all
python3 tc_xlat_netnames.py
python3 tc_rxlat_netnames.py
python3 tc_logic_xpr.py
clean:
rm -f chipdb-1k.txt chipdb-8k.txt chipdb-384.txt chipdb-5k.txt
rm -f icebox.pyc iceboxdb.pyc
@ -38,8 +33,6 @@ install: all
cp icebox_chipdb.py $(DESTDIR)$(PREFIX)/bin/icebox_chipdb$(PY_EXE)
cp icebox_diff.py $(DESTDIR)$(PREFIX)/bin/icebox_diff$(PY_EXE)
cp icebox_explain.py $(DESTDIR)$(PREFIX)/bin/icebox_explain$(PY_EXE)
cp icebox_asc2hlc.py $(DESTDIR)$(PREFIX)/bin/icebox_asc2hlc$(PY_EXE)
cp icebox_hlc2asc.py $(DESTDIR)$(PREFIX)/bin/icebox_hlc2asc$(PY_EXE)
cp icebox_colbuf.py $(DESTDIR)$(PREFIX)/bin/icebox_colbuf$(PY_EXE)
cp icebox_html.py $(DESTDIR)$(PREFIX)/bin/icebox_html$(PY_EXE)
cp icebox_maps.py $(DESTDIR)$(PREFIX)/bin/icebox_maps$(PY_EXE)
@ -52,8 +45,6 @@ uninstall:
rm -f $(DESTDIR)$(PREFIX)/bin/icebox_chipdb$(PY_EXE)
rm -f $(DESTDIR)$(PREFIX)/bin/icebox_diff$(PY_EXE)
rm -f $(DESTDIR)$(PREFIX)/bin/icebox_explain$(PY_EXE)
rm -f $(DESTDIR)$(PREFIX)/bin/icebox_asc2hlc$(PY_EXE)
rm -f $(DESTDIR)$(PREFIX)/bin/icebox_hlc2asc$(PY_EXE)
rm -f $(DESTDIR)$(PREFIX)/bin/icebox_colbuf$(PY_EXE)
rm -f $(DESTDIR)$(PREFIX)/bin/icebox_html$(PY_EXE)
rm -f $(DESTDIR)$(PREFIX)/bin/icebox_maps$(PY_EXE)

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,42 +0,0 @@
# Test case for `icebox_asc2hlc' and `icebox_hlc2asc': Does conversion
# from LUT strings to logic expressions and back work correctly?
# Copyright (C) 2017 Roland Lutz
#
# This program is free software: you can redistribute it and/or
# modify it under the terms of the GNU General Public License as
# published by the Free Software Foundation, either version 3 of
# the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
import sys
import icebox
from icebox_asc2hlc import lut_to_logic_expression
from icebox_hlc2asc import logic_expression_to_lut
def main():
sys.stderr.write("testing conversion from LUT strings "
"to logic expressions and back")
for i in range(65536):
if i % 4096 == 0:
sys.stderr.write(".")
sys.stderr.flush()
lut = bin(i)[2:].zfill(16)
s = lut_to_logic_expression(lut, ('a', 'b', 'c', 'd'))
l = logic_expression_to_lut(s, ('a', 'b', 'c', 'd'))
if l != lut:
sys.stderr.write("\nERROR at LUT = %s\n" % lut)
sys.stderr.write("stringified = %s\n" % s)
sys.stderr.write("resulting LUT = %s\n" % l)
sys.exit(1)
sys.stderr.write("\n")
if __name__ == '__main__':
main()

View File

@ -1,69 +0,0 @@
# Test case for `icebox_hlc2asc': Does net name translation work correctly?
# Copyright (C) 2017 Roland Lutz
#
# This program is free software: you can redistribute it and/or
# modify it under the terms of the GNU General Public License as
# published by the Free Software Foundation, either version 3 of
# the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
import sys
import icebox
from icebox_asc2hlc import translate_netname
from icebox_hlc2asc import untranslate_netname
def test_netname_translation(ic):
sys.stderr.write("testing backward netname translation "
"for the `%s' device...\n" % ic.device)
all_tiles = set()
for x in range(ic.max_x + 1):
for y in range(ic.max_y + 1):
if ic.tile(x, y) is not None:
all_tiles.add((x, y))
netnames = set()
failed = False
for group in ic.group_segments(all_tiles, connect_gb = False):
is_span = set(net.startswith('sp') for x, y, net in group)
assert len(is_span) == 1
if True not in is_span:
# only span nets are interesting here
continue
netname = translate_netname(group[0][0], group[0][1],
ic.max_x - 1, ic.max_y - 1, group[0][2])
if netname in netnames:
failed = True
print("duplicate netname: %s" % netname)
netnames.add(netname)
for x, y, net in group:
s = untranslate_netname(x, y, ic.max_x - 1, ic.max_y - 1, netname)
if s != net:
failed = True
print("%-20s %s -> %s" % ("%d %d %s" % (x, y, net), netname, s))
if failed:
sys.stderr.write("ERROR\n")
sys.exit(1)
def main():
ic = icebox.iceconfig()
ic.setup_empty_384()
test_netname_translation(ic)
ic = icebox.iceconfig()
ic.setup_empty_1k()
test_netname_translation(ic)
ic = icebox.iceconfig()
ic.setup_empty_8k()
test_netname_translation(ic)
if __name__ == '__main__':
main()

View File

@ -1,79 +0,0 @@
# Test case for `icebox_asc2hlc': Does net name translation work correctly?
# Copyright (C) 2017 Roland Lutz
#
# This program is free software: you can redistribute it and/or
# modify it under the terms of the GNU General Public License as
# published by the Free Software Foundation, either version 3 of
# the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
import sys
import icebox
from icebox_asc2hlc import translate_netname
def test_netname_translation(ic):
sys.stderr.write("testing forward netname translation "
"for the `%s' device...\n" % ic.device)
all_tiles = set()
for x in range(ic.max_x + 1):
for y in range(ic.max_y + 1):
if ic.tile(x, y) is not None:
all_tiles.add((x, y))
netnames = set()
failed = False
for group in ic.group_segments(all_tiles, connect_gb = False):
is_span = set(net.startswith('sp') for x, y, net in group)
assert len(is_span) == 1
if True not in is_span:
# only span nets are interesting here
continue
s = set()
for seg in group:
s.add(translate_netname(seg[0], seg[1],
ic.max_x - 1, ic.max_y - 1, seg[2]))
if len(s) != 1:
failed = True
print("translated netnames don't match")
for seg in group:
print("%d %d %s" % seg, "->",
translate_netname(seg[0], seg[1],
ic.max_x - 1, ic.max_y - 1, seg[2]))
print()
for dulpicate_netname in netnames.intersection(s):
failed = True
print("duplicate netname: %s" % dulpicate_netname)
for seg in group:
print("%d %d %s" % seg, "->",
translate_netname(seg[0], seg[1],
ic.max_x - 1, ic.max_y - 1, seg[2]))
print()
netnames.update(s)
if failed:
sys.stderr.write("ERROR\n")
sys.exit(1)
def main():
ic = icebox.iceconfig()
ic.setup_empty_384()
test_netname_translation(ic)
ic = icebox.iceconfig()
ic.setup_empty_1k()
test_netname_translation(ic)
ic = icebox.iceconfig()
ic.setup_empty_8k()
test_netname_translation(ic)
if __name__ == '__main__':
main()

View File

@ -24,12 +24,9 @@ iceprog$(EXE): iceprog.o
install: all
mkdir -p $(DESTDIR)$(PREFIX)/bin
cp iceprog$(EXE) $(DESTDIR)$(PREFIX)/bin/iceprog$(EXE)
mkdir -p $(DESTDIR)$(PREFIX)/share/man/man1
install -c -m 644 iceprog.1 $(DESTDIR)$(PREFIX)/share/man/man1
uninstall:
rm -f $(DESTDIR)$(PREFIX)/bin/iceprog$(EXE)
rm -f $(DESTDIR)$(PREFIX)/share/man/man1/iceprog.1
clean:
rm -f iceprog

View File

@ -1,155 +0,0 @@
.\" Manpage for iceprog(1)
.\" Copyright (C) 2017 Roland Lutz
.\"
.\" Permission is granted to copy, distribute and/or modify this document
.\" under the terms of the GNU Free Documentation License, Version 1.3 or
.\" any later version published by the Free Software Foundation; with no
.\" Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
.\"
.TH ICEPROG "1" "June 2017" "IceStorm" "User Commands"
.SH NAME
iceprog \- simple programming tool for FTDI\-based Lattice iCE programmers
.SH SYNOPSIS
.B iceprog
[\-b|\-n|\-c] \fIINPUT\-FILE\fR
.B iceprog
\-r|\-R\fI\,BYTES\fR \fIOUTPUT\-FILE\fR
.B iceprog
\-S \fIINPUT\-FILE\fR
.B iceprog
\-t
.SH DESCRIPTION
The \fBiceprog\fR program is a simple programming tool for FTDI\-based
Lattice iCE programmers which can read, write and erase the flash and
write the SRAM of an FPGA. It is typically invoked after the
bitstream has been converted by \fBicepack\fR to the iCE40 \fB.bin\fR
format as the last step of the build process to transfer the bitstream
to the FPGA.
.SS Operation mode
When no special option is given, \fBiceprog\fR erases all 64kB sectors
which would be touched by the written data, writes the data to the
flash, and then reads it back and verifies it.
\fIPlease note:\fR If the data is not aligned to 64kB, some data
before (if \fB\-o\fR is used) and after the written data may be erased
as well.
The way the flash is erased can be changed with the following options:
.TP
\fB\-b\fR
Bulk erase the entire flash before writing. When using this option,
\fBiceprog\fR can be invoked without an \fIINPUT\-FILE\fR; in this
case, the flash is just bulk erased, and nothing is written.
.TP
\fB\-n\fR
Don't erase the flash before writing.
.PP
Instead of the default erase/write/verify, \fBiceprog\fR can perform
some other operations:
.TP
\fB\-c\fR
Just read the data which would have been written from the flash and
verify it (`check').
.TP
\fB\-r\fR
Read the first 256 kB from flash and write them to a file.
.TP
\fB\-R\fR \fISIZE\-IN\-BYTES\fR
Read the specified number of bytes from the flash and write them to a
file. You can append `\fBk\fR' to the size to specify it in kilobytes
and `\fBM\fR' to specify it in megabytes.
.TP
\fB\-S\fR
Perform SRAM programming.
.TP
\fB\-t\fR
Just read the flash ID sequence.
.PP
All of the above options are mutually exclusive.
.SS General options
.TP
\fB\-d\fR \fIDEVICE\-STRING\fR
Use the specified USB device instead of the default one (which is
vendor ID 0x0403 and device ID 0x6010). The supported notations for
\fIDEVICE\-STRING\fR are:
\fBd:\,\f(BIdevicenode\fR \- path of the bus and device node within
USB device tree (usually at /proc/bus/usb/); e.g., `d:002/005'
\fBi:\,\f(BIvendor\/\fB:\,\f(BIproduct\fR \- first device with given
vendor and product ID. IDs can be decimal, octal (preceded by
`\fB0\fR'), or hex (preceded by `\fB0x\fR'); e.g., `i:0x0403:0x6010'
\fBi:\,\f(BIvendor\/\fB:\,\f(BIproduct\/\fB:\,\f(BIindex\fR \- same as
above, with index being the number of the device (starting with 0) if
there is more than one device with this vendor and product ID; e.g.,
`i:0x0403:0x6010:0'
\fBs:\,\f(BIvendor\/\fB:\,\f(BIproduct\/\fB:\,\f(BIserial\-string\fR
\- first device with given vendor ID, product ID and serial string.
.TP
\fB\-I\fR A|B|C|D
Connect to the specified interface on the FTDI chip. If this option
is omitted, interface A is used.
.TP
\fB\-o\fR \fIOFFSET\-IN\-BYTES\fR
Start reading/writing at address \fIOFFSET\-IN\-BYTES\fR instead of the
beginning of the memory. You can append `\fBk\fR' to the offset to
specify it in kilobytes and `\fBM\fR' to specify it in megabytes.
.TP
\fB\-v\fR
Write more verbose messages.
.TP
\fB\-\-help\fR
Display a help text and exit.
.SS Exit status
.TP
.B 0
on success,
.TP
.B 1
if a non\-hardware error occurred (e.g., failure to read from or write
to a file, or invoked with invalid options),
.TP
.B 2
if communication with the hardware failed (e.g., cannot find the iCE
FTDI USB device),
.TP
.B 3
if verification of the data failed.
.SS Notes for iCEstick (iCE40HX\-1k devel board)
An unmodified iCEstick can only be programmed via the serial flash.
Direct programming of the SRAM is not supported. For direct SRAM
programming the flash chip and one zero ohm resistor must be
desoldered and the FT2232H SI pin must be connected to the iCE SPI_SI
pin, as shown in this picture:
<http://www.clifford.at/gallery/2014-elektronik/IMG_20141115_183838>
.SS Notes for the iCE40\-HX8K Breakout Board
Make sure that the jumper settings on the board match the selected
mode (SRAM or FLASH). See the iCE40\-HX8K user manual for details.
.SH AUTHOR
Written by Clifford Wolf.
.SH REPORTING BUGS
If you have a bug report, please file an issue on github:
<https://github.com/cliffordwolf/icestorm/issues>
.SH COPYRIGHT
Most of Project IceStorm is licensed under the ISC license:
Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted, provided that the above
copyright notice and this permission notice appear in all copies.
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
.SH SEE ALSO
Full documentation at: <http://hedmen.org/icestorm-doc/>
.br
or available locally via: info \(aq(icestorm) iceprog invocation\(aq