From 2eeedb193d08286b88745a6e88cfd35707c0cf4a Mon Sep 17 00:00:00 2001 From: Srinivasan Venkataramanan Date: Tue, 18 Apr 2023 22:30:04 +0100 Subject: [PATCH] Added support for labels in immediate assert/assume --- ivtest/gold/sv_immediate_assert.gold | 3 +++ ivtest/gold/sv_immediate_assume.gold | 3 +++ ivtest/ivltests/sv_immediate_assert.v | 9 +++++++++ ivtest/ivltests/sv_immediate_assume.v | 9 +++++++++ parse.y | 12 ++++++------ 5 files changed, 30 insertions(+), 6 deletions(-) diff --git a/ivtest/gold/sv_immediate_assert.gold b/ivtest/gold/sv_immediate_assert.gold index 3eed78c91..e64a5c351 100644 --- a/ivtest/gold/sv_immediate_assert.gold +++ b/ivtest/gold/sv_immediate_assert.gold @@ -6,3 +6,6 @@ ERROR: ./ivltests/sv_immediate_assert.v:11: Time: 0 Scope: test Check 7 : this should be displayed Check 8 : this should be displayed +ERROR: ./ivltests/sv_immediate_assert.v:19: Check 9 : this should be displayed + Time: 0 Scope: test +Check 10 : this should be displayed diff --git a/ivtest/gold/sv_immediate_assume.gold b/ivtest/gold/sv_immediate_assume.gold index bd642991a..0975bfbb7 100644 --- a/ivtest/gold/sv_immediate_assume.gold +++ b/ivtest/gold/sv_immediate_assume.gold @@ -6,3 +6,6 @@ ERROR: ./ivltests/sv_immediate_assume.v:11: Time: 0 Scope: test Check 7 : this should be displayed Check 8 : this should be displayed +ERROR: ./ivltests/sv_immediate_assume.v:19: Check 9 : this should be displayed + Time: 0 Scope: test +Check 10 : this should be displayed diff --git a/ivtest/ivltests/sv_immediate_assert.v b/ivtest/ivltests/sv_immediate_assert.v index 0470d8583..742b3c3be 100644 --- a/ivtest/ivltests/sv_immediate_assert.v +++ b/ivtest/ivltests/sv_immediate_assert.v @@ -13,6 +13,15 @@ initial begin else $display("Check 7 : this shouldn't be displayed"); assert(i == 0) $display("Check 8 : this shouldn't be displayed"); else $display("Check 8 : this should be displayed"); + + a_i_is_non_0 : assert(i == 0) + $display("Check 9 : this shouldn't be displayed"); + else $error("Check 9 : this should be displayed"); + + a_i_is_1 : assert(i == 1) + $display("Check 10 : this should be displayed"); + else $error("Check 10 : this shouldn't be displayed i: %0d", i); + end endmodule diff --git a/ivtest/ivltests/sv_immediate_assume.v b/ivtest/ivltests/sv_immediate_assume.v index 1e4514f56..1390298f3 100644 --- a/ivtest/ivltests/sv_immediate_assume.v +++ b/ivtest/ivltests/sv_immediate_assume.v @@ -13,6 +13,15 @@ initial begin else $display("Check 7 : this shouldn't be displayed"); assume(i == 0) $display("Check 8 : this shouldn't be displayed"); else $display("Check 8 : this should be displayed"); + + a_i_is_non_0 : assume(i == 0) + $display("Check 9 : this shouldn't be displayed"); + else $error("Check 9 : this should be displayed"); + + a_i_is_1 : assume(i == 1) + $display("Check 10 : this should be displayed"); + else $error("Check 10 : this shouldn't be displayed i: %0d", i); + end endmodule diff --git a/parse.y b/parse.y index 5af988b4d..d997c858e 100644 --- a/parse.y +++ b/parse.y @@ -2118,12 +2118,12 @@ port_direction_opt ; procedural_assertion_statement /* IEEE1800-2012 A.6.10 */ - : concurrent_assertion_statement - { $$ = $1; } - | simple_immediate_assertion_statement - { $$ = $1; } - | deferred_immediate_assertion_statement - { $$ = $1; } + : block_identifier_opt concurrent_assertion_statement + { $$ = $2; } + | block_identifier_opt simple_immediate_assertion_statement + { $$ = $2; } + | block_identifier_opt deferred_immediate_assertion_statement + { $$ = $2; } ; property_expr /* IEEE1800-2012 A.2.10 */