Summary

csi2 (0/1)

build (fail)
          {"type"=>"Failed to clone csi2 from https://codeberg.com/TheZoq2/spade-csi2.git", "message"=>""}
        

ecp5stubs (1/1)

build (success)
          
        

ethernet (0/1)

build (fail)
          {"type"=>"Failed to clone ethernet from https://codeberg.com/TheZoq2/ethernet.git", "message"=>""}
        

fixed (0/1)

build (fail)
          [INFO] Cloning "ready_valid"
[INFO] Cloning "math"
[INFO] Cloning "nstd"
[INFO] Building spade code
Failed to encode compiler state info as bincode SerdeSerCustom
[ERROR] Failed to build spade code
Cloning into '/builds/spade-lang/trawler/work/fixed/build/libs/ready_valid'...
HEAD is now at 6b87434 Correct entityness of `split`
Cloning into '/builds/spade-lang/trawler/work/fixed/build/libs/math'...
HEAD is now at 35305b9 Bump Spade
Cloning into '/builds/spade-lang/trawler/work/fixed/build/libs/nstd'...
HEAD is now at cd27387 Remove methods that are now in std
error: Attempt to use tuple indexing on non-tuple
    ┌─ build/libs/ready_valid/src/main.spade:114:30
    │
113 │         let ds_ready = port;
    │                        ---- Type {unknown} inferred here
114 │         set ready = if gate {ds_ready.0} else {false};
    │                              ^^^^^^^^ - Because this is a tuple index
    │                              │         
    │                              expected tuple, got {unknown}

error: Attempt to use tuple indexing on non-tuple
    ┌─ build/libs/ready_valid/src/main.spade:117:13
    │
113 │         let ds_ready = port;
    │                        ---- Type {unknown} inferred here
    ·
117 │             ds_ready.1,
    │             ^^^^^^^^ - Because this is a tuple index
    │             │         
    │             expected tuple, got {unknown}

error: Attempt to use tuple indexing on non-tuple
    ┌─ build/libs/ready_valid/src/main.spade:163:24
    │
148 │         let ds_ready = port;
    │                        ---- Type {unknown} inferred here
    ·
