Exemple #1
0
def run(device, source, no_trce=False):
    """
    Run diamond.sh with a given device name and source Verilog file
    """
    env = os.environ.copy()
    if no_trce:
        env["NO_TRCE"] = "1"
    dsh_path = path.join(database.get_trellis_root(), "diamond.sh")
    return subprocess.run(["bash", dsh_path, device, source], env=env)
Exemple #2
0
def main():
    shutil.rmtree("work_tilegrid", ignore_errors=True)
    os.mkdir("work_tilegrid")
    shutil.copy(
        path.join(database.get_trellis_root(), "minitests", "wire", "wire.v"),
        "work_tilegrid/wire.v")

    for family in sorted(devices.families.keys()):
        for device in sorted(devices.families[family]["devices"].keys()):
            diamond.run(device, "work_tilegrid/wire.v")
            output_file = path.join(database.get_db_subdir(family, device),
                                    "tilegrid.json")
            extract_tilegrid.main([
                "extract_tilegrid", "work_tilegrid/wire.tmp/output.test",
                output_file
            ])
Exemple #3
0
def run(commands):
    """Run a list of Tcl commands, returning the output as a string"""
    dtcl_path = path.join(database.get_trellis_root(), "diamond_tcl.sh")
    workdir = tempfile.mkdtemp()
    scriptfile = path.join(workdir, "script.tcl")
    with open(scriptfile, 'w') as f:
        f.write('source $::env(FOUNDRY)/data/tcltool/IspTclDev.tcl\n')
        f.write('source $::env(FOUNDRY)/data/tcltool/IspTclCmd.tcl\n')
        for c in commands:
            f.write(c + '\n')
    result = subprocess.run(["bash", dtcl_path, scriptfile], cwd=workdir).returncode
    assert result == 0, "ispTcl returned non-zero status code {}".format(result)
    outfile = path.join(workdir, 'ispTcl.log')
    with open(outfile, 'r') as f:
        output = f.read()
    # Strip Lattice header
    delimiter = "-" * 80
    output = output[output.rindex(delimiter)+81:].strip()
    # Strip Lattice pleasantry
    pleasantry = "Thank you for using ispTcl."
    output = output.replace(pleasantry, "").strip()
    return output
Exemple #4
0
def run(device, source):
    """
    Run diamond.sh with a given device name and source Verilog file
    """
    dsh_path = path.join(database.get_trellis_root(), "diamond.sh")
    return subprocess.run(["bash", dsh_path, device, source])