Summary

csi2 (0/2)

build (fail)
          [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/csi2/build/libs/protocols'...
warning: redirecting to https://gitlab.com/spade-lang/lib/protocols.git/
HEAD is now at 3170518 Fix tests
Cloning into '/builds/spade-lang/trawler/work/csi2/build/libs/ready_valid'...
HEAD is now at d029c73 Bump Spade again
Cloning into '/builds/spade-lang/trawler/work/csi2/build/libs/nstd'...
HEAD is now at 92b6b79 Add pub markers
warning: The port keyword no longer has any effect on structs.
  ┌─ build/libs/ready_valid/src/main.spade:7:12
  │
7 │ pub struct port Rv<T> {
  │            ^^^^ struct port and struct are now the same thing
  │
  = Consider removing `port`
  │
7 │ pub struct port Rv<T> {
  │            ----

warning: The port keyword no longer has any effect on structs.
    ┌─ build/libs/ready_valid/src/main.spade:148:8
    │
148 │ struct port FifoOut<T> {
    │        ^^^^ struct port and struct are now the same thing
    │
    = Consider removing `port`
    │
148 │ struct port FifoOut<T> {
    │        ----

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`

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)}
  │               ~~~~~~~~~~~~~~

warning: Deprecated tuple syntax indexing
   ┌─ src/main.spade:61:27
   │
61 │             align0: match aligned#0 { Some(_) => true, None => false, },
   │                           ^^^^^^^^^ `#` syntax for tuple indexing is deprecated
   │
   = note: replace `#` with `.`

warning: Deprecated tuple syntax indexing
   ┌─ src/main.spade:62:27
   │
62 │             align1: match aligned#1 { Some(_) => true, None => false, },
   │                           ^^^^^^^^^ `#` syntax for tuple indexing is deprecated
   │
   = note: replace `#` with `.`

warning: Deprecated type-level function `uint_bits_to_fit`
   ┌─ build/libs/ready_valid/src/option_ext.spade:25:42
   │
25 │         let (write, read) = inst fifo::<{uint_bits_to_fit(Depth - 1)}, T, Depth>$(
   │                                          ^^^^^^^^^^^^^^^^
   │
   = Use `uint::bits_for` instead
   │
25 │         let (write, read) = inst fifo::<{uint::bits_for(Depth - 1)}, T, Depth>$(
   │                                          ~~~~~~~~~~~~~~

warning: Deprecated type-level function `uint_bits_to_fit`
    ┌─ build/libs/ready_valid/src/main.spade:131:33
    │
131 │         reg(clk) timeout: uint<{uint_bits_to_fit(N)}> reset(rst: 0) =
    │                                 ^^^^^^^^^^^^^^^^
    │
    = Use `uint::bits_for` instead
    │
131 │         reg(clk) timeout: uint<{uint::bits_for(N)}> reset(rst: 0) =
    │                                 ~~~~~~~~~~~~~~

warning: Deprecated type-level function `uint_bits_to_fit`
    ┌─ build/libs/ready_valid/src/main.spade:241:50
    │
241 │       reg(clk) (array, num_left): ([T; N], uint<{uint_bits_to_fit(N)}>) reset(rst: (std::undef::undef(), 0)) =
    │                                                  ^^^^^^^^^^^^^^^^
    │
    = Use `uint::bits_for` instead
    │
241 │       reg(clk) (array, num_left): ([T; N], uint<{uint::bits_for(N)}>) reset(rst: (std::undef::undef(), 0)) =
    │                                                  ~~~~~~~~~~~~~~

warning: Deprecated type-level function `uint_bits_to_fit`
   ┌─ build/libs/nstd/src/array.spade:70:19
   │
70 │     where NSize: {uint_bits_to_fit(N-1)}
   │                   ^^^^^^^^^^^^^^^^
   │
   = Use `uint::bits_for` instead
   │
70 │     where NSize: {uint::bits_for(N-1)}
   │                   ~~~~~~~~~~~~~~

warning: Deprecated type-level function `uint_bits_to_fit`
   ┌─ build/libs/nstd/src/array.spade:70:19
   │
70 │     where NSize: {uint_bits_to_fit(N-1)}
   │                   ^^^^^^^^^^^^^^^^
   │
   = Use `uint::bits_for` instead
   │
70 │     where NSize: {uint::bits_for(N-1)}
   │                   ~~~~~~~~~~~~~~

error: Trait bound not satisfied. inv csi2::Csi2Debug does not implement core::marker::Data
   ┌─ src/main.spade:35:5
   │    
35 │         dbg: inv &Csi2Debug
   │         ^^^
   │         │
   │         inv csi2::Csi2Debug does not implement core::marker::Data
   │         The type of this argument is not Data which means it cannot be stored in a register.
36 │     ) -> FrontendOut {
   │ ╭────────────────────'
   │ │ ╭──────────────────'
37 │ │ │     reg * 2; // Domain crossing into the sysclk domain
38 │ │ │         let aligned = inst lane_aligner$(
39 │ │ │             sys_clk,
   · │ │
67 │ │ │         FrontendOut(short_packets, raw_pixels)
68 │ │ │ }
   │ ╰─│─' Required because of the trait bound specified here
   │   ╰─' The value needs to be in a register because it is in this pipeline
   │    
   = help: An value not being Data typically means it contains at least one `inv` type
   = help: You can learn more about `Data` here: https://docs.spade-lang.org/typst/wires.html
   = Consider making the argument a wire
   │
35 │     wire dbg: inv &Csi2Debug
   │     +++++

Error: aborting due to previous error

Location:
    spade-compiler/src/main.rs:174: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
[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
warning: The port keyword no longer has any effect on structs.
  ┌─ build/libs/ready_valid/src/main.spade:7:12
  │
7 │ pub struct port Rv<T> {
  │            ^^^^ struct port and struct are now the same thing
  │
  = Consider removing `port`
  │
7 │ pub struct port Rv<T> {
  │            ----

warning: The port keyword no longer has any effect on structs.
    ┌─ build/libs/ready_valid/src/main.spade:148:8
    │
148 │ struct port FifoOut<T> {
    │        ^^^^ struct port and struct are now the same thing
    │
    = Consider removing `port`
    │
148 │ struct port FifoOut<T> {
    │        ----

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`

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)}
   │           ~~~~~~~~~~~~~~

warning: Deprecated tuple syntax indexing
   ┌─ src/main.spade:61:27
   │
61 │             align0: match aligned#0 { Some(_) => true, None => false, },
   │                           ^^^^^^^^^ `#` syntax for tuple indexing is deprecated
   │
   = note: replace `#` with `.`

warning: Deprecated tuple syntax indexing
   ┌─ src/main.spade:62:27
   │
62 │             align1: match aligned#1 { Some(_) => true, None => false, },
   │                           ^^^^^^^^^ `#` syntax for tuple indexing is deprecated
   │
   = note: replace `#` with `.`

warning: Deprecated type-level function `uint_bits_to_fit`
   ┌─ build/libs/nstd/src/array.spade:70:19
   │
70 │     where NSize: {uint_bits_to_fit(N-1)}
   │                   ^^^^^^^^^^^^^^^^
   │
   = Use `uint::bits_for` instead
   │
70 │     where NSize: {uint::bits_for(N-1)}
   │                   ~~~~~~~~~~~~~~

warning: Deprecated type-level function `uint_bits_to_fit`
   ┌─ build/libs/nstd/src/array.spade:70:19
   │
70 │     where NSize: {uint_bits_to_fit(N-1)}
   │                   ^^^^^^^^^^^^^^^^
   │
   = Use `uint::bits_for` instead
   │
70 │     where NSize: {uint::bits_for(N-1)}
   │                   ~~~~~~~~~~~~~~

warning: Deprecated type-level function `uint_bits_to_fit`
   ┌─ build/libs/ready_valid/src/option_ext.spade:25:42
   │
25 │         let (write, read) = inst fifo::<{uint_bits_to_fit(Depth - 1)}, T, Depth>$(
   │                                          ^^^^^^^^^^^^^^^^
   │
   = Use `uint::bits_for` instead
   │
25 │         let (write, read) = inst fifo::<{uint::bits_for(Depth - 1)}, T, Depth>$(
   │                                          ~~~~~~~~~~~~~~

warning: Deprecated type-level function `uint_bits_to_fit`
    ┌─ build/libs/ready_valid/src/main.spade:131:33
    │
131 │         reg(clk) timeout: uint<{uint_bits_to_fit(N)}> reset(rst: 0) =
    │                                 ^^^^^^^^^^^^^^^^
    │
    = Use `uint::bits_for` instead
    │
131 │         reg(clk) timeout: uint<{uint::bits_for(N)}> reset(rst: 0) =
    │                                 ~~~~~~~~~~~~~~

warning: Deprecated type-level function `uint_bits_to_fit`
    ┌─ build/libs/ready_valid/src/main.spade:241:50
    │
241 │       reg(clk) (array, num_left): ([T; N], uint<{uint_bits_to_fit(N)}>) reset(rst: (std::undef::undef(), 0)) =
    │                                                  ^^^^^^^^^^^^^^^^
    │
    = Use `uint::bits_for` instead
    │
241 │       reg(clk) (array, num_left): ([T; N], uint<{uint::bits_for(N)}>) reset(rst: (std::undef::undef(), 0)) =
    │                                                  ~~~~~~~~~~~~~~

error: Trait bound not satisfied. inv csi2::Csi2Debug does not implement core::marker::Data
   ┌─ src/main.spade:35:5
   │    
35 │         dbg: inv &Csi2Debug
   │         ^^^
   │         │
   │         inv csi2::Csi2Debug does not implement core::marker::Data
   │         The type of this argument is not Data which means it cannot be stored in a register.
36 │     ) -> FrontendOut {
   │ ╭────────────────────'
   │ │ ╭──────────────────'
37 │ │ │     reg * 2; // Domain crossing into the sysclk domain
38 │ │ │         let aligned = inst lane_aligner$(
39 │ │ │             sys_clk,
   · │ │
67 │ │ │         FrontendOut(short_packets, raw_pixels)
68 │ │ │ }
   │ ╰─│─' Required because of the trait bound specified here
   │   ╰─' The value needs to be in a register because it is in this pipeline
   │    
   = help: An value not being Data typically means it contains at least one `inv` type
   = help: You can learn more about `Data` here: https://docs.spade-lang.org/typst/wires.html
   = Consider making the argument a wire
   │
35 │     wire dbg: inv &Csi2Debug
   │     +++++

Error: aborting due to previous error

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

        

ecp5stubs (1/1)

build (success)
          
        

ethernet (1/1)

build (success)
          
        

fixed (1/1)

build (success)
          
        

mcp3002 (1/1)

build (success)
          
        

playground_blinky (1/1)

build (success)
          
        

playground_floppy_fish (0/1)

build (fail)
          [INFO] Cloning "vga"
[INFO] Cloning "fixed"
[INFO] Building spade code
[ERROR] Failed to build spade code
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/fixed'...
warning: redirecting to https://gitlab.com/spade-lang/lib/fixed.git/
HEAD is now at 8adaa72 Bump Spade
error: Trait bound not satisfied. inv bool does not implement core::marker::Data
    ┌─ src/main.spade:98:3
    │    
 98 │       game_over: inv &bool,
    │       ^^^^^^^^^
    │       │
    │       inv bool does not implement core::marker::Data
    │       The type of this argument is not Data which means it cannot be stored in a register.
 99 │     ) -> Color {
    │ ╭──────────────'
    │ │ ╭────────────'
100 │ │ │     let player_size = 32;
101 │ │ │     let pipe_gap = 90;
102 │ │ │     let player_in_y = y > sext(player_pos.to_int()) && y < sext(player_pos.to_int() + player_size);
    · │ │
126 │ │ │     color
127 │ │ │ }
    │ ╰─│─' Required because of the trait bound specified here
    │   ╰─' The value needs to be in a register because it is in this pipeline
    │    
    = help: An value not being Data typically means it contains at least one `inv` type
    = help: You can learn more about `Data` here: https://docs.spade-lang.org/typst/wires.html
    = Consider making the argument a wire
    │
 98 │   wire game_over: inv &bool,
    │   +++++

error: Type of expression is not fully known
   ┌─ build/libs/fixed/src/main.spade:75:46
   │
75 │         if guard_bits == 0 || guard_bits == ~0 {
   │                                              ^ The type of this expression is not fully known
   │
   = note: Found incomplete type: Number<_> + core::ops::BitNot

Error: aborting due to previous error

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

build (success)
          
        
test (success)
          
        

quickscope (0/1)

build (fail)
          [INFO] Cloning "ready_valid"
[INFO] Cloning "protocols"
[INFO] Cloning "nstd"
[INFO] Building spade code
[ERROR] Failed to build spade code
Cloning into '/builds/spade-lang/trawler/work/quickscope/build/libs/ready_valid'...
HEAD is now at 30e51db Make escape_bytes public
Cloning into '/builds/spade-lang/trawler/work/quickscope/build/libs/protocols'...
HEAD is now at 3170518 Fix tests
Cloning into '/builds/spade-lang/trawler/work/quickscope/build/libs/nstd'...
HEAD is now at 92b6b79 Add pub markers
warning: The port keyword no longer has any effect on structs.
  ┌─ build/libs/ready_valid/src/main.spade:7:12
  │
7 │ pub struct port Rv<T> {
  │            ^^^^ struct port and struct are now the same thing
  │
  = Consider removing `port`
  │
7 │ pub struct port Rv<T> {
  │            ----

warning: The port keyword no longer has any effect on structs.
    ┌─ build/libs/ready_valid/src/main.spade:148:8
    │
148 │ struct port FifoOut<T> {
    │        ^^^^ struct port and struct are now the same thing
    │
    = Consider removing `port`
    │
148 │ struct port FifoOut<T> {
    │        ----

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`

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)}
   │           ~~~~~~~~~~~~~~

warning: Deprecated type-level function `uint_bits_to_fit`
   ┌─ build/libs/nstd/src/array.spade:70:19
   │
70 │     where NSize: {uint_bits_to_fit(N-1)}
   │                   ^^^^^^^^^^^^^^^^
   │
   = Use `uint::bits_for` instead
   │
70 │     where NSize: {uint::bits_for(N-1)}
   │                   ~~~~~~~~~~~~~~

warning: Deprecated type-level function `uint_bits_to_fit`
   ┌─ build/libs/nstd/src/array.spade:70:19
   │
70 │     where NSize: {uint_bits_to_fit(N-1)}
   │                   ^^^^^^^^^^^^^^^^
   │
   = Use `uint::bits_for` instead
   │
70 │     where NSize: {uint::bits_for(N-1)}
   │                   ~~~~~~~~~~~~~~

warning: Deprecated type-level function `uint_bits_to_fit`
   ┌─ build/libs/ready_valid/src/option_ext.spade:25:42
   │
25 │         let (write, read) = inst fifo::<{uint_bits_to_fit(Depth - 1)}, T, Depth>$(
   │                                          ^^^^^^^^^^^^^^^^
   │
   = Use `uint::bits_for` instead
   │
25 │         let (write, read) = inst fifo::<{uint::bits_for(Depth - 1)}, T, Depth>$(
   │                                          ~~~~~~~~~~~~~~

warning: Deprecated type-level function `uint_bits_to_fit`
    ┌─ build/libs/ready_valid/src/main.spade:131:33
    │
131 │         reg(clk) timeout: uint<{uint_bits_to_fit(N)}> reset(rst: 0) =
    │                                 ^^^^^^^^^^^^^^^^
    │
    = Use `uint::bits_for` instead
    │
131 │         reg(clk) timeout: uint<{uint::bits_for(N)}> reset(rst: 0) =
    │                                 ~~~~~~~~~~~~~~

warning: Deprecated type-level function `uint_bits_to_fit`
    ┌─ build/libs/ready_valid/src/main.spade:241:50
    │
241 │       reg(clk) (array, num_left): ([T; N], uint<{uint_bits_to_fit(N)}>) reset(rst: (std::undef::undef(), 0)) =
    │                                                  ^^^^^^^^^^^^^^^^
    │
    = Use `uint::bits_for` instead
    │
241 │       reg(clk) (array, num_left): ([T; N], uint<{uint::bits_for(N)}>) reset(rst: (std::undef::undef(), 0)) =
    │                                                  ~~~~~~~~~~~~~~

error: _ has no method `into_element_stream`
   ┌─ src/main.spade:52:4
   │  
52 │ ╭    Rv(&data_in, ready.1)
53 │ │       .inst fifo_buffer::<SampleBuffer>(clk, rst)
54 │ │       .read_empty(empty.1)
55 │ │       .data
   · │
58 │ │       })
59 │ │       .inst into_element_stream(clk, rst)
   │ ╰─────────────────────────────────────────^

error: `ready_valid::FifoOut<core::marker::Data>` has no method `read_empty`
   ┌─ src/main.spade:54:8
   │  
52 │ ╭    Rv(&data_in, ready.1)
53 │ │       .inst fifo_buffer::<SampleBuffer>(clk, rst)
54 │ │       .read_empty(empty.1)
   │ │        ^^^^^^^^^^ No such method
   │ ╰──────────────────────────' This has type `ready_valid::FifoOut<core::marker::Data>`

error: Field access on {unknown} which is not a struct
   ┌─ src/main.spade:52:4
   │  
52 │ ╭    Rv(&data_in, ready.1)
53 │ │       .inst fifo_buffer::<SampleBuffer>(clk, rst)
54 │ │       .read_empty(empty.1)
   │ ╰──────────────────────────^ Expected a struct, found {unknown}
   │  
   = help: Field access is only allowed on structs

Error: aborting due to previous error

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

        

ready_valid (1/1)

build (success)
          
        

spade-v (2/2)

build (success)
          
        
test (success)
          
        

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
warning: The port keyword no longer has any effect on structs.
  ┌─ build/libs/ready_valid/src/main.spade:7:12
  │
7 │ pub struct port Rv<T> {
  │            ^^^^ struct port and struct are now the same thing
  │
  = Consider removing `port`
  │
7 │ pub struct port Rv<T> {
  │            ----

warning: The port keyword no longer has any effect on structs.
    ┌─ build/libs/ready_valid/src/main.spade:148:8
    │
148 │ struct port FifoOut<T> {
    │        ^^^^ struct port and struct are now the same thing
    │
    = Consider removing `port`
    │
148 │ struct port FifoOut<T> {
    │        ----

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`

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)}
   │           ~~~~~~~~~~~~~~

warning: Deprecated tuple syntax indexing
   ┌─ src/led_blink.spade:49:27
   │
49 │             range: (trunc(UPPER_DMEM#0), trunc(UPPER_DMEM#1)),
   │                           ^^^^^^^^^^^^ `#` syntax for tuple indexing is deprecated
   │
   = note: replace `#` with `.`

warning: Deprecated tuple syntax indexing
   ┌─ src/led_blink.spade:49:48
   │
49 │             range: (trunc(UPPER_DMEM#0), trunc(UPPER_DMEM#1)),
   │                                                ^^^^^^^^^^^^ `#` syntax for tuple indexing is deprecated
   │
   = note: replace `#` with `.`

warning: Deprecated tuple syntax indexing
   ┌─ src/led_blink.spade:57:32
   │
57 │             if zext(address) < LOWER_DATA_MEM_RANGE#1 { lower_data_mem_out }
   │                                ^^^^^^^^^^^^^^^^^^^^^^ `#` syntax for tuple indexing is deprecated
   │
   = note: replace `#` with `.`

warning: Deprecated tuple syntax indexing
   ┌─ src/led_blink.spade:58:37
   │
58 │             else if zext(address) < LED_RANGE#1 { 0 }
   │                                     ^^^^^^^^^^^ `#` syntax for tuple indexing is deprecated
   │
   = note: replace `#` with `.`

warning: Deprecated tuple syntax indexing
   ┌─ src/led_blink.spade:59:37
   │
59 │             else if zext(address) < TIMER_RANGE#1 { stage(-1).timer_out }
   │                                     ^^^^^^^^^^^^^ `#` syntax for tuple indexing is deprecated
   │
   = note: replace `#` with `.`

warning: Deprecated type-level function `uint_bits_to_fit`
   ┌─ build/libs/nstd/src/array.spade:70:19
   │
70 │     where NSize: {uint_bits_to_fit(N-1)}
   │                   ^^^^^^^^^^^^^^^^
   │
   = Use `uint::bits_for` instead
   │
70 │     where NSize: {uint::bits_for(N-1)}
   │                   ~~~~~~~~~~~~~~

warning: Deprecated type-level function `uint_bits_to_fit`
   ┌─ build/libs/nstd/src/array.spade:70:19
   │
70 │     where NSize: {uint_bits_to_fit(N-1)}
   │                   ^^^^^^^^^^^^^^^^
   │
   = Use `uint::bits_for` instead
   │
70 │     where NSize: {uint::bits_for(N-1)}
   │                   ~~~~~~~~~~~~~~

warning: Deprecated type-level function `uint_bits_to_fit`
   ┌─ build/libs/ready_valid/src/option_ext.spade:25:42
   │
25 │         let (write, read) = inst fifo::<{uint_bits_to_fit(Depth - 1)}, T, Depth>$(
   │                                          ^^^^^^^^^^^^^^^^
   │
   = Use `uint::bits_for` instead
   │
25 │         let (write, read) = inst fifo::<{uint::bits_for(Depth - 1)}, T, Depth>$(
   │                                          ~~~~~~~~~~~~~~

warning: Deprecated type-level function `uint_bits_to_fit`
    ┌─ build/libs/ready_valid/src/main.spade:131:33
    │
131 │         reg(clk) timeout: uint<{uint_bits_to_fit(N)}> reset(rst: 0) =
    │                                 ^^^^^^^^^^^^^^^^
    │
    = Use `uint::bits_for` instead
    │
131 │         reg(clk) timeout: uint<{uint::bits_for(N)}> reset(rst: 0) =
    │                                 ~~~~~~~~~~~~~~

warning: Deprecated type-level function `uint_bits_to_fit`
    ┌─ build/libs/ready_valid/src/main.spade:241:50
    │
241 │       reg(clk) (array, num_left): ([T; N], uint<{uint_bits_to_fit(N)}>) reset(rst: (std::undef::undef(), 0)) =
    │                                                  ^^^^^^^^^^^^^^^^
    │
    = Use `uint::bits_for` instead
    │
241 │       reg(clk) (array, num_left): ([T; N], uint<{uint::bits_for(N)}>) reset(rst: (std::undef::undef(), 0)) =
    │                                                  ~~~~~~~~~~~~~~

error: Trait bound not satisfied. inv bool does not implement core::marker::Data
   ┌─ src/led_blink.spade:26:5
   │    
26 │         led: inv &bool,
   │         ^^^
   │         │
   │         inv bool does not implement core::marker::Data
   │         The type of this argument is not Data which means it cannot be stored in a register.
27 │     ) -> Buses {
   │ ╭──────────────'
   │ │ ╭────────────'
28 │ │ │         // Build the bus signals
29 │ │ │         let data_control = inst new_mut_wire();
30 │ │ │         let insn_control = inst new_mut_wire();
   · │ │
66 │ │ │         )
67 │ │ │ }
   │ ╰─│─' Required because of the trait bound specified here
   │   ╰─' The value needs to be in a register because it is in this pipeline
   │    
   = help: An value not being Data typically means it contains at least one `inv` type
   = help: You can learn more about `Data` here: https://docs.spade-lang.org/typst/wires.html
   = Consider making the argument a wire
   │
26 │     wire led: inv &bool,
   │     +++++

Error: aborting due to previous error

Location:
    spade-compiler/src/main.rs:174: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
warning: The port keyword no longer has any effect on structs.
  ┌─ build/libs/ready_valid/src/main.spade:7:12
  │
7 │ pub struct port Rv<T> {
  │            ^^^^ struct port and struct are now the same thing
  │
  = Consider removing `port`
  │
7 │ pub struct port Rv<T> {
  │            ----

warning: The port keyword no longer has any effect on structs.
    ┌─ build/libs/ready_valid/src/main.spade:148:8
    │
148 │ struct port FifoOut<T> {
    │        ^^^^ struct port and struct are now the same thing
    │
    = Consider removing `port`
    │
148 │ struct port FifoOut<T> {
    │        ----

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`

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)}
  │               ~~~~~~~~~~~~~~

warning: Deprecated tuple syntax indexing
   ┌─ src/led_blink.spade:49:27
   │
49 │             range: (trunc(UPPER_DMEM#0), trunc(UPPER_DMEM#1)),
   │                           ^^^^^^^^^^^^ `#` syntax for tuple indexing is deprecated
   │
   = note: replace `#` with `.`

warning: Deprecated tuple syntax indexing
   ┌─ src/led_blink.spade:49:48
   │
49 │             range: (trunc(UPPER_DMEM#0), trunc(UPPER_DMEM#1)),
   │                                                ^^^^^^^^^^^^ `#` syntax for tuple indexing is deprecated
   │
   = note: replace `#` with `.`

warning: Deprecated tuple syntax indexing
   ┌─ src/led_blink.spade:57:32
   │
57 │             if zext(address) < LOWER_DATA_MEM_RANGE#1 { lower_data_mem_out }
   │                                ^^^^^^^^^^^^^^^^^^^^^^ `#` syntax for tuple indexing is deprecated
   │
   = note: replace `#` with `.`

warning: Deprecated tuple syntax indexing
   ┌─ src/led_blink.spade:58:37
   │
58 │             else if zext(address) < LED_RANGE#1 { 0 }
   │                                     ^^^^^^^^^^^ `#` syntax for tuple indexing is deprecated
   │
   = note: replace `#` with `.`

warning: Deprecated tuple syntax indexing
   ┌─ src/led_blink.spade:59:37
   │
59 │             else if zext(address) < TIMER_RANGE#1 { stage(-1).timer_out }
   │                                     ^^^^^^^^^^^^^ `#` syntax for tuple indexing is deprecated
   │
   = note: replace `#` with `.`

warning: Deprecated type-level function `uint_bits_to_fit`
   ┌─ build/libs/ready_valid/src/option_ext.spade:25:42
   │
25 │         let (write, read) = inst fifo::<{uint_bits_to_fit(Depth - 1)}, T, Depth>$(
   │                                          ^^^^^^^^^^^^^^^^
   │
   = Use `uint::bits_for` instead
   │
25 │         let (write, read) = inst fifo::<{uint::bits_for(Depth - 1)}, T, Depth>$(
   │                                          ~~~~~~~~~~~~~~

warning: Deprecated type-level function `uint_bits_to_fit`
    ┌─ build/libs/ready_valid/src/main.spade:131:33
    │
131 │         reg(clk) timeout: uint<{uint_bits_to_fit(N)}> reset(rst: 0) =
    │                                 ^^^^^^^^^^^^^^^^
    │
    = Use `uint::bits_for` instead
    │
131 │         reg(clk) timeout: uint<{uint::bits_for(N)}> reset(rst: 0) =
    │                                 ~~~~~~~~~~~~~~

warning: Deprecated type-level function `uint_bits_to_fit`
    ┌─ build/libs/ready_valid/src/main.spade:241:50
    │
241 │       reg(clk) (array, num_left): ([T; N], uint<{uint_bits_to_fit(N)}>) reset(rst: (std::undef::undef(), 0)) =
    │                                                  ^^^^^^^^^^^^^^^^
    │
    = Use `uint::bits_for` instead
    │
241 │       reg(clk) (array, num_left): ([T; N], uint<{uint::bits_for(N)}>) reset(rst: (std::undef::undef(), 0)) =
    │                                                  ~~~~~~~~~~~~~~

warning: Deprecated type-level function `uint_bits_to_fit`
   ┌─ build/libs/nstd/src/array.spade:70:19
   │
70 │     where NSize: {uint_bits_to_fit(N-1)}
   │                   ^^^^^^^^^^^^^^^^
   │
   = Use `uint::bits_for` instead
   │
70 │     where NSize: {uint::bits_for(N-1)}
   │                   ~~~~~~~~~~~~~~

warning: Deprecated type-level function `uint_bits_to_fit`
   ┌─ build/libs/nstd/src/array.spade:70:19
   │
70 │     where NSize: {uint_bits_to_fit(N-1)}
   │                   ^^^^^^^^^^^^^^^^
   │
   = Use `uint::bits_for` instead
   │
70 │     where NSize: {uint::bits_for(N-1)}
   │                   ~~~~~~~~~~~~~~

error: Trait bound not satisfied. inv bool does not implement core::marker::Data
   ┌─ src/led_blink.spade:26:5
   │    
26 │         led: inv &bool,
   │         ^^^
   │         │
   │         inv bool does not implement core::marker::Data
   │         The type of this argument is not Data which means it cannot be stored in a register.
27 │     ) -> Buses {
   │ ╭──────────────'
   │ │ ╭────────────'
28 │ │ │         // Build the bus signals
29 │ │ │         let data_control = inst new_mut_wire();
30 │ │ │         let insn_control = inst new_mut_wire();
   · │ │
66 │ │ │         )
67 │ │ │ }
   │ ╰─│─' Required because of the trait bound specified here
   │   ╰─' The value needs to be in a register because it is in this pipeline
   │    
   = help: An value not being Data typically means it contains at least one `inv` type
   = help: You can learn more about `Data` here: https://docs.spade-lang.org/typst/wires.html
   = Consider making the argument a wire
   │
26 │     wire led: inv &bool,
   │     +++++

Error: aborting due to previous error

Location:
    spade-compiler/src/main.rs:174: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
warning: The port keyword no longer has any effect on structs.
  ┌─ build/libs/ready_valid/src/main.spade:7:12
  │
7 │ pub struct port Rv<T> {
  │            ^^^^ struct port and struct are now the same thing
  │
  = Consider removing `port`
  │
7 │ pub struct port Rv<T> {
  │            ----

warning: The port keyword no longer has any effect on structs.
    ┌─ build/libs/ready_valid/src/main.spade:148:8
    │
148 │ struct port FifoOut<T> {
    │        ^^^^ struct port and struct are now the same thing
    │
    = Consider removing `port`
    │
148 │ struct port FifoOut<T> {
    │        ----

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`

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)}
  │               ~~~~~~~~~~~~~~

warning: Deprecated tuple syntax indexing
   ┌─ src/led_blink.spade:49:27
   │
49 │             range: (trunc(UPPER_DMEM#0), trunc(UPPER_DMEM#1)),
   │                           ^^^^^^^^^^^^ `#` syntax for tuple indexing is deprecated
   │
   = note: replace `#` with `.`

warning: Deprecated tuple syntax indexing
   ┌─ src/led_blink.spade:49:48
   │
49 │             range: (trunc(UPPER_DMEM#0), trunc(UPPER_DMEM#1)),
   │                                                ^^^^^^^^^^^^ `#` syntax for tuple indexing is deprecated
   │
   = note: replace `#` with `.`

warning: Deprecated tuple syntax indexing
   ┌─ src/led_blink.spade:57:32
   │
57 │             if zext(address) < LOWER_DATA_MEM_RANGE#1 { lower_data_mem_out }
   │                                ^^^^^^^^^^^^^^^^^^^^^^ `#` syntax for tuple indexing is deprecated
   │
   = note: replace `#` with `.`

warning: Deprecated tuple syntax indexing
   ┌─ src/led_blink.spade:58:37
   │
58 │             else if zext(address) < LED_RANGE#1 { 0 }
   │                                     ^^^^^^^^^^^ `#` syntax for tuple indexing is deprecated
   │
   = note: replace `#` with `.`

warning: Deprecated tuple syntax indexing
   ┌─ src/led_blink.spade:59:37
   │
59 │             else if zext(address) < TIMER_RANGE#1 { stage(-1).timer_out }
   │                                     ^^^^^^^^^^^^^ `#` syntax for tuple indexing is deprecated
   │
   = note: replace `#` with `.`

warning: Deprecated type-level function `uint_bits_to_fit`
   ┌─ build/libs/ready_valid/src/option_ext.spade:25:42
   │
25 │         let (write, read) = inst fifo::<{uint_bits_to_fit(Depth - 1)}, T, Depth>$(
   │                                          ^^^^^^^^^^^^^^^^
   │
   = Use `uint::bits_for` instead
   │
25 │         let (write, read) = inst fifo::<{uint::bits_for(Depth - 1)}, T, Depth>$(
   │                                          ~~~~~~~~~~~~~~

warning: Deprecated type-level function `uint_bits_to_fit`
    ┌─ build/libs/ready_valid/src/main.spade:131:33
    │
131 │         reg(clk) timeout: uint<{uint_bits_to_fit(N)}> reset(rst: 0) =
    │                                 ^^^^^^^^^^^^^^^^
    │
    = Use `uint::bits_for` instead
    │
131 │         reg(clk) timeout: uint<{uint::bits_for(N)}> reset(rst: 0) =
    │                                 ~~~~~~~~~~~~~~

warning: Deprecated type-level function `uint_bits_to_fit`
    ┌─ build/libs/ready_valid/src/main.spade:241:50
    │
241 │       reg(clk) (array, num_left): ([T; N], uint<{uint_bits_to_fit(N)}>) reset(rst: (std::undef::undef(), 0)) =
    │                                                  ^^^^^^^^^^^^^^^^
    │
    = Use `uint::bits_for` instead
    │
241 │       reg(clk) (array, num_left): ([T; N], uint<{uint::bits_for(N)}>) reset(rst: (std::undef::undef(), 0)) =
    │                                                  ~~~~~~~~~~~~~~

warning: Deprecated type-level function `uint_bits_to_fit`
   ┌─ build/libs/nstd/src/array.spade:70:19
   │
70 │     where NSize: {uint_bits_to_fit(N-1)}
   │                   ^^^^^^^^^^^^^^^^
   │
   = Use `uint::bits_for` instead
   │
70 │     where NSize: {uint::bits_for(N-1)}
   │                   ~~~~~~~~~~~~~~

warning: Deprecated type-level function `uint_bits_to_fit`
   ┌─ build/libs/nstd/src/array.spade:70:19
   │
70 │     where NSize: {uint_bits_to_fit(N-1)}
   │                   ^^^^^^^^^^^^^^^^
   │
   = Use `uint::bits_for` instead
   │
70 │     where NSize: {uint::bits_for(N-1)}
   │                   ~~~~~~~~~~~~~~

error: Trait bound not satisfied. inv bool does not implement core::marker::Data
   ┌─ src/led_blink.spade:26:5
   │    
26 │         led: inv &bool,
   │         ^^^
   │         │
   │         inv bool does not implement core::marker::Data
   │         The type of this argument is not Data which means it cannot be stored in a register.
27 │     ) -> Buses {
   │ ╭──────────────'
   │ │ ╭────────────'
28 │ │ │         // Build the bus signals
29 │ │ │         let data_control = inst new_mut_wire();
30 │ │ │         let insn_control = inst new_mut_wire();
   · │ │
66 │ │ │         )
67 │ │ │ }
   │ ╰─│─' Required because of the trait bound specified here
   │   ╰─' The value needs to be in a register because it is in this pipeline
   │    
   = help: An value not being Data typically means it contains at least one `inv` type
   = help: You can learn more about `Data` here: https://docs.spade-lang.org/typst/wires.html
   = Consider making the argument a wire
   │
26 │     wire led: inv &bool,
   │     +++++

Error: aborting due to previous error

Location:
    spade-compiler/src/main.rs:174: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 (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 (3/3)

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

This page was generated at 2026-03-21T11:31:17Z.