From 37fe17debed7777180eebb34122fedc1326781cb Mon Sep 17 00:00:00 2001 From: Florent Kermarrec Date: Wed, 17 Dec 2014 12:07:11 +0100 Subject: [PATCH] use Vivado programmer instead of IMPACT --- Makefile | 2 +- platforms/kc705.py | 26 ++++++++++++++++---------- 2 files changed, 17 insertions(+), 11 deletions(-) diff --git a/Makefile b/Makefile index da07f84e..a2d6c3d5 100644 --- a/Makefile +++ b/Makefile @@ -3,7 +3,7 @@ CURDIR = ../sata-controller PYTHON = python3 TOOLCHAIN = vivado PLATFORM = kc705 -PROGRAMMER = impact +PROGRAMMER = vivado CMD = $(PYTHON) make.py -X $(CURDIR) -Op toolchain $(TOOLCHAIN) -Op programmer $(PROGRAMMER) -p $(PLATFORM) -t test diff --git a/platforms/kc705.py b/platforms/kc705.py index c1886710..a743d24b 100644 --- a/platforms/kc705.py +++ b/platforms/kc705.py @@ -5,22 +5,28 @@ from mibuild.xilinx_ise import XilinxISEPlatform from mibuild.xilinx_vivado import XilinxVivadoPlatform from mibuild.programmer import * -def _run_impact(cmds): - with subprocess.Popen("impact -batch", stdin=subprocess.PIPE) as process: +def _run_vivado(cmds): + with subprocess.Popen("vivado -mode tcl", stdin=subprocess.PIPE, shell=True) as process: process.stdin.write(cmds.encode("ASCII")) process.communicate() -class IMPACT(Programmer): +class VivadoProgrammer(Programmer): needs_bitreverse = False def load_bitstream(self, bitstream_file): - cmds = """setMode -bs -setCable -p auto -addDevice -p 1 -file {bitstream} -program -p 1 + cmds = """open_hw +connect_hw_server +open_hw_target [lindex [get_hw_targets -of_objects [get_hw_servers localhost]] 0] + +set_property PROBES.FILE {{}} [lindex [get_hw_devices] 0] +set_property PROGRAM.FILE {{{bitstream}}} [lindex [get_hw_devices] 0] + +program_hw_devices [lindex [get_hw_devices] 0] +refresh_hw_device [lindex [get_hw_devices] 0] + quit """.format(bitstream=bitstream_file) - _run_impact(cmds) + _run_vivado(cmds) def flash(self, address, data_file): raise NotImplementedError @@ -103,8 +109,8 @@ def Platform(*args, toolchain="vivado", programmer="xc3sprog", **kwargs): def create_programmer(self): if programmer == "xc3sprog": return XC3SProg("jtaghs1_fast", "bscan_spi_kc705.bit") - elif programmer == "impact": - return IMPACT() + elif programmer == "vivado": + return VivadoProgrammer() else: raise ValueError -- 2.30.2