Skip to content

Commit ef13f54

Browse files
ericastorcopybara-github
authored andcommitted
[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
1 parent b9ba251 commit ef13f54

File tree

12 files changed

+2434
-17
lines changed

12 files changed

+2434
-17
lines changed

xls/codegen_v_1_5/BUILD

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,9 +99,62 @@ cc_library(
9999
hdrs = ["channel_to_port_io_lowering_pass.h"],
100100
deps = [
101101
":block_conversion_pass",
102+
"//xls/codegen:conversion_utils",
103+
"//xls/codegen:ram_configuration",
104+
"//xls/common:casts",
105+
"//xls/common/status:ret_check",
106+
"//xls/common/status:status_macros",
107+
"//xls/ir",
108+
"//xls/ir:bits",
109+
"//xls/ir:channel",
110+
"//xls/ir:node_util",
111+
"//xls/ir:op",
112+
"//xls/ir:register",
113+
"//xls/ir:source_location",
114+
"//xls/ir:value",
115+
"//xls/ir:value_utils",
116+
"//xls/passes:bdd_query_engine",
117+
"//xls/passes:pass_base",
118+
"//xls/public:function_builder",
119+
"@com_google_absl//absl/algorithm:container",
120+
"@com_google_absl//absl/base:core_headers",
121+
"@com_google_absl//absl/container:btree",
122+
"@com_google_absl//absl/container:flat_hash_map",
123+
"@com_google_absl//absl/container:flat_hash_set",
124+
"@com_google_absl//absl/container:inlined_vector",
125+
"@com_google_absl//absl/log:check",
126+
"@com_google_absl//absl/status",
127+
"@com_google_absl//absl/status:statusor",
128+
"@com_google_absl//absl/strings",
129+
"@com_google_absl//absl/strings:str_format",
130+
"@com_google_absl//absl/types:span",
131+
"@cppitertools",
132+
],
133+
)
134+
135+
cc_test(
136+
name = "channel_to_port_io_lowering_pass_test",
137+
srcs = ["channel_to_port_io_lowering_pass_test.cc"],
138+
deps = [
139+
":block_conversion_pass",
140+
":channel_to_port_io_lowering_pass",
141+
":scheduled_block_conversion_pass",
142+
"//xls/codegen:codegen_options",
143+
"//xls/common:xls_gunit_main",
144+
"//xls/common/status:matchers",
145+
"//xls/common/status:status_macros",
102146
"//xls/ir",
147+
"//xls/ir:bits",
148+
"//xls/ir:channel",
149+
"//xls/ir:channel_ops",
150+
"//xls/ir:function_builder",
151+
"//xls/ir:ir_matcher",
152+
"//xls/ir:ir_test_base",
153+
"//xls/ir:op",
154+
"//xls/ir:value",
103155
"//xls/passes:pass_base",
104156
"@com_google_absl//absl/status:statusor",
157+
"@googletest//:gtest",
105158
],
106159
)
107160

0 commit comments

Comments
 (0)