summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClifford Wolf <clifford@clifford.at>2014-07-30 14:10:15 +0200
committerClifford Wolf <clifford@clifford.at>2014-07-30 14:10:15 +0200
commita7c6b37abf3e4628dd921bb12f77987d1f94c45f (patch)
treee2d7775b8df6e089e7b567febf27224cf1991a33
parent273383692a50490f02a51d0c44ba63b9f557da4e (diff)
Added "kernel/yosys.h" and "kernel/yosys.cc"
-rw-r--r--Makefile2
-rw-r--r--kernel/driver.cc4
-rw-r--r--kernel/log.cc24
-rw-r--r--kernel/log.h6
-rw-r--r--kernel/register.h18
-rw-r--r--kernel/rtlil.h14
-rw-r--r--kernel/yosys.cc40
-rw-r--r--kernel/yosys.h86
8 files changed, 133 insertions, 61 deletions
diff --git a/Makefile b/Makefile
index 462861c8..73d44833 100644
--- a/Makefile
+++ b/Makefile
@@ -121,7 +121,7 @@ S =
endif
OBJS += kernel/driver.o kernel/register.o kernel/rtlil.o kernel/log.o kernel/calc.o
-OBJS += kernel/compatibility.o
+OBJS += kernel/compatibility.o kernel/yosys.o
OBJS += libs/bigint/BigIntegerAlgorithms.o libs/bigint/BigInteger.o libs/bigint/BigIntegerUtils.o
OBJS += libs/bigint/BigUnsigned.o libs/bigint/BigUnsignedInABase.o
diff --git a/kernel/driver.cc b/kernel/driver.cc
index 2e56f9a3..c20be1dc 100644
--- a/kernel/driver.cc
+++ b/kernel/driver.cc
@@ -30,9 +30,7 @@
#include <algorithm>
#include <exception>
-#include "kernel/rtlil.h"
-#include "kernel/register.h"
-#include "kernel/log.h"
+#include "kernel/yosys.h"
bool fgetline(FILE *f, std::string &buffer)
{
diff --git a/kernel/log.cc b/kernel/log.cc
index 8036b236..5fe0d086 100644
--- a/kernel/log.cc
+++ b/kernel/log.cc
@@ -17,10 +17,7 @@
*
*/
-#include "kernel/log.h"
-#include "kernel/rtlil.h"
-#include "kernel/register.h"
-#include "kernel/compatibility.h"
+#include "kernel/yosys.h"
#include "backends/ilang/ilang_backend.h"
#include <sys/time.h>
@@ -43,25 +40,6 @@ std::list<std::string> string_buf;
static struct timeval initial_tv = { 0, 0 };
static bool next_print_log = false;
-std::string stringf(const char *fmt, ...)
-{
- std::string string;
- char *str = NULL;
- va_list ap;
-
- va_start(ap, fmt);
- if (vasprintf(&str, fmt, ap) < 0)
- str = NULL;
- va_end(ap);
-
- if (str != NULL) {
- string = str;
- free(str);
- }
-
- return string;
-}
-
void logv(const char *format, va_list ap)
{
if (log_time) {
diff --git a/kernel/log.h b/kernel/log.h
index 3152fc5a..803365b3 100644
--- a/kernel/log.h
+++ b/kernel/log.h
@@ -17,6 +17,8 @@
*
*/
+#include "kernel/yosys.h"
+
#ifndef LOG_H
#define LOG_H
@@ -26,10 +28,6 @@
#include <sys/time.h>
#include <sys/resource.h>
-#include <map>
-#include <vector>
-#include <string>
-
#define S__LINE__sub2(x) #x
#define S__LINE__sub1(x) S__LINE__sub2(x)
#define S__LINE__ S__LINE__sub1(__LINE__)
diff --git a/kernel/register.h b/kernel/register.h
index 73875e96..68f09c82 100644
--- a/kernel/register.h
+++ b/kernel/register.h
@@ -26,24 +26,6 @@
#include <vector>
#include <map>
-#ifdef YOSYS_ENABLE_TCL
-#include <tcl.h>
-extern Tcl_Interp *yosys_get_tcl_interp();
-#endif
-
-// from kernel/version_*.o (cc source generated from Makefile)
-extern const char *yosys_version_str;
-
-// implemented in driver.cc
-extern RTLIL::Design *yosys_get_design();
-extern std::string proc_self_dirname();
-extern std::string proc_share_dirname();
-extern const char *create_prompt(RTLIL::Design *design, int recursion_counter);
-
-// from passes/cmds/design.cc
-extern std::map<std::string, RTLIL::Design*> saved_designs;
-extern std::vector<RTLIL::Design*> pushed_designs;
-
struct Pass
{
std::string pass_name, short_help;
diff --git a/kernel/rtlil.h b/kernel/rtlil.h
index 1f25542f..d6acb5bc 100644
--- a/kernel/rtlil.h
+++ b/kernel/rtlil.h
@@ -17,21 +17,11 @@
*
*/
+#include "kernel/yosys.h"
+
#ifndef RTLIL_H
#define RTLIL_H
-#include <map>
-#include <set>
-#include <vector>
-#include <string>
-
-#include "kernel/log.h"
-#include <initializer_list>
-
-// various helpers (unrelated to RTLIL)
-std::string stringf(const char *fmt, ...);
-#define SIZE(__obj) int(__obj.size())
-
namespace RTLIL
{
enum State : unsigned char {
diff --git a/kernel/yosys.cc b/kernel/yosys.cc
new file mode 100644
index 00000000..d2544382
--- /dev/null
+++ b/kernel/yosys.cc
@@ -0,0 +1,40 @@
+/*
+ * yosys -- Yosys Open SYnthesis Suite
+ *
+ * Copyright (C) 2012 Clifford Wolf <clifford@clifford.at>
+ *
+ * Permission to use, copy, modify, and/or distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ *
+ */
+
+#include "kernel/yosys.h"
+
+std::string stringf(const char *fmt, ...)
+{
+ std::string string;
+ char *str = NULL;
+ va_list ap;
+
+ va_start(ap, fmt);
+ if (vasprintf(&str, fmt, ap) < 0)
+ str = NULL;
+ va_end(ap);
+
+ if (str != NULL) {
+ string = str;
+ free(str);
+ }
+
+ return string;
+}
+
diff --git a/kernel/yosys.h b/kernel/yosys.h
new file mode 100644
index 00000000..67629d9b
--- /dev/null
+++ b/kernel/yosys.h
@@ -0,0 +1,86 @@
+/*
+ * yosys -- Yosys Open SYnthesis Suite
+ *
+ * Copyright (C) 2012 Clifford Wolf <clifford@clifford.at>
+ *
+ * Permission to use, copy, modify, and/or distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ *
+ */
+
+
+// *** NOTE TO THE READER ***
+//
+// Maybe you have just opened this file in the hope to learn more about the
+// Yosys API. Let me congratulate you on this great decision! ;)
+//
+// If you want to know how the design is represented by Yosys in the memory,
+// you should read "kernel/rtlil.h".
+//
+// If you want to know how to register a command with Yosys, you could read
+// "kernel/register.h", but it would be easier to just look at a simple
+// example instead. A simple one would be "passes/cmds/log.cc".
+
+
+#ifndef YOSYS_H
+#define YOSYS_H
+
+#include <map>
+#include <set>
+#include <vector>
+#include <string>
+#include <initializer_list>
+
+#if 0
+# define YOSYS_NAMESPACE_BEGIN namespace Yosys {
+# define YOSYS_NAMESPACE_END }
+#else
+# define YOSYS_NAMESPACE_BEGIN
+# define YOSYS_NAMESPACE_END
+#endif
+
+YOSYS_NAMESPACE_BEGIN
+
+std::string stringf(const char *fmt, ...);
+
+#define SIZE(__obj) int(__obj.size())
+
+YOSYS_NAMESPACE_END
+
+#include "kernel/log.h"
+#include "kernel/rtlil.h"
+#include "kernel/register.h"
+#include "kernel/compatibility.h"
+
+YOSYS_NAMESPACE_BEGIN
+
+#ifdef YOSYS_ENABLE_TCL
+#include <tcl.h>
+extern Tcl_Interp *yosys_get_tcl_interp();
+#endif
+
+// from kernel/version_*.o (cc source generated from Makefile)
+extern const char *yosys_version_str;
+
+// implemented in driver.cc
+extern RTLIL::Design *yosys_get_design();
+extern std::string proc_self_dirname();
+extern std::string proc_share_dirname();
+extern const char *create_prompt(RTLIL::Design *design, int recursion_counter);
+
+// from passes/cmds/design.cc
+extern std::map<std::string, RTLIL::Design*> saved_designs;
+extern std::vector<RTLIL::Design*> pushed_designs;
+
+YOSYS_NAMESPACE_END
+
+#endif