DRTIO port - gateware #140
No reviewers
Labels
No Milestone
No Assignees
2 Participants
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: M-Labs/artiq-zynq#140
Loading…
Reference in New Issue
No description provided.
Delete Branch "mwojcik/artiq-zynq:drtio_gateware"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
This is a part of few pull requests for DRTIO functionality. They have been broken up to allow easier code review overall. They're identical in contents to drtio_port branch.
This PR includes changes in gateware to accomodate DRTIO features, as well as AXI specific DRTIO aux controller.
This PR can be merged anytime as it doesn't have external dependencies.
Any feedback and suggestions are welcome.
@ -0,0 +1,85 @@
"""Auxiliary controller, common to satellite and master"""
I would rename the file to
drtio_aux_controller.py
.@ -67,0 +98,4 @@
Instance("BUFG", i_I=rtiox4_clk, o_O=self.cd_rtiox4.clk),
MultiReg(pll_locked, self.pll_locked.status)
]
Share with Kasli-SoC?
...or even put it in
artiq.gateware
and share with the other boards.It's the same thing for artiq kasli, kc705 and sayma_rtm boards. I could separate it and save few lines everywhere, but where to put it, so it fits nicely? I'm thinking
artiq.gateware.rtio.clock_multiplier
? or maybe justartiq.gateware.clock_multiplier
?Maybe
artiq.gateware.rtio.xilinx_clocking
, along with the SERDES rules?@ -67,0 +109,4 @@
"-of [get_cells -filter {{REF_NAME == OSERDESE2}}]] "
"-to [get_pins -filter {{REF_PIN_NAME == D}} "
"-of [get_cells -filter {{REF_NAME == ISERDESE2}}]]"
)
ditto
@ -73,3 +148,1 @@
platform.toolchain.bitstream_commands.extend([
"set_property BITSTREAM.GENERAL.COMPRESS True [current_design]",
])
platform = prepare_zc706_platform(platform)
No need to return
platform
and reassign it. The object is mutated in-place.@ -128,0 +383,4 @@
self.submodules.drtiosat = core
self.csr_devices.append("drtiosat")
# Repeaters - there would be for i != 0 - however zc706 only has one SFP
# and no other means to connect to
There's the link on the MGT SMAs but I doubt anyone needs this. @dhslichter ?
@ -128,0 +265,4 @@
self.rustc_cfg["RTIO_FREQUENCY"] = str(self.drtio_transceiver.rtio_clk_freq/1e6)
if use_si5324_33:
You can use assume it is true at all times and simplify the code accordingly. Only NIST backplanes are supported on ZC706 and they need the 3.3V signals.
So there won't be "simple" master/satellite? What about the board I've been testing it on, is it with a backplane?
"Simple" targets were just for testing, on the same hardware that has the backplane installed (even if they don't use the backplane).
Also fine to remove these targets, they were only there for the initial development.
Okay, makes sense, I was somewhat worried about mismatched voltages for si5324. Although I don't think this is the place to be removing the simple targets, that should be done in another PR (not only unrelated functionally to drtio, it also touches gateware, nix scripts and readme).
Changing the IOSTANDARD here does not actually change the voltage produced by the FPGA I/O, and will not damage the Si5324. In fact it even works correctly in practice when the voltage in the CMOS/TTL IOSTANDARD is wrong.
@ -178,0 +198,4 @@
platform.add_platform_command("set_input_jitter clk_fpga_0 0.24")
# kasli_soc has no SATA, but it has 4x SFP
# not sure yet why sfp0 is omitted in MasterMode
It's omitted on Kasli because it's used for Ethernet.
Kasli-SoC has a dedicated RJ45 port.