Source code for frontend.writer.verilogWriter.writer

#!/usr/bin/env python
# -*- encoding=utf8 -*-

"""
Author: Hanyu Wang
Created time: 2024-07-19 00:28:31
Last Modified by: Hanyu Wang
Last Modified time: 2024-07-23 23:20:41
"""

from ...modules import *
from .headerWriter import *
from .moduleWriter import *


def netlistToString(netlist: Netlist) -> str:
    verilogStr = ""
    verilogStr += netlist.getMacroString() + netlist.getTimescaleString() + "\n"

    for moduleName in netlist.getModuleNames():
        module = netlist.getModule(moduleName)
        verilogStr += moduleToString(module) + "\n"

    return verilogStr


[docs]def writeVerilog(netlist: Netlist | Module, filename: str): """ Write the netlist to a verilog file :param netlist: the netlist or module to write :type netlist: Netlist | Module :param filename: the name of the file to write :type filename: str .. note:: The input can be either a netlist or a module Example usage: .. code-block:: python netlist = readVerilog("path/to/verilog/file.v") writeVerilog(netlist, "path/to/output/file.v") .. seealso:: Related functions: :func:`readVerilog` """ assert isinstance(netlist, Netlist) or isinstance( netlist, Module ), "netlist should be an instance of Netlist or Module" with open(filename, "w") as f: if isinstance(netlist, Module): f.write(moduleToString(netlist)) else: f.write(netlistToString(netlist))