aboutsummaryrefslogtreecommitdiffstats
path: root/kernel
diff options
context:
space:
mode:
authorUdi Finkelstein <github@udifink.com>2019-05-03 03:10:43 +0300
committerUdi Finkelstein <github@udifink.com>2019-05-03 03:10:43 +0300
commitac10e7d96da4965751fd60a8dd42a8998c011c39 (patch)
tree88926f01f42afee890ad8bed010977ce4b95a126 /kernel
parent98925f6c4be611434e75f0ccf645a7ef8adcfc63 (diff)
downloadyosys-ac10e7d96da4965751fd60a8dd42a8998c011c39.tar.gz
yosys-ac10e7d96da4965751fd60a8dd42a8998c011c39.tar.bz2
yosys-ac10e7d96da4965751fd60a8dd42a8998c011c39.zip
Initial implementation of elaboration system tasks
(IEEE1800-2017 section 20.11) This PR allows us to use $info/$warning/$error/$fatal **at elaboration time** within a generate block. This is very useful to stop a synthesis of a parametrized block when an illegal combination of parameters is chosen.
Diffstat (limited to 'kernel')
-rw-r--r--kernel/log.cc11
-rw-r--r--kernel/log.h1
2 files changed, 12 insertions, 0 deletions
diff --git a/kernel/log.cc b/kernel/log.cc
index 9a9104e26..d2a661bb0 100644
--- a/kernel/log.cc
+++ b/kernel/log.cc
@@ -278,6 +278,17 @@ void log_file_warning(const std::string &filename, int lineno,
va_end(ap);
}
+void log_file_info(const std::string &filename, int lineno,
+ const char *format, ...)
+{
+ va_list ap;
+ va_start(ap, format);
+ std::string prefix = stringf("%s:%d: Info: ",
+ filename.c_str(), lineno);
+ logv_warning_with_prefix(prefix.c_str(), format, ap);
+ va_end(ap);
+}
+
YS_ATTRIBUTE(noreturn)
static void logv_error_with_prefix(const char *prefix,
const char *format, va_list ap)
diff --git a/kernel/log.h b/kernel/log.h
index e6afae716..3e1facae8 100644
--- a/kernel/log.h
+++ b/kernel/log.h
@@ -80,6 +80,7 @@ void log_warning(const char *format, ...) YS_ATTRIBUTE(format(printf, 1, 2));
// Log with filename to report a problem in a source file.
void log_file_warning(const std::string &filename, int lineno, const char *format, ...) YS_ATTRIBUTE(format(printf, 3, 4));
+void log_file_info(const std::string &filename, int lineno, const char *format, ...) YS_ATTRIBUTE(format(printf, 3, 4));
void log_warning_noprefix(const char *format, ...) YS_ATTRIBUTE(format(printf, 1, 2));
YS_NORETURN void log_error(const char *format, ...) YS_ATTRIBUTE(format(printf, 1, 2), noreturn);