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-02 23:42 (UTC)
From: [identity profile] evgen2.livejournal.com
уши алгола торчат ж-)

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
Это просто имя метода.

Date: 2013-12-02 23:57 (UTC)
spamsink: (Default)
From: [personal profile] spamsink
И какой верилог из этого получился?

Date: 2013-12-03 01:39 (UTC)
spamsink: (Default)
From: [personal profile] spamsink
Понятно; а как от него добиться, скажем, parallel case, если я знаю, что какой-то набор условий взаимно исключающий, а догадаться до этого невозможно?

Date: 2013-12-04 10:58 (UTC)
From: [identity profile] thesz.livejournal.com
Ну, если так можно и это считается хорошим Верилогом, то надо мне вернуться в этот бизнес.

Date: 2013-12-03 06:47 (UTC)
From: [identity profile] potan.livejournal.com
Что только не придумают, лишь бы Haskell не учить...

Chisel: новый HDL-язык

Date: 2013-12-04 06:44 (UTC)
From: [identity profile] livejournal.livejournal.com
Пользователь [livejournal.com profile] potan сослался на вашу запись в записи «Chisel: новый HDL-язык (http://potan.livejournal.com/206095.html)» в контексте: [...] На базе Scala. Надо будет посмотреть. Оригинал взят у в Chisel: новый HDL-язык [...]

Date: 2013-12-04 06:48 (UTC)
ext_646638: (Default)
From: [identity profile] rdia.livejournal.com
А он умеет выводить типы глобально по программе?

Date: 2013-12-04 10:57 (UTC)
From: [identity profile] thesz.livejournal.com
Bluespec, в профиль.

Посмотрим.