Calyx

2022-01-12 14:11
vak: (Default)
[personal profile] vak
Появился и развивается новый язык для разработки хардвера: Calyx. Написан на Rust, между прочим.

Пример кода:
component main(go: 1) -> (done: 1) {
  cells {
    @external(1) mem = std_mem_d1(32, 1, 1);
    val = std_reg(32);
    add = std_add(32);
  }
  wires {
    group write {
      mem.addr0 = 1'b0;
      mem.write_en = 1'b1;
      mem.write_data = val.out;
      write[done] = mem.done;
    }
    group read {
      mem.addr0 = 1'b0;
      val.in = mem.read_data;
      val.write_en = 1'b1;
      read[done] = val.done;
    }
    group upd {
      add.left = val.out;
      add.right = 32'd4;
      val.in = add.out;
      val.write_en = 1'b1;
      upd[done] = val.done;
    }
  }
  control {
    seq {
      read;
      upd;
      write;
    }
  }
}

Date: 2022-01-13 00:20 (UTC)
spamsink: (Default)
From: [personal profile] spamsink
Хотелось бы увидеть пример эквивалентного Верилога.

Date: 2022-01-13 00:34 (UTC)
juan_gandhi: (Default)
From: [personal profile] juan_gandhi

Это что-то электрическое, похоже.

Date: 2022-01-13 02:30 (UTC)
spamsink: (Default)
From: [personal profile] spamsink
Я имею в виду нормальный, человеком написанный, эквивалентный по смыслу.