Add xml formatting code Signed-off-by: Karol Gugala <kgugala@antmicro.com>
diff --git a/v2x/vlog_to_model.py b/v2x/vlog_to_model.py index 4280d0d..91fc0e0 100755 --- a/v2x/vlog_to_model.py +++ b/v2x/vlog_to_model.py
@@ -26,7 +26,7 @@ from .yosys import run from .yosys.json import YosysJSON -from .lib import xmlinc +from .xml import xmlinc def is_clock_assoc(infiles, module, clk, port, direction):
diff --git a/v2x/vlog_to_pbtype.py b/v2x/vlog_to_pbtype.py index 9cb7a6c..b43fd50 100755 --- a/v2x/vlog_to_pbtype.py +++ b/v2x/vlog_to_pbtype.py
@@ -62,7 +62,7 @@ from .yosys import run from .yosys.json import YosysJSON -from .lib import xmlinc # noqa: E402 +from .xml import xmlinc # noqa: E402 def normalize_pb_name(pb_name):
diff --git a/v2x/xml/xmlinc.py b/v2x/xml/xmlinc.py new file mode 100644 index 0000000..b611534 --- /dev/null +++ b/v2x/xml/xmlinc.py
@@ -0,0 +1,32 @@ +#!/usr/bin/env python3 +import lxml.etree as ET +import os + +xi_url = "http://www.w3.org/2001/XInclude" + +xi_include = "{{{}}}include".format(xi_url) + +ET.register_namespace('xi', xi_url) + + +def make_relhref(outfile, href): + outpath = os.path.dirname(os.path.abspath(outfile)) + relpath = os.path.relpath(os.path.dirname(os.path.abspath(href)), outpath) + return os.path.join(relpath, os.path.basename(href)) + + +def include_xml(parent, href, outfile, xptr=None): + """ + Generate an XML include, using a relative path. + + Inputs + ------ + parent : XML element to insert include into + href : path to included file + outfile : path to output file, for relative path generation + xptr : optional value for xpointer attribute + """ + xattrs = {'href': make_relhref(outfile, href)} + if xptr is not None: + xattrs["xpointer"] = xptr + return ET.SubElement(parent, xi_include, xattrs)