Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Issue 276 retire mc 1 google doc #371

Open
wants to merge 37 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
0d11e0f
copied RVA22 to RVB23
dlweaver Nov 13, 2024
d72effb
Initial update to RVB23
dlweaver Nov 19, 2024
2b91315
removed "Contributors" section
dlweaver Nov 20, 2024
aca1c01
Added remainder of U-mode extensions
dlweaver Nov 21, 2024
e59d57b
Added some Supervisor extensions
dlweaver Nov 21, 2024
2bede4a
Completed 1st pass population of RVB23 Profile
dlweaver Nov 22, 2024
bfb0ccb
Preparing to merge main
james-ball-qualcomm Nov 24, 2024
73faca9
Merge remote-tracking branch 'origin' into issue-276-retire-MC-1-Goog…
james-ball-qualcomm Nov 24, 2024
88dd877
minor update
dlweaver Nov 25, 2024
a8311c0
Fixes to RVB23.yaml schema violations and updated profile to support …
james-ball-qualcomm Nov 25, 2024
aa5ef39
Back out change to certificate template that was calling an implement…
james-ball-qualcomm Nov 26, 2024
e4e504a
Zvksgm -> Zvksg, added Za64rs
dlweaver Nov 26, 2024
1525082
Added other MC variants. $inherit MC100-64 from MC100-32 doesn't prop…
james-ball-qualcomm Nov 30, 2024
26c5a33
$remove'd Za128rs
dlweaver Dec 6, 2024
4070123
RVA23.yaml first commit of new file
dlweaver Dec 17, 2024
7f3cc4a
added "$schema" and "kind:"
dlweaver Dec 18, 2024
89726fd
outdented by 2 spaces (as recc'd by Derek)
dlweaver Dec 18, 2024
c9770d9
Merge remote-tracking branch 'origin/main' into issue-276-retire-MC-1…
james-ball-qualcomm Dec 19, 2024
5304322
Changes to work with Derek's "Big, Ugly Patch"
james-ball-qualcomm Dec 20, 2024
11f8174
Merge remote-tracking branch 'origin/main' into issue-276-retire-MC-1…
james-ball-qualcomm Dec 20, 2024
2b14592
Pretty wasn't happy (was supposed to be fixed automatically but clear…
james-ball-qualcomm Dec 20, 2024
0d1d406
Added missing Zcmt and Zcmp since required by Zce in MC200/MC300.
james-ball-qualcomm Dec 20, 2024
9e347b3
Improve organization of CRDs.
james-ball-qualcomm Dec 21, 2024
4dce424
Have git ignore *.log files
james-ball-qualcomm Dec 21, 2024
8ed86f8
Typos
james-ball-qualcomm Dec 21, 2024
c1cc3c5
Merge remote-tracking branch 'origin/213-add-rva23-profile' into issu…
james-ball-qualcomm Dec 21, 2024
15fd96a
Merged in Dave's RVA23/RVB23. Adding lots of extensions. Still in pro…
james-ball-qualcomm Dec 21, 2024
f7f085c
Adding remaining extensions required by RVA23 and RVB23. Can now gene…
james-ball-qualcomm Dec 23, 2024
ddbcae2
Fix formatting bug not handling missing ratification date.
james-ball-qualcomm Dec 23, 2024
0568bfd
Added MC200-32 debug launch configuration and made tasks.rake for cer…
james-ball-qualcomm Dec 23, 2024
0632dbb
In process of adding processor_kind to portfolios. Needed so I can in…
james-ball-qualcomm Dec 24, 2024
786dc9f
Finished adding support for profile processor kinds and now RVB23 is …
james-ball-qualcomm Dec 25, 2024
998bce3
Removed non UTF-8 characters (nice apostrophes) in Smdbltrp, Zce, and…
james-ball-qualcomm Dec 26, 2024
a962e90
Raise error if portfilio created with cfg_arch with wrong base size (…
james-ball-qualcomm Dec 26, 2024
f6dc761
Change raise to puts
james-ball-qualcomm Dec 27, 2024
ec8e3d4
Adding comments, debug messages, fixing spelling
james-ball-qualcomm Dec 27, 2024
dac5370
Only use ConfiguredArchitecture when neccessary in Portfolios and dep…
james-ball-qualcomm Dec 27, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 16 additions & 8 deletions .github/workflows/pages.yml
Original file line number Diff line number Diff line change
Expand Up @@ -71,14 +71,22 @@ jobs:
run: ./do gen:profile[RVI20]
- name: Copy RVI20 Profile Release PDF
run: cp gen/profile_doc/pdf/RVA20.pdf _site/pdfs/RVI20.pdf
- name: Create MC100 PDF Spec
run: ./do gen:cert_model_pdf[MC100]
- name: Copy MC100 PDF
run: cp gen/certificate_doc/pdf/MC100.pdf _site/pdfs/MC100.pdf
- name: Create MC100 HTML Spec
run: ./do gen:cert_model_html[MC100]
- name: Copy MC100 HTML
run: cp gen/certificate_doc/html/MC100.html _site/htmls/MC100.html
- name: Create MC100-32 PDF Spec
run: ./do gen:cert_model_pdf[MC100-32]
- name: Copy MC100-32 PDF
run: cp gen/certificate_doc/pdf/MC100-32.pdf _site/pdfs/MC100-32.pdf
- name: Create MC100-32 HTML Spec
run: ./do gen:cert_model_html[MC100-32]
- name: Copy MC100-32 HTML
run: cp gen/certificate_doc/html/MC100-32.html _site/htmls/MC100-32.html
- name: Create MC100-64 PDF Spec
run: ./do gen:cert_model_pdf[MC100-64]
- name: Copy MC100-64 PDF
run: cp gen/certificate_doc/pdf/MC100-64.pdf _site/pdfs/MC100-64.pdf
- name: Create MC100-64 HTML Spec
run: ./do gen:cert_model_html[MC100-64]
- name: Copy MC100-64 HTML
run: cp gen/certificate_doc/html/MC100-64.html _site/htmls/MC100-64.html
- name: Copy manual html
run: cp -R gen/manual/isa/top/all/html _site/manual
- name: Setup Pages
Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -14,3 +14,4 @@ gen
node_modules
_site
images
*.log
20 changes: 19 additions & 1 deletion .vscode/launch.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,25 @@
"configurations": [
{
"type": "rdbg",
"name": "RVA20 Profile",
"name": "MC100-32",
"request": "launch",
"command": "bundle exec rake",
"script": "gen:cert_model_pdf[MC100-32]",
"args": [],
"askParameters": false
},
{
"type": "rdbg",
"name": "MC200-32",
"request": "launch",
"command": "bundle exec rake",
"script": "gen:cert_model_pdf[MC200-32]",
"args": [],
"askParameters": false
},
{
"type": "rdbg",
"name": "RVA20",
"request": "launch",
"command": "bundle exec rake",
"script": "gen:profile[RVA20]",
Expand Down
3 changes: 2 additions & 1 deletion README.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,8 @@ The following artifacts have been generated from the top of the `main` branch:
* https://riscv-software-src.github.io/riscv-unified-db/pdfs/RVI20.pdf[RVI20 Profile Release]
* https://riscv-software-src.github.io/riscv-unified-db/pdfs/RVA20.pdf[RVA20 Profile Release]
* https://riscv-software-src.github.io/riscv-unified-db/pdfs/RVA22.pdf[RVA22 Profile Release]
* https://riscv-software-src.github.io/riscv-unified-db/pdfs/MC100.pdf[MC100 Certification Requirements Document]
* https://riscv-software-src.github.io/riscv-unified-db/pdfs/MC100-32.pdf[MC100-32 Certification Requirements Document]
* https://riscv-software-src.github.io/riscv-unified-db/pdfs/MC100-64.pdf[MC100-64 Certification Requirements Document]

== Overview

Expand Down
93 changes: 44 additions & 49 deletions Rakefile
Original file line number Diff line number Diff line change
Expand Up @@ -327,68 +327,63 @@ namespace :test do
DESC
task :nightly do
Rake::Task["regress"].invoke

Rake::Task["#{$root}/gen/certificate_doc/pdf/MC100.pdf"].invoke
Rake::Task["#{$root}/gen/profile_doc/pdf/RVA20.pdf"].invoke
Rake::Task["#{$root}/gen/profile_doc/pdf/RVA22.pdf"].invoke
Rake::Task["#{$root}/gen/profile_doc/pdf/RVI20.pdf"].invoke

Rake::Task["portfolios"].invoke
puts
puts "Nightly regression test PASSED"
end
end

desc <<~DESC
Generate all portfolio-based PDFs (certificates and profiles).
Generate all portfolio-based PDF artifacts (certificates and profiles)
DESC
task :portfolio_pdfs do
puts ""
puts "==================================="
puts "Generating MC100"
puts "==================================="
puts ""
Rake::Task["#{$root}/gen/certificate_doc/pdf/MC100.pdf"].invoke

puts ""
puts "=================================================="
puts "Generating MockCertificateModel"
puts "=================================================="
puts ""
task :portfolios do
portfolio_start_msg("MockCertificateModel")
Rake::Task["#{$root}/gen/certificate_doc/pdf/MockCertificateModel.pdf"].invoke

puts ""
puts "==================================="
puts "Generating RVA20"
puts "==================================="
puts ""
portfolio_start_msg("MockProfileRelease")
Rake::Task["#{$root}/gen/profile_doc/pdf/MockProfileRelease.pdf"].invoke
portfolio_start_msg("MC100-32")
Rake::Task["#{$root}/gen/certificate_doc/pdf/MC100-32.pdf"].invoke
portfolio_start_msg("MC100-64")
Rake::Task["#{$root}/gen/certificate_doc/pdf/MC100-64.pdf"].invoke
portfolio_start_msg("MC200-32")
Rake::Task["#{$root}/gen/certificate_doc/pdf/MC200-32.pdf"].invoke
portfolio_start_msg("MC200-64")
Rake::Task["#{$root}/gen/certificate_doc/pdf/MC200-64.pdf"].invoke
portfolio_start_msg("MC300-32")
Rake::Task["#{$root}/gen/certificate_doc/pdf/MC300-32.pdf"].invoke
portfolio_start_msg("MC300-64")
Rake::Task["#{$root}/gen/certificate_doc/pdf/MC300-64.pdf"].invoke
portfolio_start_msg("RVI20")
Rake::Task["#{$root}/gen/profile_doc/pdf/RVI20.pdf"].invoke
portfolio_start_msg("RVA20")
Rake::Task["#{$root}/gen/profile_doc/pdf/RVA20.pdf"].invoke

puts ""
puts "==================================="
puts "Generating RVA22"
puts "==================================="
puts ""
portfolio_start_msg("RVA22")
Rake::Task["#{$root}/gen/profile_doc/pdf/RVA22.pdf"].invoke
portfolio_start_msg("RVA23")
Rake::Task["#{$root}/gen/profile_doc/pdf/RVA23.pdf"].invoke
portfolio_start_msg("RVB23")
Rake::Task["#{$root}/gen/profile_doc/pdf/RVB23.pdf"].invoke
end

def portfolio_start_msg(name)
puts ""
puts "==================================="
puts "Generating RVI20"
puts "==================================="
puts ""
Rake::Task["#{$root}/gen/profile_doc/pdf/RVI20.pdf"].invoke

puts ""
puts "==================================="
puts "Generating MockProfileRelease"
puts "==================================="
puts "================================================================================================="
puts "#{name}"
puts "================================================================================================="
puts ""
Rake::Task["#{$root}/gen/profile_doc/pdf/MockProfileRelease.pdf"].invoke
end

# Shortcut targets for building profiles and certificates.
task MC100: "#{$root}/gen/certificate_doc/pdf/MC100.pdf"
task MockCertificateModel: "#{$root}/gen/certificate_doc/pdf/MockCertificateModel.pdf"
task RVI20: "#{$root}/gen/profile_doc/pdf/RVI20.pdf"
task RVA20: "#{$root}/gen/profile_doc/pdf/RVA20.pdf"
task RVA22: "#{$root}/gen/profile_doc/pdf/RVA22.pdf"
task MockProfileRelease: "#{$root}/gen/profile_doc/pdf/MockProfileRelease.pdf"
task "MockCertificateModel": "#{$root}/gen/certificate_doc/pdf/MockCertificateModel.pdf"
task "MC100-32": "#{$root}/gen/certificate_doc/pdf/MC100-32.pdf"
task "MC100-64": "#{$root}/gen/certificate_doc/pdf/MC100-64.pdf"
task "MC200-32": "#{$root}/gen/certificate_doc/pdf/MC200-32.pdf"
task "MC200-64": "#{$root}/gen/certificate_doc/pdf/MC200-64.pdf"
task "MC300-32": "#{$root}/gen/certificate_doc/pdf/MC300-32.pdf"
task "MC300-64": "#{$root}/gen/certificate_doc/pdf/MC300-64.pdf"
task "MockProfileRelease": "#{$root}/gen/profile_doc/pdf/MockProfileRelease.pdf"
task "RVI20": "#{$root}/gen/profile_doc/pdf/RVI20.pdf"
task "RVA20": "#{$root}/gen/profile_doc/pdf/RVA20.pdf"
task "RVA22": "#{$root}/gen/profile_doc/pdf/RVA22.pdf"
task "RVA23": "#{$root}/gen/profile_doc/pdf/RVA23.pdf"
task "RVB23": "#{$root}/gen/profile_doc/pdf/RVB23.pdf"
33 changes: 4 additions & 29 deletions arch/certificate_class/MC.yaml
Original file line number Diff line number Diff line change
@@ -1,38 +1,13 @@
# yaml-language-server: $schema=../../schemas/cert_class_schema.json

$schema: cert_class_schema.json#
kind: certificate class
kind: Processor CRD
processor_kind: Microcontroller
name: MC
long_name: Microcontroller Certificate Class
long_name: Microcontroller Class CRD

introduction: |
This certification class specifies requirements for microcontrollers.
It targets microcontrollers running low-level software on an RTOS or bare-metal.
This CRD is not intended for the smallest possible microcontrollers but rather for applications
benefiting from a standardized microcontroller.
See the https://docs.google.com/document/d/133SZKc18tLsQcT1o6gEmBUkjwrtg2ow63me54RQ1jiY[RISC-V CRDs]
document for information relevant to all RISC-V CRDs.

naming_scheme: |
The MC (M = Microcontroller, C = Certificate) has the following naming scheme (suffixes after MC
are optional but in the below order):

MC<model>[v<version>]

Where:

* Left & right square braces denote optional.
* \<model> is a 3 digit integer. It is changed only when mandatory extensions are added to a CRD.
** The one's digit is incremented when a small mandatory extension is added (e.g., Zicond)
** The ten's digit is incremented when a medium mandatory extension is addded (e.g., PMP)
** The hundreds's digit is incremented when a large mandatory extension is addded (e.g., V or H)
* \<version> is a semantic version (see semver.org) formatted as <major>[.<minor>.[patch]]. If \<version> is omitted, the reference applies equally to all versions.
** A <major> release indicates support for a new optional extension.
** A <minor> release indicates one or more of the following changes to the certification tests associated with the CRD.
*** Fix test bug or increase test coverage
*** Add more allowed parameter values
*** Support new extension version
** A <patch> release indicates just CRD specification changes without any difference in functional behavior
The MC (Microcontroller Class) targets processors running low-level software on an RTOS or bare-metal.

mandatory_priv_modes:
- M
7 changes: 2 additions & 5 deletions arch/certificate_class/MockCertificateClass.yaml
Original file line number Diff line number Diff line change
@@ -1,16 +1,13 @@
# yaml-language-server: $schema=../../schemas/cert_class_schema.json

$schema: cert_class_schema.json#
kind: certificate class
kind: Processor CRD
processor_kind: Apps Processor
name: MockCertificateClass
long_name: Mock Certificate Class Long Name

introduction: |
Here's the Mock Certificate Class introduction.

naming_scheme: |
Here's the Mock Certificate Class naming scheme.
A Mock certificate class or model can have any name as long as it can be a hash key.

mandatory_priv_modes:
- M
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@

$schema: cert_model_schema.json#
kind: certificate model
name: MC100
long_name: Basic Microcontroller Certificate
name: MC100-32
long_name: Basic 32-bit Microcontroller Certificate
class:
$ref: certificate_class/MC.yaml#

Expand Down Expand Up @@ -67,18 +67,17 @@ revision_history:
changes:
- Initial version

description: |
MC100 can be though of as minimal 32-bit RISC-V processors with M-mode support:
introduction: |
The MC100 Processor CRD (Certification Requirements Document) defines the requirements
a processor implementation must meet in order to be eligible for the associated MC100 certificate.
MC100 is a basic RISC-V processor with minimal M-mode support and has 32-bit and 64-bit variants.

* The Unprivileged ISA is RV32I with a few extensions suitable for a basic microcontroller
* The M-mode features are those listed as mandatory in the associated RISC-V Privileged ISA manual
MC100 is not intended for the smallest possible microcontrollers but rather for applications
benefiting from a minimal but standardized microcontroller. It consists of:

Key features not included in MC100 (i.e., OUT OF SCOPE):

* Interrupt Controller (e.g., CLIC, CLINT, PLIC)
* Features for modes other than M-mode
* PMP
* Debug & trace (TBD)
* Unprivileged ISA: RV32I for MC100-32 and RV64I for MC100-64 with a few extensions suitable
for a basic microcontroller.
* Privileged ISA: Only the M-mode features listed as mandatory in the RISC-V Privileged ISA manual

# Specification versions
tsc_profile: null # None for MC100
Expand Down
20 changes: 20 additions & 0 deletions arch/certificate_model/MC100-64.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# yaml-language-server: $schema=../../schemas/cert_model_schema.json

$schema: cert_model_schema.json#
kind: certificate model
name: MC100-64
long_name: Basic 64-bit Microcontroller Certificate
class:
$ref: certificate_class/MC.yaml#

$inherits: "certificate_model/MC100-32.yaml#"

# XLEN used by rakefile
base: 64

extensions:
Sm:
parameters:
XLEN:
schema:
const: 64
50 changes: 50 additions & 0 deletions arch/certificate_model/MC200-32.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
# yaml-language-server: $schema=../../schemas/cert_model_schema.json

$schema: cert_model_schema.json#
kind: certificate model
name: MC200-32
long_name: Intermediate 32-bit Microcontroller Certificate
class:
$ref: certificate_class/MC.yaml#

# Semantic versions within the model
versions:
- version: "1.0.0"

# XLEN used by rakefile
base: 32

$inherits: "certificate_model/MC100-32.yaml#"

revision_history:
- revision: "0.1.0"
date: "2024-11-27"
changes:
- First created

introduction: |
MC200 is an intermedicate RISC-V microcontroller that adds the following mandatory extensions to the MC100-series:

* U extension (User-mode privilege level)
* Smpmp extension (M-mode PMP)
* B (Bitfield) extension
* Zce extension (additional 16-bit instructions suitable for microcontrollers)
* CLIC extension (if/when ratified)

# Specification versions
tsc_profile: null # None for MC200
unpriv_isa_manual_revision: "20191213"
priv_isa_manual_revision: "20190608-Priv-MSU-Ratified"
debug_manual_revision: "0.13.2"

# TODO: No ratified CLIC yet. It will be multiple extensions.

extensions:
B:
presence: mandatory
Zce:
presence: mandatory
U:
presence: mandatory
Smpmp:
presence: mandatory
20 changes: 20 additions & 0 deletions arch/certificate_model/MC200-64.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# yaml-language-server: $schema=../../schemas/cert_model_schema.json

$schema: cert_model_schema.json#
kind: certificate model
name: MC200-64
long_name: Intermediate 64-bit Microcontroller Certificate
class:
$ref: certificate_class/MC.yaml#

$inherits: "certificate_model/MC200-32.yaml#"

# XLEN used by rakefile
base: 64

extensions:
Sm:
parameters:
XLEN:
schema:
const: 64
Loading
Loading