Hi Rick,
Thanks for reaching out -- XLS generates Verilog and SystemVerilog RTL (selectable by a flag), so conceptually the output can be fed to any tool that accepts Verilog constructs. We've done some cool demos on FPGAs "for fun" even though we don't generally target them right now for what we think of as mission-mode-supported flows.
At a technical level, for the purposes of producing Verilog, the main thing that changes from target to target right now (traditionally known as the "tech mapping") is the "delay model". The delay model really is a pile of data in protobuf form that we use as a basis for scheduling operations into pipe stages.
As for the way we characterize a new target... I think we don't have full documentation for that yet... but there's basically a driver program that makes calls to a service that wraps a backend tool flow, and it jots down what delays it sees for operations -- it squeezes the ops until they fail to close timing, and notes down the number of picoseconds before it went "pop":
It does it that way because some synthesis tools can be "lazy" until they run up against a timing budget, so you can get things that are quite suboptimal before it's up against that limit.
Probably the most challenging bit will be hooking up your backend tool flow behind the service API to characterize the delays. That yosys one would serve as a good example though even if there's a new binary flow. Feel free to generalize the yosys one to support different tool invocations if you decide to take that on and it seems natural.
You could also use the delay model from something else, and presumably just get a bad fmax. If you're just trying to get something going that's often not the end of the world.
Notably XLS hasn't focused on FPGA specific nuances like effective DSP mapping, or being particularly friendly to a discrete-routed substrate with span wires, or methodologies for squeezing LUTs out. Just a fair warning in case you're hoping those are "in the box" already.
Let me know if that makes sense. I'd been meaning to write up the characterization flow for the open PDKs so this might be a good opportunity to do so or explain parts that aren't so clear.
- Chris Leary