Skip to content

Commit 9271409

Browse files
authored
feat(schema): convert param 'when' to full extension req cond (#751)
Needed to represent cross-extension conditions, rather than assuming a parameter would only be dependent on the version of the defining extension.
1 parent f0a328f commit 9271409

File tree

24 files changed

+332
-273
lines changed

24 files changed

+332
-273
lines changed

Rakefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -272,7 +272,7 @@ namespace :test do
272272

273273
task schema: "#{$root}/.stamps/resolve-_.stamp" do
274274
puts "Checking arch files against schema.."
275-
Architecture.new("#{$root}/gen/resolved_arch/_").validate(show_progress: true)
275+
cfg_arch_for("_").validate(show_progress: true)
276276
puts "All files validate against their schema"
277277
end
278278

arch/ext/Sm.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -404,6 +404,7 @@ params:
404404
minimum: 0
405405
maximum: 0xFFFFFFFFFFFFFFFF
406406
when:
407+
name: Sm
407408
version: ">= 1.12.0"
408409
PMA_GRANULARITY:
409410
description: |

arch/isa/globals.isa

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1242,7 +1242,7 @@ function access_check {
12421242
}
12431243
body {
12441244
# check if this is a valid physical address
1245-
if (paddr > ((1 << PHYS_ADDR_WIDTH) - access_size)) {
1245+
if (paddr > ((1 `<< PHYS_ADDR_WIDTH) - access_size)) {
12461246
raise(fault_type, from_mode, vaddr);
12471247
}
12481248

backends/cfg_html_doc/templates/ext.adoc.erb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ Implemented Version:: <%= ext_version.version_str %>
3636

3737
<%= ext.description %>
3838

39-
<%- insts = cfg_arch.transitive_implemented_instructions.select { |i| i.definedBy == ext.name || i.definedBy.include?(ext.name) } -%>
39+
<%- insts = ext.instructions -%>
4040
<%- unless insts.empty? -%>
4141
== Instructions
4242

backends/common_templates/adoc/csr.adoc.erb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ written value:
100100
----
101101
<%- csr.fields.each do |field| -%>
102102
<%- if field.has_custom_sw_write? -%>
103-
<%= field.name %> = <%= field["sw_write(csr_value)"] %>
103+
<%= field.name %> = <%= field.data["sw_write(csr_value)"] %>
104104
<%- else -%>
105105
<%= field.name %> = csr_value.<%= field.name %>
106106
<%- end -%>

backends/manual/templates/instruction.adoc.erb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ Sail::
6666
+
6767
[source,sail]
6868
----
69-
<%= inst.fix_entities(inst["sail()"]) %>
69+
<%= inst.fix_entities(inst.data["sail()"]) %>
7070
----
7171
<%- end -%>
7272
====

backends/portfolio/tasks.rake

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,7 @@ require_relative "#{$lib}/idl/passes/gen_adoc"
77

88
# @return [Architecture]
99
def pf_create_arch
10-
# Ensure that unconfigured resolved architecture called "_" exists.
11-
Rake::Task["#{$root}/.stamps/resolve-_.stamp"].invoke
12-
13-
# Create architecture object using the unconfigured resolved architecture called "_".
14-
Architecture.new($root / "gen" / "resolved_arch" / "_")
10+
cfg_arch_for("_")
1511
end
1612

1713
# @param portfolio_grp_with_arch [PortfolioGroup] Contains one or more Portfolio objects that have an arch (not a cfg_arch).

backends/portfolio/templates/csr_appendix.adoc.erb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -162,7 +162,7 @@ written value:
162162
----
163163
<% csr.possible_fields.each do |field| -%>
164164
<% if field.has_custom_sw_write? -%>
165-
<%= field.name %> = <%= field["sw_write(csr_value)"] %>
165+
<%= field.name %> = <%= field.data["sw_write(csr_value)"] %>
166166
<% else -%>
167167
<%= field.name %> = csr_value.<%= field.name %>
168168
<% end -%>

backends/portfolio/templates/inst_appendix.adoc.erb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ RV64::
114114

115115
[source,sail]
116116
----
117-
<%= inst["sail()"] %>
117+
<%= inst.data["sail()"] %>
118118
----
119119
<% end -%>
120120

lib/arch_obj_models/certificate.rb

Lines changed: 2 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -173,11 +173,7 @@ def all_in_scope_params
173173
param = ext.params.find { |p| p.name == param_name }
174174
raise "There is no param '#{param_name}' in extension '#{ext_name}" if param.nil?
175175

176-
next unless ext.versions.any? do |ext_ver|
177-
ver_req = ext_data["version"] || ">= #{ext.min_version.version_spec}"
178-
ExtensionRequirement.new(ext_name, ver_req, arch: @arch).satisfied_by?(ext_ver) &&
179-
param.defined_in_extension_version?(ext_ver)
180-
end
176+
next unless param.when.could_be_satisfied_by_ext_reqs?(in_scope_ext_reqs)
181177

182178
@all_in_scope_params << InScopeParameter.new(param, param_data["schema"], param_data["note"])
183179
end
@@ -208,9 +204,7 @@ def in_scope_params(ext_req)
208204
param = ext.params.find { |p| p.name == param_name }
209205
raise "There is no param '#{param_name}' in extension '#{ext_req.name}" if param.nil?
210206

211-
next unless ext.versions.any? do |ext_ver|
212-
ext_req.satisfied_by?(ext_ver) && param.defined_in_extension_version?(ext_ver)
213-
end
207+
next unless param.when.could_be_satisfied_by_ext_reqs?(in_scope_ext_reqs)
214208

215209
params << InScopeParameter.new(param, param_data["schema"], param_data["note"])
216210
end
@@ -229,11 +223,6 @@ def all_out_of_scope_params
229223
ext.params.each do |param|
230224
next if all_in_scope_params.any? { |c| c.param.name == param.name }
231225

232-
next unless ext.versions.any? do |ext_ver|
233-
ext_req.satisfied_by?(ext_ver) &&
234-
param.defined_in_extension_version?(ext_ver)
235-
end
236-
237226
@all_out_of_scope_params << param
238227
end
239228
end

0 commit comments

Comments
 (0)