diff --git a/Makefile b/Makefile index cd3525d..e8afaf9 100644 --- a/Makefile +++ b/Makefile @@ -1,38 +1,40 @@ #used for compiling yosys plugins # Define directories PLUGIN_DIR := ./plugins TEMP_DIR := ./temp +OUTPUT_DIR := ./output # Compiler and flags CXX := gcc # Assuming you're using gcc to avoid newer GLIBCXX version issues CXXFLAGS := -Wall -Wextra -ggdb -I/home/jasper/uni/i-edge/oss-cad-suite/share/yosys/include \ -MD -MP -D_YOSYS_ -fPIC -I/home/jasper/uni/i-edge/oss-cad-suite/include \ -std=c++17 -O3 -DYOSYS_ENABLE_READLINE -DYOSYS_ENABLE_PLUGINS \ -DYOSYS_ENABLE_GLOB -DYOSYS_ENABLE_ZLIB -I/usr/include/tcl8.6 \ -DYOSYS_ENABLE_TCL -DYOSYS_ENABLE_ABC -DYOSYS_ENABLE_COVER -rdynamic LDFLAGS := -shared LIBS := -lm -lrt -lreadline -lffi -ldl -lz -ltcl8.6 -ltclstub8.6 # Find all .cc files in the ./plugins directory SRCS := $(wildcard $(PLUGIN_DIR)/*.cc) # Create a list of corresponding .so files OBJS := $(SRCS:.cc=.so) # Default target is to build all .so files all: $(OBJS) # Compile each .cc file to a .so file $(PLUGIN_DIR)/%.so: $(PLUGIN_DIR)/%.cc $(CXX) $(CXXFLAGS) -o $@ $(LDFLAGS) $< $(LIBS) # Clean up build artifacts and temp files clean: rm -f $(PLUGIN_DIR)/*.so $(PLUGIN_DIR)/*.d rm -rf $(TEMP_DIR)/* + rm -rf $(OUTPUT_DIR)/* # Add the dependency files generated with -MD (auto-dependency generation) -include $(SRCS:.cc=.d) .PHONY: all clean diff --git a/plugins/critical_path.d b/plugins/critical_path.d deleted file mode 100644 index 568c218..0000000 --- a/plugins/critical_path.d +++ /dev/null @@ -1,749 +0,0 @@ -plugins/critical_path.so: plugins/critical_path.cc \ - /usr/include/stdc-predef.h \ - /home/jasper/uni/i-edge/application/plugins/cpp-dump/cpp-dump.hpp \ - /usr/include/c++/14.2.1/algorithm \ - /usr/include/c++/14.2.1/bits/stl_algobase.h \ - /usr/include/c++/14.2.1/x86_64-pc-linux-gnu/bits/c++config.h \ - /usr/include/c++/14.2.1/x86_64-pc-linux-gnu/bits/os_defines.h \ - /usr/include/features.h /usr/include/features-time64.h \ - /usr/include/bits/wordsize.h /usr/include/bits/timesize.h \ - /usr/include/sys/cdefs.h /usr/include/bits/long-double.h \ - /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ - /usr/include/c++/14.2.1/x86_64-pc-linux-gnu/bits/cpu_defines.h \ - /usr/include/c++/14.2.1/pstl/pstl_config.h \ - /usr/include/c++/14.2.1/bits/functexcept.h \ - /usr/include/c++/14.2.1/bits/exception_defines.h \ - /usr/include/c++/14.2.1/bits/cpp_type_traits.h \ - /usr/include/c++/14.2.1/ext/type_traits.h \ - /usr/include/c++/14.2.1/ext/numeric_traits.h \ - /usr/include/c++/14.2.1/bits/stl_pair.h \ - /usr/include/c++/14.2.1/type_traits \ - /usr/include/c++/14.2.1/bits/version.h \ - /usr/include/c++/14.2.1/bits/move.h \ - /usr/include/c++/14.2.1/bits/utility.h \ - /usr/include/c++/14.2.1/bits/stl_iterator_base_types.h \ - /usr/include/c++/14.2.1/bits/stl_iterator_base_funcs.h \ - /usr/include/c++/14.2.1/bits/concept_check.h \ - /usr/include/c++/14.2.1/debug/assertions.h \ - /usr/include/c++/14.2.1/bits/stl_iterator.h \ - /usr/include/c++/14.2.1/bits/ptr_traits.h \ - /usr/include/c++/14.2.1/debug/debug.h \ - /usr/include/c++/14.2.1/bits/predefined_ops.h \ - /usr/include/c++/14.2.1/bit /usr/include/c++/14.2.1/concepts \ - /usr/include/c++/14.2.1/bits/stl_algo.h \ - /usr/include/c++/14.2.1/bits/algorithmfwd.h \ - /usr/include/c++/14.2.1/initializer_list \ - /usr/include/c++/14.2.1/bits/stl_heap.h \ - /usr/include/c++/14.2.1/bits/uniform_int_dist.h \ - /usr/include/c++/14.2.1/bits/stl_tempbuf.h /usr/include/c++/14.2.1/new \ - /usr/include/c++/14.2.1/bits/exception.h \ - /usr/include/c++/14.2.1/bits/stl_construct.h \ - /usr/include/c++/14.2.1/cstdlib /usr/include/stdlib.h \ - /usr/include/bits/libc-header-start.h \ - /usr/lib/gcc/x86_64-pc-linux-gnu/14.2.1/include/stddef.h \ - /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ - /usr/include/bits/floatn.h /usr/include/bits/floatn-common.h \ - /usr/include/bits/types/locale_t.h /usr/include/bits/types/__locale_t.h \ - /usr/include/sys/types.h /usr/include/bits/types.h \ - /usr/include/bits/typesizes.h /usr/include/bits/time64.h \ - /usr/include/bits/types/clock_t.h /usr/include/bits/types/clockid_t.h \ - /usr/include/bits/types/time_t.h /usr/include/bits/types/timer_t.h \ - /usr/include/bits/stdint-intn.h /usr/include/endian.h \ - /usr/include/bits/endian.h /usr/include/bits/endianness.h \ - /usr/include/bits/byteswap.h /usr/include/bits/uintn-identity.h \ - /usr/include/sys/select.h /usr/include/bits/select.h \ - /usr/include/bits/types/sigset_t.h /usr/include/bits/types/__sigset_t.h \ - /usr/include/bits/types/struct_timeval.h \ - /usr/include/bits/types/struct_timespec.h \ - /usr/include/bits/pthreadtypes.h /usr/include/bits/thread-shared-types.h \ - /usr/include/bits/pthreadtypes-arch.h \ - /usr/include/bits/atomic_wide_counter.h /usr/include/bits/struct_mutex.h \ - /usr/include/bits/struct_rwlock.h /usr/include/alloca.h \ - /usr/include/bits/stdlib-bsearch.h /usr/include/bits/stdlib-float.h \ - /usr/include/c++/14.2.1/bits/std_abs.h \ - /usr/include/c++/14.2.1/pstl/glue_algorithm_defs.h \ - /usr/include/c++/14.2.1/pstl/execution_defs.h \ - /usr/include/c++/14.2.1/array /usr/include/c++/14.2.1/compare \ - /usr/include/c++/14.2.1/bits/range_access.h \ - /usr/include/c++/14.2.1/functional \ - /usr/include/c++/14.2.1/bits/stl_function.h \ - /usr/include/c++/14.2.1/backward/binders.h /usr/include/c++/14.2.1/tuple \ - /usr/include/c++/14.2.1/bits/uses_allocator.h \ - /usr/include/c++/14.2.1/bits/invoke.h \ - /usr/include/c++/14.2.1/bits/functional_hash.h \ - /usr/include/c++/14.2.1/bits/hash_bytes.h \ - /usr/include/c++/14.2.1/bits/refwrap.h \ - /usr/include/c++/14.2.1/bits/std_function.h \ - /usr/include/c++/14.2.1/typeinfo /usr/include/c++/14.2.1/unordered_map \ - /usr/include/c++/14.2.1/bits/requires_hosted.h \ - /usr/include/c++/14.2.1/bits/unordered_map.h \ - /usr/include/c++/14.2.1/bits/hashtable.h \ - /usr/include/c++/14.2.1/bits/hashtable_policy.h \ - /usr/include/c++/14.2.1/ext/aligned_buffer.h \ - /usr/include/c++/14.2.1/ext/alloc_traits.h \ - /usr/include/c++/14.2.1/bits/alloc_traits.h \ - /usr/include/c++/14.2.1/bits/memoryfwd.h \ - /usr/include/c++/14.2.1/bits/allocator.h \ - /usr/include/c++/14.2.1/x86_64-pc-linux-gnu/bits/c++allocator.h \ - /usr/include/c++/14.2.1/bits/new_allocator.h \ - /usr/include/c++/14.2.1/bits/enable_special_members.h \ - /usr/include/c++/14.2.1/bits/node_handle.h \ - /usr/include/c++/14.2.1/bits/erase_if.h \ - /usr/include/c++/14.2.1/bits/memory_resource.h \ - /usr/include/c++/14.2.1/cstddef \ - /usr/include/c++/14.2.1/bits/uses_allocator_args.h \ - /usr/include/c++/14.2.1/vector \ - /usr/include/c++/14.2.1/bits/stl_uninitialized.h \ - /usr/include/c++/14.2.1/bits/stl_vector.h \ - /usr/include/c++/14.2.1/bits/stl_bvector.h \ - /usr/include/c++/14.2.1/bits/vector.tcc /usr/include/c++/14.2.1/iostream \ - /usr/include/c++/14.2.1/ostream /usr/include/c++/14.2.1/ios \ - /usr/include/c++/14.2.1/iosfwd /usr/include/c++/14.2.1/bits/stringfwd.h \ - /usr/include/c++/14.2.1/bits/postypes.h /usr/include/c++/14.2.1/cwchar \ - /usr/include/wchar.h \ - /usr/lib/gcc/x86_64-pc-linux-gnu/14.2.1/include/stdarg.h \ - /usr/include/bits/wchar.h /usr/include/bits/types/wint_t.h \ - /usr/include/bits/types/mbstate_t.h \ - /usr/include/bits/types/__mbstate_t.h /usr/include/bits/types/__FILE.h \ - /usr/include/bits/types/FILE.h /usr/include/c++/14.2.1/exception \ - /usr/include/c++/14.2.1/bits/exception_ptr.h \ - /usr/include/c++/14.2.1/bits/cxxabi_init_exception.h \ - /usr/include/c++/14.2.1/bits/nested_exception.h \ - /usr/include/c++/14.2.1/bits/char_traits.h \ - /usr/include/c++/14.2.1/bits/localefwd.h \ - /usr/include/c++/14.2.1/x86_64-pc-linux-gnu/bits/c++locale.h \ - /usr/include/c++/14.2.1/clocale /usr/include/locale.h \ - /usr/include/bits/locale.h /usr/include/c++/14.2.1/cctype \ - /usr/include/ctype.h /usr/include/c++/14.2.1/bits/ios_base.h \ - /usr/include/c++/14.2.1/ext/atomicity.h \ - /usr/include/c++/14.2.1/x86_64-pc-linux-gnu/bits/gthr.h \ - /usr/include/c++/14.2.1/x86_64-pc-linux-gnu/bits/gthr-default.h \ - /usr/include/pthread.h /usr/include/sched.h /usr/include/bits/sched.h \ - /usr/include/bits/types/struct_sched_param.h /usr/include/bits/cpu-set.h \ - /usr/include/time.h /usr/include/bits/time.h /usr/include/bits/timex.h \ - /usr/include/bits/types/struct_tm.h \ - /usr/include/bits/types/struct_itimerspec.h /usr/include/bits/setjmp.h \ - /usr/include/bits/types/struct___jmp_buf_tag.h \ - /usr/include/bits/pthread_stack_min-dynamic.h \ - /usr/include/c++/14.2.1/x86_64-pc-linux-gnu/bits/atomic_word.h \ - /usr/include/sys/single_threaded.h \ - /usr/include/c++/14.2.1/bits/locale_classes.h \ - /usr/include/c++/14.2.1/string \ - /usr/include/c++/14.2.1/bits/ostream_insert.h \ - /usr/include/c++/14.2.1/bits/cxxabi_forced.h \ - /usr/include/c++/14.2.1/bits/basic_string.h \ - /usr/include/c++/14.2.1/string_view \ - /usr/include/c++/14.2.1/bits/string_view.tcc \ - /usr/include/c++/14.2.1/ext/string_conversions.h \ - /usr/include/c++/14.2.1/cstdio /usr/include/stdio.h \ - /usr/include/bits/types/__fpos_t.h /usr/include/bits/types/__fpos64_t.h \ - /usr/include/bits/types/struct_FILE.h \ - /usr/include/bits/types/cookie_io_functions_t.h \ - /usr/include/bits/stdio_lim.h /usr/include/bits/stdio.h \ - /usr/include/c++/14.2.1/cerrno /usr/include/errno.h \ - /usr/include/bits/errno.h /usr/include/linux/errno.h \ - /usr/include/asm/errno.h /usr/include/asm-generic/errno.h \ - /usr/include/asm-generic/errno-base.h /usr/include/bits/types/error_t.h \ - /usr/include/c++/14.2.1/bits/charconv.h \ - /usr/include/c++/14.2.1/bits/basic_string.tcc \ - /usr/include/c++/14.2.1/bits/locale_classes.tcc \ - /usr/include/c++/14.2.1/system_error \ - /usr/include/c++/14.2.1/x86_64-pc-linux-gnu/bits/error_constants.h \ - /usr/include/c++/14.2.1/stdexcept /usr/include/c++/14.2.1/streambuf \ - /usr/include/c++/14.2.1/bits/streambuf.tcc \ - /usr/include/c++/14.2.1/bits/basic_ios.h \ - /usr/include/c++/14.2.1/bits/locale_facets.h \ - /usr/include/c++/14.2.1/cwctype /usr/include/wctype.h \ - /usr/include/bits/wctype-wchar.h \ - /usr/include/c++/14.2.1/x86_64-pc-linux-gnu/bits/ctype_base.h \ - /usr/include/c++/14.2.1/bits/streambuf_iterator.h \ - /usr/include/c++/14.2.1/x86_64-pc-linux-gnu/bits/ctype_inline.h \ - /usr/include/c++/14.2.1/bits/locale_facets.tcc \ - /usr/include/c++/14.2.1/bits/basic_ios.tcc \ - /usr/include/c++/14.2.1/bits/ostream.tcc /usr/include/c++/14.2.1/istream \ - /usr/include/c++/14.2.1/bits/istream.tcc \ - /home/jasper/uni/i-edge/application/plugins/cpp-dump/./cpp-dump/hpp/escape_sequence.hpp \ - /home/jasper/uni/i-edge/application/plugins/cpp-dump/./cpp-dump/hpp/./options.hpp \ - /home/jasper/uni/i-edge/application/plugins/cpp-dump/./cpp-dump/hpp/././log_label.hpp \ - /home/jasper/uni/i-edge/application/plugins/cpp-dump/./cpp-dump/hpp/expand_va_macro.hpp \ - /home/jasper/uni/i-edge/application/plugins/cpp-dump/./cpp-dump/hpp/export_command/export_command.hpp \ - /usr/include/c++/14.2.1/limits /usr/include/c++/14.2.1/memory \ - /usr/include/c++/14.2.1/bits/stl_raw_storage_iter.h \ - /usr/include/c++/14.2.1/bits/align.h \ - /usr/lib/gcc/x86_64-pc-linux-gnu/14.2.1/include/stdint.h \ - /usr/include/stdint.h /usr/include/bits/stdint-uintn.h \ - /usr/include/bits/stdint-least.h \ - /usr/include/c++/14.2.1/bits/unique_ptr.h \ - /usr/include/c++/14.2.1/bits/shared_ptr.h \ - /usr/include/c++/14.2.1/bits/shared_ptr_base.h \ - /usr/include/c++/14.2.1/bits/allocated_ptr.h \ - /usr/include/c++/14.2.1/ext/concurrence.h \ - /usr/include/c++/14.2.1/bits/shared_ptr_atomic.h \ - /usr/include/c++/14.2.1/bits/atomic_base.h \ - /usr/include/c++/14.2.1/bits/atomic_lockfree_defines.h \ - /usr/include/c++/14.2.1/backward/auto_ptr.h \ - /usr/include/c++/14.2.1/pstl/glue_memory_defs.h \ - /usr/include/c++/14.2.1/optional /usr/include/c++/14.2.1/utility \ - /usr/include/c++/14.2.1/bits/stl_relops.h \ - /home/jasper/uni/i-edge/application/plugins/cpp-dump/./cpp-dump/hpp/export_command/../type_check.hpp \ - /usr/include/c++/14.2.1/bitset /usr/include/c++/14.2.1/complex \ - /usr/include/c++/14.2.1/cmath /usr/include/math.h \ - /usr/include/bits/math-vector.h /usr/include/bits/libm-simd-decl-stubs.h \ - /usr/include/bits/flt-eval-method.h /usr/include/bits/fp-logb.h \ - /usr/include/bits/fp-fast.h \ - /usr/include/bits/mathcalls-helper-functions.h \ - /usr/include/bits/mathcalls.h /usr/include/bits/mathcalls-narrow.h \ - /usr/include/bits/iscanonical.h /usr/include/c++/14.2.1/bits/specfun.h \ - /usr/include/c++/14.2.1/tr1/gamma.tcc \ - /usr/include/c++/14.2.1/tr1/special_function_util.h \ - /usr/include/c++/14.2.1/tr1/bessel_function.tcc \ - /usr/include/c++/14.2.1/tr1/beta_function.tcc \ - /usr/include/c++/14.2.1/tr1/ell_integral.tcc \ - /usr/include/c++/14.2.1/tr1/exp_integral.tcc \ - /usr/include/c++/14.2.1/tr1/hypergeometric.tcc \ - /usr/include/c++/14.2.1/tr1/legendre_function.tcc \ - /usr/include/c++/14.2.1/tr1/modified_bessel_func.tcc \ - /usr/include/c++/14.2.1/tr1/poly_hermite.tcc \ - /usr/include/c++/14.2.1/tr1/poly_laguerre.tcc \ - /usr/include/c++/14.2.1/tr1/riemann_zeta.tcc \ - /usr/include/c++/14.2.1/sstream /usr/include/c++/14.2.1/bits/sstream.tcc \ - /usr/include/c++/14.2.1/map /usr/include/c++/14.2.1/bits/stl_tree.h \ - /usr/include/c++/14.2.1/bits/stl_map.h \ - /usr/include/c++/14.2.1/bits/stl_multimap.h \ - /usr/include/c++/14.2.1/queue /usr/include/c++/14.2.1/deque \ - /usr/include/c++/14.2.1/bits/stl_deque.h \ - /usr/include/c++/14.2.1/bits/deque.tcc \ - /usr/include/c++/14.2.1/bits/stl_queue.h /usr/include/c++/14.2.1/set \ - /usr/include/c++/14.2.1/bits/stl_set.h \ - /usr/include/c++/14.2.1/bits/stl_multiset.h \ - /usr/include/c++/14.2.1/stack /usr/include/c++/14.2.1/bits/stl_stack.h \ - /usr/include/c++/14.2.1/typeindex /usr/include/c++/14.2.1/unordered_set \ - /usr/include/c++/14.2.1/bits/unordered_set.h \ - /usr/include/c++/14.2.1/variant \ - /usr/include/c++/14.2.1/bits/parse_numbers.h \ - /home/jasper/uni/i-edge/application/plugins/cpp-dump/./cpp-dump/hpp/export_command/.././iterable.hpp \ - /usr/include/c++/14.2.1/iterator \ - /usr/include/c++/14.2.1/bits/stream_iterator.h \ - /home/jasper/uni/i-edge/application/plugins/cpp-dump/./cpp-dump/hpp/export_command/.././utility.hpp \ - /home/jasper/uni/i-edge/application/plugins/cpp-dump/./cpp-dump/hpp/export_command/./skip_container.hpp \ - /home/jasper/uni/i-edge/application/plugins/cpp-dump/./cpp-dump/hpp/export_var/export_var.hpp \ - /home/jasper/uni/i-edge/application/plugins/cpp-dump/./cpp-dump/hpp/export_var/./export_arithmetic.hpp \ - /usr/include/c++/14.2.1/iomanip /usr/include/c++/14.2.1/locale \ - /usr/include/c++/14.2.1/bits/locale_facets_nonio.h \ - /usr/include/c++/14.2.1/ctime \ - /usr/include/c++/14.2.1/x86_64-pc-linux-gnu/bits/time_members.h \ - /usr/include/c++/14.2.1/x86_64-pc-linux-gnu/bits/messages_members.h \ - /usr/include/libintl.h /usr/include/c++/14.2.1/bits/codecvt.h \ - /usr/include/c++/14.2.1/bits/locale_facets_nonio.tcc \ - /usr/include/c++/14.2.1/bits/locale_conv.h \ - /usr/include/c++/14.2.1/bits/quoted_string.h \ - /home/jasper/uni/i-edge/application/plugins/cpp-dump/./cpp-dump/hpp/export_var/./export_asterisk.hpp \ - /home/jasper/uni/i-edge/application/plugins/cpp-dump/./cpp-dump/hpp/export_var/././export_unsupported.hpp \ - /home/jasper/uni/i-edge/application/plugins/cpp-dump/./cpp-dump/hpp/export_var/././export_var_fwd.hpp \ - /home/jasper/uni/i-edge/application/plugins/cpp-dump/./cpp-dump/hpp/export_var/./export_container.hpp \ - /home/jasper/uni/i-edge/application/plugins/cpp-dump/./cpp-dump/hpp/export_var/./export_enum.hpp \ - /home/jasper/uni/i-edge/application/plugins/cpp-dump/./cpp-dump/hpp/export_var/./export_exception.hpp \ - /home/jasper/uni/i-edge/application/plugins/cpp-dump/./cpp-dump/hpp/export_var/././export_object_common.hpp \ - /home/jasper/uni/i-edge/application/plugins/cpp-dump/./cpp-dump/hpp/export_var/./export_map.hpp \ - /home/jasper/uni/i-edge/application/plugins/cpp-dump/./cpp-dump/hpp/export_var/./export_object.hpp \ - /home/jasper/uni/i-edge/application/plugins/cpp-dump/./cpp-dump/hpp/export_var/./export_object_generic.hpp \ - /home/jasper/uni/i-edge/application/plugins/cpp-dump/./cpp-dump/hpp/export_var/./export_ostream.hpp \ - /home/jasper/uni/i-edge/application/plugins/cpp-dump/./cpp-dump/hpp/export_var/./export_other/export_other.hpp \ - /home/jasper/uni/i-edge/application/plugins/cpp-dump/./cpp-dump/hpp/export_var/./export_other/./export_es_value_t.hpp \ - /home/jasper/uni/i-edge/application/plugins/cpp-dump/./cpp-dump/hpp/export_var/./export_other/./export_optional.hpp \ - /home/jasper/uni/i-edge/application/plugins/cpp-dump/./cpp-dump/hpp/export_var/./export_other/./export_other_object.hpp \ - /home/jasper/uni/i-edge/application/plugins/cpp-dump/./cpp-dump/hpp/export_var/./export_other/./export_type_info.hpp \ - /usr/include/c++/14.2.1/cxxabi.h \ - /usr/include/c++/14.2.1/x86_64-pc-linux-gnu/bits/cxxabi_tweaks.h \ - /home/jasper/uni/i-edge/application/plugins/cpp-dump/./cpp-dump/hpp/export_var/./export_pointer.hpp \ - /home/jasper/uni/i-edge/application/plugins/cpp-dump/./cpp-dump/hpp/export_var/./export_set.hpp \ - /home/jasper/uni/i-edge/application/plugins/cpp-dump/./cpp-dump/hpp/export_var/./export_string.hpp \ - /home/jasper/uni/i-edge/application/plugins/cpp-dump/./cpp-dump/hpp/export_var/./export_tuple.hpp \ - /home/jasper/uni/i-edge/application/plugins/cpp-dump/./cpp-dump/hpp/export_var/./export_xixo.hpp \ - /home/jasper/uni/i-edge/oss-cad-suite/share/yosys/include/kernel/log.h \ - /home/jasper/uni/i-edge/oss-cad-suite/share/yosys/include/kernel/yosys_common.h \ - /usr/include/c++/14.2.1/fstream \ - /usr/include/c++/14.2.1/x86_64-pc-linux-gnu/bits/basic_file.h \ - /usr/include/c++/14.2.1/x86_64-pc-linux-gnu/bits/c++io.h \ - /usr/include/c++/14.2.1/bits/fstream.tcc \ - /usr/include/c++/14.2.1/stdlib.h /usr/include/string.h \ - /usr/include/strings.h \ - /usr/lib/gcc/x86_64-pc-linux-gnu/14.2.1/include/limits.h \ - /usr/lib/gcc/x86_64-pc-linux-gnu/14.2.1/include/syslimits.h \ - /usr/include/limits.h /usr/include/bits/posix1_lim.h \ - /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ - /usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \ - /usr/include/bits/uio_lim.h /usr/include/sys/stat.h \ - /usr/include/bits/stat.h /usr/include/bits/struct_stat.h \ - /usr/include/bits/statx.h /usr/include/linux/stat.h \ - /usr/include/linux/types.h /usr/include/asm/types.h \ - /usr/include/asm-generic/types.h /usr/include/asm-generic/int-ll64.h \ - /usr/include/asm/bitsperlong.h /usr/include/asm-generic/bitsperlong.h \ - /usr/include/linux/posix_types.h /usr/include/linux/stddef.h \ - /usr/include/asm/posix_types.h /usr/include/asm/posix_types_64.h \ - /usr/include/asm-generic/posix_types.h /usr/include/bits/statx-generic.h \ - /usr/include/bits/types/struct_statx_timestamp.h \ - /usr/include/bits/types/struct_statx.h /usr/include/tcl.h \ - /usr/include/tclDecls.h /usr/include/tclPlatDecls.h \ - /home/jasper/uni/i-edge/oss-cad-suite/share/yosys/include/kernel/hashlib.h \ - /usr/include/c++/14.2.1/regex \ - /usr/include/c++/14.2.1/bits/regex_constants.h \ - /usr/include/c++/14.2.1/bits/regex_error.h \ - /usr/include/c++/14.2.1/bits/regex_automaton.h \ - /usr/include/c++/14.2.1/bits/regex_automaton.tcc \ - /usr/include/c++/14.2.1/bits/regex_scanner.h \ - /usr/include/c++/14.2.1/bits/regex_scanner.tcc \ - /usr/include/c++/14.2.1/bits/regex_compiler.h \ - /usr/include/c++/14.2.1/bits/regex_compiler.tcc \ - /usr/include/c++/14.2.1/bits/regex.h \ - /usr/include/c++/14.2.1/bits/regex.tcc \ - /usr/include/c++/14.2.1/bits/regex_executor.h \ - /usr/include/c++/14.2.1/bits/regex_executor.tcc /usr/include/sys/time.h \ - /usr/include/sys/resource.h /usr/include/bits/resource.h \ - /usr/include/bits/types/struct_rusage.h /usr/include/signal.h \ - /usr/include/bits/signum-generic.h /usr/include/bits/signum-arch.h \ - /usr/include/bits/types/sig_atomic_t.h \ - /usr/include/bits/types/siginfo_t.h /usr/include/bits/types/__sigval_t.h \ - /usr/include/bits/siginfo-arch.h /usr/include/bits/siginfo-consts.h \ - /usr/include/bits/siginfo-consts-arch.h \ - /usr/include/bits/types/sigval_t.h /usr/include/bits/types/sigevent_t.h \ - /usr/include/bits/sigevent-consts.h /usr/include/bits/sigaction.h \ - /usr/include/bits/sigcontext.h /usr/include/bits/types/stack_t.h \ - /usr/include/sys/ucontext.h /usr/include/bits/sigstack.h \ - /usr/include/bits/sigstksz.h /usr/include/unistd.h \ - /usr/include/bits/posix_opt.h /usr/include/bits/environments.h \ - /usr/include/bits/confname.h /usr/include/bits/getopt_posix.h \ - /usr/include/bits/getopt_core.h /usr/include/bits/unistd_ext.h \ - /usr/include/linux/close_range.h /usr/include/bits/ss_flags.h \ - /usr/include/bits/types/struct_sigstack.h /usr/include/bits/sigthread.h \ - /usr/include/bits/signal_ext.h \ - /home/jasper/uni/i-edge/oss-cad-suite/share/yosys/include/kernel/yosys.h \ - /home/jasper/uni/i-edge/oss-cad-suite/share/yosys/include/kernel/rtlil.h \ - /home/jasper/uni/i-edge/oss-cad-suite/share/yosys/include/kernel/constids.inc \ - /home/jasper/uni/i-edge/oss-cad-suite/share/yosys/include/kernel/register.h \ - /home/jasper/uni/i-edge/oss-cad-suite/share/yosys/include/kernel/sigtools.h \ - /home/jasper/uni/i-edge/oss-cad-suite/share/yosys/include/kernel/celltypes.h -/usr/include/stdc-predef.h: -/home/jasper/uni/i-edge/application/plugins/cpp-dump/cpp-dump.hpp: -/usr/include/c++/14.2.1/algorithm: -/usr/include/c++/14.2.1/bits/stl_algobase.h: -/usr/include/c++/14.2.1/x86_64-pc-linux-gnu/bits/c++config.h: -/usr/include/c++/14.2.1/x86_64-pc-linux-gnu/bits/os_defines.h: -/usr/include/features.h: -/usr/include/features-time64.h: -/usr/include/bits/wordsize.h: -/usr/include/bits/timesize.h: -/usr/include/sys/cdefs.h: -/usr/include/bits/long-double.h: -/usr/include/gnu/stubs.h: -/usr/include/gnu/stubs-64.h: -/usr/include/c++/14.2.1/x86_64-pc-linux-gnu/bits/cpu_defines.h: -/usr/include/c++/14.2.1/pstl/pstl_config.h: -/usr/include/c++/14.2.1/bits/functexcept.h: -/usr/include/c++/14.2.1/bits/exception_defines.h: -/usr/include/c++/14.2.1/bits/cpp_type_traits.h: -/usr/include/c++/14.2.1/ext/type_traits.h: -/usr/include/c++/14.2.1/ext/numeric_traits.h: -/usr/include/c++/14.2.1/bits/stl_pair.h: -/usr/include/c++/14.2.1/type_traits: -/usr/include/c++/14.2.1/bits/version.h: -/usr/include/c++/14.2.1/bits/move.h: -/usr/include/c++/14.2.1/bits/utility.h: -/usr/include/c++/14.2.1/bits/stl_iterator_base_types.h: -/usr/include/c++/14.2.1/bits/stl_iterator_base_funcs.h: -/usr/include/c++/14.2.1/bits/concept_check.h: -/usr/include/c++/14.2.1/debug/assertions.h: -/usr/include/c++/14.2.1/bits/stl_iterator.h: -/usr/include/c++/14.2.1/bits/ptr_traits.h: -/usr/include/c++/14.2.1/debug/debug.h: -/usr/include/c++/14.2.1/bits/predefined_ops.h: -/usr/include/c++/14.2.1/bit: -/usr/include/c++/14.2.1/concepts: -/usr/include/c++/14.2.1/bits/stl_algo.h: -/usr/include/c++/14.2.1/bits/algorithmfwd.h: -/usr/include/c++/14.2.1/initializer_list: -/usr/include/c++/14.2.1/bits/stl_heap.h: -/usr/include/c++/14.2.1/bits/uniform_int_dist.h: -/usr/include/c++/14.2.1/bits/stl_tempbuf.h: -/usr/include/c++/14.2.1/new: -/usr/include/c++/14.2.1/bits/exception.h: -/usr/include/c++/14.2.1/bits/stl_construct.h: -/usr/include/c++/14.2.1/cstdlib: -/usr/include/stdlib.h: -/usr/include/bits/libc-header-start.h: -/usr/lib/gcc/x86_64-pc-linux-gnu/14.2.1/include/stddef.h: -/usr/include/bits/waitflags.h: -/usr/include/bits/waitstatus.h: -/usr/include/bits/floatn.h: -/usr/include/bits/floatn-common.h: -/usr/include/bits/types/locale_t.h: -/usr/include/bits/types/__locale_t.h: -/usr/include/sys/types.h: -/usr/include/bits/types.h: -/usr/include/bits/typesizes.h: -/usr/include/bits/time64.h: -/usr/include/bits/types/clock_t.h: -/usr/include/bits/types/clockid_t.h: -/usr/include/bits/types/time_t.h: -/usr/include/bits/types/timer_t.h: -/usr/include/bits/stdint-intn.h: -/usr/include/endian.h: -/usr/include/bits/endian.h: -/usr/include/bits/endianness.h: -/usr/include/bits/byteswap.h: -/usr/include/bits/uintn-identity.h: -/usr/include/sys/select.h: -/usr/include/bits/select.h: -/usr/include/bits/types/sigset_t.h: -/usr/include/bits/types/__sigset_t.h: -/usr/include/bits/types/struct_timeval.h: -/usr/include/bits/types/struct_timespec.h: -/usr/include/bits/pthreadtypes.h: -/usr/include/bits/thread-shared-types.h: -/usr/include/bits/pthreadtypes-arch.h: -/usr/include/bits/atomic_wide_counter.h: -/usr/include/bits/struct_mutex.h: -/usr/include/bits/struct_rwlock.h: -/usr/include/alloca.h: -/usr/include/bits/stdlib-bsearch.h: -/usr/include/bits/stdlib-float.h: -/usr/include/c++/14.2.1/bits/std_abs.h: -/usr/include/c++/14.2.1/pstl/glue_algorithm_defs.h: -/usr/include/c++/14.2.1/pstl/execution_defs.h: -/usr/include/c++/14.2.1/array: -/usr/include/c++/14.2.1/compare: -/usr/include/c++/14.2.1/bits/range_access.h: -/usr/include/c++/14.2.1/functional: -/usr/include/c++/14.2.1/bits/stl_function.h: -/usr/include/c++/14.2.1/backward/binders.h: -/usr/include/c++/14.2.1/tuple: -/usr/include/c++/14.2.1/bits/uses_allocator.h: -/usr/include/c++/14.2.1/bits/invoke.h: -/usr/include/c++/14.2.1/bits/functional_hash.h: -/usr/include/c++/14.2.1/bits/hash_bytes.h: -/usr/include/c++/14.2.1/bits/refwrap.h: -/usr/include/c++/14.2.1/bits/std_function.h: -/usr/include/c++/14.2.1/typeinfo: -/usr/include/c++/14.2.1/unordered_map: -/usr/include/c++/14.2.1/bits/requires_hosted.h: -/usr/include/c++/14.2.1/bits/unordered_map.h: -/usr/include/c++/14.2.1/bits/hashtable.h: -/usr/include/c++/14.2.1/bits/hashtable_policy.h: -/usr/include/c++/14.2.1/ext/aligned_buffer.h: -/usr/include/c++/14.2.1/ext/alloc_traits.h: -/usr/include/c++/14.2.1/bits/alloc_traits.h: -/usr/include/c++/14.2.1/bits/memoryfwd.h: -/usr/include/c++/14.2.1/bits/allocator.h: -/usr/include/c++/14.2.1/x86_64-pc-linux-gnu/bits/c++allocator.h: -/usr/include/c++/14.2.1/bits/new_allocator.h: -/usr/include/c++/14.2.1/bits/enable_special_members.h: -/usr/include/c++/14.2.1/bits/node_handle.h: -/usr/include/c++/14.2.1/bits/erase_if.h: -/usr/include/c++/14.2.1/bits/memory_resource.h: -/usr/include/c++/14.2.1/cstddef: -/usr/include/c++/14.2.1/bits/uses_allocator_args.h: -/usr/include/c++/14.2.1/vector: -/usr/include/c++/14.2.1/bits/stl_uninitialized.h: -/usr/include/c++/14.2.1/bits/stl_vector.h: -/usr/include/c++/14.2.1/bits/stl_bvector.h: -/usr/include/c++/14.2.1/bits/vector.tcc: -/usr/include/c++/14.2.1/iostream: -/usr/include/c++/14.2.1/ostream: -/usr/include/c++/14.2.1/ios: -/usr/include/c++/14.2.1/iosfwd: -/usr/include/c++/14.2.1/bits/stringfwd.h: -/usr/include/c++/14.2.1/bits/postypes.h: -/usr/include/c++/14.2.1/cwchar: -/usr/include/wchar.h: -/usr/lib/gcc/x86_64-pc-linux-gnu/14.2.1/include/stdarg.h: -/usr/include/bits/wchar.h: -/usr/include/bits/types/wint_t.h: -/usr/include/bits/types/mbstate_t.h: -/usr/include/bits/types/__mbstate_t.h: -/usr/include/bits/types/__FILE.h: -/usr/include/bits/types/FILE.h: -/usr/include/c++/14.2.1/exception: -/usr/include/c++/14.2.1/bits/exception_ptr.h: -/usr/include/c++/14.2.1/bits/cxxabi_init_exception.h: -/usr/include/c++/14.2.1/bits/nested_exception.h: -/usr/include/c++/14.2.1/bits/char_traits.h: -/usr/include/c++/14.2.1/bits/localefwd.h: -/usr/include/c++/14.2.1/x86_64-pc-linux-gnu/bits/c++locale.h: -/usr/include/c++/14.2.1/clocale: -/usr/include/locale.h: -/usr/include/bits/locale.h: -/usr/include/c++/14.2.1/cctype: -/usr/include/ctype.h: -/usr/include/c++/14.2.1/bits/ios_base.h: -/usr/include/c++/14.2.1/ext/atomicity.h: -/usr/include/c++/14.2.1/x86_64-pc-linux-gnu/bits/gthr.h: -/usr/include/c++/14.2.1/x86_64-pc-linux-gnu/bits/gthr-default.h: -/usr/include/pthread.h: -/usr/include/sched.h: -/usr/include/bits/sched.h: -/usr/include/bits/types/struct_sched_param.h: -/usr/include/bits/cpu-set.h: -/usr/include/time.h: -/usr/include/bits/time.h: -/usr/include/bits/timex.h: -/usr/include/bits/types/struct_tm.h: -/usr/include/bits/types/struct_itimerspec.h: -/usr/include/bits/setjmp.h: -/usr/include/bits/types/struct___jmp_buf_tag.h: -/usr/include/bits/pthread_stack_min-dynamic.h: -/usr/include/c++/14.2.1/x86_64-pc-linux-gnu/bits/atomic_word.h: -/usr/include/sys/single_threaded.h: -/usr/include/c++/14.2.1/bits/locale_classes.h: -/usr/include/c++/14.2.1/string: -/usr/include/c++/14.2.1/bits/ostream_insert.h: -/usr/include/c++/14.2.1/bits/cxxabi_forced.h: -/usr/include/c++/14.2.1/bits/basic_string.h: -/usr/include/c++/14.2.1/string_view: -/usr/include/c++/14.2.1/bits/string_view.tcc: -/usr/include/c++/14.2.1/ext/string_conversions.h: -/usr/include/c++/14.2.1/cstdio: -/usr/include/stdio.h: -/usr/include/bits/types/__fpos_t.h: -/usr/include/bits/types/__fpos64_t.h: -/usr/include/bits/types/struct_FILE.h: -/usr/include/bits/types/cookie_io_functions_t.h: -/usr/include/bits/stdio_lim.h: -/usr/include/bits/stdio.h: -/usr/include/c++/14.2.1/cerrno: -/usr/include/errno.h: -/usr/include/bits/errno.h: -/usr/include/linux/errno.h: -/usr/include/asm/errno.h: -/usr/include/asm-generic/errno.h: -/usr/include/asm-generic/errno-base.h: -/usr/include/bits/types/error_t.h: -/usr/include/c++/14.2.1/bits/charconv.h: -/usr/include/c++/14.2.1/bits/basic_string.tcc: -/usr/include/c++/14.2.1/bits/locale_classes.tcc: -/usr/include/c++/14.2.1/system_error: -/usr/include/c++/14.2.1/x86_64-pc-linux-gnu/bits/error_constants.h: -/usr/include/c++/14.2.1/stdexcept: -/usr/include/c++/14.2.1/streambuf: -/usr/include/c++/14.2.1/bits/streambuf.tcc: -/usr/include/c++/14.2.1/bits/basic_ios.h: -/usr/include/c++/14.2.1/bits/locale_facets.h: -/usr/include/c++/14.2.1/cwctype: -/usr/include/wctype.h: -/usr/include/bits/wctype-wchar.h: -/usr/include/c++/14.2.1/x86_64-pc-linux-gnu/bits/ctype_base.h: -/usr/include/c++/14.2.1/bits/streambuf_iterator.h: -/usr/include/c++/14.2.1/x86_64-pc-linux-gnu/bits/ctype_inline.h: -/usr/include/c++/14.2.1/bits/locale_facets.tcc: -/usr/include/c++/14.2.1/bits/basic_ios.tcc: -/usr/include/c++/14.2.1/bits/ostream.tcc: -/usr/include/c++/14.2.1/istream: -/usr/include/c++/14.2.1/bits/istream.tcc: -/home/jasper/uni/i-edge/application/plugins/cpp-dump/./cpp-dump/hpp/escape_sequence.hpp: -/home/jasper/uni/i-edge/application/plugins/cpp-dump/./cpp-dump/hpp/./options.hpp: -/home/jasper/uni/i-edge/application/plugins/cpp-dump/./cpp-dump/hpp/././log_label.hpp: -/home/jasper/uni/i-edge/application/plugins/cpp-dump/./cpp-dump/hpp/expand_va_macro.hpp: -/home/jasper/uni/i-edge/application/plugins/cpp-dump/./cpp-dump/hpp/export_command/export_command.hpp: -/usr/include/c++/14.2.1/limits: -/usr/include/c++/14.2.1/memory: -/usr/include/c++/14.2.1/bits/stl_raw_storage_iter.h: -/usr/include/c++/14.2.1/bits/align.h: -/usr/lib/gcc/x86_64-pc-linux-gnu/14.2.1/include/stdint.h: -/usr/include/stdint.h: -/usr/include/bits/stdint-uintn.h: -/usr/include/bits/stdint-least.h: -/usr/include/c++/14.2.1/bits/unique_ptr.h: -/usr/include/c++/14.2.1/bits/shared_ptr.h: -/usr/include/c++/14.2.1/bits/shared_ptr_base.h: -/usr/include/c++/14.2.1/bits/allocated_ptr.h: -/usr/include/c++/14.2.1/ext/concurrence.h: -/usr/include/c++/14.2.1/bits/shared_ptr_atomic.h: -/usr/include/c++/14.2.1/bits/atomic_base.h: -/usr/include/c++/14.2.1/bits/atomic_lockfree_defines.h: -/usr/include/c++/14.2.1/backward/auto_ptr.h: -/usr/include/c++/14.2.1/pstl/glue_memory_defs.h: -/usr/include/c++/14.2.1/optional: -/usr/include/c++/14.2.1/utility: -/usr/include/c++/14.2.1/bits/stl_relops.h: -/home/jasper/uni/i-edge/application/plugins/cpp-dump/./cpp-dump/hpp/export_command/../type_check.hpp: -/usr/include/c++/14.2.1/bitset: -/usr/include/c++/14.2.1/complex: -/usr/include/c++/14.2.1/cmath: -/usr/include/math.h: -/usr/include/bits/math-vector.h: -/usr/include/bits/libm-simd-decl-stubs.h: -/usr/include/bits/flt-eval-method.h: -/usr/include/bits/fp-logb.h: -/usr/include/bits/fp-fast.h: -/usr/include/bits/mathcalls-helper-functions.h: -/usr/include/bits/mathcalls.h: -/usr/include/bits/mathcalls-narrow.h: -/usr/include/bits/iscanonical.h: -/usr/include/c++/14.2.1/bits/specfun.h: -/usr/include/c++/14.2.1/tr1/gamma.tcc: -/usr/include/c++/14.2.1/tr1/special_function_util.h: -/usr/include/c++/14.2.1/tr1/bessel_function.tcc: -/usr/include/c++/14.2.1/tr1/beta_function.tcc: -/usr/include/c++/14.2.1/tr1/ell_integral.tcc: -/usr/include/c++/14.2.1/tr1/exp_integral.tcc: -/usr/include/c++/14.2.1/tr1/hypergeometric.tcc: -/usr/include/c++/14.2.1/tr1/legendre_function.tcc: -/usr/include/c++/14.2.1/tr1/modified_bessel_func.tcc: -/usr/include/c++/14.2.1/tr1/poly_hermite.tcc: -/usr/include/c++/14.2.1/tr1/poly_laguerre.tcc: -/usr/include/c++/14.2.1/tr1/riemann_zeta.tcc: -/usr/include/c++/14.2.1/sstream: -/usr/include/c++/14.2.1/bits/sstream.tcc: -/usr/include/c++/14.2.1/map: -/usr/include/c++/14.2.1/bits/stl_tree.h: -/usr/include/c++/14.2.1/bits/stl_map.h: -/usr/include/c++/14.2.1/bits/stl_multimap.h: -/usr/include/c++/14.2.1/queue: -/usr/include/c++/14.2.1/deque: -/usr/include/c++/14.2.1/bits/stl_deque.h: -/usr/include/c++/14.2.1/bits/deque.tcc: -/usr/include/c++/14.2.1/bits/stl_queue.h: -/usr/include/c++/14.2.1/set: -/usr/include/c++/14.2.1/bits/stl_set.h: -/usr/include/c++/14.2.1/bits/stl_multiset.h: -/usr/include/c++/14.2.1/stack: -/usr/include/c++/14.2.1/bits/stl_stack.h: -/usr/include/c++/14.2.1/typeindex: -/usr/include/c++/14.2.1/unordered_set: -/usr/include/c++/14.2.1/bits/unordered_set.h: -/usr/include/c++/14.2.1/variant: -/usr/include/c++/14.2.1/bits/parse_numbers.h: -/home/jasper/uni/i-edge/application/plugins/cpp-dump/./cpp-dump/hpp/export_command/.././iterable.hpp: -/usr/include/c++/14.2.1/iterator: -/usr/include/c++/14.2.1/bits/stream_iterator.h: -/home/jasper/uni/i-edge/application/plugins/cpp-dump/./cpp-dump/hpp/export_command/.././utility.hpp: -/home/jasper/uni/i-edge/application/plugins/cpp-dump/./cpp-dump/hpp/export_command/./skip_container.hpp: -/home/jasper/uni/i-edge/application/plugins/cpp-dump/./cpp-dump/hpp/export_var/export_var.hpp: -/home/jasper/uni/i-edge/application/plugins/cpp-dump/./cpp-dump/hpp/export_var/./export_arithmetic.hpp: -/usr/include/c++/14.2.1/iomanip: -/usr/include/c++/14.2.1/locale: -/usr/include/c++/14.2.1/bits/locale_facets_nonio.h: -/usr/include/c++/14.2.1/ctime: -/usr/include/c++/14.2.1/x86_64-pc-linux-gnu/bits/time_members.h: -/usr/include/c++/14.2.1/x86_64-pc-linux-gnu/bits/messages_members.h: -/usr/include/libintl.h: -/usr/include/c++/14.2.1/bits/codecvt.h: -/usr/include/c++/14.2.1/bits/locale_facets_nonio.tcc: -/usr/include/c++/14.2.1/bits/locale_conv.h: -/usr/include/c++/14.2.1/bits/quoted_string.h: -/home/jasper/uni/i-edge/application/plugins/cpp-dump/./cpp-dump/hpp/export_var/./export_asterisk.hpp: -/home/jasper/uni/i-edge/application/plugins/cpp-dump/./cpp-dump/hpp/export_var/././export_unsupported.hpp: -/home/jasper/uni/i-edge/application/plugins/cpp-dump/./cpp-dump/hpp/export_var/././export_var_fwd.hpp: -/home/jasper/uni/i-edge/application/plugins/cpp-dump/./cpp-dump/hpp/export_var/./export_container.hpp: -/home/jasper/uni/i-edge/application/plugins/cpp-dump/./cpp-dump/hpp/export_var/./export_enum.hpp: -/home/jasper/uni/i-edge/application/plugins/cpp-dump/./cpp-dump/hpp/export_var/./export_exception.hpp: -/home/jasper/uni/i-edge/application/plugins/cpp-dump/./cpp-dump/hpp/export_var/././export_object_common.hpp: -/home/jasper/uni/i-edge/application/plugins/cpp-dump/./cpp-dump/hpp/export_var/./export_map.hpp: -/home/jasper/uni/i-edge/application/plugins/cpp-dump/./cpp-dump/hpp/export_var/./export_object.hpp: -/home/jasper/uni/i-edge/application/plugins/cpp-dump/./cpp-dump/hpp/export_var/./export_object_generic.hpp: -/home/jasper/uni/i-edge/application/plugins/cpp-dump/./cpp-dump/hpp/export_var/./export_ostream.hpp: -/home/jasper/uni/i-edge/application/plugins/cpp-dump/./cpp-dump/hpp/export_var/./export_other/export_other.hpp: -/home/jasper/uni/i-edge/application/plugins/cpp-dump/./cpp-dump/hpp/export_var/./export_other/./export_es_value_t.hpp: -/home/jasper/uni/i-edge/application/plugins/cpp-dump/./cpp-dump/hpp/export_var/./export_other/./export_optional.hpp: -/home/jasper/uni/i-edge/application/plugins/cpp-dump/./cpp-dump/hpp/export_var/./export_other/./export_other_object.hpp: -/home/jasper/uni/i-edge/application/plugins/cpp-dump/./cpp-dump/hpp/export_var/./export_other/./export_type_info.hpp: -/usr/include/c++/14.2.1/cxxabi.h: -/usr/include/c++/14.2.1/x86_64-pc-linux-gnu/bits/cxxabi_tweaks.h: -/home/jasper/uni/i-edge/application/plugins/cpp-dump/./cpp-dump/hpp/export_var/./export_pointer.hpp: -/home/jasper/uni/i-edge/application/plugins/cpp-dump/./cpp-dump/hpp/export_var/./export_set.hpp: -/home/jasper/uni/i-edge/application/plugins/cpp-dump/./cpp-dump/hpp/export_var/./export_string.hpp: -/home/jasper/uni/i-edge/application/plugins/cpp-dump/./cpp-dump/hpp/export_var/./export_tuple.hpp: -/home/jasper/uni/i-edge/application/plugins/cpp-dump/./cpp-dump/hpp/export_var/./export_xixo.hpp: -/home/jasper/uni/i-edge/oss-cad-suite/share/yosys/include/kernel/log.h: -/home/jasper/uni/i-edge/oss-cad-suite/share/yosys/include/kernel/yosys_common.h: -/usr/include/c++/14.2.1/fstream: -/usr/include/c++/14.2.1/x86_64-pc-linux-gnu/bits/basic_file.h: -/usr/include/c++/14.2.1/x86_64-pc-linux-gnu/bits/c++io.h: -/usr/include/c++/14.2.1/bits/fstream.tcc: -/usr/include/c++/14.2.1/stdlib.h: -/usr/include/string.h: -/usr/include/strings.h: -/usr/lib/gcc/x86_64-pc-linux-gnu/14.2.1/include/limits.h: -/usr/lib/gcc/x86_64-pc-linux-gnu/14.2.1/include/syslimits.h: -/usr/include/limits.h: -/usr/include/bits/posix1_lim.h: -/usr/include/bits/local_lim.h: -/usr/include/linux/limits.h: -/usr/include/bits/posix2_lim.h: -/usr/include/bits/xopen_lim.h: -/usr/include/bits/uio_lim.h: -/usr/include/sys/stat.h: -/usr/include/bits/stat.h: -/usr/include/bits/struct_stat.h: -/usr/include/bits/statx.h: -/usr/include/linux/stat.h: -/usr/include/linux/types.h: -/usr/include/asm/types.h: -/usr/include/asm-generic/types.h: -/usr/include/asm-generic/int-ll64.h: -/usr/include/asm/bitsperlong.h: -/usr/include/asm-generic/bitsperlong.h: -/usr/include/linux/posix_types.h: -/usr/include/linux/stddef.h: -/usr/include/asm/posix_types.h: -/usr/include/asm/posix_types_64.h: -/usr/include/asm-generic/posix_types.h: -/usr/include/bits/statx-generic.h: -/usr/include/bits/types/struct_statx_timestamp.h: -/usr/include/bits/types/struct_statx.h: -/usr/include/tcl.h: -/usr/include/tclDecls.h: -/usr/include/tclPlatDecls.h: -/home/jasper/uni/i-edge/oss-cad-suite/share/yosys/include/kernel/hashlib.h: -/usr/include/c++/14.2.1/regex: -/usr/include/c++/14.2.1/bits/regex_constants.h: -/usr/include/c++/14.2.1/bits/regex_error.h: -/usr/include/c++/14.2.1/bits/regex_automaton.h: -/usr/include/c++/14.2.1/bits/regex_automaton.tcc: -/usr/include/c++/14.2.1/bits/regex_scanner.h: -/usr/include/c++/14.2.1/bits/regex_scanner.tcc: -/usr/include/c++/14.2.1/bits/regex_compiler.h: -/usr/include/c++/14.2.1/bits/regex_compiler.tcc: -/usr/include/c++/14.2.1/bits/regex.h: -/usr/include/c++/14.2.1/bits/regex.tcc: -/usr/include/c++/14.2.1/bits/regex_executor.h: -/usr/include/c++/14.2.1/bits/regex_executor.tcc: -/usr/include/sys/time.h: -/usr/include/sys/resource.h: -/usr/include/bits/resource.h: -/usr/include/bits/types/struct_rusage.h: -/usr/include/signal.h: -/usr/include/bits/signum-generic.h: -/usr/include/bits/signum-arch.h: -/usr/include/bits/types/sig_atomic_t.h: -/usr/include/bits/types/siginfo_t.h: -/usr/include/bits/types/__sigval_t.h: -/usr/include/bits/siginfo-arch.h: -/usr/include/bits/siginfo-consts.h: -/usr/include/bits/siginfo-consts-arch.h: -/usr/include/bits/types/sigval_t.h: -/usr/include/bits/types/sigevent_t.h: -/usr/include/bits/sigevent-consts.h: -/usr/include/bits/sigaction.h: -/usr/include/bits/sigcontext.h: -/usr/include/bits/types/stack_t.h: -/usr/include/sys/ucontext.h: -/usr/include/bits/sigstack.h: -/usr/include/bits/sigstksz.h: -/usr/include/unistd.h: -/usr/include/bits/posix_opt.h: -/usr/include/bits/environments.h: -/usr/include/bits/confname.h: -/usr/include/bits/getopt_posix.h: -/usr/include/bits/getopt_core.h: -/usr/include/bits/unistd_ext.h: -/usr/include/linux/close_range.h: -/usr/include/bits/ss_flags.h: -/usr/include/bits/types/struct_sigstack.h: -/usr/include/bits/sigthread.h: -/usr/include/bits/signal_ext.h: -/home/jasper/uni/i-edge/oss-cad-suite/share/yosys/include/kernel/yosys.h: -/home/jasper/uni/i-edge/oss-cad-suite/share/yosys/include/kernel/rtlil.h: -/home/jasper/uni/i-edge/oss-cad-suite/share/yosys/include/kernel/constids.inc: -/home/jasper/uni/i-edge/oss-cad-suite/share/yosys/include/kernel/register.h: -/home/jasper/uni/i-edge/oss-cad-suite/share/yosys/include/kernel/sigtools.h: -/home/jasper/uni/i-edge/oss-cad-suite/share/yosys/include/kernel/celltypes.h: diff --git a/plugins/critical_path.so b/plugins/critical_path.so deleted file mode 100755 index e831cb0..0000000 Binary files a/plugins/critical_path.so and /dev/null differ diff --git a/run.sh b/run.sh index ce5be4a..2063b96 100755 --- a/run.sh +++ b/run.sh @@ -1,276 +1,350 @@ #!/bin/bash FILE="" FILE_BASENAME="" MODULE="" LIBERTY_FILE="nem_basic_yosys.lib" +LIBERTY_USED="3T" visualize=0 # Function to display the menu and get user input show_menu() { # Define color codes GREEN='\033[0;32m' YELLOW='\033[1;33m' CYAN='\033[0;36m' RESET='\033[0m' echo "--------------------------------------------------------------" echo -e "${CYAN}Current file: $FILE with module: $MODULE${RESET}" echo -e "${YELLOW}Please select your options (you can choose multiple options):${RESET}" echo echo -e "${GREEN}1)${RESET} Synthesize NEM mapped replicate of Verilog implementation" echo -e "${GREEN}2)${RESET} Print initial design" echo -e "${GREEN}3)${RESET} Print out NEM optimized design" echo -e "${GREEN}4)${RESET} Perform SAT comparison" echo -e "${GREEN}5)${RESET} Export FSM as KISS2 format" echo -e "${GREEN}6)${RESET} Start shell with modules" echo -e "${GREEN}7)${RESET} Switch from normal 3T gate library to new 4T" echo -e "${GREEN}8)${RESET} Run test" echo -e "${GREEN}9)${RESET} Select a new Verilog file" echo -e "${GREEN}0)${RESET} Exit the program" echo "--------------------------------------------------------------" } # Request the file to process request_data(){ echo "-:- Enter the file to map to NEM" read -e -p "What is the file name?: " FILE read -p "What is the name of the top module? (press ENTER for the same as the file name): " MODULE if [ ! -f "$FILE" ]; then echo "File not found" request_data fi FILE_BASENAME=$(basename "$FILE" | cut -d. -f1) #echo $FILE_BASENAME if [ -z "$MODULE" ]; then #echo "setting name equal to that of the file" MODULE=$FILE_BASENAME fi } #run a yosys file specified to the function run_yosys_file() { local yosys_file="$1" local depth="$2" local additional_yosys_args="$3" # Start with basic sed commands sed_command=$(sed -e "s|{{FILE}}|$FILE|g" \ -e "s|{{FILE_BASENAME}}|$FILE_BASENAME|g" \ -e "s|{{MODULE}}|$MODULE|g" \ -e "s|{{LIBERTY_FILE}}|$LIBERTY_FILE|g" \ - -e "s|{{LIBERTY_USED}}|$( [[ $LIBERTY_FILE == *extended* ]] && echo '4T' || echo '3T' )|g"\ + -e "s|{{LIBERTY_USED}}|$LIBERTY_USED|g"\ "./yosys/${yosys_file}.ys") # Apply additional sed expressions based on DEPTH value if [[ $depth -eq 0 ]]; then sed_command=$(echo "$sed_command" | sed -e "/#IF {{DEPTH}}==0/d" \ -e "/#ELSE/,/#END/d") elif [[ $depth -eq 1 ]]; then sed_command=$(echo "$sed_command" | sed -e "/#IF {{DEPTH}}==0/,/#ELSE/d" \ -e "/#END/d") fi # Write the result to a temp file and run yosys echo "$sed_command" > "./temp/${yosys_file}_temp.ys" yosys $additional_yosys_args "./temp/${yosys_file}_temp.ys" } #Switch between 3T and 4T pass through gates switch_liberty() { if [ "$LIBERTY_FILE" == "nem_basic_yosys.lib" ]; then LIBERTY_FILE="nem_basic_yosys_extended.lib" + LIBERTY_USED="4T" echo "Now using extended (4T devices) libary" elif [ "$LIBERTY_FILE" == "nem_basic_yosys_extended.lib" ]; then LIBERTY_FILE="nem_basic_yosys.lib" + LIBERTY_USED="3T" echo "Now using normal libary" else echo "Unknown LIBERTY_FILE value: $LIBERTY_FILE" fi } +compare_area() { + # Extract area values from .stat files + local area_3T=$(grep "Chip area for module" "./temp/${FILE_BASENAME}_3T.stat" | awk '{print $6}') + local area_4T=$(grep "Chip area for module" "./temp/${FILE_BASENAME}_4T.stat" | awk '{print $6}') + + # Calculate ratio as (area_3T / area_4T) * 100 + local ratio=$(echo "($area_4T / $area_3T)" | bc -l) + + { + cat "./temp/${FILE_BASENAME}_3T.stat" + cat "./temp/${FILE_BASENAME}_4T.stat" + echo "Area 3T: $area_3T" + echo "Area 4T: $area_4T" + echo "Ratio 4T->3T: $ratio%" + } > "./output/${FILE_BASENAME}.ratio" + + # Output the areas and the ratio + echo "Area 3T: $area_3T, Area 4T: $area_4T, ratio 4T->3T: $ratio" +} + +create_report() { + +# Output CSV file name +csv_output="./output_report.csv" + +# Clear the CSV file by redirecting an empty string to it +> "$csv_output" + +# Write the CSV header +echo "Module,3T,4T,Ratio" > "$csv_output" +# Print the header of the table +printf "%-20s %-20s %-20s %-20s\n" "Module" "3T" "4T" "Ratio" +printf "%-20s %-20s %-20s %-20s\n" "-------" "------" "------" "-----" + +# Loop through each .ratio file in the directory +for file in ./output/*.ratio; do + # Check if the file exists + if [[ -f "$file" ]]; then + # Extract the module name + module_name=$(grep -m 1 -oP '(?<==== ).*(?= ===)' "$file") # Extract the module name + + # Extract areas using grep and sed + area1=$(grep "Chip area for module" "$file" | sed -n '1s/.*: //p') # Area 3T + area2=$(grep "Chip area for module" "$file" | sed -n '2s/.*: //p') # Area 4T + + # Extract the ratio + ratio=$(grep -oP '(?<=Ratio 4T->3T: )[\d.]+' "$file") # Extract the ratio + + # Append the data to the CSV file + echo "$module_name,$area1,$area2,$ratio" >> "$csv_output" + + # Print the results in the table format + printf "%-20s %-20s %-20s %-20s\n" "$module_name" "$area1" "$area2" "$ratio" + fi +done +} + #START ACTUAL EXECUTION #Check if in menu mode or in CLI mode if [ -z "$1" ]; then # in menu mode request_data else #in cli mode. Filter through all the parameters - while getopts ":d:f:m:v:x:" opt; do + while getopts ":d:f:m:v:x:r:" opt; do case $opt in d) # -d option for directory file_directory="$OPTARG" ;; f) # -f option for file FILE="$OPTARG" ;; m) # -m option for module (requires -f to be set) MODULE="$OPTARG" ;; v) # -v visualize before and after synthesis echo "found visualize" visualize=1 ;; x) # -x switch to extended nem liberty file echo "switching to 4T libert file" switch_liberty ;; + r) # -r generate report of output + echo "generating report" + create_report + ;; \?) # Invalid option echo "Invalid option: -$OPTARG" >&2 usage ;; :) # Missing argument for an option echo "Option -$OPTARG requires an argument." >&2 usage ;; esac done #running synthesis on al lthe files in the directory if [ -n "$file_directory" ]; then if [ -d "$file_directory" ]; then echo "Directory exists: $file_directory" for file in "$file_directory"/*.v; do # Check if it's a regular file if [ -f "$file" ]; then # Use grep to find the line that starts with 'module' and extract the module name module_name=$(grep -m 1 -oP '^module\s+\K\w+' "$file") # If the module name is found, print the file path and the module name if [ -n "$module_name" ]; then echo "File: $file" echo "Module: $module_name" echo FILE=$file FILE_BASENAME=$(basename "$FILE" | cut -d. -f1) MODULE=$module_name #synthesise the file + echo "running sequence of test commands" + run_yosys_file "synth_nem" 0 + #run_yosys_file "sat_test" 0 + switch_liberty run_yosys_file "synth_nem" 0 + #run_yosys_file "sat_test" 0 + compare_area + switch_liberty else echo "No module found in file: $file" echo fi fi done #done with synthesis + create_report exit 0 else echo "Directory does not exist: $file_directory" exit 1 fi fi #running synthesis on the file requested if [ -n "$FILE" ]; then if [ -n "$MODULE" ]; then if [ -f "$FILE" ]; then echo "File exists: $file" echo "Module: $module" FILE_BASENAME=$(basename "$FILE" | cut -d. -f1) run_yosys_file "synth_nem" 0 if [ "$visualize" -eq 1 ]; then run_yosys_file "visual" 0 run_yosys_file "visual" 1 else echo "no visualize set" fi exit 0 else echo "File does not exist: $file" exit 1 fi else echo "Missing module (-m) for the file (-f)." usage fi fi + exit 1 fi # Loop to allow multiple selections while true; do show_menu read -p "Enter your choices (e.g., 1 2 3, or 0 to finish): " -a choices for choice in "${choices[@]}"; do case $choice in 1) echo "performing synthesis" run_yosys_file "synth_nem" 0 ;; 2) echo "Plotting the initial design with $FILE and $MODULE" run_yosys_file "visual" 0 ;; 3) echo "Plotting the NEM design with $FILE and $MODULE" run_yosys_file "visual" 1 ;; 4) echo "Performing SAT test on $FILE and $MODULE" run_yosys_file "sat_test" 0 ;; 5) echo "Exporting FSM overview of the design" make clean #to make sure no previous .kiss2 file remains run_yosys_file "fsm_export" 0 if [ -f "./temp/${FILE_BASENAME}.kiss2" ]; then # If the file exists, run the python script and xdot python3 ./yosys/kiss2dot.py ./temp/${FILE_BASENAME}.kiss2 > ./temp/${FILE_BASENAME}.dot xdot ./temp/${FILE_BASENAME}.dot else # If the file doesn't exist, print a message echo "Could not detect an FSM in ${MODULE}" fi ;; 6) echo "Plotting the initial design with $FILE and $MODULE" make clean #Clean directories run_yosys_file "synth_nem" 0 make all #build plugins ls ./plugins/*.so run_yosys_file "start_shell" 0 "$(for so_file in ./plugins/*.so; do echo -m "$so_file"; done)" #create a list of all plugins to load ;; 7) echo "Switching libary" switch_liberty ;; 8) echo "running sequence of test commands" run_yosys_file "synth_nem" 0 run_yosys_file "visual" 1 switch_liberty run_yosys_file "synth_nem" 0 run_yosys_file "visual" 1 + compare_area ;; 9) echo "requesting new module" request_data ;; 0) echo "exiting" break 2 ;; *) echo "Invalid choice. Please select a number between 1 and 6." ;; esac done echo done diff --git a/sources/counter-tb.v b/sources/counter-tb.v deleted file mode 100644 index 9c6ec01..0000000 --- a/sources/counter-tb.v +++ /dev/null @@ -1,46 +0,0 @@ -`timescale 10ns/1ns - -module tb_counter; - - initial begin - $display("Testing counter"); - $dumpfile("counter_tb.vcd"); - $dumpvars(0, tb_counter); - end - - // Inputs - reg clk = 0; - reg rst = 0; - reg mode = 0; - - // Outputs - wire signed [9:0] cnt; - - // Instantiating unit under test (UUT) - counter uut ( - .clk(clk), - .rst(rst), - .mode(mode), - .cnt(cnt) - ); - - // Generating clock - always #5 clk = !clk; - - // Testing the design - initial begin - - // Resetting the design - #5 rst = 1; - #10 rst = 0; - #17 mode = !mode; - #22 mode = !mode; - #12 mode = !mode; - #100 mode = !mode; - - $finish; - end - - initial $monitor("At time %t, value = %h (%0d)", $time, cnt, cnt); - -endmodule diff --git a/sources/counter_simple.v b/sources/counter_simple.v deleted file mode 100644 index 19d2ab7..0000000 --- a/sources/counter_simple.v +++ /dev/null @@ -1,14 +0,0 @@ -module counter ( clk, rst, cnt); - - input wire clk; - input wire rst; - output reg signed[1:0] cnt; - - always @(posedge clk) begin - if (rst) - cnt <= 2'sd0; - else begin - cnt <= cnt + 2'sd1; - end - end -endmodule \ No newline at end of file diff --git a/sources/fsm.v b/sources/fsm.v deleted file mode 100644 index 7919b00..0000000 --- a/sources/fsm.v +++ /dev/null @@ -1,32 +0,0 @@ -module fsm(input clk, rst, ctrl, output [3:0] O); - reg [1:0] state; - always @(posedge clk) begin - O <= 0; - if (rst) begin - state <= 0; - end else case (state) - 0: begin - state <= ctrl ? 1 : 2; - O <= 1; - end - 1: begin - O <= 2; - if (ctrl) begin - state <= 2; - O <= 3; - end - end - 2: begin - O <= 4; - if (ctrl) begin - state <= 3; - O <= 5; - end - end - 3: begin - if (!ctrl) - state <= 2'b00; - end - endcase - end -endmodule \ No newline at end of file diff --git a/sources/test_set/adder2.v b/sources/test_set/adder2.v index 6054406..a7e133f 100644 --- a/sources/test_set/adder2.v +++ b/sources/test_set/adder2.v @@ -1,12 +1,12 @@ module adder2 (A, B, Ci, S, Co); input[1:0] A; input[1:0] B; input Ci; output[1:0] S; output Co; -wire[2:0] Sum3; -assign Sum3 = A + B + Ci ; -assign S = Sum3[1:0] ; -assign Co = Sum3[2] ; +wire[2:0] Sum5; +assign Sum5 = A + B + Ci ; +assign S = Sum5[1:0] ; +assign Co = Sum5[2] ; endmodule diff --git a/sources/test_set/adder64.v b/sources/test_set/adder64.v new file mode 100644 index 0000000..f87213d --- /dev/null +++ b/sources/test_set/adder64.v @@ -0,0 +1,12 @@ +module adder32 (A, B, Ci, S, Co); + +input[63:0] A; +input[63:0] B; +input Ci; +output[63:0] S; +output Co; +wire[64:0] Sum33; +assign Sum33 = A + B + Ci ; +assign S = Sum33[63:0] ; +assign Co = Sum33[64] ; +endmodule diff --git a/sources/test_set/alu.v b/sources/test_set/alu32.v similarity index 98% rename from sources/test_set/alu.v rename to sources/test_set/alu32.v index b251268..ffa8214 100644 --- a/sources/test_set/alu.v +++ b/sources/test_set/alu32.v @@ -1,51 +1,51 @@ -module alu ( +module alu32( input clk, input rst, input [31:0] a, input [31:0] b, input [2:0] opcode, // 000: add, 001: sub, 010: and, 011: or, 100: xor output reg [31:0] result ); reg [31:0] stage1_a, stage1_b; reg [2:0] stage1_opcode; reg [31:0] stage2_result; // Stage 1: Register Inputs always @(posedge clk) begin if (rst) begin stage1_a <= 0; stage1_b <= 0; stage1_opcode <= 0; end else begin stage1_a <= a; stage1_b <= b; stage1_opcode <= opcode; end end // Stage 2: ALU Operations always @(posedge clk) begin if (rst) begin stage2_result <= 0; end else begin case (stage1_opcode) 3'b000: stage2_result <= stage1_a + stage1_b; // Add 3'b001: stage2_result <= stage1_a - stage1_b; // Subtract 3'b010: stage2_result <= stage1_a & stage1_b; // AND 3'b011: stage2_result <= stage1_a | stage1_b; // OR 3'b100: stage2_result <= stage1_a ^ stage1_b; // XOR default: stage2_result <= 0; endcase end end // Stage 3: Output always @(posedge clk) begin if (rst) begin result <= 0; end else begin result <= stage2_result; end end endmodule diff --git a/sources/alu.v b/sources/test_set/alu8.v similarity index 74% rename from sources/alu.v rename to sources/test_set/alu8.v index 60447bc..5dbf854 100644 --- a/sources/alu.v +++ b/sources/test_set/alu8.v @@ -1,51 +1,51 @@ -module alu ( +module alu8( input clk, input rst, - input [31:0] a, - input [31:0] b, + input [7:0] a, + input [7:0] b, input [2:0] opcode, // 000: add, 001: sub, 010: and, 011: or, 100: xor - output reg [31:0] result + output reg [7:0] result ); - reg [31:0] stage1_a, stage1_b; + reg [7:0] stage1_a, stage1_b; reg [2:0] stage1_opcode; - reg [31:0] stage2_result; + reg [7:0] stage2_result; // Stage 1: Register Inputs always @(posedge clk) begin if (rst) begin stage1_a <= 0; stage1_b <= 0; stage1_opcode <= 0; end else begin stage1_a <= a; stage1_b <= b; stage1_opcode <= opcode; end end // Stage 2: ALU Operations always @(posedge clk) begin if (rst) begin stage2_result <= 0; end else begin case (stage1_opcode) 3'b000: stage2_result <= stage1_a + stage1_b; // Add 3'b001: stage2_result <= stage1_a - stage1_b; // Subtract - //3'b010: stage2_result <= stage1_a & stage1_b; // AND - //3'b011: stage2_result <= stage1_a | stage1_b; // OR - //3'b100: stage2_result <= stage1_a ^ stage1_b; // XOR + 3'b010: stage2_result <= stage1_a & stage1_b; // AND + 3'b011: stage2_result <= stage1_a | stage1_b; // OR + 3'b100: stage2_result <= stage1_a ^ stage1_b; // XOR default: stage2_result <= 0; endcase end end // Stage 3: Output always @(posedge clk) begin if (rst) begin result <= 0; end else begin result <= stage2_result; end end endmodule diff --git a/sources/counter.v b/sources/test_set/counter_comlex.v similarity index 100% rename from sources/counter.v rename to sources/test_set/counter_comlex.v diff --git a/sources/test_set/divider1.v b/sources/test_set/divider1.v new file mode 100644 index 0000000..407e091 --- /dev/null +++ b/sources/test_set/divider1.v @@ -0,0 +1,23 @@ +module divider1 #(parameter BITWIDTH = 1) (A, B, Q, R, valid); + + // Input and Output Declarations + input [BITWIDTH-1:0] A; // A is the dividend + input [BITWIDTH-1:0] B; // B is the divisor + output reg [BITWIDTH-1:0] Q; // Q is the quotient + output reg [BITWIDTH-1:0] R; // R is the remainder + output reg valid; // Valid signal to indicate division is successful + + // Division Process + always @* begin + if (B == 0) begin + Q = {BITWIDTH{1'bx}}; // Undefined if divisor is zero + R = {BITWIDTH{1'bx}}; // Undefined if divisor is zero + valid = 0; // Invalid operation + end else begin + Q = A / B; // Calculate the quotient + R = A % B; // Calculate the remainder + valid = 1; // Division is valid + end + end + +endmodule \ No newline at end of file diff --git a/sources/test_set/divider2.v b/sources/test_set/divider2.v new file mode 100644 index 0000000..4d15728 --- /dev/null +++ b/sources/test_set/divider2.v @@ -0,0 +1,23 @@ +module divider2 #(parameter BITWIDTH = 2) (A, B, Q, R, valid); + + // Input and Output Declarations + input [BITWIDTH-1:0] A; // A is the dividend + input [BITWIDTH-1:0] B; // B is the divisor + output reg [BITWIDTH-1:0] Q; // Q is the quotient + output reg [BITWIDTH-1:0] R; // R is the remainder + output reg valid; // Valid signal to indicate division is successful + + // Division Process + always @* begin + if (B == 0) begin + Q = {BITWIDTH{1'bx}}; // Undefined if divisor is zero + R = {BITWIDTH{1'bx}}; // Undefined if divisor is zero + valid = 0; // Invalid operation + end else begin + Q = A / B; // Calculate the quotient + R = A % B; // Calculate the remainder + valid = 1; // Division is valid + end + end + +endmodule \ No newline at end of file diff --git a/sources/test_set/divider32.v b/sources/test_set/divider32.v new file mode 100644 index 0000000..909f0b1 --- /dev/null +++ b/sources/test_set/divider32.v @@ -0,0 +1,23 @@ +module divider32 #(parameter BITWIDTH = 32) (A, B, Q, R, valid); + + // Input and Output Declarations + input [BITWIDTH-1:0] A; // A is the dividend + input [BITWIDTH-1:0] B; // B is the divisor + output reg [BITWIDTH-1:0] Q; // Q is the quotient + output reg [BITWIDTH-1:0] R; // R is the remainder + output reg valid; // Valid signal to indicate division is successful + + // Division Process + always @* begin + if (B == 0) begin + Q = {BITWIDTH{1'bx}}; // Undefined if divisor is zero + R = {BITWIDTH{1'bx}}; // Undefined if divisor is zero + valid = 0; // Invalid operation + end else begin + Q = A / B; // Calculate the quotient + R = A % B; // Calculate the remainder + valid = 1; // Division is valid + end + end + +endmodule \ No newline at end of file diff --git a/sources/test_set/divider4.v b/sources/test_set/divider4.v new file mode 100644 index 0000000..527bb83 --- /dev/null +++ b/sources/test_set/divider4.v @@ -0,0 +1,23 @@ +module divider4 #(parameter BITWIDTH = 4) (A, B, Q, R, valid); + + // Input and Output Declarations + input [BITWIDTH-1:0] A; // A is the dividend + input [BITWIDTH-1:0] B; // B is the divisor + output reg [BITWIDTH-1:0] Q; // Q is the quotient + output reg [BITWIDTH-1:0] R; // R is the remainder + output reg valid; // Valid signal to indicate division is successful + + // Division Process + always @* begin + if (B == 0) begin + Q = {BITWIDTH{1'bx}}; // Undefined if divisor is zero + R = {BITWIDTH{1'bx}}; // Undefined if divisor is zero + valid = 0; // Invalid operation + end else begin + Q = A / B; // Calculate the quotient + R = A % B; // Calculate the remainder + valid = 1; // Division is valid + end + end + +endmodule \ No newline at end of file diff --git a/sources/test_set/divider8.v b/sources/test_set/divider8.v new file mode 100644 index 0000000..707fa5c --- /dev/null +++ b/sources/test_set/divider8.v @@ -0,0 +1,23 @@ +module divider8 #(parameter BITWIDTH = 8) (A, B, Q, R, valid); + + // Input and Output Declarations + input [BITWIDTH-1:0] A; // A is the dividend + input [BITWIDTH-1:0] B; // B is the divisor + output reg [BITWIDTH-1:0] Q; // Q is the quotient + output reg [BITWIDTH-1:0] R; // R is the remainder + output reg valid; // Valid signal to indicate division is successful + + // Division Process + always @* begin + if (B == 0) begin + Q = {BITWIDTH{1'bx}}; // Undefined if divisor is zero + R = {BITWIDTH{1'bx}}; // Undefined if divisor is zero + valid = 0; // Invalid operation + end else begin + Q = A / B; // Calculate the quotient + R = A % B; // Calculate the remainder + valid = 1; // Division is valid + end + end + +endmodule \ No newline at end of file diff --git a/sources/sum.v b/sources/test_set/flipflop.v similarity index 100% rename from sources/sum.v rename to sources/test_set/flipflop.v diff --git a/sources/test_set/multiplier2.v b/sources/test_set/multiplier2.v new file mode 100644 index 0000000..d475e01 --- /dev/null +++ b/sources/test_set/multiplier2.v @@ -0,0 +1,11 @@ +module multiplier2 #(parameter BITWIDTH = 2) (A, B, P); + + // Input and Output Declarations + input [BITWIDTH-1:0] A; // A is an input of size BITWIDTH + input [BITWIDTH-1:0] B; // B is an input of size BITWIDTH + output [2*BITWIDTH-1:0] P; // P is an output of size 2*BITWIDTH + + // Multiply A and B + assign P = A * B; // Calculate the product + +endmodule \ No newline at end of file diff --git a/sources/test_set/multiplier32.v b/sources/test_set/multiplier32.v new file mode 100644 index 0000000..f1fafea --- /dev/null +++ b/sources/test_set/multiplier32.v @@ -0,0 +1,11 @@ +module multiplier32 #(parameter BITWIDTH = 32) (A, B, P); + + // Input and Output Declarations + input [BITWIDTH-1:0] A; // A is an input of size BITWIDTH + input [BITWIDTH-1:0] B; // B is an input of size BITWIDTH + output [2*BITWIDTH-1:0] P; // P is an output of size 2*BITWIDTH + + // Multiply A and B + assign P = A * B; // Calculate the product + +endmodule \ No newline at end of file diff --git a/sources/test_set/multiplier4.v b/sources/test_set/multiplier4.v new file mode 100644 index 0000000..4d72ecc --- /dev/null +++ b/sources/test_set/multiplier4.v @@ -0,0 +1,11 @@ +module multiplier4 #(parameter BITWIDTH = 4) (A, B, P); + + // Input and Output Declarations + input [BITWIDTH-1:0] A; // A is an input of size BITWIDTH + input [BITWIDTH-1:0] B; // B is an input of size BITWIDTH + output [2*BITWIDTH-1:0] P; // P is an output of size 2*BITWIDTH + + // Multiply A and B + assign P = A * B; // Calculate the product + +endmodule \ No newline at end of file diff --git a/sources/test_set/multiplier8.v b/sources/test_set/multiplier8.v new file mode 100644 index 0000000..ac3bd37 --- /dev/null +++ b/sources/test_set/multiplier8.v @@ -0,0 +1,11 @@ +module multiplier8 #(parameter BITWIDTH = 8) (A, B, P); + + // Input and Output Declarations + input [BITWIDTH-1:0] A; // A is an input of size BITWIDTH + input [BITWIDTH-1:0] B; // B is an input of size BITWIDTH + output [2*BITWIDTH-1:0] P; // P is an output of size 2*BITWIDTH + + // Multiply A and B + assign P = A * B; // Calculate the product + +endmodule \ No newline at end of file diff --git a/sources/test_set/substractor2.v b/sources/test_set/substractor2.v new file mode 100644 index 0000000..a135c5c --- /dev/null +++ b/sources/test_set/substractor2.v @@ -0,0 +1,19 @@ + +module substractor2 #(parameter BITWIDTH = 2) (A, B, Ci, S, Co); + + // Input and Output Declarations + input [BITWIDTH-1:0] A; // A is an input of size BITWIDTH + input [BITWIDTH-1:0] B; // B is an input of size BITWIDTH + input Ci; // Carry-in (used for borrow) + output [BITWIDTH-1:0] S; // S is an output of size BITWIDTH + output Co; // Carry-out (borrow-out) + + // Internal Wire Declaration + wire [BITWIDTH:0] Diff; // Difference wire (one extra bit for borrow) + + // Assign Statements for Subtraction + assign Diff = A - B - Ci; // Calculate the difference + assign S = Diff[BITWIDTH-1:0]; // Assign the lower BITWIDTH bits to S + assign Co = Diff[BITWIDTH]; // Assign the borrow-out + +endmodule \ No newline at end of file diff --git a/sources/test_set/substractor32.v b/sources/test_set/substractor32.v new file mode 100644 index 0000000..91aaa3c --- /dev/null +++ b/sources/test_set/substractor32.v @@ -0,0 +1,19 @@ + +module substractor32 #(parameter BITWIDTH = 32) (A, B, Ci, S, Co); + + // Input and Output Declarations + input [BITWIDTH-1:0] A; // A is an input of size BITWIDTH + input [BITWIDTH-1:0] B; // B is an input of size BITWIDTH + input Ci; // Carry-in (used for borrow) + output [BITWIDTH-1:0] S; // S is an output of size BITWIDTH + output Co; // Carry-out (borrow-out) + + // Internal Wire Declaration + wire [BITWIDTH:0] Diff; // Difference wire (one extra bit for borrow) + + // Assign Statements for Subtraction + assign Diff = A - B - Ci; // Calculate the difference + assign S = Diff[BITWIDTH-1:0]; // Assign the lower BITWIDTH bits to S + assign Co = Diff[BITWIDTH]; // Assign the borrow-out + +endmodule \ No newline at end of file diff --git a/sources/test_set/substractor4.v b/sources/test_set/substractor4.v new file mode 100644 index 0000000..62d26bd --- /dev/null +++ b/sources/test_set/substractor4.v @@ -0,0 +1,19 @@ + +module substractor4 #(parameter BITWIDTH = 4) (A, B, Ci, S, Co); + + // Input and Output Declarations + input [BITWIDTH-1:0] A; // A is an input of size BITWIDTH + input [BITWIDTH-1:0] B; // B is an input of size BITWIDTH + input Ci; // Carry-in (used for borrow) + output [BITWIDTH-1:0] S; // S is an output of size BITWIDTH + output Co; // Carry-out (borrow-out) + + // Internal Wire Declaration + wire [BITWIDTH:0] Diff; // Difference wire (one extra bit for borrow) + + // Assign Statements for Subtraction + assign Diff = A - B - Ci; // Calculate the difference + assign S = Diff[BITWIDTH-1:0]; // Assign the lower BITWIDTH bits to S + assign Co = Diff[BITWIDTH]; // Assign the borrow-out + +endmodule \ No newline at end of file diff --git a/sources/test_set/substractor64.v b/sources/test_set/substractor64.v new file mode 100644 index 0000000..2df38d9 --- /dev/null +++ b/sources/test_set/substractor64.v @@ -0,0 +1,19 @@ + +module substractor64 #(parameter BITWIDTH = 64) (A, B, Ci, S, Co); + + // Input and Output Declarations + input [BITWIDTH-1:0] A; // A is an input of size BITWIDTH + input [BITWIDTH-1:0] B; // B is an input of size BITWIDTH + input Ci; // Carry-in (used for borrow) + output [BITWIDTH-1:0] S; // S is an output of size BITWIDTH + output Co; // Carry-out (borrow-out) + + // Internal Wire Declaration + wire [BITWIDTH:0] Diff; // Difference wire (one extra bit for borrow) + + // Assign Statements for Subtraction + assign Diff = A - B - Ci; // Calculate the difference + assign S = Diff[BITWIDTH-1:0]; // Assign the lower BITWIDTH bits to S + assign Co = Diff[BITWIDTH]; // Assign the borrow-out + +endmodule \ No newline at end of file diff --git a/sources/test_set/substractor8.v b/sources/test_set/substractor8.v new file mode 100644 index 0000000..65f8645 --- /dev/null +++ b/sources/test_set/substractor8.v @@ -0,0 +1,19 @@ + +module substractor8 #(parameter BITWIDTH = 8) (A, B, Ci, S, Co); + + // Input and Output Declarations + input [BITWIDTH-1:0] A; // A is an input of size BITWIDTH + input [BITWIDTH-1:0] B; // B is an input of size BITWIDTH + input Ci; // Carry-in (used for borrow) + output [BITWIDTH-1:0] S; // S is an output of size BITWIDTH + output Co; // Carry-out (borrow-out) + + // Internal Wire Declaration + wire [BITWIDTH:0] Diff; // Difference wire (one extra bit for borrow) + + // Assign Statements for Subtraction + assign Diff = A - B - Ci; // Calculate the difference + assign S = Diff[BITWIDTH-1:0]; // Assign the lower BITWIDTH bits to S + assign Co = Diff[BITWIDTH]; // Assign the borrow-out + +endmodule \ No newline at end of file diff --git a/yosys/synth_nem.ys b/yosys/synth_nem.ys index 8f96d9d..68b2550 100644 --- a/yosys/synth_nem.ys +++ b/yosys/synth_nem.ys @@ -1,52 +1,56 @@ echo on # read the information read_verilog {{FILE}} hierarchy -top {{MODULE}} #unroll the information proc; opt -full;; #flatten the counter to its lower parts flatten;; fsm ##show -prefix ./temp/{{MODULE}}_post_flatten {{MODULE}} #optimize opt -full;; ##show -prefix ./temp/{{MODULE}}_post_flatten_opt {{MODULE}} #Map to gates using the standard techmap available techmap #opt -full;; #mapping memory dfflibmap -liberty ./{{LIBERTY_FILE}};; #optimizing possible memory mapping opt -full;; ##show -prefix ./temp/{{MODULE}}_post_techmap {{MODULE}} +#USE BLIF TO IMPORT TO ABC #write_blif ./temp/{{MODULE}}_intermediate.blif +#USE JSON TO IMPORT TO SVG TOOL: https://neilturley.dev/netlistsvg/ +#write_json ./temp/{{FILE_BASENAME}}_{{LIBERTY_USED}}.json + #Replace basic combinational gates with those in our standard cell library #abc -liberty ./nem_basic_yosys.lib -script ./abc_script -showtmp abc -liberty ./{{LIBERTY_FILE}} ##show -prefix ./temp/{{MODULE}}_post_opt {{MODULE}} #Check if we can optimize further opt -full;; #Write to file rename {{MODULE}} {{MODULE}}_nem write_verilog ./temp/{{FILE_BASENAME}}_nem.v #Output stats tee -o ./temp/{{FILE_BASENAME}}_{{LIBERTY_USED}}.stat stat -liberty ./{{LIBERTY_FILE}} diff --git a/yosys/visual.ys b/yosys/visual.ys index 13fdfe0..b1118ab 100644 --- a/yosys/visual.ys +++ b/yosys/visual.ys @@ -1,23 +1,23 @@ echo on read_liberty ./nem_basic_yosys_extended.lib #IF {{DEPTH}}==0 read_verilog {{FILE}} hierarchy -top {{MODULE}} proc clean show -prefix ./temp/{{MODULE}}_initial -color darkred t:$mux -color green t:$dff -color purple t:$ge -color darkblue t:$ne -color blue t:$le -color maroon t:$add -enum {{MODULE}} stat #ELSE read_verilog ./temp/{{FILE_BASENAME}}_nem.v hierarchy -top {{MODULE}}_nem -show -prefix ./temp/{{MODULE}}_synthesized_{{LIBERTY_USED}} -color orange t:inv_3T -color darkred t:nor_3T -color green t:and_3T -color purple t:or_3T -color darkblue t:nand_3T -color blue t:xnor_3T -color maroon t:D_FF -enum {{MODULE}}_nem +show -prefix ./temp/{{MODULE}}_synthesized_{{LIBERTY_USED}} -color orange t:inv* -color darkred t:nor* -color green t:and* -color orange t:xor* -color purple t:or* -color darkblue t:nand* -color red t:xnor* -color maroon t:D_FF -enum {{MODULE}}_nem stat #END