Source code for edalize.icestorm

# Copyright edalize contributors
# Licensed under the 2-Clause BSD License, see LICENSE for details.
# SPDX-License-Identifier: BSD-2-Clause

import os.path

from edalize.edatool import Edatool
from edalize.nextpnr import Nextpnr
from edalize.yosys import Yosys
from edalize.flows.icestorm import Icestorm as Icestorm2


[docs] class Icestorm(Edatool): argtypes = ["vlogdefine", "vlogparam"]
[docs] @classmethod def get_doc(cls, api_ver): if api_ver == 0: options = { "members": [ { "name": "pnr", "type": "String", "desc": "Select Place & Route tool. Legal values are *arachne* for Arachne-PNR, *next* for nextpnr or *none* to only perform synthesis. Default is next", }, ], "lists": [ { "name": "arachne_pnr_options", "type": "String", "desc": "Additional options for Arachnhe PNR", }, { "name": "frontends", "type": "String", "desc": "fixme", }, ], } Edatool._extend_options(options, Yosys) Edatool._extend_options(options, Nextpnr) return { "description": "Open source toolchain for Lattice iCE40 FPGAs. Uses yosys for synthesis and arachne-pnr or nextpnr for Place & Route", "members": options["members"], "lists": options["lists"], }
def __init__(self, edam=None, work_root=None, eda_api=None, verbose=True): super().__init__(edam, work_root, eda_api, verbose) _tool_opts = edam["tool_options"]["icestorm"] edam["flow_options"] = edam["tool_options"]["icestorm"] self.icestorm = Icestorm2(edam, work_root, verbose)
[docs] def configure_main(self): self.icestorm.configure()
[docs] def build_pre(self): pass
[docs] def build_main(self): self.icestorm.build()
[docs] def build_post(self): pass