Make -gno-specify suppress unsupported timing check warnings (issue #1258)

This commit is contained in:
Martin Whitaker 2025-07-05 22:44:59 +01:00
parent aec91c7754
commit dd714d78c4
1 changed files with 60 additions and 34 deletions

94
parse.y
View File

@ -1,7 +1,7 @@
%{ %{
/* /*
* Copyright (c) 1998-2024 Stephen Williams (steve@icarus.com) * Copyright (c) 1998-2025 Stephen Williams (steve@icarus.com)
* Copyright CERN 2012-2013 / Stephen Williams (steve@icarus.com) * Copyright CERN 2012-2013 / Stephen Williams (steve@icarus.com)
* *
* This source code is free software; you can redistribute it * This source code is free software; you can redistribute it
@ -6003,7 +6003,9 @@ specify_item
| K_Sfullskew '(' spec_reference_event ',' spec_reference_event | K_Sfullskew '(' spec_reference_event ',' spec_reference_event
',' delay_value ',' delay_value fullskew_opt_args ')' ';' ',' delay_value ',' delay_value fullskew_opt_args ')' ';'
{ {
cerr << @3 << ": warning: Timing checks are not supported." << endl; if (gn_specify_blocks_flag) {
yywarn(@3, "warning: Timing checks are not supported.");
}
delete $3; // spec_reference_event delete $3; // spec_reference_event
delete $5; // spec_reference_event delete $5; // spec_reference_event
delete $7; // delay_value delete $7; // delay_value
@ -6018,7 +6020,9 @@ specify_item
| K_Shold '(' spec_reference_event ',' spec_reference_event | K_Shold '(' spec_reference_event ',' spec_reference_event
',' delay_value spec_notifier_opt ')' ';' ',' delay_value spec_notifier_opt ')' ';'
{ {
cerr << @3 << ": warning: Timing checks are not supported." << endl; if (gn_specify_blocks_flag) {
yywarn(@3, "warning: Timing checks are not supported.");
}
delete $3; // spec_reference_event delete $3; // spec_reference_event
delete $5; // spec_reference_event delete $5; // spec_reference_event
delete $7; // delay_value delete $7; // delay_value
@ -6027,7 +6031,9 @@ specify_item
| K_Snochange '(' spec_reference_event ',' spec_reference_event | K_Snochange '(' spec_reference_event ',' spec_reference_event
',' delay_value ',' delay_value spec_notifier_opt ')' ';' ',' delay_value ',' delay_value spec_notifier_opt ')' ';'
{ {
cerr << @3 << ": warning: Timing checks are not supported." << endl; if (gn_specify_blocks_flag) {
yywarn(@3, "warning: Timing checks are not supported.");
}
delete $3; // spec_reference_event delete $3; // spec_reference_event
delete $5; // spec_reference_event delete $5; // spec_reference_event
delete $7; // delay_value delete $7; // delay_value
@ -6037,7 +6043,9 @@ specify_item
| K_Speriod '(' spec_reference_event ',' delay_value | K_Speriod '(' spec_reference_event ',' delay_value
spec_notifier_opt ')' ';' spec_notifier_opt ')' ';'
{ {
cerr << @3 << ": warning: Timing checks are not supported." << endl; if (gn_specify_blocks_flag) {
yywarn(@3, "warning: Timing checks are not supported.");
}
delete $3; // spec_reference_event delete $3; // spec_reference_event
delete $5; // delay_value delete $5; // delay_value
delete $6; // spec_notifier_opt delete $6; // spec_notifier_opt
@ -6045,7 +6053,9 @@ specify_item
| K_Srecovery '(' spec_reference_event ',' spec_reference_event | K_Srecovery '(' spec_reference_event ',' spec_reference_event
',' delay_value spec_notifier_opt ')' ';' ',' delay_value spec_notifier_opt ')' ';'
{ {
cerr << @3 << ": warning: Timing checks are not supported." << endl; if (gn_specify_blocks_flag) {
yywarn(@3, "warning: Timing checks are not supported.");
}
delete $3; // spec_reference_event delete $3; // spec_reference_event
delete $5; // spec_reference_event delete $5; // spec_reference_event
delete $7; // delay_value delete $7; // delay_value
@ -6054,15 +6064,13 @@ specify_item
| K_Srecrem '(' spec_reference_event ',' spec_reference_event | K_Srecrem '(' spec_reference_event ',' spec_reference_event
',' expr_mintypmax ',' expr_mintypmax recrem_opt_args ')' ';' ',' expr_mintypmax ',' expr_mintypmax recrem_opt_args ')' ';'
{ {
cerr << @3 << ": warning: Timing checks are not supported. "; if (gn_specify_blocks_flag) {
if ($10->delayed_reference != nullptr || $10->delayed_data != nullptr) cerr << @3 << ": warning: Timing checks are not supported. ";
{ if ($10->delayed_reference != nullptr || $10->delayed_data != nullptr) {
cerr << "Delayed reference and data signals become copies of the" cerr << "Delayed reference and data signals become copies of the"
<< " original reference and data signals." << endl; << " original reference and data signals.";
} }
else cerr << endl;
{
cerr << endl;
} }
PRecRem*recrem = pform_make_recrem(@1, $3, $5, $7, $9, $10); PRecRem*recrem = pform_make_recrem(@1, $3, $5, $7, $9, $10);
@ -6073,7 +6081,9 @@ specify_item
| K_Sremoval '(' spec_reference_event ',' spec_reference_event | K_Sremoval '(' spec_reference_event ',' spec_reference_event
',' delay_value spec_notifier_opt ')' ';' ',' delay_value spec_notifier_opt ')' ';'
{ {
cerr << @3 << ": warning: Timing checks are not supported." << endl; if (gn_specify_blocks_flag) {
yywarn(@3, "warning: Timing checks are not supported.");
}
delete $3; // spec_reference_event delete $3; // spec_reference_event
delete $5; // spec_reference_event delete $5; // spec_reference_event
delete $7; // delay_value delete $7; // delay_value
@ -6082,7 +6092,9 @@ specify_item
| K_Ssetup '(' spec_reference_event ',' spec_reference_event | K_Ssetup '(' spec_reference_event ',' spec_reference_event
',' delay_value spec_notifier_opt ')' ';' ',' delay_value spec_notifier_opt ')' ';'
{ {
cerr << @3 << ": warning: Timing checks are not supported." << endl; if (gn_specify_blocks_flag) {
yywarn(@3, "warning: Timing checks are not supported.");
}
delete $3; // spec_reference_event delete $3; // spec_reference_event
delete $5; // spec_reference_event delete $5; // spec_reference_event
delete $7; // delay_value delete $7; // delay_value
@ -6091,15 +6103,13 @@ specify_item
| K_Ssetuphold '(' spec_reference_event ',' spec_reference_event | K_Ssetuphold '(' spec_reference_event ',' spec_reference_event
',' expr_mintypmax ',' expr_mintypmax setuphold_opt_args ')' ';' ',' expr_mintypmax ',' expr_mintypmax setuphold_opt_args ')' ';'
{ {
cerr << @3 << ": warning: Timing checks are not supported. "; if (gn_specify_blocks_flag) {
if ($10->delayed_reference != nullptr || $10->delayed_data != nullptr) cerr << @3 << ": warning: Timing checks are not supported. ";
{ if ($10->delayed_reference != nullptr || $10->delayed_data != nullptr) {
cerr << "Delayed reference and data signals become copies of the" cerr << "Delayed reference and data signals become copies of the"
<< " original reference and data signals." << endl; << " original reference and data signals.";
} }
else cerr << endl;
{
cerr << endl;
} }
PSetupHold*setuphold = pform_make_setuphold(@1, $3, $5, $7, $9, $10); PSetupHold*setuphold = pform_make_setuphold(@1, $3, $5, $7, $9, $10);
@ -6110,7 +6120,9 @@ specify_item
| K_Sskew '(' spec_reference_event ',' spec_reference_event | K_Sskew '(' spec_reference_event ',' spec_reference_event
',' delay_value spec_notifier_opt ')' ';' ',' delay_value spec_notifier_opt ')' ';'
{ {
cerr << @3 << ": warning: Timing checks are not supported." << endl; if (gn_specify_blocks_flag) {
yywarn(@3, "warning: Timing checks are not supported.");
}
delete $3; // spec_reference_event delete $3; // spec_reference_event
delete $5; // spec_reference_event delete $5; // spec_reference_event
delete $7; // delay_value delete $7; // delay_value
@ -6119,7 +6131,9 @@ specify_item
| K_Stimeskew '(' spec_reference_event ',' spec_reference_event | K_Stimeskew '(' spec_reference_event ',' spec_reference_event
',' delay_value timeskew_opt_args ')' ';' ',' delay_value timeskew_opt_args ')' ';'
{ {
cerr << @3 << ": warning: Timing checks are not supported." << endl; if (gn_specify_blocks_flag) {
yywarn(@3, "warning: Timing checks are not supported.");
}
delete $3; // spec_reference_event delete $3; // spec_reference_event
delete $5; // spec_reference_event delete $5; // spec_reference_event
delete $7; // delay_value delete $7; // delay_value
@ -6133,7 +6147,9 @@ specify_item
| K_Swidth '(' spec_reference_event ',' delay_value ',' expression | K_Swidth '(' spec_reference_event ',' delay_value ',' expression
spec_notifier_opt ')' ';' spec_notifier_opt ')' ';'
{ {
cerr << @3 << ": warning: Timing checks are not supported." << endl; if (gn_specify_blocks_flag) {
yywarn(@3, "warning: Timing checks are not supported.");
}
delete $3; // spec_reference_event delete $3; // spec_reference_event
delete $5; // delay_value delete $5; // delay_value
delete $7; // expression delete $7; // expression
@ -6141,28 +6157,38 @@ specify_item
} }
| K_Swidth '(' spec_reference_event ',' delay_value ')' ';' | K_Swidth '(' spec_reference_event ',' delay_value ')' ';'
{ {
cerr << @3 << ": warning: Timing checks are not supported." << endl; if (gn_specify_blocks_flag) {
yywarn(@3, "warning: Timing checks are not supported.");
}
delete $3; // spec_reference_event delete $3; // spec_reference_event
delete $5; // delay_value delete $5; // delay_value
} }
| K_pulsestyle_onevent specify_path_identifiers ';' | K_pulsestyle_onevent specify_path_identifiers ';'
{ {
cerr << @3 << ": warning: Timing checks are not supported." << endl; if (gn_specify_blocks_flag) {
yywarn(@3, "warning: Timing checks are not supported.");
}
delete $2; // specify_path_identifiers delete $2; // specify_path_identifiers
} }
| K_pulsestyle_ondetect specify_path_identifiers ';' | K_pulsestyle_ondetect specify_path_identifiers ';'
{ {
cerr << @3 << ": warning: Timing checks are not supported." << endl; if (gn_specify_blocks_flag) {
yywarn(@3, "warning: Timing checks are not supported.");
}
delete $2; // specify_path_identifiers delete $2; // specify_path_identifiers
} }
| K_showcancelled specify_path_identifiers ';' | K_showcancelled specify_path_identifiers ';'
{ {
cerr << @3 << ": warning: Timing checks are not supported." << endl; if (gn_specify_blocks_flag) {
yywarn(@3, "warning: Timing checks are not supported.");
}
delete $2; // specify_path_identifiers delete $2; // specify_path_identifiers
} }
| K_noshowcancelled specify_path_identifiers ';' | K_noshowcancelled specify_path_identifiers ';'
{ {
cerr << @3 << ": warning: Timing checks are not supported." << endl; if (gn_specify_blocks_flag) {
yywarn(@3, "warning: Timing checks are not supported.");
}
delete $2; // specify_path_identifiers delete $2; // specify_path_identifiers
} }
; ;