[reg_tool] Remove unused signals for sw wo access

For fields using the async parameter, undriven 'qs' signals would be
generated, causing linter errors and 'X' origination. Check for read
access and limit code generation for 'qs' signals to when that is true.

Signed-off-by: Alexander Williams <awill@google.com>
diff --git a/util/reggen/reg_top.sv.tpl b/util/reggen/reg_top.sv.tpl
index e183500..5f0b197 100644
--- a/util/reggen/reg_top.sv.tpl
+++ b/util/reggen/reg_top.sv.tpl
@@ -358,10 +358,14 @@
 %>
       % if len(r.fields) > 1:
         % for f in r.fields:
+	  % if f.swaccess.allows_read():
   logic ${str_arr_sv(f.bits)} ${base_name}_${r_name}_${f.name.lower()}_qs_int;
+          % endif
         % endfor
       % else:
+	% if r.fields[0].swaccess.allows_read():
   logic ${str_arr_sv(r.fields[0].bits)} ${base_name}_${r_name}_qs_int;
+        % endif
       % endif
   logic [${r.get_width()-1}:0] ${base_name}_${r_name}_d;
       % if r.needs_we():
@@ -380,10 +384,14 @@
     ${base_name}_${r_name}_d = '0;
       % if len(r.fields) > 1:
         % for f in r.fields:
+	  % if f.swaccess.allows_read():
     ${base_name}_${r_name}_d[${str_bits_sv(f.bits)}] = ${base_name}_${r_name}_${f.name.lower()}_qs_int;
+	  % endif
         % endfor
       % else:
+	  % if f.swaccess.allows_read():
     ${base_name}_${r_name}_d = ${base_name}_${r_name}_qs_int;
+	  % endif
       % endif
   end