Ejemplo n.º 1
0
    def get_doc(cls, api_ver):
        if api_ver == 0:
            options = {
                "lists": [
                    {
                        "name": "p_r_options",
                        "type": "string",
                        "desc": "Additional option for p_r",
                    },
                ],
                "members": [
                    {
                        "name":
                        "device",
                        "type":
                        "String",
                        "desc":
                        "Required device option for p_r command (e.g. CCGM1A1)",
                    },
                ],
            }

            Edatool._extend_options(options, Yosys)

            return {
                "description": "backend for CologneChip GateMate.",
                "members": options["members"],
                "lists": options["lists"],
            }
Ejemplo n.º 2
0
    def get_doc(cls, api_ver):
        if api_ver == 0:
            options = {
                "lists": [],
                "members": [
                    {
                        "name":
                        "device",
                        "type":
                        "String",
                        "desc":
                        "Required device option for nextpnr-nexus command (e.g. LIFCL-40-9BG400C)",
                    },
                ],
            }

            Edatool._extend_options(options, Yosys)
            Edatool._extend_options(options, Nextpnr)

            return {
                "description":
                "Project Oxide enables a fully open-source flow for Nexus FPGAs using Yosys for Verilog synthesis and nextpnr for place and route",
                "members": options["members"],
                "lists": options["lists"],
            }
Ejemplo n.º 3
0
    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'
                    },
                ]
            }
            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']
            }
Ejemplo n.º 4
0
    def get_doc(cls, api_ver):
        if api_ver == 0:
            options = {
                'lists': [],
                'members': [
                    {
                        'name':
                        'device',
                        'type':
                        'String',
                        'desc':
                        'Required device option for nextpnr-gowin and gowin_pack command (e.g. GW1N-LV1QN48C6/I5)'
                    },
                ]
            }

            Edatool._extend_options(options, Yosys)
            Edatool._extend_options(options, Nextpnr)

            return {
                'description':
                "Open source toolchain for Gowin FPGAs. Uses yosys for synthesis and nextpnr for Place & Route",
                'members': options['members'],
                'lists': options['lists']
            }
Ejemplo n.º 5
0
    def get_doc(cls, api_ver):
        if api_ver == 0:
            options = {
                "lists": [],
                "members": [
                    {
                        "name":
                        "device",
                        "type":
                        "String",
                        "desc":
                        "Required device option for nextpnr-mistral command (e.g. 5CEFA5F23I7)",
                    },
                ],
            }

            Edatool._extend_options(options, Yosys)
            Edatool._extend_options(options, Nextpnr)

            return {
                "description":
                "Project mistral enables a fully open-source flow for Cyclone V FPGAs using Yosys for Verilog synthesis and nextpnr for place and route",
                "members": options["members"],
                "lists": options["lists"],
            }
Ejemplo n.º 6
0
    def get_doc(cls, api_ver):
        if api_ver == 0:
            options = {"lists": [], "members": []}

            Edatool._extend_options(options, Yosys)
            Edatool._extend_options(options, Nextpnr)

            return {
                "description": "Project Trellis enables a fully open-source flow for ECP5 FPGAs using Yosys for Verilog synthesis and nextpnr for place and route",
                "members": options["members"],
                "lists": options["lists"],
            }
Ejemplo n.º 7
0
    def get_doc(cls, api_ver):
        if api_ver == 0:
            options = {
                "lists": [],
                "members": [
                    {
                        "name": "device",
                        "type": "String",
                        "desc": "Required device option for nextpnr-gowin and gowin_pack command (e.g. GW1N-LV1QN48C6/I5)",
                    },
                ],
            }

            Edatool._extend_options(options, Yosys)
            Edatool._extend_options(options, Nextpnr)

            return {
                "description": "Open source toolchain for Gowin FPGAs. Uses yosys for synthesis and nextpnr for Place & Route",
                "members": options["members"],
                "lists": options["lists"],
            }
Ejemplo n.º 8
0
    def build_main(self, target=None):
        args = list()
        src_files_filtered = list()
        (src_files, incdirs) = self._get_fileset_files()

        args += ['-I {}'.format(incdir) for incdir in incdirs]
        args += [
            '-D {}={}'.format(key, self._param_value_str(value))
            for key, value in self.vlogdefine.items()
        ]

        # Filter for Verilog source files.
        for src_file in src_files:
            if Edatool._filter_verilog_files(src_file):
                src_files_filtered.append(src_file)

        # Append filtered file names.
        args += [f.name for f in src_files_filtered]
        # Append any options passed through `morty_options`.
        args += self.tool_options.get('morty_options', [])
        # Go and do your thing!
        self._run_tool('morty', args, quiet=True)