vak: (Улыбка)
[personal profile] vak
Рождается новый симпатичный язычок для разработки хардвера: Chisel. Порождает код на Verilog, не уступающий по качеству написанному вручную, а также cycle-accurate симулятор на Си++, работающий в восемь раз быстрее чем Synopsys VCS. Сделан на основе языка Scala. Пример кода:

import Chisel._

class GCD extends Module {
  val io = new Bundle {
    val a  = UInt(INPUT,  16)
    val b  = UInt(INPUT,  16)
    val e  = Bool(INPUT)
    val z  = UInt(OUTPUT, 16)
    val v  = Bool(OUTPUT)
  }
  val x  = Reg(UInt())
  val y  = Reg(UInt())
  when   (x > y) { x := x - y }
  unless (x > y) { y := y - x }
  when (io.e) { x := io.a; y := io.b }
  io.z := x
  io.v := y === UInt(0)
}

object Example {
  def main(args: Array[String]): Unit = {
    chiselMain(args, () => Module(new GCD()))
  }
}

Мне кажется, эта штука должна вытеснить SystemC на ура. Из документации есть DAC2012 Introduction Paper (PDF) и Chisel Tutorial (PDF).

Date: 2013-12-03 00:02 (UTC)
From: [identity profile] evgen2.livejournal.com
я там не вижу " := "

Date: 2013-12-03 07:13 (UTC)
From: [identity profile] evgen2.livejournal.com
так это оператор присваивания или какой другой смысл у := ?


О, а там еще есть === и ==

Date: 2013-12-03 10:06 (UTC)
From: [identity profile] potan.livejournal.com
Это просто имя метода.