Tags: google/xls
Tags
[codegen 1.5] Fix a pipeline-register insertion bug for I/O & state o… …perands After I/O lowering, we previously ended up moving the use of the operands into logic outside of the pipeline stages. Since pipeline register insertion happened after that point, it would think the uses did not need pipeline registers, accidentally linking (e.g.) Sends directly to their inputs with no intervening registers. To fix this, we temporarily route these uses through identity nodes in the stage where the operation was scheduled, and rely on our dataflow & identity cleanup passes to remove them later. The same principle applies to state-write operations too. This lets us re-enable the `BasicDatapathResetAndInputFlop` test. PiperOrigin-RevId: 851457571
Integrate LLVM at llvm/llvm-project@14c00c05c13a Updates LLVM usage to match [14c00c05c13a](llvm/llvm-project@14c00c05c13a) PiperOrigin-RevId: 850765800
[codegen 1.5] Implement ChannelToPortIoLoweringPass. This pass transforms channel operations (Send/Receive) within a `ScheduledBlock` into either block ports or FIFO instantiations. We also add support for zero-latency, skid, and single-flop buffering on streaming I/O channels. We port helper functions from codegen 1.0 to add registers and the necessary control logic for Ready/Valid/Data interfaces, though we make it simpler by constructing skid buffers as the combination of a zero-latency & register buffer. Features not yet supported: - Gating received data (for predicated or non-blocking receives) PiperOrigin-RevId: 850524913
[util] Generalize literal dropping in `RemoveRedundantNodes`. The `RemoveRedundantNodes` utility now accepts a function to specify which literals should be dropped, making it more flexible. The logic for handling empty operand sets after removal is moved to the call sites in `MakeNaryAnd`, `MakeNaryOr`, and `MakeNaryNand`. This also simplifies the flattening logic in `MakeNaryAnd` and `MakeNaryOr` by deferring literal removal to `RemoveRedundantNodes`. PiperOrigin-RevId: 849276239
Migrates `builder.create<Op>()` => `Op::create()` in tablegen files PiperOrigin-RevId: 847796796
[xlscc] Use empty LeafTypeTree for type indexing instead of GetLeafTypes This change updates the continuation analysis to use xls::LeafTypeTree for representing and checking the types of source nodes, replacing the previous method of using flat vectors of leaf types via an internal function not intended for public use. PiperOrigin-RevId: 846881182
Implement state to register I/O lowering pass in codegen v1.5. PiperOrigin-RevId: 846495277
PreviousNext