@@ -18,6 +18,9 @@ def regs(self, csr_width: str, csr_has_rvfi: bool) -> NamedSet[BehavioralReg]: p
18
18
def global_assumptions (self ) -> list [str ]:
19
19
return []
20
20
21
+ def global_code (self , csr_has_rvfi : bool ) -> Optional [str ]:
22
+ return None
23
+
21
24
@property
22
25
def check_assumptions (self ) -> list [str ]:
23
26
return []
@@ -66,7 +69,7 @@ def check_assumptions(self) -> list[str]:
66
69
67
70
@property
68
71
def check_condition (self ) -> str :
69
- return "csr_written && csr_read_valid && csr_insn_under_test"
72
+ return "csr_read_valid && csr_insn_under_test"
70
73
71
74
def check (self , csr_has_rvfi : bool ) -> str :
72
75
if csr_has_rvfi :
@@ -84,7 +87,6 @@ def check(self, csr_has_rvfi: bool) -> str:
84
87
else :
85
88
return dedent ("""
86
89
assume(csr_mode_shadow <= 2'b 01);
87
- assume(rvfi.rd_addr != 0);
88
90
case (csr_mode_shadow)
89
91
2'b 00 /* None */,
90
92
2'b 01 /* RW */: begin
@@ -101,13 +103,17 @@ def assign_condition(self) -> str:
101
103
102
104
class UpcntValue (Behavior ):
103
105
def regs (self , csr_width : str , csr_has_rvfi : bool ) -> NamedSet [BehavioralReg ]:
104
- regs = NamedSet ([
105
- BehavioralReg ("csr_read_shadowed" , "1" , "1" ),
106
- ])
107
106
if csr_has_rvfi :
108
- regs .add (BehavioralReg ("rdata_shadow" , csr_width , "csr_insn_rdata" ))
107
+ regs = NamedSet ([
108
+ BehavioralReg ("csr_read_lo" , "1" , "1" ),
109
+ BehavioralReg ("rdata_shadow" , csr_width , "csr_insn_rdata" ),
110
+ ])
109
111
else :
110
- regs .add (BehavioralReg ("rdata_shadow" , csr_width , "rvfi.rd_wdata" ))
112
+ regs = NamedSet ([
113
+ BehavioralReg ("csr_read_hi" , "1" , "csr_hi" ),
114
+ BehavioralReg ("csr_read_lo" , "1" , "csr_lo" ),
115
+ BehavioralReg ("rdata_shadow" , csr_width , "rvfi.rd_wdata" ),
116
+ ])
111
117
return regs
112
118
113
119
@property
@@ -116,7 +122,7 @@ def global_assumptions(self) -> list[str]:
116
122
117
123
@property
118
124
def check_assumptions (self ) -> list [str ]:
119
- return ["csr_read_shadowed " ]
125
+ return ["csr_read_lo " ]
120
126
121
127
@property
122
128
def check_condition (self ) -> str :
@@ -128,7 +134,9 @@ def check(self, csr_has_rvfi: bool) -> str:
128
134
assert(csr_insn_rdata > rdata_shadow);""" )
129
135
else :
130
136
return dedent ("""
131
- assume(0);""" )
137
+ // currently only tests low half when not using rvfi signal
138
+ assume(csr_lo);
139
+ assert(rvfi.rd_wdata > rdata_shadow[31:0]);""" )
132
140
133
141
@property
134
142
def assign_assumptions (self ) -> list [str ]:
0 commit comments