From 4a4efdccf153cd49cc2a3faf4fb738e6d5afa0d3 Mon Sep 17 00:00:00 2001 From: Bill Traynor Date: Fri, 6 Sep 2024 19:26:21 -0400 Subject: [PATCH] Separate immediates into separate wavedrom files. (#1631) * Separate immediates into separate wavedrom files. This separates the immediates into separate wavedrom files which allows us to add the caption to the last immediate on the page (j-immediate) which puts it after the grouping of wavedroms correctly. * Remove page break --------- Co-authored-by: Andrew Waterman --- src/images/wavedrom/b-immediate.edn | 12 ++++++++ src/images/wavedrom/i-immediate.edn | 14 ++++++++++ src/images/wavedrom/immediate.edn | 43 ----------------------------- src/images/wavedrom/j-immediate.edn | 13 +++++++++ src/images/wavedrom/s-immediate.edn | 11 ++++++++ src/images/wavedrom/u-immediate.edn | 11 ++++++++ src/rv32.adoc | 14 ++++++++-- 7 files changed, 73 insertions(+), 45 deletions(-) create mode 100644 src/images/wavedrom/b-immediate.edn create mode 100644 src/images/wavedrom/i-immediate.edn create mode 100644 src/images/wavedrom/j-immediate.edn create mode 100644 src/images/wavedrom/s-immediate.edn create mode 100644 src/images/wavedrom/u-immediate.edn diff --git a/src/images/wavedrom/b-immediate.edn b/src/images/wavedrom/b-immediate.edn new file mode 100644 index 00000000..fcf9aadd --- /dev/null +++ b/src/images/wavedrom/b-immediate.edn @@ -0,0 +1,12 @@ +//#### B-immediate + +[wavedrom, ,svg] +.... +{reg: [ + {bits: 1, name: '0'}, + {bits: 4, name: 'inst[11:8]'}, + {bits: 6, name: 'inst[30:25]'}, + {bits: 1, name: '[7]'}, + {bits: 20, name: '— inst[31] —'}, +], config:{fontsize: 12, label:{right: 'B-immediate'}}} +.... \ No newline at end of file diff --git a/src/images/wavedrom/i-immediate.edn b/src/images/wavedrom/i-immediate.edn new file mode 100644 index 00000000..578b0e33 --- /dev/null +++ b/src/images/wavedrom/i-immediate.edn @@ -0,0 +1,14 @@ +//### Figure 2.4 +//Types of immediate produced by RISC-V instructions. The fields are labeled with the instruction bits used to construct their value. Sign extension always uses inst[31]. +//#### I-immediate + +[wavedrom, ,svg] +.... +{reg: [ + {bits: 1, name: '[20]'}, + {bits: 4, name: 'inst[24:21]'}, + {bits: 6, name: 'inst[30:25]'}, + {bits: 21, name: '— inst[31] —'}, +], config:{fontsize: 12, label:{right: 'I-immediate'}}} +.... + diff --git a/src/images/wavedrom/immediate.edn b/src/images/wavedrom/immediate.edn index 3dec16bd..e8a034af 100644 --- a/src/images/wavedrom/immediate.edn +++ b/src/images/wavedrom/immediate.edn @@ -11,50 +11,7 @@ {bits: 21, name: '— inst[31] —'}, ], config:{fontsize: 12, label:{right: 'I-immediate'}}} .... -//#### S-immediate -[wavedrom, ,svg] -.... -{reg: [ - {bits: 1, name: '[7]'}, - {bits: 4, name: 'inst[11:8]'}, - {bits: 6, name: 'inst[30:25]'}, - {bits: 21, name: '— inst[31] —'}, -], config:{fontsize: 12, label:{right: 'S-immediate'}}} -.... -//#### B-immediate -[wavedrom, ,svg] -.... -{reg: [ - {bits: 1, name: '0'}, - {bits: 4, name: 'inst[11:8]'}, - {bits: 6, name: 'inst[30:25]'}, - {bits: 1, name: '[7]'}, - {bits: 20, name: '— inst[31] —'}, -], config:{fontsize: 12, label:{right: 'B-immediate'}}} -.... -//#### U-immediate -[wavedrom, ,svg] -.... -{reg: [ - {bits: 12, name: '0'}, - {bits: 8, name: 'inst[19:12]'}, - {bits: 11, name: 'inst[30:20]'}, - {bits: 1, name: '[31]'}, -], config:{fontsize: 12, label:{right: 'U-immediate'}}} -.... -//#### J-immediate -[wavedrom, ,svg] -.... -{reg: [ - {bits: 1, name: '0'}, - {bits: 4, name: 'inst[24:21]'}, - {bits: 6, name: 'inst[30:25]'}, - {bits: 1, name: '[20]'}, - {bits: 8, name: 'inst[19:12]'}, - {bits: 12, name: '— inst[31] —'}, -], config:{fontsize: 12, label:{right: 'J-immediate'}}} -.... diff --git a/src/images/wavedrom/j-immediate.edn b/src/images/wavedrom/j-immediate.edn new file mode 100644 index 00000000..dbeddd9e --- /dev/null +++ b/src/images/wavedrom/j-immediate.edn @@ -0,0 +1,13 @@ +//#### J-immediate + +[wavedrom, ,svg] +.... +{reg: [ + {bits: 1, name: '0'}, + {bits: 4, name: 'inst[24:21]'}, + {bits: 6, name: 'inst[30:25]'}, + {bits: 1, name: '[20]'}, + {bits: 8, name: 'inst[19:12]'}, + {bits: 12, name: '— inst[31] —'}, +], config:{fontsize: 12, label:{right: 'J-immediate'}}} +.... \ No newline at end of file diff --git a/src/images/wavedrom/s-immediate.edn b/src/images/wavedrom/s-immediate.edn new file mode 100644 index 00000000..324b4a38 --- /dev/null +++ b/src/images/wavedrom/s-immediate.edn @@ -0,0 +1,11 @@ +//#### S-immediate + +[wavedrom, ,svg] +.... +{reg: [ + {bits: 1, name: '[7]'}, + {bits: 4, name: 'inst[11:8]'}, + {bits: 6, name: 'inst[30:25]'}, + {bits: 21, name: '— inst[31] —'}, +], config:{fontsize: 12, label:{right: 'S-immediate'}}} +.... \ No newline at end of file diff --git a/src/images/wavedrom/u-immediate.edn b/src/images/wavedrom/u-immediate.edn new file mode 100644 index 00000000..3b8ab619 --- /dev/null +++ b/src/images/wavedrom/u-immediate.edn @@ -0,0 +1,11 @@ +//#### U-immediate + +[wavedrom, ,svg] +.... +{reg: [ + {bits: 12, name: '0'}, + {bits: 8, name: 'inst[19:12]'}, + {bits: 11, name: 'inst[30:20]'}, + {bits: 1, name: '[31]'}, +], config:{fontsize: 12, label:{right: 'U-immediate'}}} +.... \ No newline at end of file diff --git a/src/rv32.adoc b/src/rv32.adoc index 7de4ef03..86f636ec 100644 --- a/src/rv32.adoc +++ b/src/rv32.adoc @@ -222,9 +222,19 @@ formats and with each other. <> shows the immediates produced by each of the base instruction formats, and is labeled to show which instruction bit (inst[_y_]) produces each bit of the immediate value. + [[immtypes, Immediate types]] -.Types of immediate produced by RISC-V instructions. -include::images/wavedrom/immediate.edn[] +include::images/wavedrom/i-immediate.edn[] + +include::images/wavedrom/s-immediate.edn[] + +include::images/wavedrom/b-immediate.edn[] + +include::images/wavedrom/u-immediate.edn[] + +.Types of immediate produced by RISC-V instructions. +include::images/wavedrom/j-immediate.edn[] + The fields are labeled with the instruction bits used to construct their value. Sign extensions always uses inst[31].