Commit ac3e78c5 authored by Luke Leighton's avatar Luke Leighton
Browse files

allow ioSpecs loadFromPinmux to undersand IoPin.ANALOG format

parent 7961aab0
...@@ -120,7 +120,7 @@ class IoSpecs ( object ): ...@@ -120,7 +120,7 @@ class IoSpecs ( object ):
""" """
Load ioPadsSpec from a LibreSOC generated pinmux file in JSON format. Load ioPadsSpec from a LibreSOC generated pinmux file in JSON format.
""" """
print( ' o Loading I/O pad specifications from "{}".'.format(fileName) ) print( ' o Loading I/O pad specifications from "%s".' % fileName )
if not os.path.isfile(fileName): if not os.path.isfile(fileName):
raise ErrorMessage( 2, [ 'IoSpecs.loadFromPinmux(): ' raise ErrorMessage( 2, [ 'IoSpecs.loadFromPinmux(): '
'JSON pinmux file not found.' 'JSON pinmux file not found.'
...@@ -128,10 +128,12 @@ class IoSpecs ( object ): ...@@ -128,10 +128,12 @@ class IoSpecs ( object ):
with open(fileName) as fd: with open(fileName) as fd:
datas = utf8toStr( json.loads( fd.read(), object_hook=utf8toStr ) datas = utf8toStr( json.loads( fd.read(), object_hook=utf8toStr )
, ignoreDicts=True ) , ignoreDicts=True )
self.addIoPadSpecs(datas['pads.east' ], IoPin.EAST ) # check if pad is analog or not: last spec item starts with "A"
self.addIoPadSpecs(datas['pads.west' ], IoPin.WEST ) analog = IoPin.ANALOG if padDatas[-1][0] == 'A' else 0
self.addIoPadSpecs(datas['pads.north'], IoPin.NORTH ) self.addIoPadSpecs(datas['pads.east' ], IoPin.EAST | analog )
self.addIoPadSpecs(datas['pads.south'], IoPin.SOUTH ) self.addIoPadSpecs(datas['pads.west' ], IoPin.WEST | analog )
self.addIoPadSpecs(datas['pads.north'], IoPin.NORTH | analog )
self.addIoPadSpecs(datas['pads.south'], IoPin.SOUTH | analog )
for padDatas in datas['pads.instances']: for padDatas in datas['pads.instances']:
padName = padDatas[0] padName = padDatas[0]
...@@ -141,7 +143,8 @@ class IoSpecs ( object ): ...@@ -141,7 +143,8 @@ class IoSpecs ( object ):
.format(padName) )) .format(padName) ))
continue continue
end = None end = None
if padDatas[-1] in '+-*': end = -1 # remove the direction info: + output - input * bi-directional
if padDatas[-1][-1] in '+-*': end = -1
self._ioPadsLUT[padName].addNets( padDatas[1:end] ) self._ioPadsLUT[padName].addNets( padDatas[1:end] )
trace( 560, '-' ) trace( 560, '-' )
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment