Skip to content

Commit c9f3bb7

Browse files
committed
Version 1.1 Release
Merge branch 'Docs/Rev1.1' * Docs/Rev1.1: Update PLIC to Privileged Spec 1.10 Compliance Correct width of ID register
2 parents c4e9cce + 3a48274 commit c9f3bb7

14 files changed

+59
-46
lines changed

.gitignore

Lines changed: 1 addition & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,2 @@
1-
2-
docs/test.md
3-
*.tpbuild
4-
docs/.texpadtmp
5-
*.tdo
6-
*.gz
7-
*.out
8-
*.log
9-
*.aux
10-
*.toc
11-
*.txss
12-
*.toc
13-
*.bbl
14-
*.blg
151
docs/build
2+

DATASHEET.md

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ Author: Roa Logic
1717

1818
## Product Brief
1919

20-
The Roa Logic AHB-Lite PLIC (Platform Level Interrupt Controller) IP is a fully parameterised soft IP implementing the Interrupt Controller defined in the *[RISC-V Privileged v1.9.1 specification](https://github.com/riscv/riscv-isa-manual/blob/master/release/riscv-privileged-v1.9.1.pdf)*[1].
20+
The Roa Logic AHB-Lite PLIC (Platform Level Interrupt Controller) IP is a fully parameterised soft IP implementing the Interrupt Controller defined in the *[RISC-V Privileged v1.10 specification](https://github.com/riscv/riscv-isa-manual/blob/master/release/riscv-privileged-v1.10.pdf)*[1].
2121

2222
The IP features an AHB-Lite Slave interface, fully compliant with the *[AMBA 3 AHB-Lite v1.0](https://www.arm.com/products/system-ip/amba-specifications)* specifications.
2323

@@ -45,7 +45,7 @@ The AHB-Lite PLIC IP core is a fully parameterised Platform-Level Interrupt Cont
4545

4646
The purpose of the PLIC core is to connect multiple interrupt sources to one or more interrupt targets. The core supports a programmable number of simultaneous pending interrupt requests per source and individual routing of those interrupt requests to each target.
4747

48-
Per the [RISC-V Privileged Architecture Instruction Set specification (v1.9.1)](https://github.com/riscv/riscv-isa-manual/blob/master/release/riscv-privileged-v1.9.1.pdf), the core performs full interrupt prioritisation of each interrupt source; each may be assigned a separate priority and enabled per target via a matrix of interrupt enable bits. Further, an optional priority threshold per target may be defined to mask lower priority interrupts.
48+
Per the [RISC-V Privileged Architecture Instruction Set specification (v1.10)](https://github.com/riscv/riscv-isa-manual/blob/master/release/riscv-privileged-v1.10.pdf), the core performs full interrupt prioritisation of each interrupt source; each may be assigned a separate priority and enabled per target via a matrix of interrupt enable bits. Further, an optional priority threshold per target may be defined to mask lower priority interrupts.
4949

5050
To reduce latency, the PLIC core presents all asserted interrupts to the target in priority order, queuing them so that a software interrupt handler can service all pending interrupts without the need to restore the interrupted context.
5151

@@ -55,7 +55,7 @@ For illustration, a simplified example system using the PLIC core is shown below
5555

5656
### PLIC Operation
5757

58-
As stated in the [RISC-V Privileged Architecture Instruction Set specification (v1.9.1)](https://github.com/riscv/riscv-isa-manual/blob/master/release/riscv-privileged-v1.9.1.pdf):
58+
As stated in the [RISC-V Privileged Architecture Instruction Set specification (v1.10)](https://github.com/riscv/riscv-isa-manual/blob/master/release/riscv-privileged-v1.10.pdf):
5959

6060
> PLIC connects global *interrupt sources*, which are usually I/O devices, to *interrupt targets*, which are usually *hart contexts*. The PLIC contains multiple *interrupt gateways*, one per interrupt source, together with a *PLIC core* that performs interrupt prioritization and routing. Global interrupts are sent from their source to an *interrupt gateway* that processes the interrupt signal from each source and sends a single *interrupt request* to the PLIC core, which latches these in the core interrupt pending bits (IP). Each interrupt source is assigned a separate priority. The PLIC core contains a matrix of interrupt enable (IE) bits to select the interrupts that are enabled for each target. The PLIC core forwards an *interrupt notification* to one or more targets if the targets have any pending interrupts enabled, and the priority of the pending interrupts exceeds a per-target threshold. When the target takes the external interrupt, it sends an *interrupt claim* request to retrieve the identifier of the highest-priority global interrupt source pending for that target from the PLIC core, which then clears the corresponding interrupt source pending bit. After the target has serviced the interrupt, it sends the associated interrupt gateway an *interrupt completion* message and the interrupt gateway can now forward another interrupt request for the same source to the PLIC.
6161

@@ -318,7 +318,7 @@ The operation and run-time configuration of the PLIC is managed via a memory map
318318
| `CONFIG` | 1 | 64 | RO | Configuration |
319319
| `EL` | 1 | `SOURCES` | RW | Edge/Level Trigger |
320320
| `IE` | `TARGETS` | `SOURCES` | RW | Interrupt Enable |
321-
| `ID` | `TARGETS` | clog<sub>2</sub>(`SOURCES`) | RW | ID of Highest priority IRQ, Int. Claim (R), Int. Complete (W) |
321+
| `ID` | `TARGETS` | clog<sub>2</sub>(`SOURCES+1`) | RW | ID of Highest priority IRQ, Int. Claim (R), Int. Complete (W) |
322322
| `PRIORITY` | `SOURCES` | clog<sub>2</sub>(`PRIORITIES`) | RW | Priority Level |
323323
| `THRESHOLD` | `TARGETS` | clog<sub>2</sub>(`PRIORITIES`) | RW | Priority Threshold |
324324

@@ -387,6 +387,8 @@ When a target reads this register, this also indicates the target has claimed th
387387

388388
A target then writes to this register to indicate completion of servicing the interrupt source. It is the action of writing to this register which generates the interrupt completion notification – the value written will be ignored. Instead the register continues to identify the highest priority interrupt source to be serviced.
389389

390+
Given an ID of zero means that no interrupt is pending, the width of this register must be sufficient to support `SOURCES` number of interrupt sources. This means the width of ID register = clog<sub>2</sub>(`SOURCES+1`)
391+
390392
##### PRIORITY\[\]
391393

392394
The `PRIORITY[]` Read/Write registers define the priority level of each interrupt source. Interrupt priority increases with larger values of `PRIORITY`.
@@ -673,15 +675,15 @@ The PLIC is designed to be compliant with the following specifications, as licen
673675

674676
> “The [RISC-V Instruction Set Manual, Volume I: User-Level ISA, Document Version 2.2](https://github.com/riscv/riscv-isa-manual/blob/master/release/riscv-spec-v2.2.pdf)", Editors Andrew Waterman and Krste Asanović,RISC-V Foundation, May 2017.
675677
676-
> “The [RISC-VInstruction Set Manual, Volume II: Privileged Architecture, Version 1.9.1](https://github.com/riscv/riscv-isa-manual/blob/master/release/riscv-privileged-v1.9.1.pdf)",Editors Andrew Waterman and Krste Asanović, RISC-V Foundation, November 2016
678+
> “The [RISC-VInstruction Set Manual, Volume II: Privileged Architecture, Version 1.10](https://github.com/riscv/riscv-isa-manual/blob/master/release/riscv-privileged-v1.10.pdf)", Editors Andrew Waterman and Krste Asanović, RISC-V Foundation, May 2017.
677679
678680
## Revision History
679681

680-
| **Date** | **Rev.** | **Comments** |
681-
|:-----------:|:--------:|:----------------|
682-
| 13-Oct-2017 | 1.0 | Initial Release |
683-
| | | |
684-
| | | |
685-
| | | |
682+
| **Date** | **Rev.** | **Comments** |
683+
|:-----------:|:--------:|:----------------------------------------|
684+
| 13-Oct-2017 | 1.0 | Initial Release |
685+
| 01-Dec-2017 | 1.1 | RISC-V Privileged Spec v1.10 compliance |
686+
| | | |
687+
| | | |
686688

687689
[1] Full specification details are provided in the References section

docs/AHB-Lite_PLIC_Datasheet.pdf

8.91 KB
Binary file not shown.

docs/AHB-Lite_PLIC_Datasheet.tex

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
\documentclass[twoside,11pt,openany]{book}
1+
\documentclass[a4paper,oneside,11pt,openany]{book}
22

33
% Document Setup
44
\input{tex/preamble.tex}
5.61 KB
Binary file not shown.

docs/assets/img/RoaLogicHeader.eps

55.2 KB
Binary file not shown.

docs/pkg/roalogictitle.sty

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,29 +20,47 @@
2020
\newcommand*{\header}[1]{\gdef\@header{#1}%
2121
}
2222

23+
\newcommand*{\version}[1]{\gdef\@version{#1}%
24+
}
25+
26+
\newcommand*{\heading}[1]{\gdef\@heading{#1}%
27+
}
28+
29+
\appendiargdef{\version}{%
30+
\begingroup
31+
\renewcommand{\thanks}[1]{}
32+
\protected@xdef\theversion{#1}
33+
\endgroup}
34+
35+
\appendiargdef{\heading}{%
36+
\begingroup
37+
\renewcommand{\thanks}[1]{}
38+
\protected@xdef\theheading{#1}
39+
\endgroup}
40+
2341
% Overload \maketitle with new layout
2442
\renewcommand*{\maketitle}{%
2543
\hypersetup{pageanchor=false}
2644
\begin{titlepage}
2745
\par
2846
\vspace{3cm}
2947
{\raggedleft%
30-
\includegraphics[width=12cm]{assets/img/Tagged_Logo}\par
48+
\includegraphics[width=12cm]{assets/img/Tagged_Logo.eps}\par
3149
}\vspace{1cm}
3250
\centering
3351
{\huge\bfseries\@title\unskip\strut\par}
3452
\vspace{1cm}
35-
{\LARGE\itshape\@doctype\unskip\strut\par}
53+
{\LARGE\itshape\@doctype\space(v\@version)\unskip\strut\par}
3654
\vspace{1cm}
3755
{\scshape\Large\@project\unskip\strut\par}
3856
\vspace{1cm}
3957
{\large \@date\par}
4058
\vspace{7cm}
41-
{\scshape\large (c) Roa Logic B.V. \par}
59+
{\scshape\large \copyright\space Roa Logic B.V. \par}
4260

4361
\vfill
4462

4563
\end{titlepage}
4664
\hypersetup{pageanchor=true}
4765
}
48-
\endinput
66+
\endinput

docs/tex/history.tex

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,9 @@ \chapter{Revision History}
99
\midrule
1010
\endhead
1111
13-Oct-2017 & 1.0 & Initial Release\\
12-
& & \\
13-
& & \\
14-
& & \\
12+
01-Dec-2017 & 1.1 & RISC-V Privileged Spec v1.10 compliance\\
13+
& & \\
14+
& & \\
1515
\bottomrule
1616
\caption{Revision History}
1717
\label{tab:REVS}

docs/tex/interfaces.tex

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -237,7 +237,7 @@ \section{Register Interface}
237237
\texttt{CONFIG} & 1 & 64 & RO & Configuration\\
238238
\texttt{EL} & 1 & \texttt{SOURCES} & RW & Edge/Level Trigger\\
239239
\texttt{IE} & \texttt{TARGETS} & \texttt{SOURCES} & RW & Interrupt Enable\\
240-
\texttt{ID} & \texttt{TARGETS} & clog\textsubscript{2}(\texttt{SOURCES}) & RW & ID of Highest priority IRQ, \newline Int. Claim (R), \newline Int. Complete (W)\\
240+
\texttt{ID} & \texttt{TARGETS} & clog\textsubscript{2}(\texttt{SOURCES+1}) & RW & ID of Highest priority IRQ, \newline Int. Claim (R), \newline Int. Complete (W)\\
241241
\texttt{PRIORITY} & \texttt{SOURCES} & clog\textsubscript{2}(\texttt{PRIORITIES}) & RW & Priority Level\\
242242
\texttt{THRESHOLD} & \texttt{TARGETS} & clog\textsubscript{2}(\texttt{PRIORITIES}) & RW & Priority Threshold \\
243243
\bottomrule
@@ -367,6 +367,10 @@ \subsubsection{ID[]}
367367
It is the action of writing to this register which generates the interrupt completion notification -- the
368368
value written will be ignored. Instead the register continues to identify the highest priority interrupt source to be serviced.
369369

370+
Given an ID of zero means that no interrupt is pending, the width of this register must be sufficient to support \texttt{SOURCES} number of interrupt sources. This means the width of ID register = clog\textsubscript{2}(\texttt{SOURCES+1})
371+
372+
373+
370374
\subsubsection{PRIORITY[]}
371375

372376
The \texttt{PRIORITY[]} Read/Write registers define the priority level of each interrupt source. Interrupt priority increases with larger values of \texttt{PRIORITY}.

docs/tex/introduction.tex

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
\chapter{Product Brief}
22

3-
The Roa Logic AHB-Lite PLIC (Platform Level Interrupt Controller) IP is a fully parameterised soft IP implementing the Interrupt Controller defined in the \emph{\href{https://github.com/riscv/riscv-isa-manual/blob/master/release/riscv-privileged-v1.9.1.pdf}{RISC-V Privileged v1.9.1 specification}}\footnote{Full specification details are provided in the References section}.
3+
The Roa Logic AHB-Lite PLIC (Platform Level Interrupt Controller) IP is a fully parameterised soft IP implementing the Interrupt Controller defined in the \emph{\href{https://github.com/riscv/riscv-isa-manual/blob/master/release/riscv-privileged-v1.10.pdf}{RISC-V Privileged v1.10 specification}}\footnote{Full specification details are provided in the References section}.
44

55
The IP features an AHB-Lite Slave interface, fully compliant with the \emph{\href{https://www.arm.com/products/system-ip/amba-specifications}{AMBA 3 AHB-Lite v1.0}} specifications.
66

0 commit comments

Comments
 (0)