API Reference¶
introduction.demuxTool.cli¶
Command-line interface for introduction.demuxTool.
The CLI preserves the original demultiplexer workflow while adding a small, conservative Sphinx skeleton generator for GitHub Pages deployments.
introduction.demuxTool.apis¶
- class introduction.demuxTool.apis.RunRequest(n_outputs=4, data_bw=8, strict=False, csv_path=None, json_spec=None, out_csv=None, out_vcd=None, in_dir='in', out_dir='out')[source]¶
Bases:
objectImmutable request for a demux simulation run.
- Parameters:
n_outputs (int)
data_bw (int)
strict (bool)
csv_path (str | None)
json_spec (str | None)
out_csv (str | None)
out_vcd (str | None)
in_dir (str)
out_dir (str)
- csv_path: str | None = None¶
- data_bw: int = 8¶
- in_dir: str = 'in'¶
- json_spec: str | None = None¶
- n_outputs: int = 4¶
- out_csv: str | None = None¶
- out_dir: str = 'out'¶
- out_vcd: str | None = None¶
- strict: bool = False¶
- class introduction.demuxTool.apis.RunResult(rows: 'List[Dict[str, int]]' = <factory>, sel_bits: 'int' = 1, data_bw: 'int' = 8, n_outputs: 'int' = 4, out_csv: 'Optional[str]' = None, out_vcd: 'Optional[str]' = None)[source]¶
Bases:
object- Parameters:
rows (List[Dict[str, int]])
sel_bits (int)
data_bw (int)
n_outputs (int)
out_csv (str | None)
out_vcd (str | None)
- data_bw: int = 8¶
- n_outputs: int = 4¶
- out_csv: str | None = None¶
- out_vcd: str | None = None¶
- rows: List[Dict[str, int]]¶
- sel_bits: int = 1¶
introduction.demuxTool.app¶
Application orchestration for introduction.demuxTool.
- class introduction.demuxTool.app.DemuxApp[source]¶
Bases:
objectHigh-level demultiplexer workflow.
The app resolves input/output paths, loads CSV or JSON vectors, runs the demultiplexer circuit, and writes optional CSV/VCD outputs.
- run(req)[source]¶
Run a complete demux simulation.
- Parameters:
req (RunRequest)
- Return type:
introduction.demuxTool.core¶
Core demultiplexer model for introduction.demuxTool.
The production simulator prefers PyRTL when it is installed, but this module is
safe to import in documentation environments that do not install optional EDA
packages. A small pure-Python simulator is kept as a deterministic fallback so
Sphinx autodoc and lightweight CI jobs can import the package without pulling in
pyrtl.
- class introduction.demuxTool.core.DemuxCircuit(n_outputs=4, data_bw=8, strict=False)[source]¶
Bases:
objectCombinational N-way demultiplexer.
The demultiplexer routes one data word
xto exactly one outputyNaccording to the select valuesel. All non-selected outputs are zero.- Parameters:
n_outputs (int) – Number of demultiplexer outputs. Must be at least 2.
data_bw (int) – Data bit width for the input and each output.
strict (bool) – When
True, selections outside0 <= sel < n_outputsdrive all outputs to zero. WhenFalse, the select word is simply masked to the internal select width, matching the original PyRTL-oriented behavior.
Notes
build()requires the optionalpyrtlpackage.simulate()uses PyRTL when available and otherwise falls back to a pure-Python equivalent. This keeps the package importable during Sphinx builds where PyRTL may not be installed.
introduction.demuxTool.design¶
introduction.demuxTool.io¶
- introduction.demuxTool.io.load_rows_from_csv(path)[source]¶
- Parameters:
path (str)
- Return type:
Iterator[Dict[str, int]]
- introduction.demuxTool.io.load_rows_from_json(path_or_inline)[source]¶
- Parameters:
path_or_inline (str)
- Return type:
Iterator[Dict[str, int]]