diff options
author | Clifford Wolf <clifford@clifford.at> | 2014-07-30 14:10:15 +0200 |
---|---|---|
committer | Clifford Wolf <clifford@clifford.at> | 2014-07-30 14:10:15 +0200 |
commit | a7c6b37abf3e4628dd921bb12f77987d1f94c45f (patch) | |
tree | e2d7775b8df6e089e7b567febf27224cf1991a33 | |
parent | 273383692a50490f02a51d0c44ba63b9f557da4e (diff) | |
download | yosys-a7c6b37abf3e4628dd921bb12f77987d1f94c45f.tar.gz yosys-a7c6b37abf3e4628dd921bb12f77987d1f94c45f.tar.bz2 yosys-a7c6b37abf3e4628dd921bb12f77987d1f94c45f.zip |
Added "kernel/yosys.h" and "kernel/yosys.cc"
-rw-r--r-- | Makefile | 2 | ||||
-rw-r--r-- | kernel/driver.cc | 4 | ||||
-rw-r--r-- | kernel/log.cc | 24 | ||||
-rw-r--r-- | kernel/log.h | 6 | ||||
-rw-r--r-- | kernel/register.h | 18 | ||||
-rw-r--r-- | kernel/rtlil.h | 14 | ||||
-rw-r--r-- | kernel/yosys.cc | 40 | ||||
-rw-r--r-- | kernel/yosys.h | 86 |
8 files changed, 133 insertions, 61 deletions
@@ -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 2e56f9a33..c20be1dc1 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 8036b2360..5fe0d0863 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 3152fc5af..803365b39 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 73875e968..68f09c822 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 1f25542f3..d6acb5bcc 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 000000000..d25443826 --- /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 000000000..67629d9b1 --- /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 |