Skip to content

Py3 pcie transport #108

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 107 commits into
base: master
Choose a base branch
from

Conversation

darbymccauley
Copy link

For review by Aaron Parsons

ianmalcolm and others added 30 commits May 2, 2019 21:56
This emulates the tapcp transport but funnels TFTP messages
through a redis PUBSUB connection. This (hopefully) allows multiple users
to talk to SNAP boards without having issues with multiple tftp links to the
SNAP's microblaze.
It also means that devices not on the SNAP-net can talk to the boards, provided
they have access to the redis gateway
Otherwise things get noisy.
Hardcode response timeout to 1s (should never happen
unless the server isn't running)
So that it's consistent with the other read/writes, and we can
replace the tftp instance with a redistftp class
With one thread dealing with each host
Hardcoded 1 isn't enough for some cases (flash erase)
Removed shared access to the connections dictionary from the
processors. Now each has their own connection to their host.
Raise IOError when there is a sign that i2c operation fails
Reset i2c bus after each i2c operation failure
Remove rampTest from init() and make it as an optional test
Improve logging style
init() return True or False, instead of error code
Improve I2C in terms of IO error
Make Si7051 based on Si70XX
Add Si7021
Add model(), which identifies the model of the chip, e.g. 7021 or 7051
Improve snapadc initialization
Otherwise lots of rogue redis connections build up.
Without manually invoking the garbage collector this isn't
guaranteed to save the day. However, in practice, it does.
…puts

Also surn off synth A output which is unused.
And... fix chip sepection logic, which was foiled by an inconsistent
variable name
Empirical evidence suggests that sometimes the SNAP ADC(s)
will initialize such that one of the cores is a sample offset
from the others.
This commit adds a test **not automatically checked** so that
the user can quickly see if all cores are aligned.

Strictly, for normal functionality (i.e. "good" spectra)
one doesn't need _all_ the cores to be mutually aligned,
just cores operating together as a single interleaved sampler.
The implemented test does the easiest thing, and makes sure
everything is aligned whether it needs to be or not. This is
probably a pleasant feature anyway.
Since init now takes care of the demux mode
Add an option (and set to default behaviour) to only make sure
lanes of each chip are synchronized in chip groups.
Allow different chips to operate some number of clock
cycles apart. This should be reasonable behaviour for all
interleaving modes, but leads to far fewer calibration failures
than enforcing inter-chip sync.
The following all needed to happen:
- Relative imports need to be specified as such, python2's ambiguous importing no longer works. (https://www.python.org/dev/peps/pep-0328/#guido-s-decision)
- The Queue module now is lowercase queue. (https://stackoverflow.com/questions/29687837/queue-importerror-in-python-3/29688081#29688081)
- A few print statements that needed to become print functions.
- StringIO module is now io.StringIO. (https://stackoverflow.com/questions/11914472/stringio-in-python3)
- A few changes to the underlying symbols in the C implementation of progska needed to be made.

As of this commit, I can import the module in an ipython session without it crashing. I haven't tested to see whether it works just yet.
The main change has been in skarab_definitions.py, the
create_payload() function - previously in p2, a string was
just a set of ASCII, representable in memory as you see it.
Now with p3's unicode-by-default, you have to encode and
unpack (using struct) to get the equivalent bytes.

Also, dict.iteritems() becomes dict.items(), and changed
the string formatting to be p3 version in a few more
places. There are still exceptions that have e.message in
them though, that will need to be changed before the
port can be considered complete.
Turns out it only worked previously in very narrow circumstances.
time package is used during several exception handling
texadactyl and others added 29 commits June 22, 2020 15:35
Fixes to setup.py, debug/test_rapid_katcp.py, and src/transport_katcp.py
Reworked layout for read-the-docs
Updated installation guide
Reworked layout for read-the-docs
Updated installation guide
Updated README with latest install information
Updated index.rst to include some info from the README
Cleaned up How-to-install-casperfpga
Fixed spelling error
Like all good casperfpga arguments, this keyword isn't defined in the docstring,
so who knows what it does. Probably it relates to the Ethernet memory map which
changed [relatively] recently.
Without this functionality, the removal of the Gbe.setup() method
means there isn't a good way to configure a gbe core's internal registers.
…_program() to program fpga, specific to when using katcp transport
@jkocz jkocz deleted the py3-pcie-transport branch September 15, 2022 22:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.