Skip to content

Commit e2c2a48

Browse files
committed
ebmc: add --system-verilog command-line option
This adds the command-line option --system-verilog to ebmc, which switches the Verilog front-end to recognize SystemVerilog.
1 parent 3fc2299 commit e2c2a48

File tree

7 files changed

+27
-3
lines changed

7 files changed

+27
-3
lines changed
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
CORE
2+
main1.v
3+
--system-verilog
4+
^EXIT=10$
5+
^SIGNAL=0$
6+
^no properties$
7+
--
8+
^warning: ignoring
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
module main;
2+
// 'logic' is a SystemVerilog keyword
3+
logic some_logic;
4+
initial some_logic = 1;
5+
endmodule

src/ebmc/ebmc_parse_options.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -363,6 +363,7 @@ void ebmc_parse_optionst::help()
363363
" {y--show-properties} \t list the properties in the model\n"
364364
" {y--property} {uid} \t check the property with given ID\n"
365365
" {y-I} {upath} \t set include path\n"
366+
" {y--system-verilog} \t force SystemVerilog instead of Verilog\n"
366367
" {y--reset} {uexpr} \t set up module reset\n"
367368
" {y--liveness-to-safety} \t translate liveness properties to safety properties\n"
368369
"\n"

src/ebmc/ebmc_parse_options.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ class ebmc_parse_optionst:public parse_options_baset
4646
"(random-traces)(trace-steps):(random-seed):(number-of-traces):"
4747
"(random-trace)(random-waveform)"
4848
"(liveness-to-safety)"
49-
"I:(preprocess)",
49+
"I:(preprocess)(system-verilog)",
5050
argc,
5151
argv,
5252
std::string("EBMC ") + EBMC_VERSION),

src/ebmc/transition_system.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ Author: Daniel Kroening, [email protected]
2121
#include <langapi/mode.h>
2222
#include <trans-word-level/show_module_hierarchy.h>
2323
#include <trans-word-level/show_modules.h>
24+
#include <verilog/verilog_language.h>
2425

2526
#include "ebmc_error.h"
2627
#include "ebmc_version.h"
@@ -221,6 +222,10 @@ int get_transition_system(
221222
if(cmdline.isset('I'))
222223
config.verilog.include_paths = cmdline.get_values('I');
223224

225+
// do --system-verilog
226+
if(cmdline.isset("system-verilog"))
227+
verilog_languaget::force_systemverilog = true;
228+
224229
if(cmdline.isset("preprocess"))
225230
return preprocess(cmdline, message_handler);
226231

src/verilog/verilog_language.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@ Author: Daniel Kroening, [email protected]
1818
#include "verilog_parser.h"
1919
#include "verilog_preprocessor.h"
2020

21+
bool verilog_languaget::force_systemverilog = false;
22+
2123
/*******************************************************************\
2224
2325
Function: verilog_languaget::parse
@@ -46,8 +48,8 @@ bool verilog_languaget::parse(
4648
verilog_parser.in=&str;
4749
verilog_parser.log.set_message_handler(message_handler);
4850
verilog_parser.grammar=verilog_parsert::LANGUAGE;
49-
50-
if(has_suffix(path, ".sv"))
51+
52+
if(has_suffix(path, ".sv") || force_systemverilog)
5153
verilog_parser.mode=verilog_parsert::SYSTEM_VERILOG;
5254

5355
verilog_scanner_init();

src/verilog/verilog_language.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,9 @@ class verilog_languaget:public languaget
9191
options.set_option("flatten_hierarchy", true);
9292
}
9393

94+
// static configuration, gobal
95+
static bool force_systemverilog;
96+
9497
protected:
9598
verilog_parse_treet parse_tree;
9699
};

0 commit comments

Comments
 (0)