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

SV files generation: Minor fixes for regmap generation #19

Merged
merged 3 commits into from
Oct 23, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
7 changes: 6 additions & 1 deletion adi_doctools/parser/hdl.py
Original file line number Diff line number Diff line change
Expand Up @@ -223,7 +223,11 @@ def get_where(desc: str, reg: str, fi=None) -> Tuple[any]:
field_default_long = fd_

except Exception:
split_field = field_default.split(" = ", 1)
split_field = field_default.split(" = ", 2)
if "''" in field_default:
warnings.warn("Default value "
f"'{field_default}' "
f"contains ''!")
field_default = split_field[0].replace("''", "")
field_default_long = field_default

Expand Down Expand Up @@ -272,6 +276,7 @@ def get_where(desc: str, reg: str, fi=None) -> Tuple[any]:
if 'V' not in access_type:
access_type.append('V')
field_rw_ = field_rw.replace('-V', '')
field_rw = field_rw.replace('-V', 'V')
if field_rw_ not in access_type:
if field_rw_ not in string_hdl.access_type:
warnings.warn(f"Malformed access type {field_rw} "
Expand Down
6 changes: 3 additions & 3 deletions adi_doctools/writer/hdl.py
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ def svpkg_regmap(f, regmap: Dict, key: str):
# Skip unresolved
if reg['import']:
continue
row = f" class {reg['name']}"
row = f" class {reg['name']}_CLASS"
reg_param_dec = []
for reg_param in reg['parameters']:
reg_param_dec.append("int " + reg_param)
Expand Down Expand Up @@ -141,15 +141,15 @@ def svpkg_reg_decl(f, regmap: Dict):
for n in range(*reg['where']):
reg_ = reg.copy()
reg_['name'] = reg_['name'].replace('n', str(n))
row = f" {reg['name']}"
row = f" {reg['name']}_CLASS"
if len(reg['parameters']):
row += " #("
row += ", ".join(reg['parameters'])
row += ")"
row += f" {reg_['name']}_R;\n"
f.write(row)
else:
row = f" {reg['name']}"
row = f" {reg['name']}_CLASS"
if len(reg['parameters']):
row += " #("
row += ", ".join(reg['parameters'])
Expand Down
4 changes: 2 additions & 2 deletions tests/asset/hdl/docs/regmap/adi_regmap_parent.txt
Original file line number Diff line number Diff line change
Expand Up @@ -54,14 +54,14 @@ Reserved.
ENDFIELD

FIELD
[A-1:B] VAL2+VAL1-VAL3
[A-1:B] SECOND = VAL2+VAL1-VAL3
SECOND
RO
Reserved.
ENDFIELD

FIELD
[B-1:3] ($clog2(VAL3**9)-VAL4)*7**2
[B-1:3] THIRD = ($clog2(VAL3**9)-VAL4)*7**2
THIRD
RO
Reserved.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ package adi_regmap_child_ops_pkg;
class adi_regmap_child_ops;

/* Child ops (child ops) */
class MOCK_0 extends register_base;
class MOCK_0_CLASS extends register_base;
field_base FOURTH_F;

function new(
Expand All @@ -53,7 +53,7 @@ package adi_regmap_child_ops_pkg;
endfunction: new
endclass

class MOCK_3 extends register_base;
class MOCK_3_CLASS extends register_base;
field_base FIRST_F;

function new(
Expand All @@ -65,8 +65,8 @@ package adi_regmap_child_ops_pkg;
endfunction: new
endclass

MOCK_0 MOCK_0_R;
MOCK_3 MOCK_3_R;
MOCK_0_CLASS MOCK_0_R;
MOCK_3_CLASS MOCK_3_R;

function new();
this.MOCK_0_R = new("MOCK_0", 'h40);
Expand Down
38 changes: 19 additions & 19 deletions tests/asset/hdl/testbenches/common/sv/adi_regmap_child_pkg.sv
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ package adi_regmap_child_pkg;
class adi_regmap_child;

/* Child (child) */
class MOCK_0 extends register_base;
class MOCK_0_CLASS extends register_base;
field_base SECOND_F;

function new(
Expand All @@ -53,7 +53,7 @@ package adi_regmap_child_pkg;
endfunction: new
endclass

class MOCK_CHANn extends register_base;
class MOCK_CHANn_CLASS extends register_base;
field_base CONFIGURE_F;

function new(
Expand All @@ -65,23 +65,23 @@ package adi_regmap_child_pkg;
endfunction: new
endclass

MOCK_0 MOCK_0_R;
MOCK_CHANn MOCK_CHAN0_R;
MOCK_CHANn MOCK_CHAN1_R;
MOCK_CHANn MOCK_CHAN2_R;
MOCK_CHANn MOCK_CHAN3_R;
MOCK_CHANn MOCK_CHAN4_R;
MOCK_CHANn MOCK_CHAN5_R;
MOCK_CHANn MOCK_CHAN6_R;
MOCK_CHANn MOCK_CHAN7_R;
MOCK_CHANn MOCK_CHAN8_R;
MOCK_CHANn MOCK_CHAN9_R;
MOCK_CHANn MOCK_CHAN10_R;
MOCK_CHANn MOCK_CHAN11_R;
MOCK_CHANn MOCK_CHAN12_R;
MOCK_CHANn MOCK_CHAN13_R;
MOCK_CHANn MOCK_CHAN14_R;
MOCK_CHANn MOCK_CHAN15_R;
MOCK_0_CLASS MOCK_0_R;
MOCK_CHANn_CLASS MOCK_CHAN0_R;
MOCK_CHANn_CLASS MOCK_CHAN1_R;
MOCK_CHANn_CLASS MOCK_CHAN2_R;
MOCK_CHANn_CLASS MOCK_CHAN3_R;
MOCK_CHANn_CLASS MOCK_CHAN4_R;
MOCK_CHANn_CLASS MOCK_CHAN5_R;
MOCK_CHANn_CLASS MOCK_CHAN6_R;
MOCK_CHANn_CLASS MOCK_CHAN7_R;
MOCK_CHANn_CLASS MOCK_CHAN8_R;
MOCK_CHANn_CLASS MOCK_CHAN9_R;
MOCK_CHANn_CLASS MOCK_CHAN10_R;
MOCK_CHANn_CLASS MOCK_CHAN11_R;
MOCK_CHANn_CLASS MOCK_CHAN12_R;
MOCK_CHANn_CLASS MOCK_CHAN13_R;
MOCK_CHANn_CLASS MOCK_CHAN14_R;
MOCK_CHANn_CLASS MOCK_CHAN15_R;

function new();
this.MOCK_0_R = new("MOCK_0", 'h40);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ package adi_regmap_parent_ops_pkg;
class adi_regmap_parent_ops;

/* Parent OPS (parent ops) */
class MOCK_0 extends register_base;
class MOCK_0_CLASS extends register_base;
field_base FOURTH_F;

function new(
Expand All @@ -53,7 +53,7 @@ package adi_regmap_parent_ops_pkg;
endfunction: new
endclass

class MOCK_1 extends register_base;
class MOCK_1_CLASS extends register_base;
field_base CONFIGURE0_F;
field_base CONFIGURE1_F;
field_base CONFIGURE2_F;
Expand All @@ -79,8 +79,8 @@ package adi_regmap_parent_ops_pkg;
endfunction: new
endclass

MOCK_0 MOCK_0_R;
MOCK_1 MOCK_1_R;
MOCK_0_CLASS MOCK_0_R;
MOCK_1_CLASS MOCK_1_R;

function new();
this.MOCK_0_R = new("MOCK_0", 'h40);
Expand Down
42 changes: 21 additions & 21 deletions tests/asset/hdl/testbenches/common/sv/adi_regmap_parent_pkg.sv
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ package adi_regmap_parent_pkg;
class adi_regmap_parent #(int A, int B, int VAL1, int VAL2, int VAL3, int VAL4);

/* Parent (parent) */
class MOCK_0 extends register_base;
class MOCK_0_CLASS extends register_base;
field_base THIRD_F;
field_base SECOND_F;
field_base FIRST_F;
Expand All @@ -57,7 +57,7 @@ package adi_regmap_parent_pkg;
endfunction: new
endclass

class MOCK_CHANn #(int A, int B, int VAL1, int VAL2, int VAL3, int VAL4) extends register_base;
class MOCK_CHANn_CLASS #(int A, int B, int VAL1, int VAL2, int VAL3, int VAL4) extends register_base;
field_base FIRST_F;
field_base SECOND_F;
field_base THIRD_F;
Expand All @@ -75,7 +75,7 @@ package adi_regmap_parent_pkg;
endfunction: new
endclass

class EXPAND_FIELDS extends register_base;
class EXPAND_FIELDS_CLASS extends register_base;
field_base CONFIGURE0_F;
field_base CONFIGURE1_F;
field_base CONFIGURE2_F;
Expand All @@ -101,24 +101,24 @@ package adi_regmap_parent_pkg;
endfunction: new
endclass

MOCK_0 MOCK_0_R;
MOCK_CHANn #(A, B, VAL1, VAL2, VAL3, VAL4) MOCK_CHAN0_R;
MOCK_CHANn #(A, B, VAL1, VAL2, VAL3, VAL4) MOCK_CHAN1_R;
MOCK_CHANn #(A, B, VAL1, VAL2, VAL3, VAL4) MOCK_CHAN2_R;
MOCK_CHANn #(A, B, VAL1, VAL2, VAL3, VAL4) MOCK_CHAN3_R;
MOCK_CHANn #(A, B, VAL1, VAL2, VAL3, VAL4) MOCK_CHAN4_R;
MOCK_CHANn #(A, B, VAL1, VAL2, VAL3, VAL4) MOCK_CHAN5_R;
MOCK_CHANn #(A, B, VAL1, VAL2, VAL3, VAL4) MOCK_CHAN6_R;
MOCK_CHANn #(A, B, VAL1, VAL2, VAL3, VAL4) MOCK_CHAN7_R;
MOCK_CHANn #(A, B, VAL1, VAL2, VAL3, VAL4) MOCK_CHAN8_R;
MOCK_CHANn #(A, B, VAL1, VAL2, VAL3, VAL4) MOCK_CHAN9_R;
MOCK_CHANn #(A, B, VAL1, VAL2, VAL3, VAL4) MOCK_CHAN10_R;
MOCK_CHANn #(A, B, VAL1, VAL2, VAL3, VAL4) MOCK_CHAN11_R;
MOCK_CHANn #(A, B, VAL1, VAL2, VAL3, VAL4) MOCK_CHAN12_R;
MOCK_CHANn #(A, B, VAL1, VAL2, VAL3, VAL4) MOCK_CHAN13_R;
MOCK_CHANn #(A, B, VAL1, VAL2, VAL3, VAL4) MOCK_CHAN14_R;
MOCK_CHANn #(A, B, VAL1, VAL2, VAL3, VAL4) MOCK_CHAN15_R;
EXPAND_FIELDS EXPAND_FIELDS_R;
MOCK_0_CLASS MOCK_0_R;
MOCK_CHANn_CLASS #(A, B, VAL1, VAL2, VAL3, VAL4) MOCK_CHAN0_R;
MOCK_CHANn_CLASS #(A, B, VAL1, VAL2, VAL3, VAL4) MOCK_CHAN1_R;
MOCK_CHANn_CLASS #(A, B, VAL1, VAL2, VAL3, VAL4) MOCK_CHAN2_R;
MOCK_CHANn_CLASS #(A, B, VAL1, VAL2, VAL3, VAL4) MOCK_CHAN3_R;
MOCK_CHANn_CLASS #(A, B, VAL1, VAL2, VAL3, VAL4) MOCK_CHAN4_R;
MOCK_CHANn_CLASS #(A, B, VAL1, VAL2, VAL3, VAL4) MOCK_CHAN5_R;
MOCK_CHANn_CLASS #(A, B, VAL1, VAL2, VAL3, VAL4) MOCK_CHAN6_R;
MOCK_CHANn_CLASS #(A, B, VAL1, VAL2, VAL3, VAL4) MOCK_CHAN7_R;
MOCK_CHANn_CLASS #(A, B, VAL1, VAL2, VAL3, VAL4) MOCK_CHAN8_R;
MOCK_CHANn_CLASS #(A, B, VAL1, VAL2, VAL3, VAL4) MOCK_CHAN9_R;
MOCK_CHANn_CLASS #(A, B, VAL1, VAL2, VAL3, VAL4) MOCK_CHAN10_R;
MOCK_CHANn_CLASS #(A, B, VAL1, VAL2, VAL3, VAL4) MOCK_CHAN11_R;
MOCK_CHANn_CLASS #(A, B, VAL1, VAL2, VAL3, VAL4) MOCK_CHAN12_R;
MOCK_CHANn_CLASS #(A, B, VAL1, VAL2, VAL3, VAL4) MOCK_CHAN13_R;
MOCK_CHANn_CLASS #(A, B, VAL1, VAL2, VAL3, VAL4) MOCK_CHAN14_R;
MOCK_CHANn_CLASS #(A, B, VAL1, VAL2, VAL3, VAL4) MOCK_CHAN15_R;
EXPAND_FIELDS_CLASS EXPAND_FIELDS_R;

function new();
this.MOCK_0_R = new("MOCK_0", 'h40);
Expand Down