@@ -199,97 +199,96 @@ purpose, and correspond to the components in this XLS stack diagram:
199199 [ mkdocs] ( https://google.github.io/xls/contributing/#rendering-documentation ) .
200200* [ ` xls ` ] ( https://github.com/google/xls/tree/main/xls ) : Project-named
201201 subdirectory within the repository, in common Bazel-project style.
202-
203- * [ ` build ` ] ( https://github.com/google/xls/tree/main/xls/BUILD ) : Build
204- macros that create XLS artifacts; e.g. convert DSL to IR, create test
205- targets for DSL code, etc.
206- * [ ` codegen ` ] ( https://github.com/google/xls/tree/main/xls/codegen ) :
207- Verilog AST (VAST) support to generate Verilog/SystemVerilog operations
208- and FSMs. VAST is built up by components we call * generators* (e.g.
209- PipelineGenerator, SequentialGenerator for FSMs) in the translation from
210- XLS IR.
211- * [ ` common ` ] ( https://github.com/google/xls/tree/main/xls/common ) : "base"
212- functionality that layers on top of standard library usage. Generally we
213- use [ Abseil] ( https://abseil.io ) versions of base constructs wherever
214- possible.
215- * [ ` contrib/xlscc ` ] ( https://github.com/google/xls/tree/main/xls/contrib/xlscc ) :
216- Experimental C++ syntax support that targets XLS IR (alternative path to
217- DSLX) developed by a sister team at Google, sharing the same open source
218- / testing flow as the rest of the XLS project. May be of particular
219- interest for teams with existing C++ HLS code bases.
220- * [ ` data_structures ` ] ( https://github.com/google/xls/tree/main/xls/data_structures ) :
221- Generic data structures used in XLS that augment standard libraries;
222- e.g. BDDs, union find, min cut, etc.
223- * [ ` delay_model ` ] ( https://github.com/google/xls/tree/main/xls/estimators/delay_model ) :
224- Functionality to characterize, describe, and interpolate data delay for
225- XLS IR operations on a target backend process. Already-characterized
226- descriptions are placed in ` xls/estimators/delay_model/models ` and can
227- be referred to via command line flags.
228- * [ ` dslx ` ] ( https://github.com/google/xls/tree/main/xls/dslx ) : A DSL
229- (called "DSLX") that mimics Rust, while being an immutable
230- expression-language dataflow DSL with hardware-oriented features; e.g.
231- arbitrary bitwidths, entirely fixed size objects, fully analyzeable call
232- graph. XLS team has found dataflow DSLs are a good fit to describe
233- hardware as compared to languages designed assume von Neumann style
234- computation.
235- * [ ` fuzzer ` ] ( https://github.com/google/xls/tree/main/xls/fuzzer ) : A
236- whole-stack multiprocess fuzzer that generates programs at the DSL level
237- and cross-compares different execution engines (DSL interpreter, IR
238- interpreter, IR JIT, code-generated-Verilog simulator). Designed so that
239- it can easily be run on different nodes in a cluster simultaneously and
240- accumulate shared findings.
241- * [ ` examples ` ] ( https://github.com/google/xls/tree/main/xls/examples ) :
242- Example computations that are tested and executable through the XLS
243- stack.
244- * [ ` experimental ` ] ( https://github.com/google/xls/tree/main/xls/experimental ) :
245- Artifacts captured from experimental explorations.
246- * [ ` interpreter ` ] ( https://github.com/google/xls/tree/main/xls/interpreter ) :
247- Interpreter for XLS IR - useful for debugging and exploration. For cases
248- needing throughput, consider using the JIT (below).
249- * [ ` ir ` ] ( https://github.com/google/xls/tree/main/xls/ir ) : XLS IR
250- definition, text parser/formatter, and facilities for abstract
251- evaluation.
252- * [ ` jit ` ] ( https://github.com/google/xls/tree/main/xls/jit ) : LLVM-based JIT
253- for XLS IR. Enables native-speed execution of DSLX and XLS IR programs.
254- * [ ` modules ` ] ( https://github.com/google/xls/tree/main/xls/modules ) :
255- Hardware building block DSLX "libraries" (outside the DSLX standard
256- library) that may be easily reused or instantiated in a broader design.
257- * [ ` netlist ` ] ( https://github.com/google/xls/tree/main/xls/netlist ) :
258- Libraries that parse/analyze/interpret netlist-level descriptions, as
259- are generally given in simple structural Verilog with an associated cell
260- library.
261- * [ ` passes ` ] ( https://github.com/google/xls/tree/main/xls/passes ) : Passes
262- that run on the XLS IR as part of optimization, before scheduling / code
263- generation.
264- * [ ` scheduling ` ] ( https://github.com/google/xls/tree/main/xls/scheduling ) :
265- Scheduling algorithms, determine when operations execute (e.g. which
266- pipeline stage) in a clocked design.
267- * [ ` simulation ` ] ( https://github.com/google/xls/tree/main/xls/simulation ) :
268- Code that wraps Verilog simulators and generates Verilog testbenches for
269- XLS computations. [ iverilog] ( https://github.com/steveicarus/iverilog ) is
270- currently used to simulate as it supports non-synthesizable testbench
271- constructs.
272- * [ ` solvers ` ] ( https://github.com/google/xls/tree/main/xls/solvers ) :
273- Converters from XLS IR into SMT solver input, such that formal proofs
274- can be run on XLS computations; e.g. Logical Equalence Checks between
275- XLS IR and a netlist description. [ Z3] ( https://github.com/Z3Prover/z3 )
276- is used as the solver engine.
277- * [ ` synthesis ` ] ( https://github.com/google/xls/tree/main/xls/synthesis ) :
278- Interface that wraps backend synthesis flows, such that tools can be
279- retargeted e.g. between ASIC and FPGA flows.
280- * [ ` tests ` ] ( https://github.com/google/xls/tree/main/xls/tests ) :
281- Integration tests that span various top-level components of the XLS
282- project.
283- * [ ` tools ` ] ( https://github.com/google/xls/tree/main/xls/tools ) :
284- [ Many tools] ( https://google.github.io/xls/tools/ ) that work with the XLS
285- system and its libraries in a decomposed way via command line
286- interfaces.
287- * [ ` uncore_rtl ` ] ( https://github.com/google/xls/tree/main/xls/uncore_rtl ) :
288- Helper RTL that interfaces XLS-generated blocks with device top-level
289- for e.g. FPGA experiments.
290- * [ ` visualization ` ] ( https://github.com/google/xls/tree/main/xls/visualization ) :
291- Visualization tools to inspect the XLS compiler/system interactively.
292- See [ IR visualization] ( https://google.github.io/xls/ir_visualization/ ) .
202+ * [ ` build ` ] ( https://github.com/google/xls/tree/main/xls/BUILD ) : Build
203+ macros that create XLS artifacts; e.g. convert DSL to IR, create test
204+ targets for DSL code, etc.
205+ * [ ` codegen ` ] ( https://github.com/google/xls/tree/main/xls/codegen ) :
206+ Verilog AST (VAST) support to generate Verilog/SystemVerilog operations
207+ and FSMs. VAST is built up by components we call * generators* (e.g.
208+ PipelineGenerator, SequentialGenerator for FSMs) in the translation from
209+ XLS IR.
210+ * [ ` common ` ] ( https://github.com/google/xls/tree/main/xls/common ) : "base"
211+ functionality that layers on top of standard library usage. Generally we
212+ use [ Abseil] ( https://abseil.io ) versions of base constructs wherever
213+ possible.
214+ * [ ` contrib/xlscc ` ] ( https://github.com/google/xls/tree/main/xls/contrib/xlscc ) :
215+ Experimental C++ syntax support that targets XLS IR (alternative path to
216+ DSLX) developed by a sister team at Google, sharing the same open source
217+ / testing flow as the rest of the XLS project. May be of particular
218+ interest for teams with existing C++ HLS code bases.
219+ * [ ` data_structures ` ] ( https://github.com/google/xls/tree/main/xls/data_structures ) :
220+ Generic data structures used in XLS that augment standard libraries;
221+ e.g. BDDs, union find, min cut, etc.
222+ * [ ` delay_model ` ] ( https://github.com/google/xls/tree/main/xls/estimators/delay_model ) :
223+ Functionality to characterize, describe, and interpolate data delay for
224+ XLS IR operations on a target backend process. Already-characterized
225+ descriptions are placed in ` xls/estimators/delay_model/models ` and can
226+ be referred to via command line flags.
227+ * [ ` dslx ` ] ( https://github.com/google/xls/tree/main/xls/dslx ) : A DSL
228+ (called "DSLX") that mimics Rust, while being an immutable
229+ expression-language dataflow DSL with hardware-oriented features; e.g.
230+ arbitrary bitwidths, entirely fixed size objects, fully analyzeable call
231+ graph. XLS team has found dataflow DSLs are a good fit to describe
232+ hardware as compared to languages designed assume von Neumann style
233+ computation.
234+ * [ ` fuzzer ` ] ( https://github.com/google/xls/tree/main/xls/fuzzer ) : A
235+ whole-stack multiprocess fuzzer that generates programs at the DSL level
236+ and cross-compares different execution engines (DSL interpreter, IR
237+ interpreter, IR JIT, code-generated-Verilog simulator). Designed so that
238+ it can easily be run on different nodes in a cluster simultaneously and
239+ accumulate shared findings.
240+ * [ ` examples ` ] ( https://github.com/google/xls/tree/main/xls/examples ) :
241+ Example computations that are tested and executable through the XLS
242+ stack.
243+ * [ ` experimental ` ] ( https://github.com/google/xls/tree/main/xls/experimental ) :
244+ Artifacts captured from experimental explorations.
245+ * [ ` interpreter ` ] ( https://github.com/google/xls/tree/main/xls/interpreter ) :
246+ Interpreter for XLS IR - useful for debugging and exploration. For cases
247+ needing throughput, consider using the JIT (below).
248+ * [ ` ir ` ] ( https://github.com/google/xls/tree/main/xls/ir ) : XLS IR
249+ definition, text parser/formatter, and facilities for abstract
250+ evaluation.
251+ * [ ` jit ` ] ( https://github.com/google/xls/tree/main/xls/jit ) : LLVM-based JIT
252+ for XLS IR. Enables native-speed execution of DSLX and XLS IR programs.
253+ * [ ` modules ` ] ( https://github.com/google/xls/tree/main/xls/modules ) :
254+ Hardware building block DSLX "libraries" (outside the DSLX standard
255+ library) that may be easily reused or instantiated in a broader design.
256+ * [ ` netlist ` ] ( https://github.com/google/xls/tree/main/xls/netlist ) :
257+ Libraries that parse/analyze/interpret netlist-level descriptions, as
258+ are generally given in simple structural Verilog with an associated cell
259+ library.
260+ * [ ` passes ` ] ( https://github.com/google/xls/tree/main/xls/passes ) : Passes
261+ that run on the XLS IR as part of optimization, before scheduling / code
262+ generation.
263+ * [ ` scheduling ` ] ( https://github.com/google/xls/tree/main/xls/scheduling ) :
264+ Scheduling algorithms, determine when operations execute (e.g. which
265+ pipeline stage) in a clocked design.
266+ * [ ` simulation ` ] ( https://github.com/google/xls/tree/main/xls/simulation ) :
267+ Code that wraps Verilog simulators and generates Verilog testbenches for
268+ XLS computations. [ iverilog] ( https://github.com/steveicarus/iverilog ) is
269+ currently used to simulate as it supports non-synthesizable testbench
270+ constructs.
271+ * [ ` solvers ` ] ( https://github.com/google/xls/tree/main/xls/solvers ) :
272+ Converters from XLS IR into SMT solver input, such that formal proofs
273+ can be run on XLS computations; e.g. Logical Equalence Checks between
274+ XLS IR and a netlist description. [ Z3] ( https://github.com/Z3Prover/z3 )
275+ is used as the solver engine.
276+ * [ ` synthesis ` ] ( https://github.com/google/xls/tree/main/xls/synthesis ) :
277+ Interface that wraps backend synthesis flows, such that tools can be
278+ retargeted e.g. between ASIC and FPGA flows.
279+ * [ ` tests ` ] ( https://github.com/google/xls/tree/main/xls/tests ) :
280+ Integration tests that span various top-level components of the XLS
281+ project.
282+ * [ ` tools ` ] ( https://github.com/google/xls/tree/main/xls/tools ) :
283+ [ Many tools] ( https://google.github.io/xls/tools/ ) that work with the XLS
284+ system and its libraries in a decomposed way via command line
285+ interfaces.
286+ * [ ` uncore_rtl ` ] ( https://github.com/google/xls/tree/main/xls/uncore_rtl ) :
287+ Helper RTL that interfaces XLS-generated blocks with device top-level
288+ for e.g. FPGA experiments.
289+ * [ ` visualization ` ] ( https://github.com/google/xls/tree/main/xls/visualization ) :
290+ Visualization tools to inspect the XLS compiler/system interactively.
291+ See [ IR visualization] ( https://google.github.io/xls/ir_visualization/ ) .
293292
294293## Community
295294
0 commit comments