[util/reggen] Addressed subword write.

If write size is smaller than the register width, then responses an
error. Previously it raises an error for subword write regardless of the
register width.

For instance, if the CPU writes a byte into a register having smaller
than 8 valid bit, it succeeds. But if register field width is greater
than 8, it returns error now.

Errored write access won't let the register value be written
diff --git a/util/reggen/gen_rtl.py b/util/reggen/gen_rtl.py
index c7d4bfa..9e2ce58 100644
--- a/util/reggen/gen_rtl.py
+++ b/util/reggen/gen_rtl.py
@@ -55,6 +55,7 @@
     dvrights = "RO"  # Used by UVM REG only
     regwen = ""
     fields = []
+    width = 0  # indicate register size
 
     def __init__(self):
         self.name = ""
@@ -66,6 +67,7 @@
         self.dvrights = "RO"  # Used by UVM REG only
         self.regwen = ""
         self.fields = []
+        self.width = 0
 
 
 class Window():
@@ -78,6 +80,7 @@
         self.limit_addr = 0
         self.n_bits = 0
 
+
 class Block():
     width = 32
     addr_width = 12
@@ -96,6 +99,7 @@
         self.wins = []
         self.blocks = []
 
+
 def escape_name(name):
     return name.lower().replace(' ', '_')
 
@@ -156,6 +160,7 @@
         field = parse_field(f, reg, len(obj["fields"]))
         if field != None:
             reg.fields.append(field)
+            reg.width = max(reg.width, field.msb + 1)
 
     # TODO(eunchan): Field bitfield overlapping check
     log.info("R[0x%04x]: %s ", reg.offset, reg.name)