FPGA開発日記

カテゴリ別記事インデックス https://msyksphinz.github.io/github_pages , English Version https://fpgadevdiary.hatenadiary.com/

RISC-V命令一覧ページのフォーマットをwavedrom形式に変更中

RISC-Vのベクトル命令一覧を作成するときに使った、wavedromの命令フォーマット表記が奇麗で気に入っているので、スカラ命令の命令一覧ページも同じように改変することを検討している。

msyksphinz-self.github.io

各命令の定義のページは、RestructuredTextを使って書いているのだが、これをAsciidocに変換したうえで命令フォーマットの表記を変えていく。 wavedromで記述された各命令の定義が一覧になっていればありがたいのだが、探しても見つからなかったので一から変換している。

=== lui

load upper immediate.

Encoding::
[wavedrom, , svg]
....
{reg: [
  {bits:  7, name: 0x37, attr: 'opcode'},
  {bits:  5, name: 'rd', type: 2},
  {bits: 20, name: 'imm[31:12]'},
]}
....


Format::
--
        lui rd,imm
--
Description::
Build 32-bit constants and uses the U-type format. LUI places the U-immediate value in the top 20 bits of the destination register rd, filling in the lowest 12 bits with zeros.

Implementation::
--
        x[rd] = sext(immediate[31:12] << 12)
--

今のところこんな感じで表示されるようになっている。結構きれいに作れるかもしれない。