Summary

csi2 (0/2)

build (fail)
          [INFO] Building Spade Compiler
    Blocking waiting for file lock on build directory
    Finished `release` profile [optimized] target(s) in 40.90s
[INFO] Attempting to download surfer plugin wasm file.
[INFO] Done downloading surfer plugin
[INFO] Cloning "protocols"
[INFO] Building spade code
[ERROR] Failed to build spade code
Cloning into '/builds/spade-lang/trawler/work/csi2/build/libs/protocols'...
warning: redirecting to https://gitlab.com/spade-lang/lib/protocols.git/
HEAD is now at 7857ff5 Bump to new Spade
error: I2CConfig is inaccessible
   ┌─ src/camera_config.spade:2:21
   │
 2 │ use protocols::i2c::I2CConfig;
   │                ---  ^^^^^^^^^ I2CConfig is inaccessible
   │                │     
   │                Because i2c is inaccessible
   │
   ┌─ build/libs/protocols/src/i2c.spade:7:1
   │  
 7 │ ╭ struct I2CConfig {
 8 │ │     clk_period: uint<20>,
 9 │ │     t_250ns: uint<20>
10 │ │ }
   │ ╰─' The inaccessible item is defined here
   │  
   ┌─ build/libs/protocols/src/main.spade:2:1
   │
 2 │ mod i2c;
   │ ------- The item is inaccessible because i2c is inaccessible

error: ShortPacketStream is inaccessible
   ┌─ src/main.spade:14:24
   │
