Browse Source

Integrate FTD3xx lib and clean up old stuff

master
Konrad Beckmann 2 years ago
parent
commit
10bbceaff8
119 changed files with 310 additions and 82401 deletions
  1. +1
    -1
      3rdparty/D3XXPython_Release1.0/ftd3xx/__init__.py
  2. +3
    -2
      3rdparty/D3XXPython_Release1.0/ftd3xx/_ftd3xx_linux.py
  3. +89
    -91
      3rdparty/D3XXPython_Release1.0/ftd3xx/ftd3xx.py
  4. +0
    -14
      gateware/bootloader/.floorplanner.ini
  5. +0
    -9
      gateware/bootloader/.run_manager.ini
  6. +0
    -4
      gateware/bootloader/.setting.ini
  7. +0
    -3
      gateware/bootloader/.spread_sheet.ini
  8. +0
    -78
      gateware/bootloader/.spreadsheet_view.ini
  9. +0
    -15
      gateware/bootloader/Makefile
  10. +0
    -13
      gateware/bootloader/Untitled.tpf
  11. +0
    -12297
      gateware/bootloader/bootloader.svf
  12. +0
    -46
      gateware/bootloader/bootloader/.build_status
  13. +0
    -1
      gateware/bootloader/bootloader/.vdbs/dbStat.txt
  14. BIN
      gateware/bootloader/bootloader/.vdbs/kilsyth_bootloader_map.vdb
  15. BIN
      gateware/bootloader/bootloader/.vdbs/kilsyth_top_rtl.vdb
  16. BIN
      gateware/bootloader/bootloader/.vdbs/kilsyth_top_tech.vdb
  17. +0
    -14
      gateware/bootloader/bootloader/Untitled.tpf.prf
  18. +0
    -46
      gateware/bootloader/bootloader/Untitled.tpf.prf_cdmp
  19. +0
    -13
      gateware/bootloader/bootloader/Untitled.tpf.prf_cdmp0
  20. +0
    -46
      gateware/bootloader/bootloader/Untitled.tpf.prf_cdmp2
  21. +0
    -1003
      gateware/bootloader/bootloader/Untitled.tpf_hold.html
  22. +0
    -1224
      gateware/bootloader/bootloader/Untitled.tpf_setup.html
  23. +0
    -69
      gateware/bootloader/bootloader/automake.err
  24. +0
    -649
      gateware/bootloader/bootloader/automake.log
  25. +0
    -56
      gateware/bootloader/bootloader/bootloader.xcf
  26. +0
    -9
      gateware/bootloader/bootloader/hdla_gen_hierarchy.html
  27. +0
    -41
      gateware/bootloader/bootloader/kilsyth_bootloader.alt
  28. +0
    -19
      gateware/bootloader/bootloader/kilsyth_bootloader.arearep
  29. +0
    -75
      gateware/bootloader/bootloader/kilsyth_bootloader.bgn
  30. BIN
      gateware/bootloader/bootloader/kilsyth_bootloader.bit
  31. BIN
      gateware/bootloader/bootloader/kilsyth_bootloader.dir/5_1.ncd
  32. +0
    -328
      gateware/bootloader/bootloader/kilsyth_bootloader.dir/5_1.pad
  33. +0
    -222
      gateware/bootloader/bootloader/kilsyth_bootloader.dir/5_1.par
  34. +0
    -55
      gateware/bootloader/bootloader/kilsyth_bootloader.dir/5_1_par.asd
  35. +0
    -25
      gateware/bootloader/bootloader/kilsyth_bootloader.dir/kilsyth_bootloader.par
  36. +0
    -1
      gateware/bootloader/bootloader/kilsyth_bootloader.drc
  37. +0
    -95
      gateware/bootloader/bootloader/kilsyth_bootloader.ior
  38. +0
    -4
      gateware/bootloader/bootloader/kilsyth_bootloader.log
  39. +0
    -4
      gateware/bootloader/bootloader/kilsyth_bootloader.lpf
  40. +0
    -1827
      gateware/bootloader/bootloader/kilsyth_bootloader.lsedata
  41. +0
    -36427
      gateware/bootloader/bootloader/kilsyth_bootloader.mcs
  42. +0
    -270
      gateware/bootloader/bootloader/kilsyth_bootloader.mrp
  43. +0
    -9
      gateware/bootloader/bootloader/kilsyth_bootloader.mt
  44. BIN
      gateware/bootloader/bootloader/kilsyth_bootloader.ncd
  45. BIN
      gateware/bootloader/bootloader/kilsyth_bootloader.ngd
  46. +0
    -9
      gateware/bootloader/bootloader/kilsyth_bootloader.p2t
  47. +0
    -5
      gateware/bootloader/bootloader/kilsyth_bootloader.p3t
  48. +0
    -328
      gateware/bootloader/bootloader/kilsyth_bootloader.pad
  49. +0
    -247
      gateware/bootloader/bootloader/kilsyth_bootloader.par
  50. +0
    -51
      gateware/bootloader/bootloader/kilsyth_bootloader.prf
  51. +0
    -10
      gateware/bootloader/bootloader/kilsyth_bootloader.pt
  52. +0
    -8
      gateware/bootloader/bootloader/kilsyth_bootloader.t2b
  53. +0
    -375
      gateware/bootloader/bootloader/kilsyth_bootloader.tw1
  54. +0
    -1296
      gateware/bootloader/bootloader/kilsyth_bootloader.twr
  55. +0
    -141
      gateware/bootloader/bootloader/kilsyth_bootloader_bgn.html
  56. +0
    -160
      gateware/bootloader/bootloader/kilsyth_bootloader_iotiming.html
  57. +0
    -41
      gateware/bootloader/bootloader/kilsyth_bootloader_lattice.synproj
  58. +0
    -31
      gateware/bootloader/bootloader/kilsyth_bootloader_map.asd
  59. +0
    -51
      gateware/bootloader/bootloader/kilsyth_bootloader_map.cam
  60. +0
    -10
      gateware/bootloader/bootloader/kilsyth_bootloader_map.hrr
  61. BIN
      gateware/bootloader/bootloader/kilsyth_bootloader_map.ncd
  62. +0
    -312
      gateware/bootloader/bootloader/kilsyth_bootloader_mrp.html
  63. +0
    -393
      gateware/bootloader/bootloader/kilsyth_bootloader_pad.html
  64. +0
    -316
      gateware/bootloader/bootloader/kilsyth_bootloader_par.html
  65. +0
    -83
      gateware/bootloader/bootloader/kilsyth_bootloader_summary.html
  66. +0
    -11
      gateware/bootloader/bootloader/kilsyth_bootloader_trce.asd
  67. +0
    -454
      gateware/bootloader/bootloader/kilsyth_bootloader_tw1.html
  68. +0
    -1370
      gateware/bootloader/bootloader/kilsyth_bootloader_twr.html
  69. +0
    -1138
      gateware/bootloader/bootloader/kilsyth_bootloader_vho.sdf
  70. +0
    -3223
      gateware/bootloader/bootloader/kilsyth_bootloader_vho.vho
  71. +0
    -18
      gateware/bootloader/bootloader/kilsyth_top_drc.log
  72. +0
    -295
      gateware/bootloader/bootloader/kilsyth_top_lse.twr
  73. +0
    -360
      gateware/bootloader/bootloader/kilsyth_top_lse_lsetwr.html
  74. +0
    -330
      gateware/bootloader/bootloader/kilsyth_top_prim.v
  75. +0
    -183
      gateware/bootloader/bootloader/message.xml
  76. +0
    -6
      gateware/bootloader/bootloader/reveal_debug.log
  77. +0
    -208
      gateware/bootloader/bootloader/synthesis.log
  78. +0
    -273
      gateware/bootloader/bootloader/synthesis_lse.html
  79. +0
    -16
      gateware/bootloader/bootloader/top_drc.log
  80. +0
    -205
      gateware/bootloader/bootloader/top_lse.twr
  81. +0
    -270
      gateware/bootloader/bootloader/top_lse_lsetwr.html
  82. +0
    -194
      gateware/bootloader/bootloader/top_prim.v
  83. +0
    -98
      gateware/bootloader/bootloader/xxx_lse_cp_file_list
  84. +0
    -98
      gateware/bootloader/bootloader/xxx_lse_sign_file
  85. +0
    -1
      gateware/bootloader/kilsyth.ccl
  86. +0
    -17
      gateware/bootloader/kilsyth.ldf
  87. +0
    -80
      gateware/bootloader/kilsyth.lpf
  88. +0
    -203
      gateware/bootloader/kilsyth1.sty
  89. +0
    -12297
      gateware/bootloader/kilsyth_bootloader.svf
  90. +0
    -116
      gateware/bootloader/kilsyth_tcl.html
  91. +0
    -5
      gateware/bootloader/kilsyth_tcr.dir/pn181211203906.tcr
  92. +0
    -4
      gateware/bootloader/kilsyth_tcr.dir/pn181218235555.tcr
  93. +0
    -9
      gateware/bootloader/kilsyth_tcr.dir/pn181219000127.tcr
  94. +0
    -21
      gateware/bootloader/kilsyth_tcr.dir/pn181219004634.tcr
  95. +0
    -38
      gateware/bootloader/kilsyth_tcr.dir/pn181221014025.tcr
  96. +0
    -6
      gateware/bootloader/promote.xml
  97. +0
    -10
      gateware/bootloader/reportview.xml
  98. +0
    -143
      gateware/bootloader/src/kilsyth_top.v
  99. +0
    -7
      software/ft600_test/linux-x86_64/51-ftd3xx.rules
  100. +0
    -65
      software/ft600_test/linux-x86_64/Makefile

+ 1
- 1
3rdparty/D3XXPython_Release1.0/ftd3xx/__init__.py View File