163 │                     if ds_ready.0 {
    │                        ^^^^^^^^ - Because this is a tuple index
    │                        │         
    │                        expected tuple, got {unknown}

error: Attempt to use tuple indexing on non-tuple
    ┌─ build/libs/ready_valid/src/main.spade:180:13
    │
148 │         let ds_ready = port;
    │                        ---- Type {unknown} inferred here
    ·
180 │             ds_ready.1,
    │             ^^^^^^^^ - Because this is a tuple index
    │             │         
    │             expected tuple, got {unknown}

error: Attempt to use tuple indexing on non-tuple
    ┌─ build/libs/ready_valid/src/main.spade:188:21
    │
187 │         let ds_ready = port;
    │                        ---- Type {unknown} inferred here
188 │         let ready = ds_ready.0 && self.data.is_some() && r.data.is_some();
    │                     ^^^^^^^^ - Because this is a tuple index
    │                     │         
    │                     expected tuple, got {unknown}

error: Attempt to use tuple indexing on non-tuple
    ┌─ build/libs/ready_valid/src/main.spade:196:13
    │
187 │         let ds_ready = port;
    │                        ---- Type {unknown} inferred here
    ·
196 │             ds_ready.1
    │             ^^^^^^^^ - Because this is a tuple index
    │             │         
    │             expected tuple, got {unknown}

error: Attempt to use tuple indexing on non-tuple
    ┌─ build/libs/ready_valid/src/main.spade:209:21
    │
206 │         let l_ready = port;
    │                       ---- Type {unknown} inferred here
    ·
209 │         let ready = l_ready.0 && r_ready.0;
    │                     ^^^^^^^ - Because this is a tuple index
    │                     │        
    │                     expected tuple, got {unknown}

error: Attempt to use tuple indexing on non-tuple
    ┌─ build/libs/ready_valid/src/main.spade:209:34
    │
207 │         let r_ready = port;
    │                       ---- Type {unknown} inferred here
208 │ 
209 │         let ready = l_ready.0 && r_ready.0;
    │                                  ^^^^^^^ - Because this is a tuple index
    │                                  │        
    │                                  expected tuple, got {unknown}

error: Attempt to use tuple indexing on non-tuple
    ┌─ build/libs/ready_valid/src/main.spade:217:16
    │
206 │         let l_ready = port;
    │                       ---- Type {unknown} inferred here
    ·
217 │         (Rv(l, l_ready.1), Rv(r, r_ready.1))
    │                ^^^^^^^ - Because this is a tuple index
    │                │        
    │                expected tuple, got {unknown}

error: Attempt to use tuple indexing on non-tuple
    ┌─ build/libs/ready_valid/src/main.spade:217:34
    │
207 │         let r_ready = port;
    │                       ---- Type {unknown} inferred here
    ·
217 │         (Rv(l, l_ready.1), Rv(r, r_ready.1))
    │                                  ^^^^^^^ - Because this is a tuple index
    │                                  │        
    │                                  expected tuple, got {unknown}

error: Attempt to use tuple indexing on non-tuple
    ┌─ build/libs/ready_valid/src/main.spade:243:35
    │
240 │         let ds_ready = port;
    │                        ---- Type {unknown} inferred here
    ·
243 │             match (timeout, data, ds_ready.0) {
    │                                   ^^^^^^^^ - Because this is a tuple index
    │                                   │         
    │                                   expected tuple, got {unknown}

error: Attempt to use tuple indexing on non-tuple
    ┌─ build/libs/ready_valid/src/main.spade:250:22
    │
240 │         let ds_ready = port;
    │                        ---- Type {unknown} inferred here
    ·
250 │         set ready = (ds_ready.0 && timeout == 0);
    │                      ^^^^^^^^ - Because this is a tuple index
    │                      │         
    │                      expected tuple, got {unknown}

error: Attempt to use tuple indexing on non-tuple
    ┌─ build/libs/ready_valid/src/main.spade:251:48
    │
240 │         let ds_ready = port;
    │                        ---- Type {unknown} inferred here
    ·
251 │         Rv(if timeout == 0 {data} else {None}, ds_ready.1)
    │                                                ^^^^^^^^ - Because this is a tuple index
    │                                                │         
    │                                                expected tuple, got {unknown}

error: Attempt to use tuple indexing on non-tuple
    ┌─ build/libs/ready_valid/src/main.spade:289:27
    │
288 │         let write_full = port;
    │                          ---- Type {unknown} inferred here
289 │         set self.ready = !write_full.0;
    │                           ^^^^^^^^^^ - Because this is a tuple index
    │                           │           
    │                           expected tuple, got {unknown}

error: Attempt to use tuple indexing on non-tuple
    ┌─ build/libs/ready_valid/src/main.spade:292:51
    │
288 │         let write_full = port;
    │                          ---- Type {unknown} inferred here
    ·
292 │                 write_clk, write_rst, write_full: write_full.1,
    │                                                   ^^^^^^^^^^ - Because this is a tuple index
    │                                                   │           
    │                                                   expected tuple, got {unknown}

error: Attempt to use tuple indexing on non-tuple
    ┌─ build/libs/ready_valid/src/main.spade:297:19
    │
288 │         let write_full = port;
    │                          ---- Type {unknown} inferred here
    ·
297 │             full: write_full.0,
    │                   ^^^^^^^^^^ - Because this is a tuple index
    │                   │           
    │                   expected tuple, got {unknown}

error: Attempt to use tuple indexing on non-tuple
    ┌─ build/libs/ready_valid/src/main.spade:353:33
    │
351 │       let ds_ready = port;
    │                      ---- Type {unknown} inferred here
352 │       reg(clk) (array, num_left): ([T; N], uint<{uint::bits_for(N)}>) reset(rst: (std::undef::undef(), 0)) =
353 │          match (data, num_left, ds_ready.0) {
    │                                 ^^^^^^^^ - Because this is a tuple index
    │                                 │         
    │                                 expected tuple, got {unknown}

error: Attempt to use tuple indexing on non-tuple
    ┌─ build/libs/ready_valid/src/main.spade:361:54
    │
351 │       let ds_ready = port;
    │                      ---- Type {unknown} inferred here
    ·
361 │       set ready = (num_left == 0 || num_left == 1 && ds_ready.0);
    │                                                      ^^^^^^^^ - Because this is a tuple index
    │                                                      │         
    │                                                      expected tuple, got {unknown}

error: Attempt to use tuple indexing on non-tuple
    ┌─ build/libs/ready_valid/src/main.spade:368:10
    │
351 │       let ds_ready = port;
    │                      ---- Type {unknown} inferred here
    ·
368 │          ds_ready.1
    │          ^^^^^^^^ - Because this is a tuple index
    │          │         
    │          expected tuple, got {unknown}

error: Expected port to be a value
   ┌─ build/libs/ready_valid/src/main.spade:41:28
   │
41 │         let (ds, ds_inv) = port;
   │                            ^^^^ Expected a value
   │
   ┌─ <compiler dir>/core/ports.spade:10:12
   │
10 │ pub extern fn port<T>() -> (T, inv T);
   │            --------------------------- port is a unit
   │
   = The error is in a generic unit instantiated at
     ╰ build/libs/ready_valid/src/main.spade:229 ready_valid::impl#79::skid_buffer<bool>
     ╰ src/ready_valid_ext.spade:7 ready_valid::impl#81::split<bool, (fixed::Fp<16, 8>, fixed::Fp<16, 8>)>
     ╰ src/ready_valid_ext.spade:46 fixed::ready_valid_ext::impl#55::sequential_div<16, 8>

error: Expected port to be a value
   ┌─ build/libs/ready_valid/src/main.spade:41:28
   │
41 │         let (ds, ds_inv) = port;
   │                            ^^^^ Expected a value
   │
   ┌─ <compiler dir>/core/ports.spade:10:12
   │
10 │ pub extern fn port<T>() -> (T, inv T);
   │            --------------------------- port is a unit
   │
   = The error is in a generic unit instantiated at
     ╰ build/libs/ready_valid/src/main.spade:229 ready_valid::impl#79::skid_buffer<(fixed::Fp<16, 8>, fixed::Fp<16, 8>)>
     ╰ src/ready_valid_ext.spade:7 ready_valid::impl#81::split<bool, (fixed::Fp<16, 8>, fixed::Fp<16, 8>)>
     ╰ src/ready_valid_ext.spade:46 fixed::ready_valid_ext::impl#55::sequential_div<16, 8>

error: Expected port to be a value
   ┌─ build/libs/ready_valid/src/main.spade:41:28
   │
41 │         let (ds, ds_inv) = port;
   │                            ^^^^ Expected a value
   │
   ┌─ <compiler dir>/core/ports.spade:10:12
   │
10 │ pub extern fn port<T>() -> (T, inv T);
   │            --------------------------- port is a unit
   │
   = The error is in a generic unit instantiated at
     ╰ src/ready_valid_ext.spade:16 ready_valid::impl#79::skid_buffer<(fixed::Fp<25, 16>, fixed::Fp<25, 8>)>
     ╰ src/ready_valid_ext.spade:46 fixed::ready_valid_ext::impl#55::sequential_div<16, 8>

error: Expected port to be a value
   ┌─ build/libs/ready_valid/src/escape_byte.spade:29:40
   │
29 │         let (ds_ready, ds_ready_inv) = port;
   │                                        ^^^^ Expected a value
   │
   ┌─ <compiler dir>/core/ports.spade:10:12
   │
10 │ pub extern fn port<T>() -> (T, inv T);
   │            --------------------------- port is a unit
   │
   = The error is in a generic unit instantiated at
     ╰ build/libs/ready_valid/src/escape_byte.spade:105 ready_valid::escape_byte::impl#90::escape_bytes<ready_valid::escape_byte::Lambda<uint<8>, uint<8>>, 2>

Error: aborting due to previous error

Location:
    spade-compiler/src/main.rs:173:23
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.

        

mcp3002 (0/1)

build (fail)
          {"type"=>"Failed to clone mcp3002 from https://codeberg.com/TheZoq2/mcp3002-spade.git", "message"=>""}
        

playground_blinky (1/1)

build (success)
          
        

playground_floppy_fish (0/1)

build (fail)
          [INFO] Cloning "fixed"
[INFO] Cloning "vga"
[INFO] Cloning "math"
[INFO] Cloning "ready_valid"
[INFO] Cloning "nstd"
[INFO] Building spade code
Failed to encode compiler state info as bincode SerdeSerCustom
[ERROR] Failed to build spade code
Cloning into '/builds/spade-lang/trawler/work/playground_floppy_fish/swim_floppy_fish/build/libs/fixed'...
warning: redirecting to https://gitlab.com/spade-lang/lib/fixed.git/
HEAD is now at 8deae26 Bump Spade
Cloning into '/builds/spade-lang/trawler/work/playground_floppy_fish/swim_floppy_fish/build/libs/vga'...
warning: redirecting to https://gitlab.com/spade-lang/lib/vga_spade.git/
HEAD is now at d3cd108 Bump Spade
Cloning into '/builds/spade-lang/trawler/work/playground_floppy_fish/swim_floppy_fish/build/libs/math'...
HEAD is now at 35305b9 Bump Spade
Cloning into '/builds/spade-lang/trawler/work/playground_floppy_fish/swim_floppy_fish/build/libs/ready_valid'...
HEAD is now at 6b87434 Correct entityness of `split`
Cloning into '/builds/spade-lang/trawler/work/playground_floppy_fish/swim_floppy_fish/build/libs/nstd'...
HEAD is now at cd27387 Remove methods that are now in std
error: Attempt to use tuple indexing on non-tuple
    ┌─ build/libs/ready_valid/src/main.spade:114:30
    │
113 │         let ds_ready = port;
    │                        ---- Type {unknown} inferred here
114 │         set ready = if gate {ds_ready.0} else {false};
    │                              ^^^^^^^^ - Because this is a tuple index
    │                              │         
    │                              expected tuple, got {unknown}

error: Attempt to use tuple indexing on non-tuple
    ┌─ build/libs/ready_valid/src/main.spade:117:13
    │
113 │         let ds_ready = port;
    │                        ---- Type {unknown} inferred here
    ·
117 │             ds_ready.1,
    │             ^^^^^^^^ - Because this is a tuple index
    │             │         
    │             expected tuple, got {unknown}

error: Attempt to use tuple indexing on non-tuple
    ┌─ build/libs/ready_valid/src/main.spade:163:24
    │
148 │         let ds_ready = port;
    │                        ---- Type {unknown} inferred here
    ·
163 │                     if ds_ready.0 {
    │                        ^^^^^^^^ - Because this is a tuple index
    │                        │         
    │                        expected tuple, got {unknown}

error: Attempt to use tuple indexing on non-tuple
    ┌─ build/libs/ready_valid/src/main.spade:180:13
    │
148 │         let ds_ready = port;
    │                        ---- Type {unknown} inferred here
    ·
180 │             ds_ready.1,
    │             ^^^^^^^^ - Because this is a tuple index
    │             │         
    │             expected tuple, got {unknown}

error: Attempt to use tuple indexing on non-tuple
    ┌─ build/libs/ready_valid/src/main.spade:188:21
    │
187 │         let ds_ready = port;
    │                        ---- Type {unknown} inferred here
188 │         let ready = ds_ready.0 && self.data.is_some() && r.data.is_some();
    │                     ^^^^^^^^ - Because this is a tuple index
    │                     │         
    │                     expected tuple, got {unknown}

error: Attempt to use tuple indexing on non-tuple
    ┌─ build/libs/ready_valid/src/main.spade:196:13
    │
187 │         let ds_ready = port;
    │                        ---- Type {unknown} inferred here
    ·
196 │             ds_ready.1
    │             ^^^^^^^^ - Because this is a tuple index
    │             │         
    │             expected tuple, got {unknown}

error: Attempt to use tuple indexing on non-tuple
    ┌─ build/libs/ready_valid/src/main.spade:209:21
    │
206 │         let l_ready = port;
    │                       ---- Type {unknown} inferred here
    ·
209 │         let ready = l_ready.0 && r_ready.0;
    │                     ^^^^^^^ - Because this is a tuple index
    │                     │        
    │                     expected tuple, got {unknown}

error: Attempt to use tuple indexing on non-tuple
    ┌─ build/libs/ready_valid/src/main.spade:209:34
    │
207 │         let r_ready = port;
    │                       ---- Type {unknown} inferred here
208 │ 
209 │         let ready = l_ready.0 && r_ready.0;
    │                                  ^^^^^^^ - Because this is a tuple index
    │                                  │        
    │                                  expected tuple, got {unknown}

error: Attempt to use tuple indexing on non-tuple
    ┌─ build/libs/ready_valid/src/main.spade:217:16
    │
206 │         let l_ready = port;
    │                       ---- Type {unknown} inferred here
    ·
217 │         (Rv(l, l_ready.1), Rv(r, r_ready.1))
    │                ^^^^^^^ - Because this is a tuple index
    │                │        
    │                expected tuple, got {unknown}

error: Attempt to use tuple indexing on non-tuple
    ┌─ build/libs/ready_valid/src/main.spade:217:34
    │
207 │         let r_ready = port;
    │                       ---- Type {unknown} inferred here
    ·
217 │         (Rv(l, l_ready.1), Rv(r, r_ready.1))
    │                                  ^^^^^^^ - Because this is a tuple index
    │                                  │        
    │                                  expected tuple, got {unknown}

error: Attempt to use tuple indexing on non-tuple
    ┌─ build/libs/ready_valid/src/main.spade:243:35
    │
240 │         let ds_ready = port;
    │                        ---- Type {unknown} inferred here
    ·
243 │             match (timeout, data, ds_ready.0) {
    │                                   ^^^^^^^^ - Because this is a tuple index
    │                                   │         
    │                                   expected tuple, got {unknown}

error: Attempt to use tuple indexing on non-tuple
    ┌─ build/libs/ready_valid/src/main.spade:250:22
    │
240 │         let ds_ready = port;
    │                        ---- Type {unknown} inferred here
    ·
250 │         set ready = (ds_ready.0 && timeout == 0);
    │                      ^^^^^^^^ - Because this is a tuple index
    │                      │         
    │                      expected tuple, got {unknown}

error: Attempt to use tuple indexing on non-tuple
    ┌─ build/libs/ready_valid/src/main.spade:251:48
    │
240 │         let ds_ready = port;
    │                        ---- Type {unknown} inferred here
    ·
251 │         Rv(if timeout == 0 {data} else {None}, ds_ready.1)
    │                                                ^^^^^^^^ - Because this is a tuple index
    │                                                │         
    │                                                expected tuple, got {unknown}

error: Attempt to use tuple indexing on non-tuple
    ┌─ build/libs/ready_valid/src/main.spade:289:27
    │
288 │         let write_full = port;
    │                          ---- Type {unknown} inferred here
289 │         set self.ready = !write_full.0;
    │                           ^^^^^^^^^^ - Because this is a tuple index
    │                           │           
    │                           expected tuple, got {unknown}

error: Attempt to use tuple indexing on non-tuple
    ┌─ build/libs/ready_valid/src/main.spade:292:51
    │
288 │         let write_full = port;
    │                          ---- Type {unknown} inferred here
    ·
292 │                 write_clk, write_rst, write_full: write_full.1,
    │                                                   ^^^^^^^^^^ - Because this is a tuple index
    │                                                   │           
    │                                                   expected tuple, got {unknown}

error: Attempt to use tuple indexing on non-tuple
    ┌─ build/libs/ready_valid/src/main.spade:297:19
    │
288 │         let write_full = port;
    │                          ---- Type {unknown} inferred here
    ·
297 │             full: write_full.0,
    │                   ^^^^^^^^^^ - Because this is a tuple index
    │                   │           
    │                   expected tuple, got {unknown}

error: Attempt to use tuple indexing on non-tuple
    ┌─ build/libs/ready_valid/src/main.spade:353:33
    │
351 │       let ds_ready = port;
    │                      ---- Type {unknown} inferred here
352 │       reg(clk) (array, num_left): ([T; N], uint<{uint::bits_for(N)}>) reset(rst: (std::undef::undef(), 0)) =
353 │          match (data, num_left, ds_ready.0) {
    │                                 ^^^^^^^^ - Because this is a tuple index
    │                                 │         
    │                                 expected tuple, got {unknown}

error: Attempt to use tuple indexing on non-tuple
    ┌─ build/libs/ready_valid/src/main.spade:361:54
    │
351 │       let ds_ready = port;
    │                      ---- Type {unknown} inferred here
    ·
361 │       set ready = (num_left == 0 || num_left == 1 && ds_ready.0);
    │                                                      ^^^^^^^^ - Because this is a tuple index
    │                                                      │         
    │                                                      expected tuple, got {unknown}

error: Attempt to use tuple indexing on non-tuple
    ┌─ build/libs/ready_valid/src/main.spade:368:10
    │
351 │       let ds_ready = port;
    │                      ---- Type {unknown} inferred here
    ·
368 │          ds_ready.1
    │          ^^^^^^^^ - Because this is a tuple index
    │          │         
    │          expected tuple, got {unknown}

error: Expected port to be a value
    ┌─ src/main.spade:141:36
    │
141 │   let (game_over, game_over_inv) = port;
    │                                    ^^^^ Expected a value
    │
    ┌─ <compiler dir>/core/ports.spade:10:12
    │
 10 │ pub extern fn port<T>() -> (T, inv T);
    │            --------------------------- port is a unit

error: Expected port to be a value
   ┌─ build/libs/ready_valid/src/main.spade:41:28
   │
41 │         let (ds, ds_inv) = port;
   │                            ^^^^ Expected a value
   │
   ┌─ <compiler dir>/core/ports.spade:10:12
   │
10 │ pub extern fn port<T>() -> (T, inv T);
   │            --------------------------- port is a unit
   │
   = The error is in a generic unit instantiated at
     ╰ build/libs/ready_valid/src/main.spade:229 ready_valid::impl#79::skid_buffer<bool>
     ╰ build/libs/fixed/src/ready_valid_ext.spade:7 ready_valid::impl#81::split<bool, (fixed::Fp<16, 8>, fixed::Fp<16, 8>)>
     ╰ build/libs/fixed/src/ready_valid_ext.spade:46 fixed::ready_valid_ext::impl#63::sequential_div<16, 8>

error: Expected port to be a value
   ┌─ build/libs/ready_valid/src/main.spade:41:28
   │
41 │         let (ds, ds_inv) = port;
   │                            ^^^^ Expected a value
   │
   ┌─ <compiler dir>/core/ports.spade:10:12
   │
10 │ pub extern fn port<T>() -> (T, inv T);
   │            --------------------------- port is a unit
   │
   = The error is in a generic unit instantiated at
     ╰ build/libs/ready_valid/src/main.spade:229 ready_valid::impl#79::skid_buffer<(fixed::Fp<16, 8>, fixed::Fp<16, 8>)>
     ╰ build/libs/fixed/src/ready_valid_ext.spade:7 ready_valid::impl#81::split<bool, (fixed::Fp<16, 8>, fixed::Fp<16, 8>)>
     ╰ build/libs/fixed/src/ready_valid_ext.spade:46 fixed::ready_valid_ext::impl#63::sequential_div<16, 8>

error: Expected port to be a value
   ┌─ build/libs/ready_valid/src/main.spade:41:28
   │
41 │         let (ds, ds_inv) = port;
   │                            ^^^^ Expected a value
   │
   ┌─ <compiler dir>/core/ports.spade:10:12
   │
10 │ pub extern fn port<T>() -> (T, inv T);
   │            --------------------------- port is a unit
   │
   = The error is in a generic unit instantiated at
     ╰ build/libs/fixed/src/ready_valid_ext.spade:16 ready_valid::impl#79::skid_buffer<(fixed::Fp<25, 16>, fixed::Fp<25, 8>)>
     ╰ build/libs/fixed/src/ready_valid_ext.spade:46 fixed::ready_valid_ext::impl#63::sequential_div<16, 8>

error: Expected port to be a value
   ┌─ build/libs/ready_valid/src/escape_byte.spade:29:40
   │
29 │         let (ds_ready, ds_ready_inv) = port;
   │                                        ^^^^ Expected a value
   │
   ┌─ <compiler dir>/core/ports.spade:10:12
   │
10 │ pub extern fn port<T>() -> (T, inv T);
   │            --------------------------- port is a unit
   │
   = The error is in a generic unit instantiated at
     ╰ build/libs/ready_valid/src/escape_byte.spade:105 ready_valid::escape_byte::impl#90::escape_bytes<ready_valid::escape_byte::Lambda<uint<8>, uint<8>>, 2>

Error: aborting due to previous error

Location:
    spade-compiler/src/main.rs:173:23
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.

        

playground_tinytapeout (1/1)

build (success)
          
        

playground_vga (1/1)

build (success)
          
        

protocols (0/2)

build (fail)
          [INFO] Cloning "ready_valid"
[INFO] Cloning "nstd"
Cloning into '/builds/spade-lang/trawler/work/protocols/build/libs/ready_valid'...
HEAD is now at 12496f7 Migrate to codeberg
Cloning into '/builds/spade-lang/trawler/work/protocols/build/libs/nstd'...
fatal: unable to read tree (a72814e365fc56d80b8d2bd4568c613b14749fa1)
Error: 
   0: Running checkout Commit("a72814e365fc56d80b8d2bd4568c613b14749fa1") from swim.lock in "nstd" in "/builds/spade-lang/trawler/work/protocols/build/libs/nstd"
   1: Failed to checkout Commit("a72814e365fc56d80b8d2bd4568c613b14749fa1")

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

        
test (fail)
          HEAD is now at 12496f7 Migrate to codeberg
fatal: unable to read tree (a72814e365fc56d80b8d2bd4568c613b14749fa1)
Error: 
   0: Running checkout Commit("a72814e365fc56d80b8d2bd4568c613b14749fa1") from swim.lock in "nstd" in "/builds/spade-lang/trawler/work/protocols/build/libs/nstd"
   1: Failed to checkout Commit("a72814e365fc56d80b8d2bd4568c613b14749fa1")

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

        

quickscope (0/1)

build (fail)
          {"type"=>"Failed to clone quickscope from https://codeberg.com/TheZoq2/quickscope.git", "message"=>""}
        

ready_valid (1/1)

build (success)
          
        

spade-v (0/2)

build (fail)
          [INFO] Cloning "protocols"
[INFO] Cloning "ready_valid"
[INFO] Cloning "nstd"
[INFO] Building spade code
Failed to encode compiler state info as bincode SerdeSerCustom
[ERROR] Failed to build spade code
Cloning into '/builds/spade-lang/trawler/work/spade-v/build/libs/protocols'...
HEAD is now at c55e22e Bump to latest Spade
Cloning into '/builds/spade-lang/trawler/work/spade-v/build/libs/ready_valid'...
HEAD is now at 6b87434 Correct entityness of `split`
Cloning into '/builds/spade-lang/trawler/work/spade-v/build/libs/nstd'...
HEAD is now at cd27387 Remove methods that are now in std
error: Unknown attribute 'wal_traceable'
   ┌─ src/cpu.spade:24:3
   │
24 │ #[wal_traceable(uses_clk, uses_rst)]
   │   ^^^^^^^^^^^^^ Unrecognised attribute

error: Unknown attribute 'wal_trace'
    ┌─ src/cpu.spade:221:11
    │
221 │         #[wal_trace(clk=clk, rst=rst)]
    │           ^^^^^^^^^ Unrecognised attribute

error: Attempt to use tuple indexing on non-tuple
   ┌─ build/libs/protocols/src/test.spade:10:57
   │
10 │     let tx_out = inst uart_tx(clk, rst, Rv(to_transmit, port.1), config);
   │                                                         ^^^^ - Because this is a tuple index
   │                                                         │     
   │                                                         expected tuple, got {unknown}
   │                                                         Type {unknown} inferred here

error: Attempt to use tuple indexing on non-tuple
    ┌─ build/libs/ready_valid/src/main.spade:114:30
    │
113 │         let ds_ready = port;
    │                        ---- Type {unknown} inferred here
114 │         set ready = if gate {ds_ready.0} else {false};
    │                              ^^^^^^^^ - Because this is a tuple index
    │                              │         
    │                              expected tuple, got {unknown}

error: Attempt to use tuple indexing on non-tuple
    ┌─ build/libs/ready_valid/src/main.spade:117:13
    │
113 │         let ds_ready = port;
    │                        ---- Type {unknown} inferred here
    ·
117 │             ds_ready.1,
    │             ^^^^^^^^ - Because this is a tuple index
    │             │         
    │             expected tuple, got {unknown}

error: Attempt to use tuple indexing on non-tuple
    ┌─ build/libs/ready_valid/src/main.spade:163:24
    │
148 │         let ds_ready = port;
    │                        ---- Type {unknown} inferred here
    ·
163 │                     if ds_ready.0 {
    │                        ^^^^^^^^ - Because this is a tuple index
    │                        │         
    │                        expected tuple, got {unknown}

error: Attempt to use tuple indexing on non-tuple
    ┌─ build/libs/ready_valid/src/main.spade:180:13
    │
148 │         let ds_ready = port;
    │                        ---- Type {unknown} inferred here
    ·
180 │             ds_ready.1,
    │             ^^^^^^^^ - Because this is a tuple index
    │             │         
    │             expected tuple, got {unknown}

error: Attempt to use tuple indexing on non-tuple
    ┌─ build/libs/ready_valid/src/main.spade:188:21
    │
187 │         let ds_ready = port;
    │                        ---- Type {unknown} inferred here
188 │         let ready = ds_ready.0 && self.data.is_some() && r.data.is_some();
    │                     ^^^^^^^^ - Because this is a tuple index
    │                     │         
    │                     expected tuple, got {unknown}

error: Attempt to use tuple indexing on non-tuple
    ┌─ build/libs/ready_valid/src/main.spade:196:13
    │
187 │         let ds_ready = port;
    │                        ---- Type {unknown} inferred here
    ·
196 │             ds_ready.1
    │             ^^^^^^^^ - Because this is a tuple index
    │             │         
    │             expected tuple, got {unknown}

error: Attempt to use tuple indexing on non-tuple
    ┌─ build/libs/ready_valid/src/main.spade:209:21
    │
206 │         let l_ready = port;
    │                       ---- Type {unknown} inferred here
    ·
209 │         let ready = l_ready.0 && r_ready.0;
    │                     ^^^^^^^ - Because this is a tuple index
    │                     │        
    │                     expected tuple, got {unknown}

error: Attempt to use tuple indexing on non-tuple
    ┌─ build/libs/ready_valid/src/main.spade:209:34
    │
207 │         let r_ready = port;
    │                       ---- Type {unknown} inferred here
208 │ 
209 │         let ready = l_ready.0 && r_ready.0;
    │                                  ^^^^^^^ - Because this is a tuple index
    │                                  │        
    │                                  expected tuple, got {unknown}

error: Attempt to use tuple indexing on non-tuple
    ┌─ build/libs/ready_valid/src/main.spade:217:16
    │
206 │         let l_ready = port;
    │                       ---- Type {unknown} inferred here
    ·
217 │         (Rv(l, l_ready.1), Rv(r, r_ready.1))
    │                ^^^^^^^ - Because this is a tuple index
    │                │        
    │                expected tuple, got {unknown}

error: Attempt to use tuple indexing on non-tuple
    ┌─ build/libs/ready_valid/src/main.spade:217:34
    │
207 │         let r_ready = port;
    │                       ---- Type {unknown} inferred here
    ·
217 │         (Rv(l, l_ready.1), Rv(r, r_ready.1))
    │                                  ^^^^^^^ - Because this is a tuple index
    │                                  │        
    │                                  expected tuple, got {unknown}

error: Attempt to use tuple indexing on non-tuple
    ┌─ build/libs/ready_valid/src/main.spade:243:35
    │
240 │         let ds_ready = port;
    │                        ---- Type {unknown} inferred here
    ·
243 │             match (timeout, data, ds_ready.0) {
    │                                   ^^^^^^^^ - Because this is a tuple index
    │                                   │         
    │                                   expected tuple, got {unknown}

error: Attempt to use tuple indexing on non-tuple
    ┌─ build/libs/ready_valid/src/main.spade:250:22
    │
240 │         let ds_ready = port;
    │                        ---- Type {unknown} inferred here
    ·
250 │         set ready = (ds_ready.0 && timeout == 0);
    │                      ^^^^^^^^ - Because this is a tuple index
    │                      │         
    │                      expected tuple, got {unknown}

error: Attempt to use tuple indexing on non-tuple
    ┌─ build/libs/ready_valid/src/main.spade:251:48
    │
240 │         let ds_ready = port;
    │                        ---- Type {unknown} inferred here
    ·
251 │         Rv(if timeout == 0 {data} else {None}, ds_ready.1)
    │                                                ^^^^^^^^ - Because this is a tuple index
    │                                                │         
    │                                                expected tuple, got {unknown}

error: Attempt to use tuple indexing on non-tuple
    ┌─ build/libs/ready_valid/src/main.spade:289:27
    │
288 │         let write_full = port;
    │                          ---- Type {unknown} inferred here
289 │         set self.ready = !write_full.0;
    │                           ^^^^^^^^^^ - Because this is a tuple index
    │                           │           
    │                           expected tuple, got {unknown}

error: Attempt to use tuple indexing on non-tuple
    ┌─ build/libs/ready_valid/src/main.spade:292:51
    │
288 │         let write_full = port;
    │                          ---- Type {unknown} inferred here
    ·
292 │                 write_clk, write_rst, write_full: write_full.1,
    │                                                   ^^^^^^^^^^ - Because this is a tuple index
    │                                                   │           
    │                                                   expected tuple, got {unknown}

error: Attempt to use tuple indexing on non-tuple
    ┌─ build/libs/ready_valid/src/main.spade:297:19
    │
288 │         let write_full = port;
    │                          ---- Type {unknown} inferred here
    ·
297 │             full: write_full.0,
    │                   ^^^^^^^^^^ - Because this is a tuple index
    │                   │           
    │                   expected tuple, got {unknown}

error: Attempt to use tuple indexing on non-tuple
    ┌─ build/libs/ready_valid/src/main.spade:353:33
    │
351 │       let ds_ready = port;
    │                      ---- Type {unknown} inferred here
352 │       reg(clk) (array, num_left): ([T; N], uint<{uint::bits_for(N)}>) reset(rst: (std::undef::undef(), 0)) =
353 │          match (data, num_left, ds_ready.0) {
    │                                 ^^^^^^^^ - Because this is a tuple index
    │                                 │         
    │                                 expected tuple, got {unknown}

error: Attempt to use tuple indexing on non-tuple
    ┌─ build/libs/ready_valid/src/main.spade:361:54
    │
351 │       let ds_ready = port;
    │                      ---- Type {unknown} inferred here
    ·
361 │       set ready = (num_left == 0 || num_left == 1 && ds_ready.0);
    │                                                      ^^^^^^^^ - Because this is a tuple index
    │                                                      │         
    │                                                      expected tuple, got {unknown}

error: Attempt to use tuple indexing on non-tuple
    ┌─ build/libs/ready_valid/src/main.spade:368:10
    │
351 │       let ds_ready = port;
    │                      ---- Type {unknown} inferred here
    ·
368 │          ds_ready.1
    │          ^^^^^^^^ - Because this is a tuple index
    │          │         
    │          expected tuple, got {unknown}

error: Type of expression is not fully known
   ┌─ src/csr.spade:32:46
   │
32 │         instructions::Op::CSRRS => (rs1_v, !(rs1_idx_v == 0)),
   │                                              ^^^^^^^^^ The type of this expression is not fully known
   │
   = note: Found incomplete type: uint<_>

error: Expected port to be a value
    ┌─ src/memory.spade:119:41
    │
119 │         let (rwctrl, wire rwctrl_inv) = port;
    │                                         ^^^^ Expected a value
    │
    ┌─ <compiler dir>/core/ports.spade:10:12
    │
 10 │ pub extern fn port<T>() -> (T, inv T);
    │            --------------------------- port is a unit
    │
    = The error is in a generic unit instantiated at
      ╰ src/memory.spade:206 spadev::memory::data_memory<16384>

error: Expected port to be a value
    ┌─ src/bus.spade:111:32
    │
111 │     let (result, result_inv) = port;
    │                                ^^^^ Expected a value
    │
    ┌─ <compiler dir>/core/ports.spade:10:12
    │
 10 │ pub extern fn port<T>() -> (T, inv T);
    │            --------------------------- port is a unit

error: Expected port to be a value
   ┌─ src/regfile.spade:52:18
   │
52 │     let (r, w) = port;
   │                  ^^^^ Expected a value
   │
   ┌─ <compiler dir>/core/ports.spade:10:12
   │
10 │ pub extern fn port<T>() -> (T, inv T);
   │            --------------------------- port is a unit

error: Expected port to be a value
   ┌─ src/regfile.spade:67:18
   │
67 │     let (r, w) = port;
   │                  ^^^^ Expected a value
   │
   ┌─ <compiler dir>/core/ports.spade:10:12
   │
10 │ pub extern fn port<T>() -> (T, inv T);
   │            --------------------------- port is a unit

error: Expected port to be a value
    ┌─ src/bus.spade:173:44
    │
173 │         let (wire upstream, wire result) = port;
    │                                            ^^^^ Expected a value
    │
    ┌─ <compiler dir>/core/ports.spade:10:12
    │
 10 │ pub extern fn port<T>() -> (T, inv T);
    │            --------------------------- port is a unit
    │
    = The error is in a generic unit instantiated at
      ╰ src/bus.spade:141 spadev::bus::impl#50::append_impl<0, spadev::memory::DataMemoryRW<16384>, 16384, 0>
      ╰ src/bus.spade:204 spadev::bus::impl#50::append<0, spadev::memory::DataMemoryRW<16384>, 16384, 0>

error: Expected port to be a value
    ┌─ src/bus.spade:173:44
    │
173 │         let (wire upstream, wire result) = port;
    │                                            ^^^^ Expected a value
    │
    ┌─ <compiler dir>/core/ports.spade:10:12
    │
 10 │ pub extern fn port<T>() -> (T, inv T);
    │            --------------------------- port is a unit
    │
    = The error is in a generic unit instantiated at
      ╰ src/bus.spade:141 spadev::bus::impl#50::append_impl<0, spadev::memory::DataMemoryR<16384>, 16384, 0>
      ╰ src/bus.spade:209 spadev::bus::impl#50::append<0, spadev::memory::DataMemoryR<16384>, 16384, 0>

error: Expected port to be a value
    ┌─ src/bus.spade:173:44
    │
173 │         let (wire upstream, wire result) = port;
    │                                            ^^^^ Expected a value
    │
    ┌─ <compiler dir>/core/ports.spade:10:12
    │
 10 │ pub extern fn port<T>() -> (T, inv T);
    │            --------------------------- port is a unit
    │
    = The error is in a generic unit instantiated at
      ╰ src/bus.spade:141 spadev::bus::impl#50::append_impl<2147483648, spadev::memory::DataMemoryRW<16384>, 16384, 16384>
      ╰ src/bus.spade:209 spadev::bus::impl#50::append<2147483648, spadev::memory::DataMemoryRW<16384>, 16384, 16384>

error: Expected port to be a value
    ┌─ src/bus.spade:173:44
    │
173 │         let (wire upstream, wire result) = port;
    │                                            ^^^^ Expected a value
    │
    ┌─ <compiler dir>/core/ports.spade:10:12
    │
 10 │ pub extern fn port<T>() -> (T, inv T);
    │            --------------------------- port is a unit
    │
    = The error is in a generic unit instantiated at
      ╰ src/bus.spade:141 spadev::bus::impl#50::append_impl<2147483648, spadev::memory::DataMemoryR<16384>, 16384, 16384>
      ╰ src/bus.spade:204 spadev::bus::impl#50::append<2147483648, spadev::memory::DataMemoryR<16384>, 16384, 16384>

error: Expected port to be a value
   ┌─ build/libs/ready_valid/src/escape_byte.spade:29:40
   │
29 │         let (ds_ready, ds_ready_inv) = port;
   │                                        ^^^^ Expected a value
   │
   ┌─ <compiler dir>/core/ports.spade:10:12
   │
10 │ pub extern fn port<T>() -> (T, inv T);
   │            --------------------------- port is a unit
   │
   = The error is in a generic unit instantiated at
     ╰ build/libs/ready_valid/src/escape_byte.spade:105 ready_valid::escape_byte::impl#79::escape_bytes<ready_valid::escape_byte::Lambda<uint<8>, uint<8>>, 2>

Error: aborting due to previous error

Location:
    spade-compiler/src/main.rs:173:23
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 code
Failed to encode compiler state info as bincode SerdeSerCustom
[ERROR] Failed to build spade code
HEAD is now at c55e22e Bump to latest Spade
HEAD is now at 6b87434 Correct entityness of `split`
HEAD is now at cd27387 Remove methods that are now in std
error: Unknown attribute 'wal_traceable'
   ┌─ src/cpu.spade:24:3
   │
24 │ #[wal_traceable(uses_clk, uses_rst)]
   │   ^^^^^^^^^^^^^ Unrecognised attribute

error: Unknown attribute 'wal_trace'
    ┌─ src/cpu.spade:221:11
    │
221 │         #[wal_trace(clk=clk, rst=rst)]
    │           ^^^^^^^^^ Unrecognised attribute

error: Attempt to use tuple indexing on non-tuple
   ┌─ build/libs/protocols/src/test.spade:10:57
   │
10 │     let tx_out = inst uart_tx(clk, rst, Rv(to_transmit, port.1), config);
   │                                                         ^^^^ - Because this is a tuple index
   │                                                         │     
   │                                                         expected tuple, got {unknown}
   │                                                         Type {unknown} inferred here

error: Attempt to use tuple indexing on non-tuple
    ┌─ build/libs/ready_valid/src/main.spade:114:30
    │
113 │         let ds_ready = port;
    │                        ---- Type {unknown} inferred here
114 │         set ready = if gate {ds_ready.0} else {false};
    │                              ^^^^^^^^ - Because this is a tuple index
    │                              │         
    │                              expected tuple, got {unknown}

error: Attempt to use tuple indexing on non-tuple
    ┌─ build/libs/ready_valid/src/main.spade:117:13
    │
113 │         let ds_ready = port;
    │                        ---- Type {unknown} inferred here
    ·
117 │             ds_ready.1,
    │             ^^^^^^^^ - Because this is a tuple index
    │             │         
    │             expected tuple, got {unknown}

error: Attempt to use tuple indexing on non-tuple
    ┌─ build/libs/ready_valid/src/main.spade:163:24
    │
148 │         let ds_ready = port;
    │                        ---- Type {unknown} inferred here
    ·
163 │                     if ds_ready.0 {
    │                        ^^^^^^^^ - Because this is a tuple index
    │                        │         
    │                        expected tuple, got {unknown}

error: Attempt to use tuple indexing on non-tuple
    ┌─ build/libs/ready_valid/src/main.spade:180:13
    │
148 │         let ds_ready = port;
    │                        ---- Type {unknown} inferred here
    ·
180 │             ds_ready.1,
    │             ^^^^^^^^ - Because this is a tuple index
    │             │         
    │             expected tuple, got {unknown}

error: Attempt to use tuple indexing on non-tuple
    ┌─ build/libs/ready_valid/src/main.spade:188:21
    │
187 │         let ds_ready = port;
    │                        ---- Type {unknown} inferred here
188 │         let ready = ds_ready.0 && self.data.is_some() && r.data.is_some();
    │                     ^^^^^^^^ - Because this is a tuple index
    │                     │         
    │                     expected tuple, got {unknown}

error: Attempt to use tuple indexing on non-tuple
    ┌─ build/libs/ready_valid/src/main.spade:196:13
    │
187 │         let ds_ready = port;
    │                        ---- Type {unknown} inferred here
    ·
196 │             ds_ready.1
    │             ^^^^^^^^ - Because this is a tuple index
    │             │         
    │             expected tuple, got {unknown}

error: Attempt to use tuple indexing on non-tuple
    ┌─ build/libs/ready_valid/src/main.spade:209:21
    │
206 │         let l_ready = port;
    │                       ---- Type {unknown} inferred here
    ·
209 │         let ready = l_ready.0 && r_ready.0;
    │                     ^^^^^^^ - Because this is a tuple index
    │                     │        
    │                     expected tuple, got {unknown}

error: Attempt to use tuple indexing on non-tuple
    ┌─ build/libs/ready_valid/src/main.spade:209:34
    │
207 │         let r_ready = port;
    │                       ---- Type {unknown} inferred here
208 │ 
209 │         let ready = l_ready.0 && r_ready.0;
    │                                  ^^^^^^^ - Because this is a tuple index
    │                                  │        
    │                                  expected tuple, got {unknown}

error: Attempt to use tuple indexing on non-tuple
    ┌─ build/libs/ready_valid/src/main.spade:217:16
    │
206 │         let l_ready = port;
    │                       ---- Type {unknown} inferred here
    ·
217 │         (Rv(l, l_ready.1), Rv(r, r_ready.1))
    │                ^^^^^^^ - Because this is a tuple index
    │                │        
    │                expected tuple, got {unknown}

error: Attempt to use tuple indexing on non-tuple
    ┌─ build/libs/ready_valid/src/main.spade:217:34
    │
207 │         let r_ready = port;
    │                       ---- Type {unknown} inferred here
    ·
217 │         (Rv(l, l_ready.1), Rv(r, r_ready.1))
    │                                  ^^^^^^^ - Because this is a tuple index
    │                                  │        
    │                                  expected tuple, got {unknown}

error: Attempt to use tuple indexing on non-tuple
    ┌─ build/libs/ready_valid/src/main.spade:243:35
    │
240 │         let ds_ready = port;
    │                        ---- Type {unknown} inferred here
    ·
243 │             match (timeout, data, ds_ready.0) {
    │                                   ^^^^^^^^ - Because this is a tuple index
    │                                   │         
    │                                   expected tuple, got {unknown}

error: Attempt to use tuple indexing on non-tuple
    ┌─ build/libs/ready_valid/src/main.spade:250:22
    │
240 │         let ds_ready = port;
    │                        ---- Type {unknown} inferred here
    ·
250 │         set ready = (ds_ready.0 && timeout == 0);
    │                      ^^^^^^^^ - Because this is a tuple index
    │                      │         
    │                      expected tuple, got {unknown}

error: Attempt to use tuple indexing on non-tuple
    ┌─ build/libs/ready_valid/src/main.spade:251:48
    │
240 │         let ds_ready = port;
    │                        ---- Type {unknown} inferred here
    ·
251 │         Rv(if timeout == 0 {data} else {None}, ds_ready.1)
    │                                                ^^^^^^^^ - Because this is a tuple index
    │                                                │         
    │                                                expected tuple, got {unknown}

error: Attempt to use tuple indexing on non-tuple
    ┌─ build/libs/ready_valid/src/main.spade:289:27
    │
288 │         let write_full = port;
    │                          ---- Type {unknown} inferred here
289 │         set self.ready = !write_full.0;
    │                           ^^^^^^^^^^ - Because this is a tuple index
    │                           │           
    │                           expected tuple, got {unknown}

error: Attempt to use tuple indexing on non-tuple
    ┌─ build/libs/ready_valid/src/main.spade:292:51
    │
288 │         let write_full = port;
    │                          ---- Type {unknown} inferred here
    ·
292 │                 write_clk, write_rst, write_full: write_full.1,
    │                                                   ^^^^^^^^^^ - Because this is a tuple index
    │                                                   │           
    │                                                   expected tuple, got {unknown}

error: Attempt to use tuple indexing on non-tuple
    ┌─ build/libs/ready_valid/src/main.spade:297:19
    │
288 │         let write_full = port;
    │                          ---- Type {unknown} inferred here
    ·
297 │             full: write_full.0,
    │                   ^^^^^^^^^^ - Because this is a tuple index
    │                   │           
    │                   expected tuple, got {unknown}

error: Attempt to use tuple indexing on non-tuple
    ┌─ build/libs/ready_valid/src/main.spade:353:33
    │
351 │       let ds_ready = port;
    │                      ---- Type {unknown} inferred here
352 │       reg(clk) (array, num_left): ([T; N], uint<{uint::bits_for(N)}>) reset(rst: (std::undef::undef(), 0)) =
353 │          match (data, num_left, ds_ready.0) {
    │                                 ^^^^^^^^ - Because this is a tuple index
    │                                 │         
    │                                 expected tuple, got {unknown}

error: Attempt to use tuple indexing on non-tuple
    ┌─ build/libs/ready_valid/src/main.spade:361:54
    │
351 │       let ds_ready = port;
    │                      ---- Type {unknown} inferred here
    ·
361 │       set ready = (num_left == 0 || num_left == 1 && ds_ready.0);
    │                                                      ^^^^^^^^ - Because this is a tuple index
    │                                                      │         
    │                                                      expected tuple, got {unknown}

error: Attempt to use tuple indexing on non-tuple
    ┌─ build/libs/ready_valid/src/main.spade:368:10
    │
351 │       let ds_ready = port;
    │                      ---- Type {unknown} inferred here
    ·
368 │          ds_ready.1
    │          ^^^^^^^^ - Because this is a tuple index
    │          │         
    │          expected tuple, got {unknown}

error: Type of expression is not fully known
   ┌─ src/csr.spade:32:46
   │
32 │         instructions::Op::CSRRS => (rs1_v, !(rs1_idx_v == 0)),
   │                                              ^^^^^^^^^ The type of this expression is not fully known
   │
   = note: Found incomplete type: uint<_>

error: Expected port to be a value
    ┌─ src/memory.spade:119:41
    │
119 │         let (rwctrl, wire rwctrl_inv) = port;
    │                                         ^^^^ Expected a value
    │
    ┌─ <compiler dir>/core/ports.spade:10:12
    │
 10 │ pub extern fn port<T>() -> (T, inv T);
    │            --------------------------- port is a unit
    │
    = The error is in a generic unit instantiated at
      ╰ src/memory.spade:206 spadev::memory::data_memory<16384>

error: Expected port to be a value
    ┌─ src/bus.spade:111:32
    │
111 │     let (result, result_inv) = port;
    │                                ^^^^ Expected a value
    │
    ┌─ <compiler dir>/core/ports.spade:10:12
    │
 10 │ pub extern fn port<T>() -> (T, inv T);
    │            --------------------------- port is a unit

error: Expected port to be a value
   ┌─ src/regfile.spade:52:18
   │
52 │     let (r, w) = port;
   │                  ^^^^ Expected a value
   │
   ┌─ <compiler dir>/core/ports.spade:10:12
   │
10 │ pub extern fn port<T>() -> (T, inv T);
   │            --------------------------- port is a unit

error: Expected port to be a value
   ┌─ src/regfile.spade:67:18
   │
67 │     let (r, w) = port;
   │                  ^^^^ Expected a value
   │
   ┌─ <compiler dir>/core/ports.spade:10:12
   │
10 │ pub extern fn port<T>() -> (T, inv T);
   │            --------------------------- port is a unit

error: Expected port to be a value
    ┌─ src/bus.spade:173:44
    │
173 │         let (wire upstream, wire result) = port;
    │                                            ^^^^ Expected a value
    │
    ┌─ <compiler dir>/core/ports.spade:10:12
    │
 10 │ pub extern fn port<T>() -> (T, inv T);
    │            --------------------------- port is a unit
    │
    = The error is in a generic unit instantiated at
      ╰ src/bus.spade:141 spadev::bus::impl#50::append_impl<0, spadev::memory::DataMemoryRW<16384>, 16384, 0>
      ╰ src/bus.spade:204 spadev::bus::impl#50::append<0, spadev::memory::DataMemoryRW<16384>, 16384, 0>

error: Expected port to be a value
    ┌─ src/bus.spade:173:44
    │
173 │         let (wire upstream, wire result) = port;
    │                                            ^^^^ Expected a value
    │
    ┌─ <compiler dir>/core/ports.spade:10:12
    │
 10 │ pub extern fn port<T>() -> (T, inv T);
    │            --------------------------- port is a unit
    │
    = The error is in a generic unit instantiated at
      ╰ src/bus.spade:141 spadev::bus::impl#50::append_impl<0, spadev::memory::DataMemoryR<16384>, 16384, 0>
      ╰ src/bus.spade:209 spadev::bus::impl#50::append<0, spadev::memory::DataMemoryR<16384>, 16384, 0>

error: Expected port to be a value
    ┌─ src/bus.spade:173:44
    │
173 │         let (wire upstream, wire result) = port;
    │                                            ^^^^ Expected a value
    │
    ┌─ <compiler dir>/core/ports.spade:10:12
    │
 10 │ pub extern fn port<T>() -> (T, inv T);
    │            --------------------------- port is a unit
    │
    = The error is in a generic unit instantiated at
      ╰ src/bus.spade:141 spadev::bus::impl#50::append_impl<2147483648, spadev::memory::DataMemoryRW<16384>, 16384, 16384>
      ╰ src/bus.spade:209 spadev::bus::impl#50::append<2147483648, spadev::memory::DataMemoryRW<16384>, 16384, 16384>

error: Expected port to be a value
    ┌─ src/bus.spade:173:44
    │
173 │         let (wire upstream, wire result) = port;
    │                                            ^^^^ Expected a value
    │
    ┌─ <compiler dir>/core/ports.spade:10:12
    │
 10 │ pub extern fn port<T>() -> (T, inv T);
    │            --------------------------- port is a unit
    │
    = The error is in a generic unit instantiated at
      ╰ src/bus.spade:141 spadev::bus::impl#50::append_impl<2147483648, spadev::memory::DataMemoryR<16384>, 16384, 16384>
      ╰ src/bus.spade:204 spadev::bus::impl#50::append<2147483648, spadev::memory::DataMemoryR<16384>, 16384, 16384>

error: Expected port to be a value
   ┌─ build/libs/ready_valid/src/escape_byte.spade:29:40
   │
29 │         let (ds_ready, ds_ready_inv) = port;
   │                                        ^^^^ Expected a value
   │
   ┌─ <compiler dir>/core/ports.spade:10:12
   │
10 │ pub extern fn port<T>() -> (T, inv T);
   │            --------------------------- port is a unit
   │
   = The error is in a generic unit instantiated at
     ╰ build/libs/ready_valid/src/escape_byte.spade:105 ready_valid::escape_byte::impl#79::escape_bytes<ready_valid::escape_byte::Lambda<uint<8>, uint<8>>, 2>

Error: aborting due to previous error

Location:
    spade-compiler/src/main.rs:173:23
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] Cloning "protocols"
[INFO] Cloning "ready_valid"
[INFO] Cloning "nstd"
[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 3170518 Fix tests
Cloning into '/builds/spade-lang/trawler/work/spade-v-hwtest-uart/hwtest_uart/build/libs/ready_valid'...
HEAD is now at d029c73 Bump Spade again
Cloning into '/builds/spade-lang/trawler/work/spade-v-hwtest-uart/hwtest_uart/build/libs/nstd'...
HEAD is now at 92b6b79 Add pub markers
error: Unknown attribute 'wal_traceable'
   ┌─ ../src/cpu.spade:24:3
   │
24 │ #[wal_traceable(uses_clk, uses_rst)]
   │   ^^^^^^^^^^^^^ Unrecognised attribute

error: Unknown attribute 'wal_trace'
    ┌─ ../src/cpu.spade:221:11
    │
221 │         #[wal_trace(clk=clk, rst=rst)]
    │           ^^^^^^^^^ Unrecognised attribute

error: Unexpected `identifier`, expected `{`
  ┌─ build/libs/ready_valid/src/main.spade:7:17
  │
7 │ pub struct port Rv<T> {
  │                 ^^ expected `{`

error: Unexpected `identifier`, expected `{`
    ┌─ build/libs/ready_valid/src/main.spade:148:13
    │
148 │ struct port FifoOut<T> {
    │             ^^^^^^^ expected `{`

error: Unexpected `:`, expected `Identifier`
    ┌─ build/libs/ready_valid/src/main.spade:155:33
    │
155 │     pub fn read_empty(self, wire: inv &bool) -> FifoOut<T> {
    │                                 ^ expected `Identifier`

error: Unexpected `:`, expected `Identifier`
    ┌─ build/libs/ready_valid/src/main.spade:161:32
    │
161 │     pub fn read_full(self, wire: inv &bool) -> FifoOut<T> {
    │                                ^ expected `Identifier`

error: Use of undeclared name ready_valid::Rv
  ┌─ build/libs/protocols/src/uart.spade:1:18
  │
1 │ use ready_valid::Rv;
  │                  ^^ Undeclared name

error: Use of undeclared name ready_valid::Rv
  ┌─ build/libs/ready_valid/src/escape_byte.spade:1:10
  │
1 │ use lib::Rv;
  │          ^^ Undeclared name

warning: Deprecated type-level function `uint_bits_to_fit`
  ┌─ build/libs/nstd/src/mem.spade:9:15
  │
9 │     where W: {uint_bits_to_fit(C)}
  │               ^^^^^^^^^^^^^^^^
  │
  = Use `uint::bits_for` instead
  │
9 │     where W: {uint::bits_for(C)}
  │               ~~~~~~~~~~~~~~

warning: Deprecated type-level function `uint_bits_to_fit`
  ┌─ build/libs/ready_valid/src/option_ext.spade:9:11
  │
9 │ where O: {uint_bits_to_fit(V) - 1},
  │           ^^^^^^^^^^^^^^^^
  │
  = Use `uint::bits_for` instead
  │
9 │ where O: {uint::bits_for(V) - 1},
  │           ~~~~~~~~~~~~~~

warning: Deprecated type-level function `uint_bits_to_fit`
   ┌─ build/libs/ready_valid/src/option_ext.spade:10:11
   │
10 │       O: {uint_bits_to_fit(V - 1)}
   │           ^^^^^^^^^^^^^^^^
   │
   = Use `uint::bits_for` instead
   │
10 │       O: {uint::bits_for(V - 1)}
   │           ~~~~~~~~~~~~~~

Error: aborting due to previous error

Location:
    spade-compiler/src/main.rs:173:23
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 code
[ERROR] Failed to build spade code
HEAD is now at 3170518 Fix tests
HEAD is now at d029c73 Bump Spade again
HEAD is now at 92b6b79 Add pub markers
error: Unknown attribute 'wal_traceable'
   ┌─ ../src/cpu.spade:24:3
   │
24 │ #[wal_traceable(uses_clk, uses_rst)]
   │   ^^^^^^^^^^^^^ Unrecognised attribute

error: Unknown attribute 'wal_trace'
    ┌─ ../src/cpu.spade:221:11
    │
221 │         #[wal_trace(clk=clk, rst=rst)]
    │           ^^^^^^^^^ Unrecognised attribute

error: Unexpected `identifier`, expected `{`
  ┌─ build/libs/ready_valid/src/main.spade:7:17
  │
7 │ pub struct port Rv<T> {
  │                 ^^ expected `{`

error: Unexpected `identifier`, expected `{`
    ┌─ build/libs/ready_valid/src/main.spade:148:13
    │
148 │ struct port FifoOut<T> {
    │             ^^^^^^^ expected `{`

error: Unexpected `:`, expected `Identifier`
    ┌─ build/libs/ready_valid/src/main.spade:155:33
    │
155 │     pub fn read_empty(self, wire: inv &bool) -> FifoOut<T> {
    │                                 ^ expected `Identifier`

error: Unexpected `:`, expected `Identifier`
    ┌─ build/libs/ready_valid/src/main.spade:161:32
    │
161 │     pub fn read_full(self, wire: inv &bool) -> FifoOut<T> {
    │                                ^ expected `Identifier`

error: Use of undeclared name ready_valid::Rv
  ┌─ build/libs/protocols/src/uart.spade:1:18
  │
1 │ use ready_valid::Rv;
  │                  ^^ Undeclared name

error: Use of undeclared name ready_valid::Rv
  ┌─ build/libs/ready_valid/src/escape_byte.spade:1:10
  │
1 │ use lib::Rv;
  │          ^^ Undeclared name

warning: Deprecated type-level function `uint_bits_to_fit`
  ┌─ build/libs/ready_valid/src/option_ext.spade:9:11
  │
9 │ where O: {uint_bits_to_fit(V) - 1},
  │           ^^^^^^^^^^^^^^^^
  │
  = Use `uint::bits_for` instead
  │
9 │ where O: {uint::bits_for(V) - 1},
  │           ~~~~~~~~~~~~~~

warning: Deprecated type-level function `uint_bits_to_fit`
   ┌─ build/libs/ready_valid/src/option_ext.spade:10:11
   │
10 │       O: {uint_bits_to_fit(V - 1)}
   │           ^^^^^^^^^^^^^^^^
   │
   = Use `uint::bits_for` instead
   │
10 │       O: {uint::bits_for(V - 1)}
   │           ~~~~~~~~~~~~~~

warning: Deprecated type-level function `uint_bits_to_fit`
  ┌─ build/libs/nstd/src/mem.spade:9:15
  │
9 │     where W: {uint_bits_to_fit(C)}
  │               ^^^^^^^^^^^^^^^^
  │
  = Use `uint::bits_for` instead
  │
9 │     where W: {uint::bits_for(C)}
  │               ~~~~~~~~~~~~~~

Error: aborting due to previous error

Location:
    spade-compiler/src/main.rs:173:23
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 code
[ERROR] Failed to build spade code
HEAD is now at 3170518 Fix tests
HEAD is now at d029c73 Bump Spade again
HEAD is now at 92b6b79 Add pub markers
error: Unexpected `identifier`, expected `{`
  ┌─ build/libs/ready_valid/src/main.spade:7:17
  │
7 │ pub struct port Rv<T> {
  │                 ^^ expected `{`

error: Unexpected `identifier`, expected `{`
    ┌─ build/libs/ready_valid/src/main.spade:148:13
    │
148 │ struct port FifoOut<T> {
    │             ^^^^^^^ expected `{`

error: Unexpected `:`, expected `Identifier`
    ┌─ build/libs/ready_valid/src/main.spade:155:33
    │
155 │     pub fn read_empty(self, wire: inv &bool) -> FifoOut<T> {
    │                                 ^ expected `Identifier`

error: Unexpected `:`, expected `Identifier`
    ┌─ build/libs/ready_valid/src/main.spade:161:32
    │
161 │     pub fn read_full(self, wire: inv &bool) -> FifoOut<T> {
    │                                ^ expected `Identifier`

error: Unknown attribute 'wal_traceable'
   ┌─ ../src/cpu.spade:24:3
   │
24 │ #[wal_traceable(uses_clk, uses_rst)]
   │   ^^^^^^^^^^^^^ Unrecognised attribute

error: Unknown attribute 'wal_trace'
    ┌─ ../src/cpu.spade:221:11
    │
221 │         #[wal_trace(clk=clk, rst=rst)]
    │           ^^^^^^^^^ Unrecognised attribute

error: Use of undeclared name ready_valid::Rv
  ┌─ build/libs/ready_valid/src/escape_byte.spade:1:10
  │
1 │ use lib::Rv;
  │          ^^ Undeclared name

error: Use of undeclared name ready_valid::Rv
  ┌─ build/libs/protocols/src/uart.spade:1:18
  │
1 │ use ready_valid::Rv;
  │                  ^^ Undeclared name

warning: Deprecated type-level function `uint_bits_to_fit`
  ┌─ build/libs/ready_valid/src/option_ext.spade:9:11
  │
9 │ where O: {uint_bits_to_fit(V) - 1},
  │           ^^^^^^^^^^^^^^^^
  │
  = Use `uint::bits_for` instead
  │
9 │ where O: {uint::bits_for(V) - 1},
  │           ~~~~~~~~~~~~~~

warning: Deprecated type-level function `uint_bits_to_fit`
   ┌─ build/libs/ready_valid/src/option_ext.spade:10:11
   │
10 │       O: {uint_bits_to_fit(V - 1)}
   │           ^^^^^^^^^^^^^^^^
   │
   = Use `uint::bits_for` instead
   │
10 │       O: {uint::bits_for(V - 1)}
   │           ~~~~~~~~~~~~~~

warning: Deprecated type-level function `uint_bits_to_fit`
  ┌─ build/libs/nstd/src/mem.spade:9:15
  │
9 │     where W: {uint_bits_to_fit(C)}
  │               ^^^^^^^^^^^^^^^^
  │
  = Use `uint::bits_for` instead
  │
9 │     where W: {uint::bits_for(C)}
  │               ~~~~~~~~~~~~~~

Error: aborting due to previous error

Location:
    spade-compiler/src/main.rs:173:23
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 (0/2)

build (fail)
          [INFO] Building spade code
[ERROR] Failed to build spade code
error: invalid value 'pico-ice40up5k,pico-ice40up5k,src/main.spade' for '<INPUT_FILE>': 
when parsing 'pico-ice40up5k': Unexpected `-`, expected `identifier`

For more information, try '--help'.
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)
          [INFO] Building spade code
[ERROR] Failed to build spade code
error: invalid value 'pico-ice40up5k,pico-ice40up5k,src/main.spade' for '<INPUT_FILE>': 
when parsing 'pico-ice40up5k': Unexpected `-`, expected `identifier`

For more information, try '--help'.
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-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 (3/3)

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

This page was generated at 2026-07-09T10:31:09Z.