14 │ use lib::short_packet::ShortPacketStream;
   │                        ^^^^^^^^^^^^^^^^^ ShortPacketStream is inaccessible
   │
   ┌─ src/short_packet.spade:7:1
   │  
 7 │ ╭ struct ShortPacketStream {
 8 │ │     s: Option<ShortPacket>
 9 │ │ }
   │ ╰─' The inaccessible item is defined here
   │  
   = Consider adding `pub`
   │
 7 │ pub struct ShortPacketStream {
   │ ++++
   = Or a more limited visibility like pub(lib) or pub(super)
   │
 7 │ pub(lib) struct ShortPacketStream {
   │ +++++++++

error: UartConfig is inaccessible
  ┌─ src/uart_config.spade:1:22
  │
1 │ use protocols::uart::UartConfig;
  │                ----  ^^^^^^^^^^ UartConfig is inaccessible
  │                │      
  │                Because uart is inaccessible
  │
  ┌─ build/libs/protocols/src/uart.spade:3:1
  │  
3 │ ╭ struct UartConfig {
4 │ │     bit_time: uint<15>,
5 │ │     parity: bool,
6 │ │     stop_bits: uint<3>
7 │ │ }
  │ ╰─' The inaccessible item is defined here
  │  
  ┌─ build/libs/protocols/src/main.spade:1:1
  │
1 │ mod uart;
  │ -------- The item is inaccessible because uart is inaccessible

error: UartOut is inaccessible
    ┌─ build/libs/protocols/src/test.spade:2:16
    │
  2 │ use lib::uart::UartOut;
    │                ^^^^^^^ UartOut is inaccessible
    │
    ┌─ build/libs/protocols/src/uart.spade:114:1
    │  
114 │ ╭ enum UartOut {
115 │ │     Ok{val: uint<8>},
116 │ │     ParityError{val: uint<8>},
117 │ │     None
118 │ │ }
    │ ╰─' The inaccessible item is defined here
    │  
    = Consider adding `pub`
    │
114 │ pub enum UartOut {
    │ ++++
    = Or a more limited visibility like pub(lib) or pub(super)
    │
114 │ pub(lib) enum UartOut {
    │ +++++++++

Error: aborting due to previous error

Location:
    spade-compiler/src/main.rs:168:17
Error: 
   0: Failed to build spade code

Backtrace omitted. Run with RUST_BACKTRACE=1 environment variable to display it.
Run with RUST_BACKTRACE=full to include source snippets.

        
test (fail)
          [INFO] Building Spade Compiler
    Blocking waiting for file lock on package cache
    Blocking waiting for file lock on package cache
    Blocking waiting for file lock on package cache
    Blocking waiting for file lock on package cache
    Blocking waiting for file lock on build directory
    Finished `release` profile [optimized] target(s) in 1.64s
[INFO] Building spade code
[ERROR] Failed to build spade code
HEAD is now at 7857ff5 Bump to new Spade
error: I2CConfig is inaccessible
   ┌─ src/camera_config.spade:2:21
   │
 2 │ use protocols::i2c::I2CConfig;
   │                ---  ^^^^^^^^^ I2CConfig is inaccessible
   │                │     
   │                Because i2c is inaccessible
   │
   ┌─ build/libs/protocols/src/i2c.spade:7:1
   │  
 7 │ ╭ struct I2CConfig {
 8 │ │     clk_period: uint<20>,
 9 │ │     t_250ns: uint<20>
10 │ │ }
   │ ╰─' The inaccessible item is defined here
   │  
   ┌─ build/libs/protocols/src/main.spade:2:1
   │
 2 │ mod i2c;
   │ ------- The item is inaccessible because i2c is inaccessible

error: ShortPacketStream is inaccessible
   ┌─ src/main.spade:14:24
   │
14 │ use lib::short_packet::ShortPacketStream;
   │                        ^^^^^^^^^^^^^^^^^ ShortPacketStream is inaccessible
   │
   ┌─ src/short_packet.spade:7:1
   │  
 7 │ ╭ struct ShortPacketStream {
 8 │ │     s: Option<ShortPacket>
 9 │ │ }
   │ ╰─' The inaccessible item is defined here
   │  
   = Consider adding `pub`
   │
 7 │ pub struct ShortPacketStream {
   │ ++++
   = Or a more limited visibility like pub(lib) or pub(super)
   │
 7 │ pub(lib) struct ShortPacketStream {
   │ +++++++++

error: UartConfig is inaccessible
  ┌─ src/uart_config.spade:1:22
  │
1 │ use protocols::uart::UartConfig;
  │                ----  ^^^^^^^^^^ UartConfig is inaccessible
  │                │      
  │                Because uart is inaccessible
  │
  ┌─ build/libs/protocols/src/uart.spade:3:1
  │  
3 │ ╭ struct UartConfig {
4 │ │     bit_time: uint<15>,
5 │ │     parity: bool,
6 │ │     stop_bits: uint<3>
7 │ │ }
  │ ╰─' The inaccessible item is defined here
  │  
  ┌─ build/libs/protocols/src/main.spade:1:1
  │
1 │ mod uart;
  │ -------- The item is inaccessible because uart is inaccessible

error: UartOut is inaccessible
    ┌─ build/libs/protocols/src/test.spade:2:16
    │
  2 │ use lib::uart::UartOut;
    │                ^^^^^^^ UartOut is inaccessible
    │
    ┌─ build/libs/protocols/src/uart.spade:114:1
    │  
114 │ ╭ enum UartOut {
115 │ │     Ok{val: uint<8>},
116 │ │     ParityError{val: uint<8>},
117 │ │     None
118 │ │ }
    │ ╰─' The inaccessible item is defined here
    │  
    = Consider adding `pub`
    │
114 │ pub enum UartOut {
    │ ++++
    = Or a more limited visibility like pub(lib) or pub(super)
    │
114 │ pub(lib) enum UartOut {
    │ +++++++++

Error: aborting due to previous error

Location:
    spade-compiler/src/main.rs:168:17
Error: 
   0: Failed to build spade code

Backtrace omitted. Run with RUST_BACKTRACE=1 environment variable to display it.
Run with RUST_BACKTRACE=full to include source snippets.

        

ethernet (1/1)

build (success)
          
        

fixed (1/1)

build (success)
          
        

mcp3002 (1/1)

build (success)
          
        

protocols (1/2)

build (success)
          
        
test (fail)
          [INFO] Building Spade Compiler
    Finished `release` profile [optimized] target(s) in 0.23s
[INFO] /builds/spade-lang/trawler/work/protocols/build/spade.sv is up to date
[INFO] Installing pip dependencies
DEPRECATION: Loading egg at /builds/spade-lang/trawler/work/protocols/build/oss-cad-suite/lib/python3.11/site-packages/icefunprog-2.0.3-py3.11.egg is deprecated. pip 23.3 will enforce this behaviour change. A possible replacement is to use pip for package installation..
DEPRECATION: Loading egg at /builds/spade-lang/trawler/work/protocols/build/oss-cad-suite/lib/python3.11/site-packages/yosys_mau-0.0.2-py3.11-linux-x64.egg is deprecated. pip 23.3 will enforce this behaviour change. A possible replacement is to use pip for package installation..
DEPRECATION: Loading egg at /builds/spade-lang/trawler/work/protocols/build/oss-cad-suite/lib/python3.11/site-packages/tqdm-4.67.0-py3.11.egg is deprecated. pip 23.3 will enforce this behaviour change. A possible replacement is to use pip for package installation..
DEPRECATION: Loading egg at /builds/spade-lang/trawler/work/protocols/build/oss-cad-suite/lib/python3.11/site-packages/jsonschema_specifications-2024.10.1-py3.11.egg is deprecated. pip 23.3 will enforce this behaviour change. A possible replacement is to use pip for package installation..
DEPRECATION: Loading egg at /builds/spade-lang/trawler/work/protocols/build/oss-cad-suite/lib/python3.11/site-packages/referencing-0.35.1-py3.11.egg is deprecated. pip 23.3 will enforce this behaviour change. A possible replacement is to use pip for package installation..
DEPRECATION: Loading egg at /builds/spade-lang/trawler/work/protocols/build/oss-cad-suite/lib/python3.11/site-packages/pyusb-1.2.1-py3.11.egg is deprecated. pip 23.3 will enforce this behaviour change. A possible replacement is to use pip for package installation..
DEPRECATION: Loading egg at /builds/spade-lang/trawler/work/protocols/build/oss-cad-suite/lib/python3.11/site-packages/jsonmerge-1.9.2-py3.11.egg is deprecated. pip 23.3 will enforce this behaviour change. A possible replacement is to use pip for package installation..
DEPRECATION: Loading egg at /builds/spade-lang/trawler/work/protocols/build/oss-cad-suite/lib/python3.11/site-packages/tinyprog-1.0.23-py3.11.egg is deprecated. pip 23.3 will enforce this behaviour change. A possible replacement is to use pip for package installation..
DEPRECATION: Loading egg at /builds/spade-lang/trawler/work/protocols/build/oss-cad-suite/lib/python3.11/site-packages/jsonschema-4.23.0-py3.11.egg is deprecated. pip 23.3 will enforce this behaviour change. A possible replacement is to use pip for package installation..
DEPRECATION: Loading egg at /builds/spade-lang/trawler/work/protocols/build/oss-cad-suite/lib/python3.11/site-packages/attrs-24.2.0-py3.11.egg is deprecated. pip 23.3 will enforce this behaviour change. A possible replacement is to use pip for package installation..
DEPRECATION: Loading egg at /builds/spade-lang/trawler/work/protocols/build/oss-cad-suite/lib/python3.11/site-packages/pyserial-3.5-py3.11.egg is deprecated. pip 23.3 will enforce this behaviour change. A possible replacement is to use pip for package installation..
DEPRECATION: Loading egg at /builds/spade-lang/trawler/work/protocols/build/oss-cad-suite/lib/python3.11/site-packages/tinyfpgab-1.1.0-py3.11.egg is deprecated. pip 23.3 will enforce this behaviour change. A possible replacement is to use pip for package installation..
DEPRECATION: Loading egg at /builds/spade-lang/trawler/work/protocols/build/oss-cad-suite/lib/python3.11/site-packages/find_libpython-0.5.0-py3.11.egg is deprecated. pip 23.3 will enforce this behaviour change. A possible replacement is to use pip for package installation..
DEPRECATION: Loading egg at /builds/spade-lang/trawler/work/protocols/build/oss-cad-suite/lib/python3.11/site-packages/cocotb-2.1.0.dev0+41564633-py3.11-linux-x64.egg is deprecated. pip 23.3 will enforce this behaviour change. A possible replacement is to use pip for package installation..
DEPRECATION: Loading egg at /builds/spade-lang/trawler/work/protocols/build/oss-cad-suite/lib/python3.11/site-packages/blackiceprog-2.0.0-py3.11.egg is deprecated. pip 23.3 will enforce this behaviour change. A possible replacement is to use pip for package installation..
DEPRECATION: Loading egg at /builds/spade-lang/trawler/work/protocols/build/oss-cad-suite/lib/python3.11/site-packages/typing_extensions-4.15.0-py3.11.egg is deprecated. pip 23.3 will enforce this behaviour change. A possible replacement is to use pip for package installation..
DEPRECATION: Loading egg at /builds/spade-lang/trawler/work/protocols/build/oss-cad-suite/lib/python3.11/site-packages/intelhex-2.3.0-py3.11.egg is deprecated. pip 23.3 will enforce this behaviour change. A possible replacement is to use pip for package installation..
DEPRECATION: Loading egg at /builds/spade-lang/trawler/work/protocols/build/oss-cad-suite/lib/python3.11/site-packages/six-1.16.0-py3.11.egg is deprecated. pip 23.3 will enforce this behaviour change. A possible replacement is to use pip for package installation..
DEPRECATION: Loading egg at /builds/spade-lang/trawler/work/protocols/build/oss-cad-suite/lib/python3.11/site-packages/PyGObject-3.46.0-py3.11-linux-x64.egg is deprecated. pip 23.3 will enforce this behaviour change. A possible replacement is to use pip for package installation..
Collecting maturin[zig]>=1.8.2
  Obtaining dependency information for maturin[zig]>=1.8.2 from https://files.pythonhosted.org/packages/58/e0/c8fa042daf0608cc2e9a59b6df3a9e287bfc7f229136f17727f4118bac2d/maturin-1.11.5-py3-none-manylinux_2_12_x86_64.manylinux2010_x86_64.musllinux_1_1_x86_64.whl.metadata
  Using cached maturin-1.11.5-py3-none-manylinux_2_12_x86_64.manylinux2010_x86_64.musllinux_1_1_x86_64.whl.metadata (16 kB)
Requirement already satisfied: pytest in ./build/oss-cad-suite/lib/python3.11/site-packages (9.0.0)
Collecting ziglang<0.13.0,>=0.10.0 (from maturin[zig]>=1.8.2)
  Obtaining dependency information for ziglang<0.13.0,>=0.10.0 from https://files.pythonhosted.org/packages/ba/13/9f4f45a6e6467fdc7e952043fc3e1449d185bcc3d4095b4b01d45241c0f9/ziglang-0.12.1-py3-none-manylinux_2_12_x86_64.manylinux2010_x86_64.musllinux_1_1_x86_64.whl.metadata
  Using cached ziglang-0.12.1-py3-none-manylinux_2_12_x86_64.manylinux2010_x86_64.musllinux_1_1_x86_64.whl.metadata (1.8 kB)
Requirement already satisfied: iniconfig>=1.0.1 in ./build/oss-cad-suite/lib/python3.11/site-packages (from pytest) (2.3.0)
Requirement already satisfied: packaging>=22 in ./build/oss-cad-suite/lib/python3.11/site-packages (from pytest) (25.0)
Requirement already satisfied: pluggy<2,>=1.5 in ./build/oss-cad-suite/lib/python3.11/site-packages (from pytest) (1.6.0)
Requirement already satisfied: pygments>=2.7.2 in ./build/oss-cad-suite/lib/python3.11/site-packages (from pytest) (2.19.2)
Using cached ziglang-0.12.1-py3-none-manylinux_2_12_x86_64.manylinux2010_x86_64.musllinux_1_1_x86_64.whl (78.2 MB)
Using cached maturin-1.11.5-py3-none-manylinux_2_12_x86_64.manylinux2010_x86_64.musllinux_1_1_x86_64.whl (9.3 MB)
Installing collected packages: ziglang, maturin
Successfully installed maturin-1.11.5 ziglang-0.12.1
WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv

[notice] A new release of pip is available: 23.2.1 -> 25.3
[notice] To update, run: tabbypy3 -m pip install --upgrade pip
[INFO] Checking if spade-python needs rebuilding. (This may print an error, it is expected)
⚠️  Warning: `project.version` field is required in pyproject.toml unless it is present in the `project.dynamic` list
🍹 Building a mixed python/rust project
🔗 Found pyo3 bindings with abi3 support
⚠️  Warning: Failed to determine python platform
🐍 Not using a specific python interpreter
🛠️ Using zig for cross-compiling to x86_64-unknown-linux-gnu
   Compiling proc-macro2 v1.0.95
   Compiling unicode-ident v1.0.18
   Compiling autocfg v1.5.0
   Compiling serde_core v1.0.228
   Compiling serde v1.0.228
   Compiling once_cell v1.21.3
   Compiling memchr v2.7.5
   Compiling regex-syntax v0.8.5
   Compiling beef v0.5.2
   Compiling fnv v1.0.7
   Compiling cfg-if v1.0.1
   Compiling unicode-width v0.2.1
   Compiling termcolor v1.4.1
   Compiling target-lexicon v0.12.16
   Compiling pin-project-lite v0.2.16
   Compiling libc v0.2.174
   Compiling rustc-hash v2.1.1
   Compiling bumpalo v3.19.0
   Compiling shlex v1.3.0
   Compiling either v1.15.0
   Compiling smallvec v1.15.1
   Compiling log v0.4.27
   Compiling lazy_static v1.5.0
   Compiling colored v3.0.0
   Compiling nu-ansi-term v0.50.1
   Compiling nesty v0.2.0
   Compiling owo-colors v4.2.2
   Compiling eyre v0.6.12
   Compiling tap v1.0.1
   Compiling utf8parse v0.2.2
   Compiling object v0.36.7
   Compiling gimli v0.31.1
   Compiling anstyle-query v1.1.3
   Compiling indenter v0.3.3
   Compiling anstyle v1.0.11
   Compiling adler2 v2.0.1
   Compiling typeid v1.0.3
   Compiling colorchoice v1.0.4
   Compiling color-spantrace v0.3.0
   Compiling is_terminal_polyfill v1.70.1
   Compiling indoc v2.0.6
   Compiling virtue v0.0.18
   Compiling rustc-demangle v0.1.25
   Compiling serde_json v1.0.141
   Compiling parking_lot_core v0.9.11
   Compiling heck v0.5.0
   Compiling clap_lex v0.7.5
   Compiling strsim v0.11.1
   Compiling fastrand v2.3.0
   Compiling ryu v1.0.20
   Compiling unty v0.0.4
   Compiling itoa v1.0.15
   Compiling portable-atomic v1.11.1
   Compiling heck v0.4.1
   Compiling scopeguard v1.2.0
   Compiling thiserror v2.0.12
   Compiling vcd v0.6.1
   Compiling unindent v0.2.4
   Compiling spade-python v0.15.0 (/builds/spade-lang/trawler/work/spade/spade-python)
   Compiling thread_local v1.1.9
   Compiling tracing-core v0.1.34
   Compiling num-traits v0.2.19
   Compiling anstyle-parse v0.2.7
   Compiling miniz_oxide v0.8.9
   Compiling lock_api v0.4.13
   Compiling memoffset v0.9.1
   Compiling itertools v0.14.0
   Compiling sharded-slab v0.1.7
error: failed to run custom build command for `spade-python v0.15.0 (/builds/spade-lang/trawler/work/spade/spade-python)`

Caused by:
  process didn't exit successfully: `/builds/spade-lang/trawler/work/protocols/build/maturin_target/release/build/spade-python-49df1470b195d3fd/build-script-build` (exit status: 101)
  --- stderr

  thread 'main' panicked at spade-python/build.rs:3:9:
  Python rebuild probe was run
  note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
warning: build failed, waiting for other jobs to finish...
💥 maturin failed
  Caused by: Failed to build a native library through cargo
  Caused by: Cargo build finished with "exit status: 101": `env -u CARGO AR_x86_64_unknown_linux_gnu="/root/.cache/cargo-zigbuild/0.20.1/ar" CARGO_TARGET_APPLIES_TO_HOST="false" CARGO_TARGET_X86_64_UNKNOWN_LINUX_GNU_LINKER="/root/.cache/cargo-zigbuild/0.20.1/zigcc-x86_64-unknown-linux-gnu.2.17-d94d.sh" CARGO_UNSTABLE_TARGET_APPLIES_TO_HOST="true" CARGO_ZIGBUILD_RUSTC_VERSION="1.90.0" CC_x86_64_unknown_linux_gnu="/root/.cache/cargo-zigbuild/0.20.1/zigcc-x86_64-unknown-linux-gnu.2.17-d94d.sh" CMAKE_TOOLCHAIN_FILE_x86_64_unknown_linux_gnu="/root/.cache/cargo-zigbuild/0.20.1/cmake/x86_64-unknown-linux-gnu-toolchain.cmake" CXX_x86_64_unknown_linux_gnu="/root/.cache/cargo-zigbuild/0.20.1/zigcxx-x86_64-unknown-linux-gnu.2.17-d94d.sh" PYO3_BUILD_EXTENSION_MODULE="1" PYO3_CONFIG_FILE="/builds/spade-lang/trawler/work/protocols/build/maturin_target/maturin/pyo3-config-x86_64-unknown-linux-gnu-3.8.txt" RANLIB_x86_64_unknown_linux_gnu="/root/.cache/cargo-zigbuild/0.20.1/zigranlib.sh" ZIG_COMMAND="/builds/spade-lang/trawler/work/protocols/build/oss-cad-suite/py3bin/python3 -m ziglang" __CARGO_TEST_CHANNEL_OVERRIDE_DO_NOT_USE_THIS="nightly" "/usr/local/rustup/toolchains/1.90.0-x86_64-unknown-linux-gnu/bin/cargo" "rustc" "--profile" "release" "--target" "x86_64-unknown-linux-gnu" "--message-format" "json-render-diagnostics" "--manifest-path" "/builds/spade-lang/trawler/work/spade/spade-python/Cargo.toml" "--lib"`
[INFO] Building spade-python
⚠️  Warning: `project.version` field is required in pyproject.toml unless it is present in the `project.dynamic` list
🍹 Building a mixed python/rust project
🔗 Found pyo3 bindings with abi3 support
⚠️  Warning: Failed to determine python platform
🐍 Not using a specific python interpreter
🛠️ Using zig for cross-compiling to x86_64-unknown-linux-gnu
   Compiling proc-macro2 v1.0.95
   Compiling aho-corasick v1.1.3
   Compiling cc v1.2.30
   Compiling regex-automata v0.4.9
   Compiling owo-colors v4.2.2
   Compiling eyre v0.6.12
   Compiling object v0.36.7
   Compiling color-spantrace v0.3.0
   Compiling typeid v1.0.3
   Compiling addr2line v0.24.2
   Compiling parking_lot_core v0.9.11
   Compiling bincode_derive v2.0.1
   Compiling portable-atomic v1.11.1
   Compiling thiserror v2.0.12
   Compiling spade-python v0.15.0 (/builds/spade-lang/trawler/work/spade/spade-python)
   Compiling serde_core v1.0.228
   Compiling num-traits v0.2.19
   Compiling target-lexicon v0.12.16
   Compiling libc v0.2.174
   Compiling tracing-log v0.2.0
   Compiling anstream v0.6.19
   Compiling lock_api v0.4.13
   Compiling memoffset v0.9.1
   Compiling clap_builder v4.5.41
   Compiling pyo3-build-config v0.21.2
   Compiling quote v1.0.40
   Compiling syn v2.0.104
   Compiling num-integer v0.1.46
   Compiling parking_lot v0.12.4
   Compiling psm v0.1.26
   Compiling stacker v0.1.21
   Compiling num-iter v0.1.45
   Compiling pyo3-ffi v0.21.2
   Compiling pyo3 v0.21.2
   Compiling matchers v0.2.0
   Compiling backtrace v0.3.75
   Compiling logos-codegen v0.16.0
   Compiling pyo3-macros-backend v0.21.2
   Compiling serde_derive v1.0.228
   Compiling tracing-attributes v0.1.30
   Compiling spade-macros v0.15.0 (/builds/spade-lang/trawler/work/spade/spade-macros)
   Compiling local-impl v0.1.2
   Compiling derive-where v1.5.0
   Compiling recursive-proc-macro-impl v0.1.1
   Compiling clap_derive v4.5.41
   Compiling thiserror-impl v2.0.12
   Compiling recursive v0.1.1
   Compiling logos-derive v0.16.0
   Compiling logos v0.16.0
   Compiling tracing v0.1.41
   Compiling pyo3-macros v0.21.2
   Compiling tracing-subscriber v0.3.20
   Compiling clap v4.5.41
   Compiling serde v1.0.228
   Compiling tracing-error v0.2.1
   Compiling tracing-tree v0.4.0
   Compiling color-eyre v0.6.5
   Compiling num-bigint v0.4.6
   Compiling num-complex v0.4.6
   Compiling spade-codespan-reporting v0.12.0
   Compiling bitflags v2.9.1
   Compiling serde_json v1.0.141
   Compiling bincode v2.0.1
   Compiling ron v0.12.0
   Compiling spade-codespan v0.12.0
   Compiling num-rational v0.4.2
   Compiling num v0.4.3
   Compiling spade-common v0.15.0 (/builds/spade-lang/trawler/work/spade/spade-common)
   Compiling spade-diagnostics v0.15.0 (/builds/spade-lang/trawler/work/spade/spade-diagnostics)
   Compiling spade-types v0.15.0 (/builds/spade-lang/trawler/work/spade/spade-types)
   Compiling spade-ast v0.15.0 (/builds/spade-lang/trawler/work/spade/spade-ast)
   Compiling spade-mir v0.15.0 (/builds/spade-lang/trawler/work/spade/spade-mir)
   Compiling spade-parser v0.15.0 (/builds/spade-lang/trawler/work/spade/spade-parser)
   Compiling spade-hir v0.15.0 (/builds/spade-lang/trawler/work/spade/spade-hir)
   Compiling spade-typeinference v0.15.0 (/builds/spade-lang/trawler/work/spade/spade-typeinference)
   Compiling spade-ast-lowering v0.15.0 (/builds/spade-lang/trawler/work/spade/spade-ast-lowering)
   Compiling spade-hir-lowering v0.15.0 (/builds/spade-lang/trawler/work/spade/spade-hir-lowering)
   Compiling spade-lang v0.15.0 (/builds/spade-lang/trawler/work/spade/spade-compiler)
   Compiling vcd-translate v0.1.0 (/builds/spade-lang/trawler/work/spade/vcd-translate)
   Compiling spade-simulation-ext v0.15.0 (/builds/spade-lang/trawler/work/spade/spade-simulation-ext)
    Finished `release` profile [optimized] target(s) in 1m 12s
📦 Built wheel for abi3 Python ≥ 3.8 to /builds/spade-lang/trawler/work/protocols/build/dist/spade-0.15.0-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
[INFO] Installing spade into venv
DEPRECATION: Loading egg at /builds/spade-lang/trawler/work/protocols/build/oss-cad-suite/lib/python3.11/site-packages/icefunprog-2.0.3-py3.11.egg is deprecated. pip 23.3 will enforce this behaviour change. A possible replacement is to use pip for package installation..
DEPRECATION: Loading egg at /builds/spade-lang/trawler/work/protocols/build/oss-cad-suite/lib/python3.11/site-packages/yosys_mau-0.0.2-py3.11-linux-x64.egg is deprecated. pip 23.3 will enforce this behaviour change. A possible replacement is to use pip for package installation..
DEPRECATION: Loading egg at /builds/spade-lang/trawler/work/protocols/build/oss-cad-suite/lib/python3.11/site-packages/tqdm-4.67.0-py3.11.egg is deprecated. pip 23.3 will enforce this behaviour change. A possible replacement is to use pip for package installation..
DEPRECATION: Loading egg at /builds/spade-lang/trawler/work/protocols/build/oss-cad-suite/lib/python3.11/site-packages/jsonschema_specifications-2024.10.1-py3.11.egg is deprecated. pip 23.3 will enforce this behaviour change. A possible replacement is to use pip for package installation..
DEPRECATION: Loading egg at /builds/spade-lang/trawler/work/protocols/build/oss-cad-suite/lib/python3.11/site-packages/referencing-0.35.1-py3.11.egg is deprecated. pip 23.3 will enforce this behaviour change. A possible replacement is to use pip for package installation..
DEPRECATION: Loading egg at /builds/spade-lang/trawler/work/protocols/build/oss-cad-suite/lib/python3.11/site-packages/pyusb-1.2.1-py3.11.egg is deprecated. pip 23.3 will enforce this behaviour change. A possible replacement is to use pip for package installation..
DEPRECATION: Loading egg at /builds/spade-lang/trawler/work/protocols/build/oss-cad-suite/lib/python3.11/site-packages/jsonmerge-1.9.2-py3.11.egg is deprecated. pip 23.3 will enforce this behaviour change. A possible replacement is to use pip for package installation..
DEPRECATION: Loading egg at /builds/spade-lang/trawler/work/protocols/build/oss-cad-suite/lib/python3.11/site-packages/tinyprog-1.0.23-py3.11.egg is deprecated. pip 23.3 will enforce this behaviour change. A possible replacement is to use pip for package installation..
DEPRECATION: Loading egg at /builds/spade-lang/trawler/work/protocols/build/oss-cad-suite/lib/python3.11/site-packages/jsonschema-4.23.0-py3.11.egg is deprecated. pip 23.3 will enforce this behaviour change. A possible replacement is to use pip for package installation..
DEPRECATION: Loading egg at /builds/spade-lang/trawler/work/protocols/build/oss-cad-suite/lib/python3.11/site-packages/attrs-24.2.0-py3.11.egg is deprecated. pip 23.3 will enforce this behaviour change. A possible replacement is to use pip for package installation..
DEPRECATION: Loading egg at /builds/spade-lang/trawler/work/protocols/build/oss-cad-suite/lib/python3.11/site-packages/pyserial-3.5-py3.11.egg is deprecated. pip 23.3 will enforce this behaviour change. A possible replacement is to use pip for package installation..
DEPRECATION: Loading egg at /builds/spade-lang/trawler/work/protocols/build/oss-cad-suite/lib/python3.11/site-packages/tinyfpgab-1.1.0-py3.11.egg is deprecated. pip 23.3 will enforce this behaviour change. A possible replacement is to use pip for package installation..
DEPRECATION: Loading egg at /builds/spade-lang/trawler/work/protocols/build/oss-cad-suite/lib/python3.11/site-packages/find_libpython-0.5.0-py3.11.egg is deprecated. pip 23.3 will enforce this behaviour change. A possible replacement is to use pip for package installation..
DEPRECATION: Loading egg at /builds/spade-lang/trawler/work/protocols/build/oss-cad-suite/lib/python3.11/site-packages/cocotb-2.1.0.dev0+41564633-py3.11-linux-x64.egg is deprecated. pip 23.3 will enforce this behaviour change. A possible replacement is to use pip for package installation..
DEPRECATION: Loading egg at /builds/spade-lang/trawler/work/protocols/build/oss-cad-suite/lib/python3.11/site-packages/blackiceprog-2.0.0-py3.11.egg is deprecated. pip 23.3 will enforce this behaviour change. A possible replacement is to use pip for package installation..
DEPRECATION: Loading egg at /builds/spade-lang/trawler/work/protocols/build/oss-cad-suite/lib/python3.11/site-packages/typing_extensions-4.15.0-py3.11.egg is deprecated. pip 23.3 will enforce this behaviour change. A possible replacement is to use pip for package installation..
DEPRECATION: Loading egg at /builds/spade-lang/trawler/work/protocols/build/oss-cad-suite/lib/python3.11/site-packages/intelhex-2.3.0-py3.11.egg is deprecated. pip 23.3 will enforce this behaviour change. A possible replacement is to use pip for package installation..
DEPRECATION: Loading egg at /builds/spade-lang/trawler/work/protocols/build/oss-cad-suite/lib/python3.11/site-packages/six-1.16.0-py3.11.egg is deprecated. pip 23.3 will enforce this behaviour change. A possible replacement is to use pip for package installation..
DEPRECATION: Loading egg at /builds/spade-lang/trawler/work/protocols/build/oss-cad-suite/lib/python3.11/site-packages/PyGObject-3.46.0-py3.11-linux-x64.egg is deprecated. pip 23.3 will enforce this behaviour change. A possible replacement is to use pip for package installation..
Processing ./build/dist/spade-0.15.0-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Collecting cocotb~=1.9.2 (from spade==0.15.0)
  Obtaining dependency information for cocotb~=1.9.2 from https://files.pythonhosted.org/packages/2d/49/591bbe8961cfb540b3b17fda8e07b19d7e0203a2e272706c71aba37426c0/cocotb-1.9.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata
  Downloading cocotb-1.9.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (6.9 kB)
Collecting ansicolors>=1.1.8 (from spade==0.15.0)
  Obtaining dependency information for ansicolors>=1.1.8 from https://files.pythonhosted.org/packages/53/18/a56e2fe47b259bb52201093a3a9d4a32014f9d85071ad07e9d60600890ca/ansicolors-1.1.8-py2.py3-none-any.whl.metadata
  Downloading ansicolors-1.1.8-py2.py3-none-any.whl.metadata (9.0 kB)
Collecting find-libpython (from cocotb~=1.9.2->spade==0.15.0)
  Obtaining dependency information for find-libpython from https://files.pythonhosted.org/packages/a7/3f/0eb94bfca99e54404901536ea8c80ddacff4953257514c6b8fb01f9a75a8/find_libpython-0.5.0-py3-none-any.whl.metadata
  Downloading find_libpython-0.5.0-py3-none-any.whl.metadata (2.8 kB)
Downloading ansicolors-1.1.8-py2.py3-none-any.whl (13 kB)
Downloading cocotb-1.9.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.2 MB)
   ━━━━━━━━━━━━━━━━━━━━���━━━━━━━━━━━━━━━━━━━ 4.2/4.2 MB 38.7 MB/s eta 0:00:00
Downloading find_libpython-0.5.0-py3-none-any.whl (9.2 kB)
Installing collected packages: ansicolors, find-libpython, cocotb, spade
  Attempting uninstall: find-libpython
    Found existing installation: find_libpython 0.5.0
    Uninstalling find_libpython-0.5.0:
      WARNING: Cannot remove entries from nonexistent file /builds/spade-lang/trawler/work/protocols/build/oss-cad-suite/lib/python3.11/site-packages/easy-install.pth
      Successfully uninstalled find_libpython-0.5.0
  Attempting uninstall: cocotb
    Found existing installation: cocotb 2.1.0.dev0+41564633
    Uninstalling cocotb-2.1.0.dev0+41564633:
      WARNING: Cannot remove entries from nonexistent file /builds/spade-lang/trawler/work/protocols/build/oss-cad-suite/lib/python3.11/site-packages/easy-install.pth
      Successfully uninstalled cocotb-2.1.0.dev0+41564633
Successfully installed ansicolors-1.1.8 cocotb-1.9.2 find-libpython-0.5.0 spade-0.15.0
WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv

[notice] A new release of pip is available: 23.2.1 -> 25.3
[notice] To update, run: tabbypy3 -m pip install --upgrade pip
[INFO] Building spade-cxx
   Compiling proc-macro2 v1.0.95
   Compiling equivalent v1.0.2
   Compiling hashbrown v0.15.4
   Compiling scratch v1.0.8
   Compiling cxxbridge-flags v1.0.161
   Compiling rustversion v1.0.21
   Compiling termcolor v1.4.1
   Compiling unicode-width v0.2.1
   Compiling thiserror v2.0.12
   Compiling vcd v0.6.1
   Compiling foldhash v0.1.5
   Compiling link-cplusplus v1.0.10
   Compiling cxx v1.0.161
   Compiling codespan-reporting v0.12.0
   Compiling indexmap v2.10.0
   Compiling quote v1.0.40
   Compiling syn v2.0.104
   Compiling logos-codegen v0.16.0
   Compiling cxx-build v1.0.161
   Compiling serde_derive v1.0.228
   Compiling tracing-attributes v0.1.30
   Compiling spade-macros v0.15.0 (/builds/spade-lang/trawler/work/spade/spade-macros)
   Compiling local-impl v0.1.2
   Compiling recursive-proc-macro-impl v0.1.1
   Compiling derive-where v1.5.0
   Compiling clap_derive v4.5.41
   Compiling thiserror-impl v2.0.12
   Compiling cxxbridge-macro v1.0.161
   Compiling recursive v0.1.1
   Compiling logos-derive v0.16.0
   Compiling tracing v0.1.41
   Compiling logos v0.16.0
   Compiling tracing-subscriber v0.3.20
   Compiling spade-cxx v0.1.0 (/builds/spade-lang/trawler/work/spade/spade-cxx)
   Compiling clap v4.5.41
   Compiling serde v1.0.228
   Compiling tracing-error v0.2.1
   Compiling tracing-tree v0.4.0
   Compiling color-spantrace v0.3.0
   Compiling color-eyre v0.6.5
   Compiling num-bigint v0.4.6
   Compiling num-complex v0.4.6
   Compiling spade-codespan-reporting v0.12.0
   Compiling bitflags v2.9.1
   Compiling serde_json v1.0.141
   Compiling bincode v2.0.1
   Compiling ron v0.12.0
   Compiling spade-codespan v0.12.0
   Compiling num-rational v0.4.2
   Compiling num v0.4.3
   Compiling spade-common v0.15.0 (/builds/spade-lang/trawler/work/spade/spade-common)
   Compiling spade-diagnostics v0.15.0 (/builds/spade-lang/trawler/work/spade/spade-diagnostics)
   Compiling spade-types v0.15.0 (/builds/spade-lang/trawler/work/spade/spade-types)
   Compiling spade-ast v0.15.0 (/builds/spade-lang/trawler/work/spade/spade-ast)
   Compiling spade-mir v0.15.0 (/builds/spade-lang/trawler/work/spade/spade-mir)
   Compiling spade-hir v0.15.0 (/builds/spade-lang/trawler/work/spade/spade-hir)
   Compiling spade-parser v0.15.0 (/builds/spade-lang/trawler/work/spade/spade-parser)
   Compiling spade-typeinference v0.15.0 (/builds/spade-lang/trawler/work/spade/spade-typeinference)
   Compiling spade-ast-lowering v0.15.0 (/builds/spade-lang/trawler/work/spade/spade-ast-lowering)
   Compiling spade-hir-lowering v0.15.0 (/builds/spade-lang/trawler/work/spade/spade-hir-lowering)
   Compiling spade-lang v0.15.0 (/builds/spade-lang/trawler/work/spade/spade-compiler)
   Compiling vcd-translate v0.1.0 (/builds/spade-lang/trawler/work/spade/vcd-translate)
   Compiling spade-simulation-ext v0.15.0 (/builds/spade-lang/trawler/work/spade/spade-simulation-ext)
    Finished `release` profile [optimized] target(s) in 1m 29s
[INFO] Running test/i2c/byte_emitter.py [test]
[INFO] Running test/i2c/controller.py [test]
[INFO] Running test/spi.py [smoke_test]
[INFO] Running test/uart_loopback.py [no_parity_one_stop]
[INFO] Running test/uart_loopback.py [no_parity_two_stop]
[INFO] Running test/uart_loopback.py [parity_one_stop]
[INFO] Running test/uart_loopback.py [parity_two_stop]
[INFO] Running test/uart_rx.py [correct_parity]
[INFO] Running test/uart_rx.py [incorrect_parity]
[INFO] Running test/uart_rx.py [multiple_stop_bits_work]
[INFO] Running test/uart_rx.py [quick_succession_works]
[INFO] Running test/uart_rx.py [test]
[INFO] Running test/uart_tx.py [even_parity_bit_with_multiple_stop_bit_works]
[INFO] Running test/uart_tx.py [even_parity_bit_works]
[INFO] Running test/uart_tx.py [odd_parity_bit_works]
[INFO] Running test/uart_tx.py [simple_tx_test]
[INFO] Running test/uart_tx.py [simple_tx_test_with_2_stop_bits]
[INFO] test/uart_rx.py [incorrect_parity]: PASSED
[INFO] test/uart_rx.py [correct_parity]: PASSED
================================================================================
 FAILED: test/uart_loopback.py [no_parity_one_stop]
================================================================================
     -.--ns INFO     gpi                                ..mbed/gpi_embed.cpp:108  in set_program_name_in_venv        Using Python virtual environment interpreter at /builds/spade-lang/trawler/work/protocols/build/oss-cad-suite/bin/python
     -.--ns INFO     gpi                                ../gpi/GpiCommon.cpp:101  in gpi_print_registered_impl       VPI registered
     0.00ns INFO     cocotb                             Running on Icarus Verilog version 13.0 (devel)
     0.00ns INFO     cocotb                             Running tests with cocotb v1.9.2 from /builds/spade-lang/trawler/work/protocols/build/oss-cad-suite/lib/python3.11/site-packages/cocotb
     0.00ns INFO     cocotb                             Seeding Python random module with 1768567638
     0.00ns INFO     cocotb.regression                  Found test uart_loopback.no_parity_one_stop
     0.00ns INFO     cocotb.regression                  running no_parity_one_stop (1/1)
error: Use of undeclared name uart
  ┌─ src/test.spade:2:10
  │
2 │ use lib::uart::UartConfig;
  │          ^^^^ Undeclared name


--- Logging error ---
Traceback (most recent call last):
  File "/builds/spade-lang/trawler/work/protocols/build/oss-cad-suite/lib/python3.11/logging/__init__.py", line 1113, in emit
    stream.write(msg + self.terminator)
UnicodeEncodeError: 'ascii' codec can't encode characters in position 2098-2099: ordinal not in range(128)
Call stack:
  File "/builds/spade-lang/trawler/work/protocols/build/oss-cad-suite/lib/python3.11/site-packages/cocotb/scheduler.py", line 350, in _test_completed
    self._handle_result(test)
  File "/builds/spade-lang/trawler/work/protocols/build/oss-cad-suite/lib/python3.11/site-packages/cocotb/regression.py", line 339, in _handle_result
    self._record_result(
  File "/builds/spade-lang/trawler/work/protocols/build/oss-cad-suite/lib/python3.11/site-packages/cocotb/regression.py", line 515, in _record_result
    test_pass, sim_failed = self._score_test(test, outcome)
  File "/bu
note: A Spade expression failed to compile
***ilds/spade-lang/trawler/work/protocols/build/oss-cad-suite/lib/python3.11/site-packages/cocotb/regression.py", line 446, in _sco***************************************************************************************
** TEST                              STATUS  SIM TIME (ns)  REAL TIME (s)  RATIO (ns/s) **
******************************************************************************************
** uart_loopback.no_parity_one_stop   FAIL        re_test
    self._log_test_failed(test, result, None)
  File "/b   0.00           0.15          0.01  **
***********************uilds/spade-lang/trawler/work/protocols/build/oss-cad-suite/lib/****************************************************************python3.11/site-packages/cocotb/regression.py", line 480, in _lo***
** TESTS=1 PASS=0 FAIL=1 SKIP=0                      0.00           0.24          0.00  **
*********************************g_test_failed
    self.log.info(
Message: 'no_parity_one_stop fa*********************************************************

iled'
Arguments: ()
VCD info: dumpfile /builds/spade-lang/trawler/work/protocols/build/uart_loopback_no_parity_one_stop/uart_loopback.vcd opened for output.


[INFO] test/uart_loopback.py [no_parity_one_stop]: FAILED
================================================================================
 FAILED: test/uart_loopback.py [parity_one_stop]
================================================================================
     -.--ns INFO     gpi                                ..mbed/gpi_embed.cpp:108  in set_program_name_in_venv        Using Python virtual environment interpreter at /builds/spade-lang/trawler/work/protocols/build/oss-cad-suite/bin/python
     -.--ns INFO     gpi                                ../gpi/GpiCommon.cpp:101  in gpi_print_registered_impl       VPI registered
     0.00ns INFO     cocotb                             Running on Icarus Verilog version 13.0 (devel)
     0.00ns INFO     cocotb                             Running tests with cocotb v1.9.2 from /builds/spade-lang/trawler/work/protocols/build/oss-cad-suite/lib/python3.11/site-packages/cocotb
     0.00ns INFO     cocotb                             Seeding Python random module with 1768567638
     0.00ns INFO     cocotb.regression                  Found test uart_loopback.parity_one_stop
     0.00ns INFO     cocotb.regression                  running parity_one_stop (1/1)
error: Use of undeclared name uart
  ┌─ src/test.spade:2:10
  │
2 │ use lib::uart::UartConfig;
  │          ^^^^ Undeclared name


--- Logging error ---
Traceback (most recent call last):
  File "/builds/spade-lang/trawler/work/protocols/build/oss-cad-suite/lib/python3.11/logging/__init__.py", line 1113, in emit
    stream.write(msg + self.terminator)
UnicodeEncodeError: 'ascii' codec can't encode characters in position 2082-2083: ordinal not in range(128)
Call stack:
  File "/builds/spade-lang/trawler/work/protocols/build/oss-cad-suite/lib/python3.11/site-packages/cocotb/scheduler.py", line 350, in _test_completed
    self._handle_result(test)
  File "/bui
note: A Spade expression failed to compile
***lds/spade-lang/trawler/work/protocols/build/oss-cad-suite/lib/py************************************************************************************
** TEST                           STATUS  SIM TIME (ns)  REAL TIME (s)  RATIO (ns/s) **
***************************************************************************************
** uart_loopback.parity_one_stop   FAIL           0.00     thon3.11/site-packages/cocotb/regression.py", line 339, in _hand      0.15          0.01  **
***************************************************************************************
** TESTS=1 PASS=0 FAIL=1 SKIP=0                   0.00           0.24      le_result
    self._record_result(
  File "/builds/spade-lang/tr    0.00  **
***************************************************************************************

awler/work/protocols/build/oss-cad-suite/lib/python3.11/site-packages/cocotb/regression.py", line 515, in _record_result
    test_pass, sim_failed = self._score_test(test, outcome)
  File "/builds/spade-lang/trawler/work/protocols/build/oss-cad-suite/lib/python3.11/site-packages/cocotb/regression.py", line 446, in _score_test
    self._log_test_failed(test, result, None)
  File "/builds/spade-lang/trawler/work/protocols/build/oss-cad-suite/lib/python3.11/site-packages/cocotb/regression.py", line 480, in _log_test_failed
    self.log.info(
Message: 'parity_one_stop failed'
Arguments: ()
VCD info: dumpfile /builds/spade-lang/trawler/work/protocols/build/uart_loopback_parity_one_stop/uart_loopback.vcd opened for output.


[INFO] test/uart_loopback.py [parity_one_stop]: FAILED
[INFO] test/i2c/controller.py [test]: PASSED
[INFO] test/i2c/byte_emitter.py [test]: PASSED
[INFO] test/uart_rx.py [quick_succession_works]: PASSED
[INFO] test/uart_rx.py [multiple_stop_bits_work]: PASSED
================================================================================
 FAILED: test/uart_loopback.py [parity_two_stop]
================================================================================
     -.--ns INFO     gpi                                ..mbed/gpi_embed.cpp:108  in set_program_name_in_venv        Using Python virtual environment interpreter at /builds/spade-lang/trawler/work/protocols/build/oss-cad-suite/bin/python
     -.--ns INFO     gpi                                ../gpi/GpiCommon.cpp:101  in gpi_print_registered_impl       VPI registered
     0.00ns INFO     cocotb                             Running on Icarus Verilog version 13.0 (devel)
     0.00ns INFO     cocotb                             Running tests with cocotb v1.9.2 from /builds/spade-lang/trawler/work/protocols/build/oss-cad-suite/lib/python3.11/site-packages/cocotb
     0.00ns INFO     cocotb                             Seeding Python random module with 1768567638
     0.00ns INFO     cocotb.regression                  Found test uart_loopback.parity_two_stop
     0.00ns INFO     cocotb.regression                  running parity_two_stop (1/1)
error: Use of undeclared name uart
  ┌─ src/test.spade:2:10
  │
2 │ use lib::uart::UartConfig;
  │          ^^^^ Undeclared name


--- Logging error ---
Traceback (most recent call last):
  File "/builds/spade-lang/trawler/work/protocols/build/oss-cad-suite/lib/python3.11/logging/__init__.py", line 1113, in emit
    stream.write(msg + self.terminator)
UnicodeEncodeError: 'ascii' codec can't encode characters in position 2082-2083: ordinal not in range(128)
Call stack:
  File "/builds/spade-lang/trawler/work/protocols/build/oss-cad-suite/lib/python3.11/site-packages/cocotb/scheduler.py", line 350, in _test_completed
    self._handle_result(test)
  File "/builds/spade-lang/trawler/work/protocols/build/oss-cad-suite/lib/python3.11/site-packages/cocotb/regression.py", line 339, in _handle_result
    self._record_result(
  File "/builds/spade-lang/trawler/work/protocols/build/oss-cad-
note: A Spade expression failed to compile
***suite/lib/python3.11/site-packages/cocotb/regression.py", line 5************************************************************************************
** TEST                           STATUS  SIM TIME (ns)  REAL TIME (s)  RATIO (ns/s) **
***************************************************************************************
** uart_loopback.parity_two_stop   FAIL           0.00     15, in _record_result
    test_pass, sim_failed = self._score_te      0.20          0.01  **
***************************************************************************************
** TESTS=1 PASS=0 FAIL=1 SKIP=0                   0.00           0.28      st(test, outcome)
  File "/builds/spade-lang/trawler/work/protocols/build/oss-cad-suite/lib/python3.11/site-packages/cocotb/regr    0.00  **
***************************************************************************************

ession.py", line 446, in _score_test
    self._log_test_failed(test, result, None)
  File "/builds/spade-lang/trawler/work/protocols/build/oss-cad-suite/lib/python3.11/site-packages/cocotb/regression.py", line 480, in _log_test_failed
    self.log.info(
Message: 'parity_two_stop failed'
Arguments: ()
VCD info: dumpfile /builds/spade-lang/trawler/work/protocols/build/uart_loopback_parity_two_stop/uart_loopback.vcd opened for output.


[INFO] test/uart_loopback.py [parity_two_stop]: FAILED
[INFO] test/uart_tx.py [simple_tx_test]: PASSED
[INFO] test/uart_tx.py [even_parity_bit_with_multiple_stop_bit_works]: PASSED
[INFO] test/uart_tx.py [even_parity_bit_works]: PASSED
================================================================================
 FAILED: test/uart_loopback.py [no_parity_two_stop]
================================================================================
     -.--ns INFO     gpi                                ..mbed/gpi_embed.cpp:108  in set_program_name_in_venv        Using Python virtual environment interpreter at /builds/spade-lang/trawler/work/protocols/build/oss-cad-suite/bin/python
     -.--ns INFO     gpi                                ../gpi/GpiCommon.cpp:101  in gpi_print_registered_impl       VPI registered
     0.00ns INFO     cocotb                             Running on Icarus Verilog version 13.0 (devel)
     0.00ns INFO     cocotb                             Running tests with cocotb v1.9.2 from /builds/spade-lang/trawler/work/protocols/build/oss-cad-suite/lib/python3.11/site-packages/cocotb
     0.00ns INFO     cocotb                             Seeding Python random module with 1768567639
     0.00ns INFO     cocotb.regression                  Found test uart_loopback.no_parity_two_stop
     0.00ns INFO     cocotb.regression                  running no_parity_two_stop (1/1)
error: Use of undeclared name uart
  ┌─ src/test.spade:2:10
  │
2 │ use lib::uart::UartConfig;
  │          ^^^^ Undeclared name


--- Logging error ---
Traceback (most recent call last):
  File "/builds/spade-lang/trawler/work/protocols/build/oss-cad-suite/lib/python3.11/logging/__init__.py", line 1113, in emit
    stream.write(msg + self.terminator)
UnicodeEncodeError: 'ascii' codec can't encode characters in position 2098-2099: ordinal not in range(128)
Call stack:
  File "/builds/spade-lang/trawler/work/protocols/build/oss-cad-suite/lib/python3.11/site-packages/cocotb/scheduler.py", line 350, in _test_completed
    self._handle_result(test)
  File "/builds/spade-lang/trawler/work/protocols/build/oss-cad-suite/lib/python3.11/site-packages/cocotb/regression.py", line 339, in _handle_result
    self._record_result(
  File "/builds/spade-lang/trawler/work/protocols/build/oss-cad-suite/lib/python3.11/site-pac
note: A Spade expression failed to compile
******************************************************************************************
** TEST                              STATUS  SIM TIME (ns)  REAL TIME (s)  RATIO (ns/s) **
******************************************************************************************
** uart_loopback.no_parity_two_stop   FAIL           0.00           0.18          0.01  **
******************************************************************************************
** TESTS=1 PASS=0 FAIL=1 SKIP=0                      0.00           0.27          0.00  **
******************************************************************************************

kages/cocotb/regression.py", line 515, in _record_result
    test_pass, sim_failed = self._score_test(test, outcome)
  File "/builds/spade-lang/trawler/work/protocols/build/oss-cad-suite/lib/python3.11/site-packages/cocotb/regression.py", line 446, in _score_test
    self._log_test_failed(test, result, None)
  File "/builds/spade-lang/trawler/work/protocols/build/oss-cad-suite/lib/python3.11/site-packages/cocotb/regression.py", line 480, in _log_test_failed
    self.log.info(
Message: 'no_parity_two_stop failed'
Arguments: ()
VCD info: dumpfile /builds/spade-lang/trawler/work/protocols/build/uart_loopback_no_parity_two_stop/uart_loopback.vcd opened for output.


[INFO] test/uart_loopback.py [no_parity_two_stop]: FAILED
[INFO] test/uart_tx.py [odd_parity_bit_works]: PASSED
[INFO] test/uart_rx.py [test]: PASSED
[INFO] test/spi.py [smoke_test]: PASSED
[INFO] test/uart_tx.py [simple_tx_test_with_2_stop_bits]: PASSED

ok   test/byte_emitter.py 0/1 failed
 🭼 test ok [build/i2c/byte_emitter_test/byte_emitter.vcd]

ok   test/controller.py 0/1 failed
 🭼 test ok [build/i2c/controller_test/controller.vcd]

ok   test/spi.py 0/1 failed
 🭼 smoke_test ok [build/spi_smoke_test/spi.vcd]

FAIL test/uart_loopback.py 4/4 failed
 🭼 no_parity_one_stop FAILED [build/uart_loopback_no_parity_one_stop/uart_loopback.vcd]
 🭼 no_parity_two_stop FAILED [build/uart_loopback_no_parity_two_stop/uart_loopback.vcd]
 🭼 parity_one_stop FAILED [build/uart_loopback_parity_one_stop/uart_loopback.vcd]
 🭼 parity_two_stop FAILED [build/uart_loopback_parity_two_stop/uart_loopback.vcd]

ok   test/uart_rx.py 0/5 failed
 🭼 correct_parity ok [build/uart_rx_correct_parity/uart_rx.vcd]
 🭼 incorrect_parity ok [build/uart_rx_incorrect_parity/uart_rx.vcd]
 🭼 multiple_stop_bits_work ok [build/uart_rx_multiple_stop_bits_work/uart_rx.vcd]
 🭼 quick_succession_works ok [build/uart_rx_quick_succession_works/uart_rx.vcd]
 🭼 test ok [build/uart_rx_test/uart_rx.vcd]

ok   test/uart_tx.py 0/5 failed
 🭼 even_parity_bit_with_multiple_stop_bit_works ok [build/uart_tx_even_parity_bit_with_multiple_stop_bit_works/uart_tx.vcd]
 🭼 even_parity_bit_works ok [build/uart_tx_even_parity_bit_works/uart_tx.vcd]
 🭼 odd_parity_bit_works ok [build/uart_tx_odd_parity_bit_works/uart_tx.vcd]
 🭼 simple_tx_test ok [build/uart_tx_simple_tx_test/uart_tx.vcd]
 🭼 simple_tx_test_with_2_stop_bits ok [build/uart_tx_simple_tx_test_with_2_stop_bits/uart_tx.vcd]
HEAD is now at d029c73 Bump Spade again
HEAD is now at 92b6b79 Add pub markers
Error: 
   0: 4 test cases failed

Backtrace omitted. Run with RUST_BACKTRACE=1 environment variable to display it.
Run with RUST_BACKTRACE=full to include source snippets.

        

ready_valid (1/1)

build (success)
          
        

spade-v (0/2)

build (fail)
          [INFO] Building Spade Compiler
    Blocking waiting for file lock on package cache
    Blocking waiting for file lock on package cache
    Blocking waiting for file lock on package cache
    Blocking waiting for file lock on package cache
    Blocking waiting for file lock on build directory
    Finished `release` profile [optimized] target(s) in 1m 20s
[INFO] Attempting to download surfer plugin wasm file.
[INFO] Done downloading surfer plugin
[INFO] Cloning "protocols"
[INFO] Building spade code
[ERROR] Failed to build spade code
Cloning into '/builds/spade-lang/trawler/work/spade-v/build/libs/protocols'...
HEAD is now at 426e282 Fix failing SPI test
error: Op is inaccessible
   ┌─ src/alu.spade:36:38
   │
36 │ fn get_alu_op(insn_op: instructions::Op) -> AluOp {
   │                                      ^^ Op is inaccessible
   │
   ┌─ src/instructions.spade:1:1
   │  
 1 │ ╭ enum Op {
 2 │ │     LUI,
 3 │ │     AUIPC,
 4 │ │     JAL,
   · │
57 │ │     INVALID
58 │ │ }
   │ ╰─' The inaccessible item is defined here
   │  
   = Consider adding `pub`
   │
 1 │ pub enum Op {
   │ ++++
   = Or a more limited visibility like pub(lib) or pub(super)
   │
 1 │ pub(lib) enum Op {
   │ +++++++++

error: Op is inaccessible
   ┌─ src/cpu.spade:29:31
   │
29 │     op: spadev::instructions::Op,
   │                               ^^ Op is inaccessible
   │
   ┌─ src/instructions.spade:1:1
   │  
 1 │ ╭ enum Op {
 2 │ │     LUI,
 3 │ │     AUIPC,
 4 │ │     JAL,
   · │
57 │ │     INVALID
58 │ │ }
   │ ╰─' The inaccessible item is defined here
   │  
   = Consider adding `pub`
   │
 1 │ pub enum Op {
   │ ++++
   = Or a more limited visibility like pub(lib) or pub(super)
   │
 1 │ pub(lib) enum Op {
   │ +++++++++

error: Op is inaccessible
   ┌─ src/csr.spade:15:28
   │
15 │     op: inv &instructions::Op,
   │                            ^^ Op is inaccessible
   │
   ┌─ src/instructions.spade:1:1
   │  
 1 │ ╭ enum Op {
 2 │ │     LUI,
 3 │ │     AUIPC,
 4 │ │     JAL,
   · │
57 │ │     INVALID
58 │ │ }
   │ ╰─' The inaccessible item is defined here
   │  
   = Consider adding `pub`
   │
 1 │ pub enum Op {
   │ ++++
   = Or a more limited visibility like pub(lib) or pub(super)
   │
 1 │ pub(lib) enum Op {
   │ +++++++++

error: AccessWidth is inaccessible
   ┌─ src/memory.spade:9:15
   │
 9 │ use lib::bus::AccessWidth;
   │               ^^^^^^^^^^^ AccessWidth is inaccessible
   │
   ┌─ src/bus.spade:19:1
   │  
19 │ ╭ enum AccessWidth {
20 │ │     Full,
21 │ │     HalfU,
22 │ │     HalfS,
23 │ │     ByteU,
24 │ │     ByteS
25 │ │ }
   │ ╰─' The inaccessible item is defined here
   │  
   = Consider adding `pub`
   │
19 │ pub enum AccessWidth {
   │ ++++
   = Or a more limited visibility like pub(lib) or pub(super)
   │
19 │ pub(lib) enum AccessWidth {
   │ +++++++++

error: ControlSignals is inaccessible
   ┌─ src/peripherals/led.spade:1:15
   │
 1 │ use lib::bus::ControlSignals;
   │               ^^^^^^^^^^^^^^ ControlSignals is inaccessible
   │
   ┌─ src/bus.spade:33:1
   │  
33 │ ╭ struct ControlSignals {
34 │ │     access_width: AccessWidth,
35 │ │     addr: uint<32>,
36 │ │     cmd: Command,
37 │ │ }
   │ ╰─' The inaccessible item is defined here
   │  
   = Consider adding `pub`
   │
33 │ pub struct ControlSignals {
   │ ++++
   = Or a more limited visibility like pub(lib) or pub(super)
   │
33 │ pub(lib) struct ControlSignals {
   │ +++++++++

error: ControlSignals is inaccessible
   ┌─ src/peripherals/timer.spade:1:15
   │
 1 │ use lib::bus::ControlSignals;
   │               ^^^^^^^^^^^^^^ ControlSignals is inaccessible
   │
   ┌─ src/bus.spade:33:1
   │  
33 │ ╭ struct ControlSignals {
34 │ │     access_width: AccessWidth,
35 │ │     addr: uint<32>,
36 │ │     cmd: Command,
37 │ │ }
   │ ╰─' The inaccessible item is defined here
   │  
   = Consider adding `pub`
   │
33 │ pub struct ControlSignals {
   │ ++++
   = Or a more limited visibility like pub(lib) or pub(super)
   │
33 │ pub(lib) struct ControlSignals {
   │ +++++++++

error: Op is inaccessible
   ┌─ src/pfc.spade:51:23
   │
51 │     op: instructions::Op,
   │                       ^^ Op is inaccessible
   │
   ┌─ src/instructions.spade:1:1
   │  
 1 │ ╭ enum Op {
 2 │ │     LUI,
 3 │ │     AUIPC,
 4 │ │     JAL,
   · │
57 │ │     INVALID
58 │ │ }
   │ ╰─' The inaccessible item is defined here
   │  
   = Consider adding `pub`
   │
 1 │ pub enum Op {
   │ ++++
   = Or a more limited visibility like pub(lib) or pub(super)
   │
 1 │ pub(lib) enum Op {
   │ +++++++++

error: ControlSignals is inaccessible
   ┌─ src/program_load_adapter.spade:1:15
   │
 1 │ use lib::bus::ControlSignals;
   │               ^^^^^^^^^^^^^^ ControlSignals is inaccessible
   │
   ┌─ src/bus.spade:33:1
   │  
33 │ ╭ struct ControlSignals {
34 │ │     access_width: AccessWidth,
35 │ │     addr: uint<32>,
36 │ │     cmd: Command,
37 │ │ }
   │ ╰─' The inaccessible item is defined here
   │  
   = Consider adding `pub`
   │
33 │ pub struct ControlSignals {
   │ ++++
   = Or a more limited visibility like pub(lib) or pub(super)
   │
33 │ pub(lib) struct ControlSignals {
   │ +++++++++

error: ProgramLoadSignals is inaccessible
   ┌─ src/uart_loader.spade:1:15
   │
 1 │ use lib::bus::ProgramLoadSignals;
   │               ^^^^^^^^^^^^^^^^^^ ProgramLoadSignals is inaccessible
   │
   ┌─ src/bus.spade:13:1
   │  
13 │ ╭ struct ProgramLoadSignals {
14 │ │     done: bool,
15 │ │     data: Option<AddrValue>
16 │ │ }
   │ ╰─' The inaccessible item is defined here
   │  
   = Consider adding `pub`
   │
13 │ pub struct ProgramLoadSignals {
   │ ++++
   = Or a more limited visibility like pub(lib) or pub(super)
   │
13 │ pub(lib) struct ProgramLoadSignals {
   │ +++++++++

error: UartOut is inaccessible
    ┌─ build/libs/protocols/src/test.spade:2:16
    │
  2 │ use lib::uart::UartOut;
    │                ^^^^^^^ UartOut is inaccessible
    │
    ┌─ build/libs/protocols/src/uart.spade:114:1
    │  
114 │ ╭ enum UartOut {
115 │ │     Ok{val: uint<8>},
116 │ │     ParityError{val: uint<8>},
117 │ │     None
118 │ │ }
    │ ╰─' The inaccessible item is defined here
    │  
    = Consider adding `pub`
    │
114 │ pub enum UartOut {
    │ ++++
    = Or a more limited visibility like pub(lib) or pub(super)
    │
114 │ pub(lib) enum UartOut {
    │ +++++++++

Error: aborting due to previous error

Location:
    spade-compiler/src/main.rs:168:17
Error: 
   0: Failed to build spade code

Backtrace omitted. Run with RUST_BACKTRACE=1 environment variable to display it.
Run with RUST_BACKTRACE=full to include source snippets.

        
test (fail)
          [INFO] Building Spade Compiler
    Blocking waiting for file lock on package cache
    Blocking waiting for file lock on package cache
    Blocking waiting for file lock on package cache
    Blocking waiting for file lock on build directory
    Finished `release` profile [optimized] target(s) in 1.69s
[INFO] Building spade code
[ERROR] Failed to build spade code
HEAD is now at 426e282 Fix failing SPI test
error: Op is inaccessible
   ┌─ src/alu.spade:36:38
   │
36 │ fn get_alu_op(insn_op: instructions::Op) -> AluOp {
   │                                      ^^ Op is inaccessible
   │
   ┌─ src/instructions.spade:1:1
   │  
 1 │ ╭ enum Op {
 2 │ │     LUI,
 3 │ │     AUIPC,
 4 │ │     JAL,
   · │
57 │ │     INVALID
58 │ │ }
   │ ╰─' The inaccessible item is defined here
   │  
   = Consider adding `pub`
   │
 1 │ pub enum Op {
   │ ++++
   = Or a more limited visibility like pub(lib) or pub(super)
   │
 1 │ pub(lib) enum Op {
   │ +++++++++

error: Op is inaccessible
   ┌─ src/cpu.spade:29:31
   │
29 │     op: spadev::instructions::Op,
   │                               ^^ Op is inaccessible
   │
   ┌─ src/instructions.spade:1:1
   │  
 1 │ ╭ enum Op {
 2 │ │     LUI,
 3 │ │     AUIPC,
 4 │ │     JAL,
   · │
57 │ │     INVALID
58 │ │ }
   │ ╰─' The inaccessible item is defined here
   │  
   = Consider adding `pub`
   │
 1 │ pub enum Op {
   │ ++++
   = Or a more limited visibility like pub(lib) or pub(super)
   │
 1 │ pub(lib) enum Op {
   │ +++++++++

error: Op is inaccessible
   ┌─ src/csr.spade:15:28
   │
15 │     op: inv &instructions::Op,
   │                            ^^ Op is inaccessible
   │
   ┌─ src/instructions.spade:1:1
   │  
 1 │ ╭ enum Op {
 2 │ │     LUI,
 3 │ │     AUIPC,
 4 │ │     JAL,
   · │
57 │ │     INVALID
58 │ │ }
   │ ╰─' The inaccessible item is defined here
   │  
   = Consider adding `pub`
   │
 1 │ pub enum Op {
   │ ++++
   = Or a more limited visibility like pub(lib) or pub(super)
   │
 1 │ pub(lib) enum Op {
   │ +++++++++

error: AccessWidth is inaccessible
   ┌─ src/memory.spade:9:15
   │
 9 │ use lib::bus::AccessWidth;
   │               ^^^^^^^^^^^ AccessWidth is inaccessible
   │
   ┌─ src/bus.spade:19:1
   │  
19 │ ╭ enum AccessWidth {
20 │ │     Full,
21 │ │     HalfU,
22 │ │     HalfS,
23 │ │     ByteU,
24 │ │     ByteS
25 │ │ }
   │ ╰─' The inaccessible item is defined here
   │  
   = Consider adding `pub`
   │
19 │ pub enum AccessWidth {
   │ ++++
   = Or a more limited visibility like pub(lib) or pub(super)
   │
19 │ pub(lib) enum AccessWidth {
   │ +++++++++

error: ControlSignals is inaccessible
   ┌─ src/peripherals/led.spade:1:15
   │
 1 │ use lib::bus::ControlSignals;
   │               ^^^^^^^^^^^^^^ ControlSignals is inaccessible
   │
   ┌─ src/bus.spade:33:1
   │  
33 │ ╭ struct ControlSignals {
34 │ │     access_width: AccessWidth,
35 │ │     addr: uint<32>,
36 │ │     cmd: Command,
37 │ │ }
   │ ╰─' The inaccessible item is defined here
   │  
   = Consider adding `pub`
   │
33 │ pub struct ControlSignals {
   │ ++++
   = Or a more limited visibility like pub(lib) or pub(super)
   │
33 │ pub(lib) struct ControlSignals {
   │ +++++++++

error: ControlSignals is inaccessible
   ┌─ src/peripherals/timer.spade:1:15
   │
 1 │ use lib::bus::ControlSignals;
   │               ^^^^^^^^^^^^^^ ControlSignals is inaccessible
   │
   ┌─ src/bus.spade:33:1
   │  
33 │ ╭ struct ControlSignals {
34 │ │     access_width: AccessWidth,
35 │ │     addr: uint<32>,
36 │ │     cmd: Command,
37 │ │ }
   │ ╰─' The inaccessible item is defined here
   │  
   = Consider adding `pub`
   │
33 │ pub struct ControlSignals {
   │ ++++
   = Or a more limited visibility like pub(lib) or pub(super)
   │
33 │ pub(lib) struct ControlSignals {
   │ +++++++++

error: Op is inaccessible
   ┌─ src/pfc.spade:51:23
   │
51 │     op: instructions::Op,
   │                       ^^ Op is inaccessible
   │
   ┌─ src/instructions.spade:1:1
   │  
 1 │ ╭ enum Op {
 2 │ │     LUI,
 3 │ │     AUIPC,
 4 │ │     JAL,
   · │
57 │ │     INVALID
58 │ │ }
   │ ╰─' The inaccessible item is defined here
   │  
   = Consider adding `pub`
   │
 1 │ pub enum Op {
   │ ++++
   = Or a more limited visibility like pub(lib) or pub(super)
   │
 1 │ pub(lib) enum Op {
   │ +++++++++

error: ControlSignals is inaccessible
   ┌─ src/program_load_adapter.spade:1:15
   │
 1 │ use lib::bus::ControlSignals;
   │               ^^^^^^^^^^^^^^ ControlSignals is inaccessible
   │
   ┌─ src/bus.spade:33:1
   │  
33 │ ╭ struct ControlSignals {
34 │ │     access_width: AccessWidth,
35 │ │     addr: uint<32>,
36 │ │     cmd: Command,
37 │ │ }
   │ ╰─' The inaccessible item is defined here
   │  
   = Consider adding `pub`
   │
33 │ pub struct ControlSignals {
   │ ++++
   = Or a more limited visibility like pub(lib) or pub(super)
   │
33 │ pub(lib) struct ControlSignals {
   │ +++++++++

error: ProgramLoadSignals is inaccessible
   ┌─ src/uart_loader.spade:1:15
   │
 1 │ use lib::bus::ProgramLoadSignals;
   │               ^^^^^^^^^^^^^^^^^^ ProgramLoadSignals is inaccessible
   │
   ┌─ src/bus.spade:13:1
   │  
13 │ ╭ struct ProgramLoadSignals {
14 │ │     done: bool,
15 │ │     data: Option<AddrValue>
16 │ │ }
   │ ╰─' The inaccessible item is defined here
   │  
   = Consider adding `pub`
   │
13 │ pub struct ProgramLoadSignals {
   │ ++++
   = Or a more limited visibility like pub(lib) or pub(super)
   │
13 │ pub(lib) struct ProgramLoadSignals {
   │ +++++++++

error: UartOut is inaccessible
    ┌─ build/libs/protocols/src/test.spade:2:16
    │
  2 │ use lib::uart::UartOut;
    │                ^^^^^^^ UartOut is inaccessible
    │
    ┌─ build/libs/protocols/src/uart.spade:114:1
    │  
114 │ ╭ enum UartOut {
115 │ │     Ok{val: uint<8>},
116 │ │     ParityError{val: uint<8>},
117 │ │     None
118 │ │ }
    │ ╰─' The inaccessible item is defined here
    │  
    = Consider adding `pub`
    │
114 │ pub enum UartOut {
    │ ++++
    = Or a more limited visibility like pub(lib) or pub(super)
    │
114 │ pub(lib) enum UartOut {
    │ +++++++++

Error: aborting due to previous error

Location:
    spade-compiler/src/main.rs:168:17
Error: 
   0: Failed to build spade code

Backtrace omitted. Run with RUST_BACKTRACE=1 environment variable to display it.
Run with RUST_BACKTRACE=full to include source snippets.

        

spade-v-hwtest-uart (0/3)

build (fail)
          [WARN] swim.toml contains 1 unknown field:
[WARN]   synthesis.?.extra_verilog
[INFO] Building Spade Compiler
    Blocking waiting for file lock on package cache
    Blocking waiting for file lock on package cache
    Blocking waiting for file lock on package cache
    Blocking waiting for file lock on package cache
    Blocking waiting for file lock on build directory
    Finished `release` profile [optimized] target(s) in 1m 19s
[INFO] Attempting to download surfer plugin wasm file.
[INFO] Done downloading surfer plugin
[INFO] Cloning "protocols"
[INFO] Building spade code
[ERROR] Failed to build spade code
Cloning into '/builds/spade-lang/trawler/work/spade-v-hwtest-uart/hwtest_uart/build/libs/protocols'...
HEAD is now at 426e282 Fix failing SPI test
error: Buses is inaccessible
   ┌─ src/led_blink.spade:9:18
   │
 9 │ use spadev::bus::Buses;
   │             ---  ^^^^^ Buses is inaccessible
   │             │     
   │             Because bus is inaccessible
   │
   ┌─ ../src/bus.spade:52:1
   │  
52 │ ╭ struct port Buses {
53 │ │     data: Bus,
54 │ │     instruction: Bus,
55 │ │     load_done: &bool,
56 │ │ }
   │ ╰─' The inaccessible item is defined here
   │  
   ┌─ ../src/main.spade:2:1
   │
 2 │ mod bus;
   │ ------- The item is inaccessible because bus is inaccessible

error: UartOut is inaccessible
    ┌─ build/libs/protocols/src/test.spade:2:16
    │
  2 │ use lib::uart::UartOut;
    │                ^^^^^^^ UartOut is inaccessible
    │
    ┌─ build/libs/protocols/src/uart.spade:114:1
    │  
114 │ ╭ enum UartOut {
115 │ │     Ok{val: uint<8>},
116 │ │     ParityError{val: uint<8>},
117 │ │     None
118 │ │ }
    │ ╰─' The inaccessible item is defined here
    │  
    = Consider adding `pub`
    │
114 │ pub enum UartOut {
    │ ++++
    = Or a more limited visibility like pub(lib) or pub(super)
    │
114 │ pub(lib) enum UartOut {
    │ +++++++++

error: Op is inaccessible
   ┌─ ../src/alu.spade:36:38
   │
36 │ fn get_alu_op(insn_op: instructions::Op) -> AluOp {
   │                                      ^^ Op is inaccessible
   │
   ┌─ ../src/instructions.spade:1:1
   │  
 1 │ ╭ enum Op {
 2 │ │     LUI,
 3 │ │     AUIPC,
 4 │ │     JAL,
   · │
57 │ │     INVALID
58 │ │ }
   │ ╰─' The inaccessible item is defined here
   │  
   = Consider adding `pub`
   │
 1 │ pub enum Op {
   │ ++++
   = Or a more limited visibility like pub(lib) or pub(super)
   │
 1 │ pub(lib) enum Op {
   │ +++++++++

error: Op is inaccessible
   ┌─ ../src/cpu.spade:29:31
   │
29 │     op: spadev::instructions::Op,
   │                               ^^ Op is inaccessible
   │
   ┌─ ../src/instructions.spade:1:1
   │  
 1 │ ╭ enum Op {
 2 │ │     LUI,
 3 │ │     AUIPC,
 4 │ │     JAL,
   · │
57 │ │     INVALID
58 │ │ }
   │ ╰─' The inaccessible item is defined here
   │  
   = Consider adding `pub`
   │
 1 │ pub enum Op {
   │ ++++
   = Or a more limited visibility like pub(lib) or pub(super)
   │
 1 │ pub(lib) enum Op {
   │ +++++++++

error: Op is inaccessible
   ┌─ ../src/csr.spade:15:28
   │
15 │     op: inv &instructions::Op,
   │                            ^^ Op is inaccessible
   │
   ┌─ ../src/instructions.spade:1:1
   │  
 1 │ ╭ enum Op {
 2 │ │     LUI,
 3 │ │     AUIPC,
 4 │ │     JAL,
   · │
57 │ │     INVALID
58 │ │ }
   │ ╰─' The inaccessible item is defined here
   │  
   = Consider adding `pub`
   │
 1 │ pub enum Op {
   │ ++++
   = Or a more limited visibility like pub(lib) or pub(super)
   │
 1 │ pub(lib) enum Op {
   │ +++++++++

error: AccessWidth is inaccessible
   ┌─ ../src/memory.spade:9:15
   │
 9 │ use lib::bus::AccessWidth;
   │               ^^^^^^^^^^^ AccessWidth is inaccessible
   │
   ┌─ ../src/bus.spade:19:1
   │  
19 │ ╭ enum AccessWidth {
20 │ │     Full,
21 │ │     HalfU,
22 │ │     HalfS,
23 │ │     ByteU,
24 │ │     ByteS
25 │ │ }
   │ ╰─' The inaccessible item is defined here
   │  
   = Consider adding `pub`
   │
19 │ pub enum AccessWidth {
   │ ++++
   = Or a more limited visibility like pub(lib) or pub(super)
   │
19 │ pub(lib) enum AccessWidth {
   │ +++++++++

error: ControlSignals is inaccessible
   ┌─ ../src/peripherals/led.spade:1:15
   │
 1 │ use lib::bus::ControlSignals;
   │               ^^^^^^^^^^^^^^ ControlSignals is inaccessible
   │
   ┌─ ../src/bus.spade:33:1
   │  
33 │ ╭ struct ControlSignals {
34 │ │     access_width: AccessWidth,
35 │ │     addr: uint<32>,
36 │ │     cmd: Command,
37 │ │ }
   │ ╰─' The inaccessible item is defined here
   │  
   = Consider adding `pub`
   │
33 │ pub struct ControlSignals {
   │ ++++
   = Or a more limited visibility like pub(lib) or pub(super)
   │
33 │ pub(lib) struct ControlSignals {
   │ +++++++++

error: ControlSignals is inaccessible
   ┌─ ../src/peripherals/timer.spade:1:15
   │
 1 │ use lib::bus::ControlSignals;
   │               ^^^^^^^^^^^^^^ ControlSignals is inaccessible
   │
   ┌─ ../src/bus.spade:33:1
   │  
33 │ ╭ struct ControlSignals {
34 │ │     access_width: AccessWidth,
35 │ │     addr: uint<32>,
36 │ │     cmd: Command,
37 │ │ }
   │ ╰─' The inaccessible item is defined here
   │  
   = Consider adding `pub`
   │
33 │ pub struct ControlSignals {
   │ ++++
   = Or a more limited visibility like pub(lib) or pub(super)
   │
33 │ pub(lib) struct ControlSignals {
   │ +++++++++

error: Op is inaccessible
   ┌─ ../src/pfc.spade:51:23
   │
51 │     op: instructions::Op,
   │                       ^^ Op is inaccessible
   │
   ┌─ ../src/instructions.spade:1:1
   │  
 1 │ ╭ enum Op {
 2 │ │     LUI,
 3 │ │     AUIPC,
 4 │ │     JAL,
   · │
57 │ │     INVALID
58 │ │ }
   │ ╰─' The inaccessible item is defined here
   │  
   = Consider adding `pub`
   │
 1 │ pub enum Op {
   │ ++++
   = Or a more limited visibility like pub(lib) or pub(super)
   │
 1 │ pub(lib) enum Op {
   │ +++++++++

error: ControlSignals is inaccessible
   ┌─ ../src/program_load_adapter.spade:1:15
   │
 1 │ use lib::bus::ControlSignals;
   │               ^^^^^^^^^^^^^^ ControlSignals is inaccessible
   │
   ┌─ ../src/bus.spade:33:1
   │  
33 │ ╭ struct ControlSignals {
34 │ │     access_width: AccessWidth,
35 │ │     addr: uint<32>,
36 │ │     cmd: Command,
37 │ │ }
   │ ╰─' The inaccessible item is defined here
   │  
   = Consider adding `pub`
   │
33 │ pub struct ControlSignals {
   │ ++++
   = Or a more limited visibility like pub(lib) or pub(super)
   │
33 │ pub(lib) struct ControlSignals {
   │ +++++++++

error: ProgramLoadSignals is inaccessible
   ┌─ ../src/uart_loader.spade:1:15
   │
 1 │ use lib::bus::ProgramLoadSignals;
   │               ^^^^^^^^^^^^^^^^^^ ProgramLoadSignals is inaccessible
   │
   ┌─ ../src/bus.spade:13:1
   │  
13 │ ╭ struct ProgramLoadSignals {
14 │ │     done: bool,
15 │ │     data: Option<AddrValue>
16 │ │ }
   │ ╰─' The inaccessible item is defined here
   │  
   = Consider adding `pub`
   │
13 │ pub struct ProgramLoadSignals {
   │ ++++
   = Or a more limited visibility like pub(lib) or pub(super)
   │
13 │ pub(lib) struct ProgramLoadSignals {
   │ +++++++++

Error: aborting due to previous error

Location:
    spade-compiler/src/main.rs:168:17
Error: 
   0: Failed to build spade code

Backtrace omitted. Run with RUST_BACKTRACE=1 environment variable to display it.
Run with RUST_BACKTRACE=full to include source snippets.

        
pnr (fail)
          [WARN] swim.toml contains 1 unknown field:
[WARN]   synthesis.?.extra_verilog
[INFO] Building Spade Compiler
    Blocking waiting for file lock on package cache
    Blocking waiting for file lock on package cache
    Blocking waiting for file lock on package cache
    Blocking waiting for file lock on build directory
    Finished `release` profile [optimized] target(s) in 0.48s
[INFO] Building spade code
[ERROR] Failed to build spade code
HEAD is now at 426e282 Fix failing SPI test
error: Buses is inaccessible
   ┌─ src/led_blink.spade:9:18
   │
 9 │ use spadev::bus::Buses;
   │             ---  ^^^^^ Buses is inaccessible
   │             │     
   │             Because bus is inaccessible
   │
   ┌─ ../src/bus.spade:52:1
   │  
52 │ ╭ struct port Buses {
53 │ │     data: Bus,
54 │ │     instruction: Bus,
55 │ │     load_done: &bool,
56 │ │ }
   │ ╰─' The inaccessible item is defined here
   │  
   ┌─ ../src/main.spade:2:1
   │
 2 │ mod bus;
   │ ------- The item is inaccessible because bus is inaccessible

error: Op is inaccessible
   ┌─ ../src/alu.spade:36:38
   │
36 │ fn get_alu_op(insn_op: instructions::Op) -> AluOp {
   │                                      ^^ Op is inaccessible
   │
   ┌─ ../src/instructions.spade:1:1
   │  
 1 │ ╭ enum Op {
 2 │ │     LUI,
 3 │ │     AUIPC,
 4 │ │     JAL,
   · │
57 │ │     INVALID
58 │ │ }
   │ ╰─' The inaccessible item is defined here
   │  
   = Consider adding `pub`
   │
 1 │ pub enum Op {
   │ ++++
   = Or a more limited visibility like pub(lib) or pub(super)
   │
 1 │ pub(lib) enum Op {
   │ +++++++++

error: Op is inaccessible
   ┌─ ../src/cpu.spade:29:31
   │
29 │     op: spadev::instructions::Op,
   │                               ^^ Op is inaccessible
   │
   ┌─ ../src/instructions.spade:1:1
   │  
 1 │ ╭ enum Op {
 2 │ │     LUI,
 3 │ │     AUIPC,
 4 │ │     JAL,
   · │
57 │ │     INVALID
58 │ │ }
   │ ╰─' The inaccessible item is defined here
   │  
   = Consider adding `pub`
   │
 1 │ pub enum Op {
   │ ++++
   = Or a more limited visibility like pub(lib) or pub(super)
   │
 1 │ pub(lib) enum Op {
   │ +++++++++

error: Op is inaccessible
   ┌─ ../src/csr.spade:15:28
   │
15 │     op: inv &instructions::Op,
   │                            ^^ Op is inaccessible
   │
   ┌─ ../src/instructions.spade:1:1
   │  
 1 │ ╭ enum Op {
 2 │ │     LUI,
 3 │ │     AUIPC,
 4 │ │     JAL,
   · │
57 │ │     INVALID
58 │ │ }
   │ ╰─' The inaccessible item is defined here
   │  
   = Consider adding `pub`
   │
 1 │ pub enum Op {
   │ ++++
   = Or a more limited visibility like pub(lib) or pub(super)
   │
 1 │ pub(lib) enum Op {
   │ +++++++++

error: AccessWidth is inaccessible
   ┌─ ../src/memory.spade:9:15
   │
 9 │ use lib::bus::AccessWidth;
   │               ^^^^^^^^^^^ AccessWidth is inaccessible
   │
   ┌─ ../src/bus.spade:19:1
   │  
19 │ ╭ enum AccessWidth {
20 │ │     Full,
21 │ │     HalfU,
22 │ │     HalfS,
23 │ │     ByteU,
24 │ │     ByteS
25 │ │ }
   │ ╰─' The inaccessible item is defined here
   │  
   = Consider adding `pub`
   │
19 │ pub enum AccessWidth {
   │ ++++
   = Or a more limited visibility like pub(lib) or pub(super)
   │
19 │ pub(lib) enum AccessWidth {
   │ +++++++++

error: ControlSignals is inaccessible
   ┌─ ../src/peripherals/led.spade:1:15
   │
 1 │ use lib::bus::ControlSignals;
   │               ^^^^^^^^^^^^^^ ControlSignals is inaccessible
   │
   ┌─ ../src/bus.spade:33:1
   │  
33 │ ╭ struct ControlSignals {
34 │ │     access_width: AccessWidth,
35 │ │     addr: uint<32>,
36 │ │     cmd: Command,
37 │ │ }
   │ ╰─' The inaccessible item is defined here
   │  
   = Consider adding `pub`
   │
33 │ pub struct ControlSignals {
   │ ++++
   = Or a more limited visibility like pub(lib) or pub(super)
   │
33 │ pub(lib) struct ControlSignals {
   │ +++++++++

error: ControlSignals is inaccessible
   ┌─ ../src/peripherals/timer.spade:1:15
   │
 1 │ use lib::bus::ControlSignals;
   │               ^^^^^^^^^^^^^^ ControlSignals is inaccessible
   │
   ┌─ ../src/bus.spade:33:1
   │  
33 │ ╭ struct ControlSignals {
34 │ │     access_width: AccessWidth,
35 │ │     addr: uint<32>,
36 │ │     cmd: Command,
37 │ │ }
   │ ╰─' The inaccessible item is defined here
   │  
   = Consider adding `pub`
   │
33 │ pub struct ControlSignals {
   │ ++++
   = Or a more limited visibility like pub(lib) or pub(super)
   │
33 │ pub(lib) struct ControlSignals {
   │ +++++++++

error: Op is inaccessible
   ┌─ ../src/pfc.spade:51:23
   │
51 │     op: instructions::Op,
   │                       ^^ Op is inaccessible
   │
   ┌─ ../src/instructions.spade:1:1
   │  
 1 │ ╭ enum Op {
 2 │ │     LUI,
 3 │ │     AUIPC,
 4 │ │     JAL,
   · │
57 │ │     INVALID
58 │ │ }
   │ ╰─' The inaccessible item is defined here
   │  
   = Consider adding `pub`
   │
 1 │ pub enum Op {
   │ ++++
   = Or a more limited visibility like pub(lib) or pub(super)
   │
 1 │ pub(lib) enum Op {
   │ +++++++++

error: ControlSignals is inaccessible
   ┌─ ../src/program_load_adapter.spade:1:15
   │
 1 │ use lib::bus::ControlSignals;
   │               ^^^^^^^^^^^^^^ ControlSignals is inaccessible
   │
   ┌─ ../src/bus.spade:33:1
   │  
33 │ ╭ struct ControlSignals {
34 │ │     access_width: AccessWidth,
35 │ │     addr: uint<32>,
36 │ │     cmd: Command,
37 │ │ }
   │ ╰─' The inaccessible item is defined here
   │  
   = Consider adding `pub`
   │
33 │ pub struct ControlSignals {
   │ ++++
   = Or a more limited visibility like pub(lib) or pub(super)
   │
33 │ pub(lib) struct ControlSignals {
   │ +++++++++

error: ProgramLoadSignals is inaccessible
   ┌─ ../src/uart_loader.spade:1:15
   │
 1 │ use lib::bus::ProgramLoadSignals;
   │               ^^^^^^^^^^^^^^^^^^ ProgramLoadSignals is inaccessible
   │
   ┌─ ../src/bus.spade:13:1
   │  
13 │ ╭ struct ProgramLoadSignals {
14 │ │     done: bool,
15 │ │     data: Option<AddrValue>
16 │ │ }
   │ ╰─' The inaccessible item is defined here
   │  
   = Consider adding `pub`
   │
13 │ pub struct ProgramLoadSignals {
   │ ++++
   = Or a more limited visibility like pub(lib) or pub(super)
   │
13 │ pub(lib) struct ProgramLoadSignals {
   │ +++++++++

error: UartOut is inaccessible
    ┌─ build/libs/protocols/src/test.spade:2:16
    │
  2 │ use lib::uart::UartOut;
    │                ^^^^^^^ UartOut is inaccessible
    │
    ┌─ build/libs/protocols/src/uart.spade:114:1
    │  
114 │ ╭ enum UartOut {
115 │ │     Ok{val: uint<8>},
116 │ │     ParityError{val: uint<8>},
117 │ │     None
118 │ │ }
    │ ╰─' The inaccessible item is defined here
    │  
    = Consider adding `pub`
    │
114 │ pub enum UartOut {
    │ ++++
    = Or a more limited visibility like pub(lib) or pub(super)
    │
114 │ pub(lib) enum UartOut {
    │ +++++++++

Error: aborting due to previous error

Location:
    spade-compiler/src/main.rs:168:17
Error: 
   0: Failed to build spade code

Backtrace omitted. Run with RUST_BACKTRACE=1 environment variable to display it.
Run with RUST_BACKTRACE=full to include source snippets.

        
test (fail)
          [WARN] swim.toml contains 1 unknown field:
[WARN]   synthesis.?.extra_verilog
[INFO] Building Spade Compiler
    Blocking waiting for file lock on package cache
    Blocking waiting for file lock on package cache
    Blocking waiting for file lock on package cache
    Blocking waiting for file lock on package cache
    Blocking waiting for file lock on build directory
    Finished `release` profile [optimized] target(s) in 1.84s
[INFO] Building spade code
[ERROR] Failed to build spade code
HEAD is now at 426e282 Fix failing SPI test
error: Buses is inaccessible
   ┌─ src/led_blink.spade:9:18
   │
 9 │ use spadev::bus::Buses;
   │             ---  ^^^^^ Buses is inaccessible
   │             │     
   │             Because bus is inaccessible
   │
   ┌─ ../src/bus.spade:52:1
   │  
52 │ ╭ struct port Buses {
53 │ │     data: Bus,
54 │ │     instruction: Bus,
55 │ │     load_done: &bool,
56 │ │ }
   │ ╰─' The inaccessible item is defined here
   │  
   ┌─ ../src/main.spade:2:1
   │
 2 │ mod bus;
   │ ------- The item is inaccessible because bus is inaccessible

error: UartOut is inaccessible
    ┌─ build/libs/protocols/src/test.spade:2:16
    │
  2 │ use lib::uart::UartOut;
    │                ^^^^^^^ UartOut is inaccessible
    │
    ┌─ build/libs/protocols/src/uart.spade:114:1
    │  
114 │ ╭ enum UartOut {
115 │ │     Ok{val: uint<8>},
116 │ │     ParityError{val: uint<8>},
117 │ │     None
118 │ │ }
    │ ╰─' The inaccessible item is defined here
    │  
    = Consider adding `pub`
    │
114 │ pub enum UartOut {
    │ ++++
    = Or a more limited visibility like pub(lib) or pub(super)
    │
114 │ pub(lib) enum UartOut {
    │ +++++++++

error: Op is inaccessible
   ┌─ ../src/alu.spade:36:38
   │
36 │ fn get_alu_op(insn_op: instructions::Op) -> AluOp {
   │                                      ^^ Op is inaccessible
   │
   ┌─ ../src/instructions.spade:1:1
   │  
 1 │ ╭ enum Op {
 2 │ │     LUI,
 3 │ │     AUIPC,
 4 │ │     JAL,
   · │
57 │ │     INVALID
58 │ │ }
   │ ╰─' The inaccessible item is defined here
   │  
   = Consider adding `pub`
   │
 1 │ pub enum Op {
   │ ++++
   = Or a more limited visibility like pub(lib) or pub(super)
   │
 1 │ pub(lib) enum Op {
   │ +++++++++

error: Op is inaccessible
   ┌─ ../src/cpu.spade:29:31
   │
29 │     op: spadev::instructions::Op,
   │                               ^^ Op is inaccessible
   │
   ┌─ ../src/instructions.spade:1:1
   │  
 1 │ ╭ enum Op {
 2 │ │     LUI,
 3 │ │     AUIPC,
 4 │ │     JAL,
   · │
57 │ │     INVALID
58 │ │ }
   │ ╰─' The inaccessible item is defined here
   │  
   = Consider adding `pub`
   │
 1 │ pub enum Op {
   │ ++++
   = Or a more limited visibility like pub(lib) or pub(super)
   │
 1 │ pub(lib) enum Op {
   │ +++++++++

error: Op is inaccessible
   ┌─ ../src/csr.spade:15:28
   │
15 │     op: inv &instructions::Op,
   │                            ^^ Op is inaccessible
   │
   ┌─ ../src/instructions.spade:1:1
   │  
 1 │ ╭ enum Op {
 2 │ │     LUI,
 3 │ │     AUIPC,
 4 │ │     JAL,
   · │
57 │ │     INVALID
58 │ │ }
   │ ╰─' The inaccessible item is defined here
   │  
   = Consider adding `pub`
   │
 1 │ pub enum Op {
   │ ++++
   = Or a more limited visibility like pub(lib) or pub(super)
   │
 1 │ pub(lib) enum Op {
   │ +++++++++

error: AccessWidth is inaccessible
   ┌─ ../src/memory.spade:9:15
   │
 9 │ use lib::bus::AccessWidth;
   │               ^^^^^^^^^^^ AccessWidth is inaccessible
   │
   ┌─ ../src/bus.spade:19:1
   │  
19 │ ╭ enum AccessWidth {
20 │ │     Full,
21 │ │     HalfU,
22 │ │     HalfS,
23 │ │     ByteU,
24 │ │     ByteS
25 │ │ }
   │ ╰─' The inaccessible item is defined here
   │  
   = Consider adding `pub`
   │
19 │ pub enum AccessWidth {
   │ ++++
   = Or a more limited visibility like pub(lib) or pub(super)
   │
19 │ pub(lib) enum AccessWidth {
   │ +++++++++

error: ControlSignals is inaccessible
   ┌─ ../src/peripherals/led.spade:1:15
   │
 1 │ use lib::bus::ControlSignals;
   │               ^^^^^^^^^^^^^^ ControlSignals is inaccessible
   │
   ┌─ ../src/bus.spade:33:1
   │  
33 │ ╭ struct ControlSignals {
34 │ │     access_width: AccessWidth,
35 │ │     addr: uint<32>,
36 │ │     cmd: Command,
37 │ │ }
   │ ╰─' The inaccessible item is defined here
   │  
   = Consider adding `pub`
   │
33 │ pub struct ControlSignals {
   │ ++++
   = Or a more limited visibility like pub(lib) or pub(super)
   │
33 │ pub(lib) struct ControlSignals {
   │ +++++++++

error: ControlSignals is inaccessible
   ┌─ ../src/peripherals/timer.spade:1:15
   │
 1 │ use lib::bus::ControlSignals;
   │               ^^^^^^^^^^^^^^ ControlSignals is inaccessible
   │
   ┌─ ../src/bus.spade:33:1
   │  
33 │ ╭ struct ControlSignals {
34 │ │     access_width: AccessWidth,
35 │ │     addr: uint<32>,
36 │ │     cmd: Command,
37 │ │ }
   │ ╰─' The inaccessible item is defined here
   │  
   = Consider adding `pub`
   │
33 │ pub struct ControlSignals {
   │ ++++
   = Or a more limited visibility like pub(lib) or pub(super)
   │
33 │ pub(lib) struct ControlSignals {
   │ +++++++++

error: Op is inaccessible
   ┌─ ../src/pfc.spade:51:23
   │
51 │     op: instructions::Op,
   │                       ^^ Op is inaccessible
   │
   ┌─ ../src/instructions.spade:1:1
   │  
 1 │ ╭ enum Op {
 2 │ │     LUI,
 3 │ │     AUIPC,
 4 │ │     JAL,
   · │
57 │ │     INVALID
58 │ │ }
   │ ╰─' The inaccessible item is defined here
   │  
   = Consider adding `pub`
   │
 1 │ pub enum Op {
   │ ++++
   = Or a more limited visibility like pub(lib) or pub(super)
   │
 1 │ pub(lib) enum Op {
   │ +++++++++

error: ControlSignals is inaccessible
   ┌─ ../src/program_load_adapter.spade:1:15
   │
 1 │ use lib::bus::ControlSignals;
   │               ^^^^^^^^^^^^^^ ControlSignals is inaccessible
   │
   ┌─ ../src/bus.spade:33:1
   │  
33 │ ╭ struct ControlSignals {
34 │ │     access_width: AccessWidth,
35 │ │     addr: uint<32>,
36 │ │     cmd: Command,
37 │ │ }
   │ ╰─' The inaccessible item is defined here
   │  
   = Consider adding `pub`
   │
33 │ pub struct ControlSignals {
   │ ++++
   = Or a more limited visibility like pub(lib) or pub(super)
   │
33 │ pub(lib) struct ControlSignals {
   │ +++++++++

error: ProgramLoadSignals is inaccessible
   ┌─ ../src/uart_loader.spade:1:15
   │
 1 │ use lib::bus::ProgramLoadSignals;
   │               ^^^^^^^^^^^^^^^^^^ ProgramLoadSignals is inaccessible
   │
   ┌─ ../src/bus.spade:13:1
   │  
13 │ ╭ struct ProgramLoadSignals {
14 │ │     done: bool,
15 │ │     data: Option<AddrValue>
16 │ │ }
   │ ╰─' The inaccessible item is defined here
   │  
   = Consider adding `pub`
   │
13 │ pub struct ProgramLoadSignals {
   │ ++++
   = Or a more limited visibility like pub(lib) or pub(super)
   │
13 │ pub(lib) struct ProgramLoadSignals {
   │ +++++++++

Error: aborting due to previous error

Location:
    spade-compiler/src/main.rs:168:17
Error: 
   0: Failed to build spade code

Backtrace omitted. Run with RUST_BACKTRACE=1 environment variable to display it.
Run with RUST_BACKTRACE=full to include source snippets.

        

templates-alchitry-cu (2/2)

build (success)
          
        
pnr (success)
          
        

templates-ecpix5 (2/2)

build (success)
          
        
pnr (success)
          
        

templates-go-board (2/2)

build (success)
          
        
pnr (success)
          
        

templates-icestick (2/2)

build (success)
          
        
pnr (success)
          
        

templates-icesugar-nano (2/2)

build (success)
          
        
pnr (success)
          
        

templates-pico-ice40up5k (2/2)

build (success)
          
        
pnr (success)
          
        

templates-tangnano20k (2/2)

build (success)
          
        
pnr (success)
          
        

templates-tangnano4k (2/2)

build (success)
          
        
pnr (success)
          
        

templates-tangnano9k (2/2)

build (success)
          
        
pnr (success)
          
        

templates-tinyfpga-bx (2/2)

build (success)
          
        
pnr (success)
          
        

templates-ulx3s_85k (2/2)

build (success)
          
        
pnr (success)
          
        

vga_spade (1/1)

build (success)
          
        

ws2812 (3/3)

build (success)
          
        
pnr (success)
          
        
test (success)
          
        

ws2812-lithekod (0/3)

build (fail)
          [WARN] swim.toml contains 1 unknown field:
[WARN]   synthesis.?.extra_verilog
[INFO] Building Spade Compiler
    Blocking waiting for file lock on package cache
    Blocking waiting for file lock on package cache
    Blocking waiting for file lock on package cache
    Blocking waiting for file lock on package cache
    Blocking waiting for file lock on build directory
    Finished `release` profile [optimized] target(s) in 1m 25s
[INFO] Attempting to download surfer plugin wasm file.
[INFO] Done downloading surfer plugin
[INFO] Building spade code
[ERROR] Failed to build spade code
error: Timing is inaccessible
   ┌─ src/main.spade:5:18
   │
 5 │ use ws2812::lib::Timing;
   │                  ^^^^^^ Timing is inaccessible
   │
   ┌─ src/lib.spade:8:1
   │  
 8 │ ╭ struct Timing {
 9 │ │     // 50 microseconds
10 │ │     us280: uint<19>,
11 │ │     // 0.4 microseconds
   · │
20 │ │     us1_25: uint<12>,
21 │ │ }
   │ ╰─' The inaccessible item is defined here
   │  
   = Consider adding `pub`
   │
 8 │ pub struct Timing {
   │ ++++
   = Or a more limited visibility like pub(lib) or pub(super)
   │
 8 │ pub(lib) struct Timing {
   │ +++++++++

Error: aborting due to previous error

Location:
    spade-compiler/src/main.rs:168:17
Error: 
   0: Failed to build spade code

Backtrace omitted. Run with RUST_BACKTRACE=1 environment variable to display it.
Run with RUST_BACKTRACE=full to include source snippets.

        
pnr (fail)
          [WARN] swim.toml contains 1 unknown field:
[WARN]   synthesis.?.extra_verilog
[INFO] Building Spade Compiler
    Blocking waiting for file lock on package cache
    Blocking waiting for file lock on package cache
    Blocking waiting for file lock on package cache
    Finished `release` profile [optimized] target(s) in 0.45s
[INFO] Building spade code
[ERROR] Failed to build spade code
error: Timing is inaccessible
   ┌─ src/main.spade:5:18
   │
 5 │ use ws2812::lib::Timing;
   │                  ^^^^^^ Timing is inaccessible
   │
   ┌─ src/lib.spade:8:1
   │  
 8 │ ╭ struct Timing {
 9 │ │     // 50 microseconds
10 │ │     us280: uint<19>,
11 │ │     // 0.4 microseconds
   · │
20 │ │     us1_25: uint<12>,
21 │ │ }
   │ ╰─' The inaccessible item is defined here
   │  
   = Consider adding `pub`
   │
 8 │ pub struct Timing {
   │ ++++
   = Or a more limited visibility like pub(lib) or pub(super)
   │
 8 │ pub(lib) struct Timing {
   │ +++++++++

Error: aborting due to previous error

Location:
    spade-compiler/src/main.rs:168:17
Error: 
   0: Failed to build spade code

Backtrace omitted. Run with RUST_BACKTRACE=1 environment variable to display it.
Run with RUST_BACKTRACE=full to include source snippets.

        
test (fail)
          [WARN] swim.toml contains 1 unknown field:
[WARN]   synthesis.?.extra_verilog
[INFO] Building Spade Compiler
    Blocking waiting for file lock on package cache
    Blocking waiting for file lock on package cache
    Blocking waiting for file lock on package cache
    Blocking waiting for file lock on package cache
    Blocking waiting for file lock on build directory
    Finished `release` profile [optimized] target(s) in 2.58s
[INFO] Building spade code
[ERROR] Failed to build spade code
error: Timing is inaccessible
   ┌─ src/main.spade:5:18
   │
 5 │ use ws2812::lib::Timing;
   │                  ^^^^^^ Timing is inaccessible
   │
   ┌─ src/lib.spade:8:1
   │  
 8 │ ╭ struct Timing {
 9 │ │     // 50 microseconds
10 │ │     us280: uint<19>,
11 │ │     // 0.4 microseconds
   · │
20 │ │     us1_25: uint<12>,
21 │ │ }
   │ ╰─' The inaccessible item is defined here
   │  
   = Consider adding `pub`
   │
 8 │ pub struct Timing {
   │ ++++
   = Or a more limited visibility like pub(lib) or pub(super)
   │
 8 │ pub(lib) struct Timing {
   │ +++++++++

Error: aborting due to previous error

Location:
    spade-compiler/src/main.rs:168:17
Error: 
   0: Failed to build spade code

Backtrace omitted. Run with RUST_BACKTRACE=1 environment variable to display it.
Run with RUST_BACKTRACE=full to include source snippets.

        

This page was generated at 2026-01-21T08:12:48Z.