@ -1,5 +1,5 @@
import sys
from ftd3xx import *
from .ftd3xx import *
__all__ = [ 'call_ft',
'listDevices',


+ 3
- 2
3rdparty/D3XXPython_Release1.0/ftd3xx/_ftd3xx_linux.py View File

@ -1,6 +1,6 @@
import sys
from ctypes import *
from defines import *
from .defines import *
STRING = c_char_p
@ -16,7 +16,8 @@ LONG = c_long
UINT = c_uint
LPSTR = STRING
_libname = 'libftd3xx.so'
# TODO: Ugly way to find the library
_libname = '../3rdparty/linux-x86_64/libftd3xx.so'
_libraries = {}
_libraries[_libname] = CDLL(_libname)


+ 89
- 91
3rdparty/D3XXPython_Release1.0/ftd3xx/ftd3xx.py View File

@ -1,14 +1,12 @@
import sys
if sys.platform == 'win32':
import _ftd3xx_win32 as _ft
from ._ftd3xx_win32 import *
elif sys.platform == 'linux':
import _ftd3xx_linux as _ft
from ._ftd3xx_linux import *
import ctypes as c
import threading
import time
from defines import *
from .defines import *
msgs = [
'FT_OK',
@ -60,7 +58,7 @@ def call_ft(function, *args):
"""Call an FTDI function and check the status. Raise exception on error"""
status = function(*args)
if len(bRaiseExceptionOnError) > 0:
if status != _ft.FT_OK:
if status != FT_OK:
raise DeviceError(status)
return status
@ -79,43 +77,43 @@ def getStrError(status):
"""Return string equivalent for error status"""
return msgs[status]
def listDevices(flags=_ft.FT_OPEN_BY_DESCRIPTION):
def listDevices(flags=FT_OPEN_BY_DESCRIPTION):
"""Return a list of serial numbers(default), descriptions or
locations (Windows only) of the connected FTDI devices depending on value of flags"""
n = _ft.DWORD()
call_ft(_ft.FT_ListDevices, c.byref(n), None, _ft.DWORD(FT_LIST_NUMBER_ONLY))
n = DWORD()
call_ft(FT_ListDevices, c.byref(n), None, DWORD(FT_LIST_NUMBER_ONLY))
devcount = n.value
if devcount:
if flags == _ft.FT_OPEN_BY_INDEX:
flags = _ft.FT_OPEN_BY_DESCRIPTION
if flags == FT_OPEN_BY_INDEX:
flags = FT_OPEN_BY_DESCRIPTION
# since ctypes has no pointer arithmetic.
bd = [c.c_buffer(FT_MAX_DESCRIPTION_SIZE) for i in range(devcount)] + [None]
# array of pointers to those strings, initially all NULL
ba = (c.c_char_p *(devcount + 1))()
for i in range(devcount):
ba[i] = c.cast(bd[i], c.c_char_p)
call_ft(_ft.FT_ListDevices, ba, c.byref(n), _ft.DWORD(FT_LIST_ALL|flags))
call_ft(FT_ListDevices, ba, c.byref(n), DWORD(FT_LIST_ALL|flags))
return [res for res in ba[:devcount]]
else:
return None
def createDeviceInfoList():
"""Create the internal device info list and return number of entries"""
numDevices = _ft.DWORD()
call_ft(_ft.FT_CreateDeviceInfoList, c.byref(numDevices))
numDevices = DWORD()
call_ft(FT_CreateDeviceInfoList, c.byref(numDevices))
return numDevices.value
def getDeviceInfoList():
"""Get device info list and return number of entries"""
numDevices = _ft.DWORD()
call_ft(_ft.FT_ListDevices, c.byref(numDevices), None, _ft.DWORD(FT_LIST_NUMBER_ONLY))
numDevices = DWORD()
call_ft(FT_ListDevices, c.byref(numDevices), None, DWORD(FT_LIST_NUMBER_ONLY))
numDevices = numDevices.value
if numDevices == 0:
return None
"""Use getDeviceInfoDetail instead"""
deviceList = []
for i in range(numDevices):
device = _ft.FT_DEVICE_LIST_INFO_NODE()
device = FT_DEVICE_LIST_INFO_NODE()
deviceInfo = getDeviceInfoDetail(i)
device.Flags = deviceInfo['Flags']
device.ID = deviceInfo['ID']
@ -127,18 +125,18 @@ def getDeviceInfoList():
def getDeviceInfoDetail(devnum=0):
"""Get an entry from the internal device info list."""
f = _ft.DWORD()
t = _ft.DWORD()
i = _ft.DWORD()
l = _ft.DWORD()
h = _ft.FT_HANDLE()
f = DWORD()
t = DWORD()
i = DWORD()
l = DWORD()
h = FT_HANDLE()
n = c.c_buffer(FT_MAX_DESCRIPTION_SIZE)
d = c.c_buffer(FT_MAX_DESCRIPTION_SIZE)
call_ft(_ft.FT_GetDeviceInfoDetail, _ft.DWORD(devnum),
call_ft(FT_GetDeviceInfoDetail, DWORD(devnum),
c.byref(f), c.byref(t), c.byref(i), c.byref(l), n, d, c.byref(h))
if sys.platform == 'linux':
"""Linux creates a handle to the device so close it. D3XX Linux driver issue."""
call_ft(_ft.FT_Close, h)
call_ft(FT_Close, h)
return {'Flags': f.value,
'Type': t.value,
'ID': i.value,
@ -149,16 +147,16 @@ def getDeviceInfoDetail(devnum=0):
def create(id_str, flags=FT_OPEN_BY_INDEX):
"""Open a handle to a usb device by serial number, description or
index depending on value of flags and return an FTD3XX instance for it"""
h = _ft.FT_HANDLE()
status = call_ft(_ft.FT_Create, id_str, _ft.DWORD(flags), c.byref(h))
if (status != _ft.FT_OK):
h = FT_HANDLE()
status = call_ft(FT_Create, id_str, DWORD(flags), c.byref(h))
if (status != FT_OK):
return None
return FTD3XX(h)
def setTransferParams(conf, fifo):
"""Set transfer parameters for Linux only"""
if sys.platform == 'linux':
call_ft(_ft.FT_SetTransferParams, c.byref(conf), fifo)
call_ft(FT_SetTransferParams, c.byref(conf), fifo)
return None
@ -175,7 +173,7 @@ class FTD3XX(object):
def close(self, noreset=False):
"""Close the device handle"""
self.status = call_ft(_ft.FT_Close, self.handle)
self.status = call_ft(FT_Close, self.handle)
return None
def getLastError(self):
@ -184,16 +182,16 @@ class FTD3XX(object):
def flushPipe(self, pipe):
"""Flush pipe"""
self.status = call_ft(_ft.FT_FlushPipe, self.handle, _ft.UCHAR(pipe))
self.status = call_ft(FT_FlushPipe, self.handle, UCHAR(pipe))
return None
def getDeviceInfo(self):
"""Returns a dictionary describing the device. """
deviceType = _ft.DWORD()
deviceId = _ft.DWORD()
deviceType = DWORD()
deviceId = DWORD()
desc = c.c_buffer(FT_MAX_DESCRIPTION_SIZE)
serial = c.c_buffer(FT_MAX_DESCRIPTION_SIZE)
self.status = call_ft(_ft.FT_GetDeviceInfo, self.handle, c.byref(deviceType), c.byref(deviceId), serial, desc, None)
self.status = call_ft(FT_GetDeviceInfo, self.handle, c.byref(deviceType), c.byref(deviceId), serial, desc, None)
return {'Type': deviceType.value,
'ID': deviceId.value,
'Description': desc.value,
@ -201,95 +199,95 @@ class FTD3XX(object):
def getDeviceDescriptor(self):
"""Returns a dictionary describing the device descriptor. """
devDesc = _ft.FT_DEVICE_DESCRIPTOR()
self.status = call_ft(_ft.FT_GetDeviceDescriptor, self.handle, c.byref(devDesc))
devDesc = FT_DEVICE_DESCRIPTOR()
self.status = call_ft(FT_GetDeviceDescriptor, self.handle, c.byref(devDesc))
return devDesc
def getStringDescriptor(self, index):
"""Returns a string descriptor. """
strDesc = _ft.FT_STRING_DESCRIPTOR()
lenTransferred = _ft.ULONG()
self.status = call_ft(_ft.FT_GetDescriptor, self.handle, _ft.UCHAR(FT_STRING_DESCRIPTOR_TYPE), _ft.UCHAR(index), c.pointer(strDesc), c.sizeof(strDesc), c.byref(lenTransferred))
strDesc = FT_STRING_DESCRIPTOR()
lenTransferred = ULONG()
self.status = call_ft(FT_GetDescriptor, self.handle, UCHAR(FT_STRING_DESCRIPTOR_TYPE), UCHAR(index), c.pointer(strDesc), c.sizeof(strDesc), c.byref(lenTransferred))
return strDesc
def getConfigurationDescriptor(self):
"""Returns a dictionary describing the configuration descriptor. """
cfgDesc = _ft.FT_CONFIGURATION_DESCRIPTOR()
self.status = call_ft(_ft.FT_GetConfigurationDescriptor, self.handle, c.byref(cfgDesc))
cfgDesc = FT_CONFIGURATION_DESCRIPTOR()
self.status = call_ft(FT_GetConfigurationDescriptor, self.handle, c.byref(cfgDesc))
return cfgDesc
def getInterfaceDescriptor(self, interfaceIndex):
"""Returns a dictionary describing the interface descriptor for the specified index. """
ifDesc = _ft.FT_INTERFACE_DESCRIPTOR()
self.status = call_ft(_ft.FT_GetInterfaceDescriptor, self.handle, _ft.UCHAR(interfaceIndex), c.byref(ifDesc))
ifDesc = FT_INTERFACE_DESCRIPTOR()
self.status = call_ft(FT_GetInterfaceDescriptor, self.handle, UCHAR(interfaceIndex), c.byref(ifDesc))
return ifDesc
def getPipeInformation(self, interfaceIndex, pipeIndex):
"""Returns a dictionary describing the pipe infromationfor the specified indexes. """
pipeDesc = _ft.FT_PIPE_INFORMATION()
self.status = call_ft(_ft.FT_GetPipeInformation, self.handle, _ft.UCHAR(interfaceIndex), _ft.UCHAR(pipeIndex), c.byref(pipeDesc))
pipeDesc = FT_PIPE_INFORMATION()
self.status = call_ft(FT_GetPipeInformation, self.handle, UCHAR(interfaceIndex), UCHAR(pipeIndex), c.byref(pipeDesc))
return pipeDesc
def getChipConfiguration(self):
"""Returns a dictionary describing the chip configuration. """
chipCfg = _ft.FT_60XCONFIGURATION()
self.status = call_ft(_ft.FT_GetChipConfiguration, self.handle, c.byref(chipCfg))
chipCfg = FT_60XCONFIGURATION()
self.status = call_ft(FT_GetChipConfiguration, self.handle, c.byref(chipCfg))
return chipCfg
def setChipConfiguration(self, chipCfg):
"""Sets a chip configuration. """
self.status = call_ft(_ft.FT_SetChipConfiguration, self.handle, c.byref(chipCfg))
self.status = call_ft(FT_SetChipConfiguration, self.handle, c.byref(chipCfg))
return None
def getVIDPID(self):
"""Get the VID and PID of the device"""
vid = _ft.USHORT()
pid = _ft.USHORT()
self.status = call_ft(_ft.FT_GetVIDPID, self.handle, c.byref(vid), c.byref(pid))
vid = USHORT()
pid = USHORT()
self.status = call_ft(FT_GetVIDPID, self.handle, c.byref(vid), c.byref(pid))
return (vid.value, pid.value)
def getLibraryVersion(self):
"""Get the version of the user driver library"""
libraryVer = _ft.DWORD()
self.status = call_ft(_ft.FT_GetLibraryVersion, c.byref(libraryVer))
libraryVer = DWORD()
self.status = call_ft(FT_GetLibraryVersion, c.byref(libraryVer))
return libraryVer.value
def getDriverVersion(self):
"""Get the version of the kernel driver"""
driverVer = _ft.DWORD()
self.status = call_ft(_ft.FT_GetDriverVersion, self.handle, c.byref(driverVer))
driverVer = DWORD()
self.status = call_ft(FT_GetDriverVersion, self.handle, c.byref(driverVer))
return driverVer.value
def getFirmwareVersion(self):
"""Get the version of the firmware"""
firmwareVer = _ft.DWORD()
self.status = call_ft(_ft.FT_GetFirmwareVersion, self.handle, c.byref(firmwareVer))
firmwareVer = DWORD()
self.status = call_ft(FT_GetFirmwareVersion, self.handle, c.byref(firmwareVer))
return firmwareVer.value
def resetDevicePort(self):
"""Reset port where device is connected"""
self.status = call_ft(_ft.FT_ResetDevicePort, self.handle)
self.status = call_ft(FT_ResetDevicePort, self.handle)
return None
def enableGPIO(self, mask, direction):
"""Enable GPIO"""
self.status = call_ft(_ft.FT_EnableGPIO, self.handle, _ft.ULONG(mask), _ft.ULONG(direction))
self.status = call_ft(FT_EnableGPIO, self.handle, ULONG(mask), ULONG(direction))
return None
def writeGPIO(self, mask, data):
"""Write GPIO"""
self.status = call_ft(_ft.FT_WriteGPIO, self.handle, _ft.ULONG(mask), _ft.ULONG(data))
self.status = call_ft(FT_WriteGPIO, self.handle, ULONG(mask), ULONG(data))
return None
def readGPIO(self):
"""Read GPIO"""
gpio = _ft.ULONG()
self.status = call_ft(_ft.FT_ReadGPIO, self.handle, c.byref(gpio))
gpio = ULONG()
self.status = call_ft(FT_ReadGPIO, self.handle, c.byref(gpio))
return gpio.value
def setGPIOPull(self, mask, pull):
"""Set GPIO pull"""
self.status = call_ft(_ft.FT_SetGPIOPull, self.handle, _ft.ULONG(mask), _ft.ULONG(pull))
self.status = call_ft(FT_SetGPIOPull, self.handle, ULONG(mask), ULONG(pull))
return None
# OS-dependent functions
@ -298,64 +296,64 @@ class FTD3XX(object):
def writePipe(self, pipe, data, datalen):
"""Send the data to the device."""
bytesTransferred = _ft.ULONG()
self.status = call_ft(_ft.FT_WritePipe, self.handle, _ft.UCHAR(pipe), data, _ft.ULONG(datalen), c.byref(bytesTransferred), None)
bytesTransferred = ULONG()
self.status = call_ft(FT_WritePipe, self.handle, UCHAR(pipe), data, ULONG(datalen), c.byref(bytesTransferred), None)
return bytesTransferred.value
def readPipe(self, pipe, data, datalen):
"""Recv the data to the device."""
bytesTransferred = _ft.ULONG()
self.status = call_ft(_ft.FT_ReadPipe, self.handle, _ft.UCHAR(pipe), data, _ft.ULONG(datalen), c.byref(bytesTransferred), None)
bytesTransferred = ULONG()
self.status = call_ft(FT_ReadPipe, self.handle, UCHAR(pipe), data, ULONG(datalen), c.byref(bytesTransferred), None)
return bytesTransferred.value
def readPipeEx(self, pipe, datalen, raw=True):
"""Recv the data to the device."""
bytesTransferred = _ft.ULONG()
bytesTransferred = ULONG()
data = c.c_buffer(datalen)
self.status = call_ft(_ft.FT_ReadPipe, self.handle, _ft.UCHAR(pipe), data, _ft.ULONG(datalen), c.byref(bytesTransferred), None)
self.status = call_ft(FT_ReadPipe, self.handle, UCHAR(pipe), data, ULONG(datalen), c.byref(bytesTransferred), None)
return {'bytesTransferred' : bytesTransferred.value,
'bytes' : data.raw[:bytesTransferred.value] if raw==True else data.value[:bytesTransferred.value]}
def setPipeTimeout(self, pipeid, timeoutMS):
"""Set pipe timeout"""
self.status = call_ft(_ft.FT_SetPipeTimeout, self.handle, _ft.UCHAR(pipeid), _ft.ULONG(timeoutMS))
self.status = call_ft(FT_SetPipeTimeout, self.handle, UCHAR(pipeid), ULONG(timeoutMS))
return None
def getPipeTimeout(self, pipeid):
"""Get pipe timeout"""
timeoutMS = _ft.ULONG()
self.status = call_ft(_ft.FT_GetPipeTimeout, self.handle, _ft.UCHAR(pipeid), c.byref(timeoutMS))
timeoutMS = ULONG()
self.status = call_ft(FT_GetPipeTimeout, self.handle, UCHAR(pipeid), c.byref(timeoutMS))
return timeoutMS.value
def setStreamPipe(self, pipe, size):
"""Set stream pipe for continous transfer of fixed size"""
self.status = call_ft(_ft.FT_SetStreamPipe, self.handle, _ft.BOOLEAN(0), _ft.BOOLEAN(0), _ft.UCHAR(pipe), _ft.ULONG(size))
self.status = call_ft(FT_SetStreamPipe, self.handle, BOOLEAN(0), BOOLEAN(0), UCHAR(pipe), ULONG(size))
return None
def clearStreamPipe(self, pipe):
"""Clear stream pipe for continous transfer of fixed size"""
self.status = call_ft(_ft.FT_ClearStreamPipe, self.handle, _ft.BOOLEAN(0), _ft.BOOLEAN(0), _ft.UCHAR(pipe))
self.status = call_ft(FT_ClearStreamPipe, self.handle, BOOLEAN(0), BOOLEAN(0), UCHAR(pipe))
return None
def abortPipe(self, pipe):
"""Abort ongoing transfers for the specifed pipe"""
self.status = call_ft(_ft.FT_AbortPipe, self.handle, _ft.UCHAR(pipe))
self.status = call_ft(FT_AbortPipe, self.handle, UCHAR(pipe))
return None
def cycleDevicePort(self):
"""Cycle port where device is connected"""
self.status = call_ft(_ft.FT_CycleDevicePort, self.handle)
self.status = call_ft(FT_CycleDevicePort, self.handle)
return None
def setSuspendTimeout(self, timeout):
"""Set suspend timeout"""
self.status = call_ft(_ft.FT_SetSuspendTimeout, self.handle, _ft.ULONG(timeout))
self.status = call_ft(FT_SetSuspendTimeout, self.handle, ULONG(timeout))
return None
def getSuspendTimeout(self):
"""Get suspend timeout"""
timeout = _ft.ULONG()
self.status = call_ft(_ft.FT_GetSuspendTimeout, self.handle, c.byref(timeout))
timeout = ULONG()
self.status = call_ft(FT_GetSuspendTimeout, self.handle, c.byref(timeout))
return timeout.value
# OS-dependent functions
@ -364,41 +362,41 @@ class FTD3XX(object):
def writePipe(self, channel, data, datalen, timeout=1000):
"""Send the data to the device."""
bytesTransferred = _ft.ULONG()
self.status = call_ft(_ft.FT_WritePipeEx, self.handle, _ft.UCHAR(channel), data, _ft.ULONG(datalen), c.byref(bytesTransferred), timeout)
bytesTransferred = ULONG()
self.status = call_ft(FT_WritePipeEx, self.handle, UCHAR(channel), data, ULONG(datalen), c.byref(bytesTransferred), timeout)
return bytesTransferred.value
def readPipe(self, channel, data, datalen, timeout=1000):
"""Recv the data to the device."""
bytesTransferred = _ft.ULONG()
self.status = call_ft(_ft.FT_ReadPipeEx, self.handle, _ft.UCHAR(channel), data, _ft.ULONG(datalen), c.byref(bytesTransferred), timeout)
bytesTransferred = ULONG()
self.status = call_ft(FT_ReadPipeEx, self.handle, UCHAR(channel), data, ULONG(datalen), c.byref(bytesTransferred), timeout)
return bytesTransferred.value
def readPipeEx(self, channel, datalen, timeout=1000, raw=False):
"""Recv the data to the device."""
bytesTransferred = _ft.ULONG()
bytesTransferred = ULONG()
data = c.c_buffer(datalen)
self.status = call_ft(_ft.FT_ReadPipeEx, self.handle, _ft.UCHAR(channel), data, _ft.ULONG(datalen), c.byref(bytesTransferred), timeout)
self.status = call_ft(FT_ReadPipeEx, self.handle, UCHAR(channel), data, ULONG(datalen), c.byref(bytesTransferred), timeout)
return {'bytesTransferred' : bytesTransferred.value,
'bytes' : data.value[:bytesTransferred.value] if raw==False else data.raw[:bytesTransferred.value]}
def getReadQueueStatus(self, channel):
"""Get the current bytes in the read queue."""
bytesInQueue = _ft.ULONG()
self.status = call_ft(_ft.FT_GetReadQueueStatus, self.handle, channel, c.byref(bytesInQueue))
bytesInQueue = ULONG()
self.status = call_ft(FT_GetReadQueueStatus, self.handle, channel, c.byref(bytesInQueue))
return bytesInQueue
def getWriteQueueStatus(self, channel):
"""Get the current bytes in the write queue."""
bytesInQueue = _ft.ULONG()
self.status = call_ft(_ft.FT_GetWriteQueueStatus, self.handle, channel, c.byref(bytesInQueue))
bytesInQueue = ULONG()
self.status = call_ft(FT_GetWriteQueueStatus, self.handle, channel, c.byref(bytesInQueue))
return bytesInQueue
def getUnsentBuffer(self, channel):
"""Get the current bytes not yet sent to device."""
# get size only
bytesTransferred = _ft.ULONG()
self.status = call_ft(_ft.FT_GetUnsentBuffer, self.handle, None, c.byref(bytesTransferred))
bytesTransferred = ULONG()
self.status = call_ft(FT_GetUnsentBuffer, self.handle, None, c.byref(bytesTransferred))
if (bytesTransferred == 0):
return {'bytesTransferred' : 0,
'bytes' : None}
@ -406,7 +404,7 @@ class FTD3XX(object):
# get and buffer
data = c.c_buffer(bytesTransferred)
bytesTransferred = 0
self.status = call_ft(_ft.FT_GetUnsentBuffer, self.handle, data, c.byref(bytesTransferred))
self.status = call_ft(FT_GetUnsentBuffer, self.handle, data, c.byref(bytesTransferred))
return {'bytesTransferred' : bytesTransferred.value,
'bytes' : data.raw[:bytesTransferred.value] if raw==True else data.value[:bytesTransferred.value]}


+ 0
- 14
gateware/bootloader/.floorplanner.ini View File

@ -1,14 +0,0 @@
[General]
showNCD=true
showPgroups=true
showCongestion=false
showConnsSelect=true
showConnsBetween=true
showConnsOutside=true
showLPF=true
showREGIONs=true
showUGROUPs=true
showPARITIONs=true
showLogicalConnections=false
dontShowBBoxOverlapWarning=false
sceneInViewRect="@Variant(\0\0\0\x14@B\xa3H\x18\xb6\xe2\\@\xf3\xdd\xcbyW\xf0\x88@\xe8\xa7;=\xb0\xe9+@\xd8\xf4\x1c\xc7\x16\xdb\x90)"

+ 0
- 9
gateware/bootloader/.run_manager.ini View File

@ -1,9 +0,0 @@
[Runmanager]
Geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x1\0\0\0\0\0\0\0\0\0\0\0\0\x1\x1c\0\0\0\xe1\0\0\0\0\0\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\0\0\0\0\0\0)
windowState=@ByteArray(\0\0\0\xff\0\0\0\0\xfd\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x4\0\0\0\x4\0\0\0\b\0\0\0\b\xfc\0\0\0\x1\0\0\0\0\0\0\0\x1\xff\xff\xff\xff\x3\0\0\0\0\xff\xff\xff\xff\0\0\0\0\0\0\0\0)
headerState=@ByteArray(\0\0\0\xff\0\0\0\0\0\0\0\x1\0\0\0\x1\0\0\0\0\x1\0\0\0\0\0\0\0\0\0\0\0\x16\0\xe0?\0\0\0\t\0\0\0\x10\0\0\0\x64\0\0\0\xf\0\0\0\x64\0\0\0\xe\0\0\0\x64\0\0\0\r\0\0\0\x64\0\0\0\x15\0\0\0\x64\0\0\0\x14\0\0\0\x64\0\0\0\x13\0\0\0\x64\0\0\0\x12\0\0\0\x64\0\0\0\x11\0\0\0\x64\0\0\x4\xd3\0\0\0\x16\x1\x1\0\x1\0\0\0\0\0\0\0\0\0\0\0\0\x64\xff\xff\xff\xff\0\0\0\x81\0\0\0\0\0\0\0\x3\0\0\0#\0\0\0\x1\0\0\0\x2\0\0\x4\xb0\0\0\0\f\0\0\0\0\0\0\0\0\0\0\0\t\0\0\0\0)
[bootloader%3CStrategy1%3E]
isChecked=false
isHidden=false
isExpanded=false

+ 0
- 4
gateware/bootloader/.setting.ini View File

@ -1,4 +0,0 @@
[General]
AutoAssign=false
EnableRealTimePIODRCOnSSV=true
Export.auto_tasks=Bitgen

+ 0
- 3
gateware/bootloader/.spread_sheet.ini View File

@ -1,3 +0,0 @@
[General]
COLUMN_POS_INFO_NAME_-1_0=Prioritize
COLUMN_POS_INFO_NAME_-1_1=PIO Register

+ 0
- 78
gateware/bootloader/.spreadsheet_view.ini View File

@ -1,78 +0,0 @@
[General]
pin_sort_type=0
pin_sort_ascending=true
sig_sort_type=0
sig_sort_ascending=true
active_Sheet=Port Assignments
[Port%20Assignments]
Name="229,0"
Group%20By="142,1"
Pin="77,2"
BANK="104,3"
BANK_VCC="154,4"
VREF="98,5"
IO_TYPE="129,6"
PULLMODE="159,7"
DRIVE="108,8"
SLEWRATE="156,9"
CLAMP="116,10"
OPENDRAIN="169,11"
DIFFRESISTOR="198,12"
DIFFDRIVE="156,13"
HYSTERESIS="173,14"
TERMINATION="190,15"
Outload%20%28pF%29="177,16"
MaxSkew="144,17"
Clock%20Load%20Only="213,18"
SwitchingID="170,19"
Ground%20plane%20PCB%20noise%20%28mV%29="355,20"
Power%20plane%20PCB%20noise%20%28mV%29="343,21"
SSO%20Allowance%28%25%29="235,22"
sort_columns="Name,Ascending"
[Pin%20Assignments]
Pin="117,0"
Pad%20Name="150,1"
Dual%20Function="279,2"
Polarity="127,3"
BANK="0,4"
BANK_VCC="154,5"
IO_TYPE="129,6"
Signal%20Name="176,7"
Signal%20Type="165,8"
sort_columns="Pin,Ascending"
[Clock%20Resource]
Clock%20Type="100,ELLIPSIS"
Clock%20Name="100,ELLIPSIS"
Selection="100,ELLIPSIS"
Quadrant="100,ELLIPSIS"
[Global%20Preferences]
Preference%20Name="312,ELLIPSIS"
Preference%20Value="347,ELLIPSIS"
[Cell%20Mapping]
Type="100,ELLIPSIS"
Name="100,ELLIPSIS"
Din\Dout="100,ELLIPSIS"
PIO%20Register="100,ELLIPSIS"
[Route%20Priority]
Type="100,ELLIPSIS"
Name="100,ELLIPSIS"
Prioritize="100,ELLIPSIS"
[Timing%20Preferences]
Preference%20Name="205,ELLIPSIS"
Preference%20Value="189,ELLIPSIS"
Preference%20Unit="176,ELLIPSIS"
[Group]
Group%20Type\Name="196,ELLIPSIS"
Value="67,ELLIPSIS"
[Misc%20Preferences]
Preference%20Name="191,ELLIPSIS"
Preference%20Value="189,ELLIPSIS"

+ 0
- 15
gateware/bootloader/Makefile View File

@ -1,15 +0,0 @@
PROJ=bootloader
OPENOCD_INTERFACE:=interface/ftdi/dp_busblaster.cfg
ifndef TRELLIS
$(error Set TRELLIS to Trellis git root)
endif
bootloader/kilsyth_bootloader.bit:
echo "Run diamond to build a .bit file!"
${PROJ}.svf: ./bootloader/kilsyth_bootloader.bit
$(TRELLIS)/tools/bit_to_svf.py ./bootloader/kilsyth_bootloader.bit $@
prog: ${PROJ}.svf
openocd -f $(OPENOCD_INTERFACE) -f ../../openocd/kilsyth_lfe5u12.cfg -c "transport select jtag; adapter_khz 10000; init; svf -tap lfe5u12.tap -quiet -progress $<; exit"

+ 0
- 13
gateware/bootloader/Untitled.tpf View File

@ -1,13 +0,0 @@
FREQUENCY PORT "i_ft_clk" 100.000000 MHz ;
FREQUENCY PORT "i_clk16" 16.000000 MHz ;
BLOCK RESETPATHS ;
BLOCK ASYNCPATHS ;
VOLTAGE 1.100 V;
BANK 0 VCCIO 3.3 V;
BANK 1 VCCIO 3.3 V;
BANK 2 VCCIO 3.3 V;
BANK 3 VCCIO 3.3 V;
BANK 6 VCCIO 3.3 V;
BANK 7 VCCIO 3.3 V;
BANK 8 VCCIO 3.3 V;
VCCIO_DERATE PERCENT 0;

+ 0
- 12297
gateware/bootloader/bootloader.svf
File diff suppressed because it is too large
View File


+ 0
- 46
gateware/bootloader/bootloader/.build_status View File

@ -1,46 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<BuildStatus>
<Strategy name="Strategy1">
<Milestone name="Export" build_result="0" build_time="0">
<Task name="IBIS" build_result="0" update_result="2" update_time="0"/>
<Task name="TimingSimFileVlg" build_result="0" update_result="2" update_time="0"/>
<Task name="TimingSimFileVHD" build_result="0" update_result="2" update_time="1545347308"/>
<Task name="Bitgen" build_result="2" update_result="0" update_time="1545352803"/>
<Task name="Promgen" build_result="0" update_result="2" update_time="1545352286"/>
</Milestone>
<Milestone name="Map" build_result="2" build_time="1545352785">
<Task name="Map" build_result="2" update_result="0" update_time="1545352785"/>
<Task name="MapTrace" build_result="0" update_result="2" update_time="1545342077"/>
<Task name="MapVerilogSimFile" build_result="0" update_result="2" update_time="0"/>
<Task name="MapVHDLSimFile" build_result="0" update_result="2" update_time="0"/>
</Milestone>
<Milestone name="PAR" build_result="2" build_time="1545352800">
<Task name="PAR" build_result="2" update_result="0" update_time="1545352800"/>
<Task name="PARTrace" build_result="0" update_result="2" update_time="0"/>
<Task name="IOTiming" build_result="0" update_result="2" update_time="1545352603"/>
</Milestone>
<Milestone name="Synthesis" build_result="2" build_time="1545352783">
<Task name="Lattice_Synthesis" build_result="2" update_result="0" update_time="1545352783"/>
<Task name="LSE_Compile" build_result="2" update_result="0" update_time="1545352803"/>
</Milestone>
<Milestone name="TOOL_Report" build_result="0" build_time="0">
<Task name="HDLE" build_result="2" update_result="0" update_time="1545352781"/>
<Task name="BKM" build_result="0" update_result="2" update_time="0"/>
<Task name="SSO" build_result="0" update_result="2" update_time="0"/>
<Task name="PIODRC" build_result="0" update_result="2" update_time="0"/>
<Task name="DEC" build_result="0" update_result="2" update_time="0"/>
</Milestone>
<Report name=".vdbs/kilsyth_bootloader_map.vdb" last_build_time="1545352785" last_build_size="67798"/>
<Report name="kilsyth_bootloader.bgn" last_build_time="1545352803" last_build_size="4337"/>
<Report name="kilsyth_bootloader.bit" last_build_time="1545352803" last_build_size="582679"/>
<Report name="kilsyth_bootloader.ior" last_build_time="1545352603" last_build_size="4580"/>
<Report name="kilsyth_bootloader.lsedata" last_build_time="1545352783" last_build_size="77928"/>
<Report name="kilsyth_bootloader.mcs" last_build_time="1545352285" last_build_size="1602513"/>
<Report name="kilsyth_bootloader.ncd" last_build_time="1545352800" last_build_size="75571"/>
<Report name="kilsyth_bootloader.ngd" last_build_time="1545352783" last_build_size="63928"/>
<Report name="kilsyth_bootloader.tw1" last_build_time="1545342077" last_build_size="14894"/>
<Report name="kilsyth_bootloader_map.ncd" last_build_time="1545352784" last_build_size="57724"/>
<Report name="kilsyth_bootloader_vho.sdf" last_build_time="1545347308" last_build_size="40206"/>
<Report name="kilsyth_bootloader_vho.vho" last_build_time="1545347308" last_build_size="100846"/>
</Strategy>
</BuildStatus>

+ 0
- 1
gateware/bootloader/bootloader/.vdbs/dbStat.txt View File

@ -1 +0,0 @@
kilsyth_top_rtl.vdb

BIN
gateware/bootloader/bootloader/.vdbs/kilsyth_bootloader_map.vdb View File


BIN
gateware/bootloader/bootloader/.vdbs/kilsyth_top_rtl.vdb View File


BIN
gateware/bootloader/bootloader/.vdbs/kilsyth_top_tech.vdb View File


+ 0
- 14
gateware/bootloader/bootloader/Untitled.tpf.prf View File

@ -1,14 +0,0 @@
FREQUENCY PORT "i_ft_clk" 100.000000 MHz ;
FREQUENCY PORT "i_clk16" 16.000000 MHz ;
BLOCK RESETPATHS ;
BLOCK ASYNCPATHS ;
VOLTAGE 1.100 V;
BANK 0 VCCIO 3.3 V;
BANK 1 VCCIO 3.3 V;
BANK 2 VCCIO 3.3 V;
BANK 3 VCCIO 3.3 V;
BANK 6 VCCIO 3.3 V;
BANK 7 VCCIO 3.3 V;
BANK 8 VCCIO 3.3 V;
VCCIO_DERATE PERCENT 0;
COMMERCIAL ;

+ 0
- 46
gateware/bootloader/bootloader/Untitled.tpf.prf_cdmp View File

@ -1,46 +0,0 @@
VOLTAGE 1.100 V;
BANK 0 VCCIO 3.3 V;
BANK 1 VCCIO 3.3 V;
BANK 2 VCCIO 3.3 V;
BANK 3 VCCIO 3.3 V;
BANK 6 VCCIO 3.3 V;
BANK 7 VCCIO 3.3 V;
BANK 8 VCCIO 3.3 V;
BLOCK RESETPATHS ;
BLOCK ASYNCPATHS ;
IOBUF PORT "io_ft_be[1]" IO_TYPE=LVCMOS25 ;
IOBUF PORT "io_ft_be[0]" IO_TYPE=LVCMOS25 ;
IOBUF PORT "io_ft_data[15]" IO_TYPE=LVCMOS25 PULLMODE=NONE ;
IOBUF PORT "io_ft_data[14]" IO_TYPE=LVCMOS25 PULLMODE=NONE ;
IOBUF PORT "io_ft_data[13]" IO_TYPE=LVCMOS25 PULLMODE=NONE ;
IOBUF PORT "io_ft_data[12]" IO_TYPE=LVCMOS25 PULLMODE=NONE ;
IOBUF PORT "io_ft_data[11]" IO_TYPE=LVCMOS25 PULLMODE=NONE ;
IOBUF PORT "io_ft_data[10]" IO_TYPE=LVCMOS25 PULLMODE=NONE ;
IOBUF PORT "io_ft_data[9]" IO_TYPE=LVCMOS25 PULLMODE=NONE ;
IOBUF PORT "io_ft_data[8]" IO_TYPE=LVCMOS25 PULLMODE=NONE ;
IOBUF PORT "io_ft_data[7]" IO_TYPE=LVCMOS25 PULLMODE=NONE ;
IOBUF PORT "io_ft_data[6]" IO_TYPE=LVCMOS25 PULLMODE=NONE ;
IOBUF PORT "io_ft_data[5]" IO_TYPE=LVCMOS25 PULLMODE=NONE ;
IOBUF PORT "io_ft_data[4]" IO_TYPE=LVCMOS25 PULLMODE=NONE ;
IOBUF PORT "io_ft_data[3]" IO_TYPE=LVCMOS25 PULLMODE=NONE ;
IOBUF PORT "io_ft_data[2]" IO_TYPE=LVCMOS25 PULLMODE=NONE ;
IOBUF PORT "io_ft_data[1]" IO_TYPE=LVCMOS25 PULLMODE=NONE ;
IOBUF PORT "io_ft_data[0]" IO_TYPE=LVCMOS25 PULLMODE=NONE ;
IOBUF PORT "o_ft_wr_n" IO_TYPE=LVCMOS25 ;
IOBUF PORT "o_ft_rd_n" IO_TYPE=LVCMOS25 ;
IOBUF PORT "io_ft_oe_n" IO_TYPE=LVCMOS25 ;
IOBUF PORT "o_leds[7]" IO_TYPE=LVCMOS25 ;
IOBUF PORT "o_leds[6]" IO_TYPE=LVCMOS25 ;
IOBUF PORT "o_leds[5]" IO_TYPE=LVCMOS25 ;
IOBUF PORT "o_leds[4]" IO_TYPE=LVCMOS25 ;
IOBUF PORT "o_leds[3]" IO_TYPE=LVCMOS25 ;
IOBUF PORT "o_leds[2]" IO_TYPE=LVCMOS25 ;
IOBUF PORT "o_leds[1]" IO_TYPE=LVCMOS25 ;
IOBUF PORT "o_leds[0]" IO_TYPE=LVCMOS25 ;
IOBUF PORT "i_clk16" IO_TYPE=LVCMOS25 ;
IOBUF PORT "i_ft_clk" IO_TYPE=LVCMOS25 ;
IOBUF PORT "i_ft_txe_n" IO_TYPE=LVCMOS25 ;
IOBUF PORT "i_ft_rxf_n" IO_TYPE=LVCMOS25 ;
FREQUENCY PORT "i_ft_clk" 100.000000 MHz ;
FREQUENCY PORT "i_clk16" 16.000000 MHz ;
VCCIO_DERATE PERCENT 0;

+ 0
- 13
gateware/bootloader/bootloader/Untitled.tpf.prf_cdmp0 View File

@ -1,13 +0,0 @@
FREQUENCY PORT "i_ft_clk" 100.000000 MHz ;
FREQUENCY PORT "i_clk16" 16.000000 MHz ;
BLOCK RESETPATHS ;
BLOCK ASYNCPATHS ;
VOLTAGE 1.100 V;
BANK 0 VCCIO 3.3 V;
BANK 1 VCCIO 3.3 V;
BANK 2 VCCIO 3.3 V;
BANK 3 VCCIO 3.3 V;
BANK 6 VCCIO 3.3 V;
BANK 7 VCCIO 3.3 V;
BANK 8 VCCIO 3.3 V;
VCCIO_DERATE PERCENT 0;

+ 0
- 46
gateware/bootloader/bootloader/Untitled.tpf.prf_cdmp2 View File

@ -1,46 +0,0 @@
VOLTAGE 1.100 V;
BANK 0 VCCIO 3.3 V;
BANK 1 VCCIO 3.3 V;
BANK 2 VCCIO 3.3 V;
BANK 3 VCCIO 3.3 V;
BANK 6 VCCIO 3.3 V;
BANK 7 VCCIO 3.3 V;
BANK 8 VCCIO 3.3 V;
BLOCK RESETPATHS ;
BLOCK ASYNCPATHS ;
IOBUF PORT "io_ft_be[1]" IO_TYPE=LVCMOS25 ;
IOBUF PORT "io_ft_be[0]" IO_TYPE=LVCMOS25 ;
IOBUF PORT "io_ft_data[15]" IO_TYPE=LVCMOS25 PULLMODE=NONE ;
IOBUF PORT "io_ft_data[14]" IO_TYPE=LVCMOS25 PULLMODE=NONE ;
IOBUF PORT "io_ft_data[13]" IO_TYPE=LVCMOS25 PULLMODE=NONE ;
IOBUF PORT "io_ft_data[12]" IO_TYPE=LVCMOS25 PULLMODE=NONE ;
IOBUF PORT "io_ft_data[11]" IO_TYPE=LVCMOS25 PULLMODE=NONE ;
IOBUF PORT "io_ft_data[10]" IO_TYPE=LVCMOS25 PULLMODE=NONE ;
IOBUF PORT "io_ft_data[9]" IO_TYPE=LVCMOS25 PULLMODE=NONE ;
IOBUF PORT "io_ft_data[8]" IO_TYPE=LVCMOS25 PULLMODE=NONE ;
IOBUF PORT "io_ft_data[7]" IO_TYPE=LVCMOS25 PULLMODE=NONE ;
IOBUF PORT "io_ft_data[6]" IO_TYPE=LVCMOS25 PULLMODE=NONE ;
IOBUF PORT "io_ft_data[5]" IO_TYPE=LVCMOS25 PULLMODE=NONE ;
IOBUF PORT "io_ft_data[4]" IO_TYPE=LVCMOS25 PULLMODE=NONE ;
IOBUF PORT "io_ft_data[3]" IO_TYPE=LVCMOS25 PULLMODE=NONE ;
IOBUF PORT "io_ft_data[2]" IO_TYPE=LVCMOS25 PULLMODE=NONE ;
IOBUF PORT "io_ft_data[1]" IO_TYPE=LVCMOS25 PULLMODE=NONE ;
IOBUF PORT "io_ft_data[0]" IO_TYPE=LVCMOS25 PULLMODE=NONE ;
IOBUF PORT "o_ft_wr_n" IO_TYPE=LVCMOS25 ;
IOBUF PORT "o_ft_rd_n" IO_TYPE=LVCMOS25 ;
IOBUF PORT "io_ft_oe_n" IO_TYPE=LVCMOS25 ;
IOBUF PORT "o_leds[7]" IO_TYPE=LVCMOS25 ;
IOBUF PORT "o_leds[6]" IO_TYPE=LVCMOS25 ;
IOBUF PORT "o_leds[5]" IO_TYPE=LVCMOS25 ;
IOBUF PORT "o_leds[4]" IO_TYPE=LVCMOS25 ;
IOBUF PORT "o_leds[3]" IO_TYPE=LVCMOS25 ;
IOBUF PORT "o_leds[2]" IO_TYPE=LVCMOS25 ;
IOBUF PORT "o_leds[1]" IO_TYPE=LVCMOS25 ;
IOBUF PORT "o_leds[0]" IO_TYPE=LVCMOS25 ;
IOBUF PORT "i_clk16" IO_TYPE=LVCMOS25 ;
IOBUF PORT "i_ft_clk" IO_TYPE=LVCMOS25 ;
IOBUF PORT "i_ft_txe_n" IO_TYPE=LVCMOS25 ;
IOBUF PORT "i_ft_rxf_n" IO_TYPE=LVCMOS25 ;
FREQUENCY PORT "i_ft_clk" 100.000000 MHz ;
FREQUENCY PORT "i_clk16" 16.000000 MHz ;
VCCIO_DERATE PERCENT 0;

+ 0
- 1003
gateware/bootloader/bootloader/Untitled.tpf_hold.html
File diff suppressed because it is too large
View File


+ 0
- 1224
gateware/bootloader/bootloader/Untitled.tpf_setup.html
File diff suppressed because it is too large
View File


+ 0
- 69
gateware/bootloader/bootloader/automake.err View File

@ -1,69 +0,0 @@
error waiting for process to exit:
error waiting for process to exit: child process lost (is SIGCHLD ignored or trapped?)
error waiting for process to exit: child process lost (is SIGCHLD ignored or trapped?)
error waiting for process to exit: child process lost (is SIGCHLD ignored or trapped?)
error waiting for process to exit: child process lost (is SIGCHLD ignored or trapped?)
error waiting for process to exit: child process lost (is SIGCHLD ignored or trapped?)
error waiting for process to exit: child process lost (is SIGCHLD ignored or trapped?)
error waiting for process to exit: child process lost (is SIGCHLD ignored or trapped?)
error waiting for process to exit: child process lost (is SIGCHLD ignored or trapped?)
error waiting for process to exit: child process lost (is SIGCHLD ignored or trapped?)
error waiting for process to exit: child process lost (is SIGCHLD ignored or trapped?)
error waiting for process to exit: child process lost (is SIGCHLD ignored or trapped?)
error waiting for process to exit: child process lost (is SIGCHLD ignored or trapped?)
error waiting for process to exit: child process lost (is SIGCHLD ignored or trapped?)
error waiting for process to exit: child process lost (is SIGCHLD ignored or trapped?)
error waiting for process to exit: child process lost (is SIGCHLD ignored or trapped?)
error waiting for process to exit: child process lost (is SIGCHLD ignored or trapped?)
error waiting for process to exit: child process lost (is SIGCHLD ignored or trapped?)
error waiting for process to exit: child process lost (is SIGCHLD ignored or trapped?)
error waiting for process to exit: child process lost (is SIGCHLD ignored or trapped?)
error waiting for process to exit: child process lost (is SIGCHLD ignored or trapped?)
error waiting for process to exit: child process lost (is SIGCHLD ignored or trapped?)
error waiting for process to exit: child process lost (is SIGCHLD ignored or trapped?)
error waiting for process to exit: child process lost (is SIGCHLD ignored or trapped?)
error waiting for process to exit: child process lost (is SIGCHLD ignored or trapped?)
error waiting for process to exit: child process lost (is SIGCHLD ignored or trapped?)
error waiting for process to exit: child process lost (is SIGCHLD ignored or trapped?)
error waiting for process to exit: child process lost (is SIGCHLD ignored or trapped?)
error waiting for process to exit: child process lost (is SIGCHLD ignored or trapped?)
error waiting for process to exit: child process lost (is SIGCHLD ignored or trapped?)
error waiting for process to exit: child process lost (is SIGCHLD ignored or trapped?)
error waiting for process to exit: child process lost (is SIGCHLD ignored or trapped?)
error waiting for process to exit: child process lost (is SIGCHLD ignored or trapped?)
error waiting for process to exit: child process lost (is SIGCHLD ignored or trapped?)
error waiting for process to exit: child process lost (is SIGCHLD ignored or trapped?)
error waiting for process to exit: child process lost (is SIGCHLD ignored or trapped?)
error waiting for process to exit: child process lost (is SIGCHLD ignored or trapped?)
error waiting for process to exit: child process lost (is SIGCHLD ignored or trapped?)
error waiting for process to exit: child process lost (is SIGCHLD ignored or trapped?)
error waiting for process to exit: child process lost (is SIGCHLD ignored or trapped?)
error waiting for process to exit: child process lost (is SIGCHLD ignored or trapped?)
error waiting for process to exit: child process lost (is SIGCHLD ignored or trapped?)
error waiting for process to exit: child process lost (is SIGCHLD ignored or trapped?)
error waiting for process to exit: child process lost (is SIGCHLD ignored or trapped?)
error waiting for process to exit: child process lost (is SIGCHLD ignored or trapped?)
error waiting for process to exit: child process lost (is SIGCHLD ignored or trapped?)
error waiting for process to exit: child process lost (is SIGCHLD ignored or trapped?)
error waiting for process to exit: child process lost (is SIGCHLD ignored or trapped?)
error waiting for process to exit: child process lost (is SIGCHLD ignored or trapped?)
error waiting for process to exit: child process lost (is SIGCHLD ignored or trapped?)
error waiting for process to exit: child process lost (is SIGCHLD ignored or trapped?)
error waiting for process to exit: child process lost (is SIGCHLD ignored or trapped?)
error waiting for process to exit: child process lost (is SIGCHLD ignored or trapped?)
error waiting for process to exit: child process lost (is SIGCHLD ignored or trapped?)
error waiting for process to exit: child process lost (is SIGCHLD ignored or trapped?)
error waiting for process to exit: child process lost (is SIGCHLD ignored or trapped?)
error waiting for process to exit: child process lost (is SIGCHLD ignored or trapped?)
error waiting for process to exit: child process lost (is SIGCHLD ignored or trapped?)
error waiting for process to exit: child process lost (is SIGCHLD ignored or trapped?)
error waiting for process to exit: child process lost (is SIGCHLD ignored or trapped?)
error waiting for process to exit: child process lost (is SIGCHLD ignored or trapped?)
error waiting for process to exit: child process lost (is SIGCHLD ignored or trapped?)
error waiting for process to exit: child process lost (is SIGCHLD ignored or trapped?)
error waiting for process to exit: child process lost (is SIGCHLD ignored or trapped?)
error waiting for process to exit: child process lost (is SIGCHLD ignored or trapped?)
error waiting for process to exit: child process lost (is SIGCHLD ignored or trapped?)
error waiting for process to exit: child process lost (is SIGCHLD ignored or trapped?)
error waiting for process to exit: child process lost (is SIGCHLD ignored or trapped?)
error waiting for process to exit: child process lost (is SIGCHLD ignored or trapped?)

+ 0
- 649
gateware/bootloader/bootloader/automake.log View File

@ -1,649 +0,0 @@
synthesis -f "kilsyth_bootloader_lattice.synproj"
synthesis: version Diamond (64-bit) 3.10.3.144.3
Copyright (c) 1991-1994 by NeoCAD Inc. All rights reserved.
Copyright (c) 1995 AT&T Corp. All rights reserved.
Copyright (c) 1995-2001 Lucent Technologies Inc. All rights reserved.
Copyright (c) 2001 Agere Systems All rights reserved.
Copyright (c) 2002-2017 Lattice Semiconductor Corporation, All rights reserved.
Fri Dec 21 01:39:43 2018
Command Line: synthesis -f kilsyth_bootloader_lattice.synproj -gui -msgset /home/konrad/dev/Kilsyth/gateware/bootloader/promote.xml
<postMsg mid="35002000" type="Info" dynamic="0" navigation="0" />
Synthesis options:
The -a option is ECP5U.
The -s option is 6.
The -t option is CABGA381.
The -d option is LFE5U-12F.
Using package CABGA381.
Using performance grade 6.
##########################################################
### Lattice Family : ECP5U
### Device : LFE5U-12F
### Package : CABGA381
### Speed : 6
##########################################################
<postMsg mid="35001781" type="Info" dynamic="0" navigation="0" />
Optimization goal = Timing
Top-level module name = kilsyth_top.
Target frequency = 200.000000 MHz.
Maximum fanout = 1000.
Timing path count = 3
BRAM utilization = 100.000000 %
DSP usage = true
DSP utilization = 100.000000 %
fsm_encoding_style = auto
resolve_mixed_drivers = 0
fix_gated_clocks = 1
Mux style = Auto
Use Carry Chain = true
carry_chain_length = 0
Loop Limit = 1950.
Use IO Insertion = TRUE
Use IO Reg = AUTO
Resource Sharing = TRUE
Propagate Constants = TRUE
Remove Duplicate Registers = TRUE
force_gsr = auto
ROM style = auto
RAM style = auto
The -comp option is FALSE.
The -syn option is FALSE.
-p /home/konrad/dev/Kilsyth/gateware/bootloader (searchpath added)
-p /usr/local/diamond/3.10_x64/ispfpga/sa5p00/data (searchpath added)
-p /home/konrad/dev/Kilsyth/gateware/bootloader/bootloader (searchpath added)
-p /home/konrad/dev/Kilsyth/gateware/bootloader (searchpath added)
Verilog design file = /home/konrad/dev/Kilsyth/gateware/bootloader/src/kilsyth_top.v
NGD file = kilsyth_bootloader.ngd
-sdc option: SDC file input not used.
-lpf option: Output file option is ON.
Hardtimer checking is enabled (default). The -dt option is not used.
The -r option is OFF. [ Remove LOC Properties is OFF. ]
Technology check ok...
Analyzing Verilog file /usr/local/diamond/3.10_x64/ispfpga/userware/unix/SYNTHESIS_HEADERS/ecp5u.v. VERI-1482
Compile design.
Compile Design Begin
Analyzing Verilog file /home/konrad/dev/Kilsyth/gateware/bootloader/src/kilsyth_top.v. VERI-1482
Analyzing Verilog file /usr/local/diamond/3.10_x64/ispfpga/userware/unix/SYNTHESIS_HEADERS/ecp5u.v. VERI-1482
Top module name (Verilog): kilsyth_top
<postMsg mid="35901018" type="Info" dynamic="2" navigation="2" arg0="/home/konrad/dev/Kilsyth/gateware/bootloader/src/kilsyth_top.v(3): " arg1="kilsyth_top" arg2="/home/konrad/dev/Kilsyth/gateware/bootloader/src/kilsyth_top.v" arg3="3" />
<postMsg mid="35901209" type="Warning" dynamic="3" navigation="2" arg0="/home/konrad/dev/Kilsyth/gateware/bootloader/src/kilsyth_top.v(57): " arg1="32" arg2="16" arg3="/home/konrad/dev/Kilsyth/gateware/bootloader/src/kilsyth_top.v" arg4="57" />
<postMsg mid="35901209" type="Warning" dynamic="3" navigation="2" arg0="/home/konrad/dev/Kilsyth/gateware/bootloader/src/kilsyth_top.v(60): " arg1="32" arg2="2" arg3="/home/konrad/dev/Kilsyth/gateware/bootloader/src/kilsyth_top.v" arg4="60" />
<postMsg mid="35901209" type="Warning" dynamic="3" navigation="2" arg0="/home/konrad/dev/Kilsyth/gateware/bootloader/src/kilsyth_top.v(64): " arg1="32" arg2="26" arg3="/home/konrad/dev/Kilsyth/gateware/bootloader/src/kilsyth_top.v" arg4="64" />
Last elaborated design is kilsyth_top()
Loading NGL library '/usr/local/diamond/3.10_x64/ispfpga/sa5p00/data/sa5plib.ngl'...
Loading NGL library '/usr/local/diamond/3.10_x64/ispfpga/xo2c00/data/xo2clib.ngl'...
Loading NGL library '/usr/local/diamond/3.10_x64/ispfpga/mg5g00/data/mg5glib.ngl'...
Loading NGL library '/usr/local/diamond/3.10_x64/ispfpga/or5g00/data/orc5glib.ngl'...
Loading device for application map from file 'sa5p25.nph' in environment: /usr/local/diamond/3.10_x64/ispfpga.
Package Status: Final Version 1.33.
Top-level module name = kilsyth_top.
######## Converting I/O port io_ft_data[15] to output.
######## Converting I/O port io_ft_data[14] to output.
######## Converting I/O port io_ft_data[13] to output.
######## Converting I/O port io_ft_data[12] to output.
######## Converting I/O port io_ft_data[11] to output.
######## Converting I/O port io_ft_data[10] to output.
######## Converting I/O port io_ft_data[9] to output.
######## Converting I/O port io_ft_data[8] to output.
######## Converting I/O port io_ft_data[7] to output.
######## Converting I/O port io_ft_data[6] to output.
######## Converting I/O port io_ft_data[5] to output.
######## Converting I/O port io_ft_data[4] to output.
######## Converting I/O port io_ft_data[3] to output.
######## Converting I/O port io_ft_data[2] to output.
######## Converting I/O port io_ft_data[1] to output.
######## Converting I/O port io_ft_data[0] to output.
######## Converting I/O port io_ft_oe_n to output.
######## Converting I/O port io_ft_gpio1 to input.
<postMsg mid="35001748" type="Warning" dynamic="2" navigation="0" arg0="0" arg1="ft_be" />
<postMsg mid="35001748" type="Warning" dynamic="2" navigation="0" arg0="1" arg1="ft_be" />
<postMsg mid="35001747" type="Warning" dynamic="2" navigation="0" arg0="0" arg1="ft_data_buf" />
<postMsg mid="35001747" type="Warning" dynamic="2" navigation="0" arg0="1" arg1="ft_data_buf" />
<postMsg mid="35001747" type="Warning" dynamic="2" navigation="0" arg0="2" arg1="ft_data_buf" />
<postMsg mid="35001747" type="Warning" dynamic="2" navigation="0" arg0="3" arg1="ft_data_buf" />
<postMsg mid="35001747" type="Warning" dynamic="2" navigation="0" arg0="4" arg1="ft_data_buf" />
<postMsg mid="35001747" type="Warning" dynamic="2" navigation="0" arg0="5" arg1="ft_data_buf" />
<postMsg mid="35001747" type="Warning" dynamic="2" navigation="0" arg0="6" arg1="ft_data_buf" />
<postMsg mid="35001747" type="Warning" dynamic="2" navigation="0" arg0="7" arg1="ft_data_buf" />
<postMsg mid="35001748" type="Warning" dynamic="2" navigation="0" arg0="9" arg1="ft_data_buf" />
<postMsg mid="35001748" type="Warning" dynamic="2" navigation="0" arg0="14" arg1="ft_data_buf" />
<postMsg mid="35002005" type="Warning" dynamic="1" navigation="0" arg0="io_ft_gpio1" />
<postMsg mid="35935013" type="Warning" dynamic="2" navigation="2" arg0="/home/konrad/dev/Kilsyth/gateware/bootloader/src/kilsyth_top.v(140): " arg1="state_i7" arg2="/home/konrad/dev/Kilsyth/gateware/bootloader/src/kilsyth_top.v" arg3="140" />
GSR will not be inferred because no asynchronous signal was found in the netlist.
Applying 200.000000 MHz constraint to all clocks
<postMsg mid="35001611" type="Warning" dynamic="0" navigation="0" />
Results of NGD DRC are available in kilsyth_top_drc.log.
Loading NGL library '/usr/local/diamond/3.10_x64/ispfpga/sa5p00/data/sa5plib.ngl'...
Loading NGL library '/usr/local/diamond/3.10_x64/ispfpga/xo2c00/data/xo2clib.ngl'...
Loading NGL library '/usr/local/diamond/3.10_x64/ispfpga/mg5g00/data/mg5glib.ngl'...
Loading NGL library '/usr/local/diamond/3.10_x64/ispfpga/or5g00/data/orc5glib.ngl'...
Running DRC...
<postMsg mid="1166052" type="Warning" dynamic="2" navigation="1" arg0="logical" arg1="io_ft_gpio1" arg2="io_ft_gpio1" />
<postMsg mid="1166064" type="Warning" dynamic="2" navigation="0" arg0="input" arg1="io_ft_gpio1" />
<postMsg mid="1163101" type="Warning" dynamic="1" navigation="0" arg0="2" />
Design Results:
114 blocks expanded
completed the first expansion
All blocks are expanded and NGD expansion is successful.
Writing NGD file kilsyth_bootloader.ngd.
################### Begin Area Report (kilsyth_top)######################
Number of register bits => 44 of 12687 (0 % )
BB => 2
CCU2C => 13
FD1P3AX => 4
FD1P3AY => 2
FD1P3IX => 3
FD1S3AX => 35
GSR => 1
IB => 4
LUT4 => 19
OB => 11
OBZ => 16
PFUMX => 1
################### End Area Report ##################
################### Begin Clock Report ######################
Clock Nets
Number of Clocks: 2
Net : i_clk16_c, loads : 30
Net : i_ft_clk_c, loads : 14
Clock Enable Nets
Number of Clock Enables: 5
Top 5 highest fanout Clock Enables:
Net : i_ft_clk_c_enable_9, loads : 3
Net : i_ft_clk_c_enable_3, loads : 3
Net : i_ft_clk_c_enable_6, loads : 1
Net : i_ft_clk_c_enable_4, loads : 1
Net : i_ft_clk_c_enable_7, loads : 1
Highest fanout non-clock nets
Top 10 highest fanout non-clock nets:
Net : n1158, loads : 18
Net : state_1, loads : 13
Net : state_0, loads : 12
Net : state_2, loads : 7
Net : i_ft_txe_n_c, loads : 6
Net : i_ft_rxf_n_c, loads : 6
Net : ft_data_buf_7, loads : 6
Net : wants_to_write, loads : 6
Net : n1032, loads : 3
Net : i_ft_clk_c_enable_9, loads : 3
################### End Clock Report ##################
Timing Report Summary
--------------
--------------------------------------------------------------------------------
Constraint | Constraint| Actual|Levels
--------------------------------------------------------------------------------
| | |
create_clock -period 5.000000 -name | | |
clk1 [get_nets i_ft_clk_c] | 200.000 MHz| 247.525 MHz| 3
| | |
create_clock -period 5.000000 -name | | |
clk0 [get_nets i_clk16_c] | 200.000 MHz| 271.592 MHz| 14
| | |
--------------------------------------------------------------------------------
All constraints were met.
Peak Memory Usage: 208.297 MB
--------------------------------------------------------------
Elapsed CPU time for LSE flow : 0.557 secs
--------------------------------------------------------------
map -a "ECP5U" -p LFE5U-12F -t CABGA381 -s 6 -oc Commercial "kilsyth_bootloader.ngd" -o "kilsyth_bootloader_map.ncd" -pr "kilsyth_bootloader.prf" -mp "kilsyth_bootloader.mrp" -lpf "/home/konrad/dev/Kilsyth/gateware/bootloader/bootloader/kilsyth_bootloader.lpf" -lpf "/home/konrad/dev/Kilsyth/gateware/bootloader/kilsyth.lpf"
map: version Diamond (64-bit) 3.10.3.144.3
Copyright (c) 1991-1994 by NeoCAD Inc. All rights reserved.
Copyright (c) 1995 AT&T Corp. All rights reserved.
Copyright (c) 1995-2001 Lucent Technologies Inc. All rights reserved.
Copyright (c) 2001 Agere Systems All rights reserved.
Copyright (c) 2002-2017 Lattice Semiconductor Corporation, All rights reserved.
Process the file: kilsyth_bootloader.ngd
Picdevice="LFE5U-12F"
Pictype="CABGA381"
Picspeed=6
Remove unused logic
Do not produce over sized NCDs.
Part used: LFE5U-12FCABGA381, Performance used: 6.
Loading device for application baspr from file 'sa5p25.nph' in environment: /usr/local/diamond/3.10_x64/ispfpga.
<postMsg mid="1100644" type="Warning" dynamic="2" navigation="2" arg0="/home/konrad/dev/Kilsyth/gateware/bootloader/kilsyth.lpf(72): Semantic error in &quot;IOBUF PORT &quot;io_ft_gpio1&quot; IO_TYPE=LVCMOS33 ;&quot;: " arg1="io_ft_gpio1" arg2="/home/konrad/dev/Kilsyth/gateware/bootloader/kilsyth.lpf" arg3="72" />
Package Status: Final Version 1.33.
Running general design DRC...
<postMsg mid="1166064" type="Warning" dynamic="2" navigation="0" arg0="input" arg1="io_ft_gpio1" />
Removing unused logic...
Optimizing...
56 CCU2 constant inputs absorbed.
<postMsg mid="51001046" type="Warning" dynamic="1" navigation="0" arg0="io_ft_gpio1" />
Design Summary:
Number of registers: 44 out of 12687 (0%)
PFU registers: 44 out of 12096 (0%)
PIO registers: 0 out of 591 (0%)
Number of SLICEs: 30 out of 6048 (0%)
SLICEs as Logic/ROM: 30 out of 6048 (0%)
SLICEs as RAM: 0 out of 4536 (0%)
SLICEs as Carry: 13 out of 6048 (0%)
Number of LUT4s: 44 out of 12096 (0%)
Number used as logic LUTs: 18
Number used as distributed RAM: 0
Number used as ripple logic: 26
Number used as shift registers: 0
Number of PIO sites used: 33 out of 197 (17%)
Number of block RAMs: 0 out of 32 (0%)
Number of GSRs: 0 out of 1 (0%)
JTAG used : No
Readback used : No
Oscillator used : No
Startup used : No
DTR used : No
Number of Dynamic Bank Controller (BCINRD): 0 out of 4 (0%)
Number of Dynamic Bank Controller (BCLVDSOB): 0 out of 4 (0%)
Number of DCC: 0 out of 60 (0%)
Number of DCS: 0 out of 2 (0%)
Number of PLLs: 0 out of 2 (0%)
Number of DDRDLLs: 0 out of 4 (0%)
Number of CLKDIV: 0 out of 4 (0%)
Number of ECLKSYNC: 0 out of 10 (0%)
Number of ECLKBRIDGECS: 0 out of 2 (0%)
Notes:-
1. Total number of LUT4s = (Number of logic LUT4s) + 2*(Number of distributed RAMs) + 2*(Number of ripple logic)
2. Number of logic LUT4s does not include count of distributed RAM and ripple logic.
Number Of Mapped DSP Components:
--------------------------------
MULT18X18D 0
MULT9X9D 0
ALU54B 0
ALU24B 0
PRADD18A 0
PRADD9A 0
--------------------------------
Number of Used DSP MULT Sites: 0 out of 56 (0 %)
Number of Used DSP ALU Sites: 0 out of 28 (0 %)
Number of Used DSP PRADD Sites: 0 out of 56 (0 %)
Number of clocks: 2
Net i_clk16_c: 16 loads, 16 rising, 0 falling (Driver: PIO i_clk16 )
Net i_ft_clk_c: 11 loads, 11 rising, 0 falling (Driver: PIO i_ft_clk )
Number of Clock Enables: 5
Net i_ft_clk_c_enable_3: 3 loads, 3 LSLICEs
Net i_ft_clk_c_enable_4: 1 loads, 1 LSLICEs
Net i_ft_clk_c_enable_9: 2 loads, 2 LSLICEs
Net i_ft_clk_c_enable_6: 1 loads, 1 LSLICEs
Net i_ft_clk_c_enable_7: 1 loads, 1 LSLICEs
Number of LSRs: 1
Net n1032: 2 loads, 2 LSLICEs
Number of nets driven by tri-state buffers: 0
Top 10 highest fanout non-clock nets:
Net ft_data_dir: 18 loads
Net state_1: 13 loads
Net state_0: 12 loads
Net state_2: 7 loads
Net ft_data_buf_7: 6 loads
Net i_ft_rxf_n_c: 6 loads
Net i_ft_txe_n_c: 6 loads
Net wants_to_write: 6 loads
Net i_ft_clk_c_enable_3: 3 loads
Net counter_23: 2 loads
Number of warnings: 3
Number of errors: 0
Total CPU Time: 0 secs
Total REAL Time: 0 secs
Peak Memory Usage: 264 MB
Dumping design to file kilsyth_bootloader_map.ncd.
ncd2vdb "kilsyth_bootloader_map.ncd" ".vdbs/kilsyth_bootloader_map.vdb"
Loading device for application ncd2vdb from file 'sa5p25.nph' in environment: /usr/local/diamond/3.10_x64/ispfpga.
mpartrce -p "kilsyth_bootloader.p2t" -f "kilsyth_bootloader.p3t" -tf "kilsyth_bootloader.pt" "kilsyth_bootloader_map.ncd" "kilsyth_bootloader.ncd"
---- MParTrce Tool ----
Removing old design directory at request of -rem command line option to this program.
Running par. Please wait . . .
Lattice Place and Route Report for Design "kilsyth_bootloader_map.ncd"
Fri Dec 21 01:39:45 2018
PAR: Place And Route Diamond (64-bit) 3.10.3.144.3.
Command Line: par -w -l 5 -i 6 -t 1 -c 0 -e 0 -gui -msgset /home/konrad/dev/Kilsyth/gateware/bootloader/promote.xml -exp parUseNBR=1:parCDP=auto:parCDR=1:parPathBased=OFF kilsyth_bootloader_map.ncd kilsyth_bootloader.dir/5_1.ncd kilsyth_bootloader.prf
Preference file: kilsyth_bootloader.prf.
Placement level-cost: 5-1.
Routing Iterations: 6
Loading design for application par from file kilsyth_bootloader_map.ncd.
Design name: kilsyth_top
NCD version: 3.3
Vendor: LATTICE
Device: LFE5U-12F
Package: CABGA381
Performance: 6
Loading device for application par from file 'sa5p25.nph' in environment: /usr/local/diamond/3.10_x64/ispfpga.
Package Status: Final Version 1.33.
Performance Hardware Data Status: Final Version 55.1.
License checked out.
Ignore Preference Error(s): True
Device utilization summary:
PIO (prelim) 33/197 16% used
33/197 16% bonded
SLICE 30/6048 <1% used
Number of Signals: 103
Number of Connections: 202
Pin Constraint Summary:
32 out of 33 pins locked (96% locked).
The following 2 signals are selected to use the primary clock routing resources:
i_clk16_c (driver: i_clk16, clk/ce/sr load #: 16/0/0)
i_ft_clk_c (driver: i_ft_clk, clk/ce/sr load #: 11/0/0)
No signal is selected as Global Set/Reset.
.
Starting Placer Phase 0.
..........
Finished Placer Phase 0. REAL time: 2 secs
Starting Placer Phase 1.
....................
Placer score = 21315.
Finished Placer Phase 1. REAL time: 8 secs
Starting Placer Phase 2.
.
Placer score = 21204
Finished Placer Phase 2. REAL time: 8 secs
------------------ Clock Report ------------------
Global Clock Resources:
CLK_PIN : 2 out of 12 (16%)
GR_PCLK : 0 out of 12 (0%)
PLL : 0 out of 2 (0%)
DCS : 0 out of 2 (0%)
DCC : 0 out of 60 (0%)
CLKDIV : 0 out of 4 (0%)
Quadrant TL Clocks:
PRIMARY "i_clk16_c" from comp "i_clk16" on CLK_PIN site "G3 (PL23A)", CLK/CE/SR load = 14
PRIMARY "i_ft_clk_c" from comp "i_ft_clk" on CLK_PIN site "H2 (PL26C)", CLK/CE/SR load = 1
PRIMARY : 2 out of 16 (12%)
Quadrant TR Clocks:
PRIMARY : 0 out of 16 (0%)
Quadrant BL Clocks:
PRIMARY "i_clk16_c" from comp "i_clk16" on CLK_PIN site "G3 (PL23A)", CLK/CE/SR load = 2
PRIMARY "i_ft_clk_c" from comp "i_ft_clk" on CLK_PIN site "H2 (PL26C)", CLK/CE/SR load = 10
PRIMARY : 2 out of 16 (12%)
Quadrant BR Clocks:
PRIMARY : 0 out of 16 (0%)
Edge Clocks:
No edge clock selected.
--------------- End of Clock Report ---------------
+
I/O Usage Summary (final):
33 out of 197 (16.8%) PIO sites used.
33 out of 197 (16.8%) bonded PIO sites used.
Number of PIO comps: 33; differential: 0.
Number of Vref pins used: 0.
I/O Bank Usage Summary:
+----------+----------------+------------+------------+------------+
| I/O Bank | Usage | Bank Vccio | Bank Vref1 | Bank Vref2 |
+----------+----------------+------------+------------+------------+
| 0 | 8 / 24 ( 33%) | 3.3V | - | - |
| 1 | 0 / 32 ( 0%) | 3.3V | - | - |
| 2 | 0 / 32 ( 0%) | 3.3V | - | - |
| 3 | 0 / 32 ( 0%) | 3.3V | - | - |
| 6 | 24 / 32 ( 75%) | 3.3V | - | - |
| 7 | 1 / 32 ( 3%) | 3.3V | - | - |
| 8 | 0 / 13 ( 0%) | 3.3V | - | - |
+----------+----------------+------------+------------+------------+
Total placer CPU time: 7 secs
Dumping design to file kilsyth_bootloader.dir/5_1.ncd.
0 connections routed; 202 unrouted.
Starting router resource preassignment
Completed router resource preassignment. Real time: 11 secs
Start NBR router at Fri Dec 21 01:39:56 CET 2018
*****************************************************************
Info: NBR allows conflicts(one node used by more than one signal)
in the earlier iterations. In each iteration, it tries to
solve the conflicts while keeping the critical connections
routed as short as possible. The routing process is said to
be completed when no conflicts exist and all connections
are routed.
Note: NBR uses a different method to calculate timing slacks. The
worst slack and total negative slack may not be the same as
that in TRCE report. You should always run TRCE to verify
your design.
*****************************************************************
Start NBR special constraint process at Fri Dec 21 01:39:56 CET 2018
Start NBR section for initial routing at Fri Dec 21 01:39:56 CET 2018
Level 1, iteration 1
0(0.00%) conflict; 129(63.86%) untouched conns; 0 (nbr) score;
Estimated worst slack/total negative slack<setup>: 6.935ns/0.000ns; real time: 12 secs
Level 2, iteration 1
0(0.00%) conflict; 129(63.86%) untouched conns; 0 (nbr) score;
Estimated worst slack/total negative slack<setup>: 6.935ns/0.000ns; real time: 12 secs
Level 3, iteration 1
0(0.00%) conflict; 129(63.86%) untouched conns; 0 (nbr) score;
Estimated worst slack/total negative slack<setup>: 6.935ns/0.000ns; real time: 12 secs
Level 4, iteration 1
3(0.00%) conflicts; 0(0.00%) untouched conn; 0 (nbr) score;
Estimated worst slack/total negative slack<setup>: 6.920ns/0.000ns; real time: 12 secs
Info: Initial congestion level at 75% usage is 0
Info: Initial congestion area at 75% usage is 0 (0.00%)
Start NBR section for normal routing at Fri Dec 21 01:39:57 CET 2018
Level 4, iteration 1
0(0.00%) conflict; 0(0.00%) untouched conn; 0 (nbr) score;
Estimated worst slack/total negative slack<setup>: 6.920ns/0.000ns; real time: 12 secs
Start NBR section for setup/hold timing optimization with effort level 3 at Fri Dec 21 01:39:57 CET 2018
Start NBR section for re-routing at Fri Dec 21 01:39:57 CET 2018
Level 4, iteration 1
0(0.00%) conflict; 0(0.00%) untouched conn; 0 (nbr) score;
Estimated worst slack/total negative slack<setup>: 6.920ns/0.000ns; real time: 12 secs
Start NBR section for post-routing at Fri Dec 21 01:39:57 CET 2018
End NBR router with 0 unrouted connection
NBR Summary
-----------
Number of unrouted connections : 0 (0.00%)
Number of connections with timing violations : 0 (0.00%)
Estimated worst slack<setup> : 6.920ns
Timing score<setup> : 0
-----------
Notes: The timing info is calculated for SETUP only and all PAR_ADJs are ignored.
Total CPU time 11 secs
Total REAL time: 12 secs
Completely routed.
End of route. 202 routed (100.00%); 0 unrouted.
Hold time timing score: 0, hold timing errors: 0
Timing score: 0
Dumping design to file kilsyth_bootloader.dir/5_1.ncd.
PAR_SUMMARY::Run status = Success
PAR_SUMMARY::Number of unrouted conns = 0
PAR_SUMMARY::Worst slack<setup/<ns>> = 6.920
PAR_SUMMARY::Timing score<setup/<ns>> = 0.000
PAR_SUMMARY::Worst slack<hold /<ns>> = 0.182
PAR_SUMMARY::Timing score<hold /<ns>> = 0.000
PAR_SUMMARY::Number of errors = 0
Total CPU time to completion: 12 secs
Total REAL time to completion: 12 secs
par done!
Copyright (c) 1991-1994 by NeoCAD Inc. All rights reserved.
Copyright (c) 1995 AT&T Corp. All rights reserved.
Copyright (c) 1995-2001 Lucent Technologies Inc. All rights reserved.
Copyright (c) 2001 Agere Systems All rights reserved.
Copyright (c) 2002-2017 Lattice Semiconductor Corporation, All rights reserved.
Exiting par with exit code 0
Exiting mpartrce with exit code 0
bitgen -w "kilsyth_bootloader.ncd" -f "kilsyth_bootloader.t2b" -e -s "/home/konrad/dev/Kilsyth/gateware/bootloader/kilsyth.sec" -k "/home/konrad/dev/Kilsyth/gateware/bootloader/kilsyth.bek" "kilsyth_bootloader.prf"
BITGEN: Bitstream Generator Diamond (64-bit) 3.10.3.144.3
Copyright (c) 1991-1994 by NeoCAD Inc. All rights reserved.
Copyright (c) 1995 AT&T Corp. All rights reserved.
Copyright (c) 1995-2001 Lucent Technologies Inc. All rights reserved.
Copyright (c) 2001 Agere Systems All rights reserved.
Copyright (c) 2002-2017 Lattice Semiconductor Corporation, All rights reserved.
Loading design for application Bitgen from file kilsyth_bootloader.ncd.
Design name: kilsyth_top
NCD version: 3.3
Vendor: LATTICE
Device: LFE5U-12F
Package: CABGA381
Performance: 6
Loading device for application Bitgen from file 'sa5p25.nph' in environment: /usr/local/diamond/3.10_x64/ispfpga.
Package Status: Final Version 1.33.
Performance Hardware Data Status: Final Version 55.1.
Running DRC.
DRC detected 0 errors and 0 warnings.
Reading Preference File from kilsyth_bootloader.prf.
Preference Summary:
+---------------------------------+---------------------------------+
| Preference | Current Setting |
+---------------------------------+---------------------------------+
| RamCfg | Reset** |
+---------------------------------+---------------------------------+
| CfgMode | Disable** |
+---------------------------------+---------------------------------+
| DONE_EX | OFF** |
+---------------------------------+---------------------------------+
| DONE_OD | ON** |
+---------------------------------+---------------------------------+
| MCCLK_FREQ | 2.4** |
+---------------------------------+---------------------------------+
| CONFIG_SECURE | OFF** |
+---------------------------------+---------------------------------+
| CONFIG_MODE | JTAG** |
+---------------------------------+---------------------------------+
| WAKE_UP | 21** |
+---------------------------------+---------------------------------+
| INBUF | OFF** |
+---------------------------------+---------------------------------+
| ES | No** |
+---------------------------------+---------------------------------+
| SLAVE_SPI_PORT | DISABLE** |
+---------------------------------+---------------------------------+
| MASTER_SPI_PORT | DISABLE** |
+---------------------------------+---------------------------------+
| COMPRESS_CONFIG | OFF** |
+---------------------------------+---------------------------------+
| BACKGROUND_RECONFIG | OFF** |
+---------------------------------+---------------------------------+
| DisableUES | FALSE** |
+---------------------------------+---------------------------------+
| SLAVE_PARALLEL_PORT | DISABLE** |
+---------------------------------+---------------------------------+
| DONE_PULL | ON** |
+---------------------------------+---------------------------------+
| CONFIG_IOVOLTAGE | 3.3 |
+---------------------------------+---------------------------------+
| TRANSFR | OFF** |
+---------------------------------+---------------------------------+
* Default setting.
** The specified setting matches the default setting.
Creating bit map...
Bitstream Status: Final Version 10.27.
Saving bit stream in "kilsyth_bootloader.bit".

+ 0
- 56
gateware/bootloader/bootloader/bootloader.xcf View File

@ -1,56 +0,0 @@
<?xml version='1.0' encoding='utf-8' ?>
<!DOCTYPE ispXCF SYSTEM "IspXCF.dtd" >
<ispXCF version="3.10.0">
<Comment></Comment>
<Chain>
<Comm>JTAG</Comm>
<Device>
<SelectedProg value="TRUE"/>
<Pos>1</Pos>
<Vendor>Lattice</Vendor>
<Family>ECP5U</Family>
<Name>LFE5U-12F</Name>
<IDCode>0x21111043</IDCode>
<Package>All</Package>
<PON>LFE5U-12F</PON>
<Bypass>
<InstrLen>8</InstrLen>
<InstrVal>11111111</InstrVal>
<BScanLen>1</BScanLen>
<BScanVal>0</BScanVal>
</Bypass>
<File>/home/konrad/dev/Kilsyth/gateware/bootloader/bootloader/kilsyth_bootloader.bit</File>
<FileTime>12/20/18 22:41:41</FileTime>
<JedecChecksum>N/A</JedecChecksum>
<Operation>Fast Program</Operation>
<Option>
<SVFVendor>JTAG STANDARD</SVFVendor>
<IOState>HighZ</IOState>
<PreloadLength>409</PreloadLength>
<IOVectorData>0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF</IOVectorData>
<TCKFrequency>1.000000 MHz</TCKFrequency>
<SVFProcessor>SVF Processor</SVFProcessor>
<Usercode>0x00000000</Usercode>
<AccessMode>JTAG</AccessMode>
</Option>
</Device>
</Chain>
<ProjectOptions>
<Program>SEQUENTIAL</Program>
<Process>ENTIRED CHAIN</Process>
<OperationOverride>No Override</OperationOverride>
<StartTAP>TLR</StartTAP>
<EndTAP>TLR</EndTAP>
<VerifyUsercode value="FALSE"/>
<TCKDelay>1</TCKDelay>
</ProjectOptions>
<CableOptions>
<CableName>USB2</CableName>
<PortAdd>FTUSB-0</PortAdd>
<USBID>DUAL RS232-HS A Location 0000 Serial Dual RS232-HS A</USBID>
<JTAGPinSetting>
TRST ABSENT;
ISPEN ABSENT;
</JTAGPinSetting>
</CableOptions>
</ispXCF>

+ 0
- 9
gateware/bootloader/bootloader/hdla_gen_hierarchy.html
File diff suppressed because it is too large
View File


+ 0
- 41
gateware/bootloader/bootloader/kilsyth_bootloader.alt View File

@ -1,41 +0,0 @@
NOTE Copyright (C), 1992-2010, Lattice Semiconductor Corporation *
NOTE All Rights Reserved *
NOTE DATE CREATED: Fri Dec 21 01:40:03 2018 *
NOTE DESIGN NAME: kilsyth_top *
NOTE DEVICE NAME: LFE5U-12F-6CABGA381 *
NOTE PIN ASSIGNMENTS *
NOTE PINS io_ft_be[1] : J5 : inout *
NOTE PINS io_ft_be[0] : K1 : inout *
NOTE PINS io_ft_data[15] : K2 : out *
NOTE PINS io_ft_data[14] : K3 : out *
NOTE PINS io_ft_data[13] : K4 : out *
NOTE PINS io_ft_data[12] : L1 : out *
NOTE PINS io_ft_data[11] : L2 : out *
NOTE PINS io_ft_data[10] : L3 : out *
NOTE PINS io_ft_data[9] : M1 : out *
NOTE PINS io_ft_data[8] : M3 : out *
NOTE PINS io_ft_data[7] : N1 : out *
NOTE PINS io_ft_data[6] : N2 : out *
NOTE PINS io_ft_data[5] : N3 : out *
NOTE PINS io_ft_data[4] : N4 : out *
NOTE PINS io_ft_data[3] : P1 : out *
NOTE PINS io_ft_data[2] : P2 : out *
NOTE PINS io_ft_data[1] : P3 : out *
NOTE PINS io_ft_data[0] : P4 : out *
NOTE PINS o_ft_wr_n : J1 : out *
NOTE PINS o_ft_rd_n : M4 : out *
NOTE PINS io_ft_oe_n : H1 : out *
NOTE PINS o_leds[7] : C11 : out *
NOTE PINS o_leds[6] : B11 : out *
NOTE PINS o_leds[5] : C10 : out *
NOTE PINS o_leds[4] : A11 : out *
NOTE PINS o_leds[3] : A10 : out *
NOTE PINS o_leds[2] : B10 : out *
NOTE PINS o_leds[1] : B9 : out *
NOTE PINS o_leds[0] : A9 : out *
NOTE PINS i_clk16 : G3 : in *