From 6309ff87fc048779cfd6ec7aebc918b60674baa9 Mon Sep 17 00:00:00 2001 From: alonamid Date: Fri, 7 Sep 2018 22:44:52 +0000 Subject: [PATCH] manager and file copying auto-ila --- deploy/runtools/run_farm.py | 19 +++++++++++++++++++ sim/Makefile | 9 ++++++++- 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/deploy/runtools/run_farm.py b/deploy/runtools/run_farm.py index d3ea6150..08d51d4a 100644 --- a/deploy/runtools/run_farm.py +++ b/deploy/runtools/run_farm.py @@ -343,6 +343,21 @@ class InstanceDeployManager: with StreamLogger('stdout'), StreamLogger('stderr'): run("sudo insmod /home/centos/edma/linux_kernel_drivers/edma/edma-drv.ko single_transaction_size=65536 transient_buffer_size=67108864 edma_queue_depth=1024 poll_mode=1") + def start_ila_server(self): + """ start the vivado hw_server and virtual jtag on simulation instance.) """ + self.instance_logger("Starting Vivado hw_server.") + with StreamLogger('stdout'), StreamLogger('stderr'): + run("""screen -S hw_server -d -m bash -c "script -f -c '/opt/Xilinx/Vivado/2017.4.op/bin/hw_server'"; sleep 1""") + self.instance_logger("Starting Vivado virtual JTAG.") + with StreamLogger('stdout'), StreamLogger('stderr'): + run("""screen -S virtual_jtag -d -m bash -c "script -f -c 'sudo fpga-start-virtual-jtag -P 10201 -S 0'"; sleep 1""") + + def kill_ila_server(self): + """ Kill the vivado hw_server and virtual jtag """ + with warn_only(), StreamLogger('stdout'), StreamLogger('stderr'): + run("sudo pkill -SIGKILL hw_server") + with warn_only(), StreamLogger('stdout'), StreamLogger('stderr'): + run("sudo pkill -SIGKILL fpga-local-cmd") def copy_sim_slot_infrastructure(self, slotno): """ copy all the simulation infrastructure to the remote node. """ @@ -446,6 +461,9 @@ class InstanceDeployManager: # re-load EDMA self.load_edma() + # start ila server + self.start_ila_server() + if self.instance_assigned_switches(): # all nodes could have a switch for slotno in range(self.parentnode.get_num_switch_slots()): @@ -484,6 +502,7 @@ class InstanceDeployManager: # only on sim nodes for slotno in range(self.parentnode.get_num_fpga_slots_consumed()): self.kill_sim_slot(slotno) + self.kill_ila_server() def running_simulations(self): """ collect screen results from node to see what's running on it. """ diff --git a/sim/Makefile b/sim/Makefile index e67896f7..dcd256a3 100644 --- a/sim/Makefile +++ b/sim/Makefile @@ -245,6 +245,7 @@ fpga_work_dir := $(board_dir)/cl_$(name_tuple) build_dir := $(fpga_work_dir)/build verif_dir := $(fpga_work_dir)/verif fpga_v := $(fpga_work_dir)/design/cl_firesim_generated.sv +ila_work_dir := $(fpga_work_dir)/design/ila_files/ $(fpga_work_dir)/stamp: $(shell find $(board_dir)/cl_firesim -name '*') mkdir -p $(@D) @@ -256,9 +257,15 @@ $(fpga_v): $(verilog) $(fpga_work_dir)/stamp sed -i "s/\$$random/64'b0/g" $@ sed -i 's/fatal/fatal(0, "")/g' $@ +.PHONY: $(ila_work_dir) +$(ila_work_dir): $(verilog) $(fpga_work_dir)/stamp + cp -f $(generated_dir)/firesim_ila_insert_* $(fpga_work_dir)/design/ila_files/ + sed -i "s/\$$random/64'b0/g" $(fpga_work_dir)/design/ila_files/* + sed -i 's/fatal/fatal(0, "")/g' $(fpga_work_dir)/design/ila_files/* + # Goes as far as setting up the build directory without running the cad job # Used by the manager before passing a build to a remote machine -replace-rtl: $(fpga_v) +replace-rtl: $(fpga_v) $(ila_work_dir) .PHONY: replace-rtl $(base_dir)/scripts/checkpoints/$(target_sim_tuple): $(fpga_work_dir)/stamp