Files in this directory were copied from Yosys sources and slightly adapted.
Original sources and their license available at https://github.com/YosysHQ/yosys.

Copied files, their sources, changes & notes:

- const2ast.cc: yosys/frontends/verilog/const2ast.cc (rev. 72787f5)
  - The file is a part of Yosys Verilog frontend, which is not publicly exposed
    by Yosys. Copy has been made to avoid relying on internal details.
  - Changes:
    - C++ includes adapted to not rely on `verilog_frontend.h` file.
    - Removed Yosys namespace; `const2ast()` has been placed inside
      `systemverilog_plugin` namespace to avoid conflicts with the symbol from
      Yosys when statically linking.
- simplify.cc: yosys/frontends/ast/simplify.cc (rev. ceef00c)
  - The file is a part of Yosys AST frontend. It has been placed in the plugin,
    as in some cases we need to adjust it to support certain functionalities
    in the plugin. Since it is included now in the plugin, we can skip caling
    the original Yosys' simplify() during AST preparation. The original Yosys'
    simplify() is only called in uhdmcommonfrontend.cc when Yosys' process()
    is called, after having AST done.
  - Changes:
    - Removed unneeded code and member functions of AstNode::
    - Modified usage of AstNode:: members that are called from the Yosys'
      AstNode:: struct.
  - The file will be extended in the future instead of simplify_sv()
    in UhdmAst.cc, and it will be moved to other directory then.

Non-copied files placed here for interfacing purposes:

- const2ast.h
- simplify.h
