Skip to content
Snippets Groups Projects
Commit ca5b1ff7 authored by Yaman Umuroglu's avatar Yaman Umuroglu
Browse files

[Core] add rtlsim caching to stitched IP rtlsim

parent bc90b705
No related branches found
No related tags found
No related merge requests found
...@@ -35,11 +35,18 @@ from finn.util.fpgadataflow import ( ...@@ -35,11 +35,18 @@ from finn.util.fpgadataflow import (
pyverilate_stitched_ip, pyverilate_stitched_ip,
) )
try:
from pyverilator import PyVerilator
except ModuleNotFoundError:
PyVerilator = None
def rtlsim_exec(model, execution_context): def rtlsim_exec(model, execution_context):
"""Use PyVerilator to execute given model with stitched IP. The execution """Use PyVerilator to execute given model with stitched IP. The execution
context contains the input values.""" context contains the input values."""
if PyVerilator is None:
raise ImportError("Installation of PyVerilator is required.")
# ensure stitched ip project already exists # ensure stitched ip project already exists
assert os.path.isfile( assert os.path.isfile(
model.get_metadata_prop("wrapper_filename") model.get_metadata_prop("wrapper_filename")
...@@ -74,7 +81,12 @@ def rtlsim_exec(model, execution_context): ...@@ -74,7 +81,12 @@ def rtlsim_exec(model, execution_context):
packed_input = npy_to_rtlsim_input(i_tensor, i_dt, i_stream_w) packed_input = npy_to_rtlsim_input(i_tensor, i_dt, i_stream_w)
num_out_values = last_node.get_number_output_values() num_out_values = last_node.get_number_output_values()
# prepare pyverilator model # prepare pyverilator model
sim = pyverilate_stitched_ip(model) rtlsim_so = model.get_metadata_prop("rtlsim_so")
if (rtlsim_so is None) or (not os.path.isfile(rtlsim_so)):
sim = pyverilate_stitched_ip(model)
model.set_metadata_prop("rtlsim_so", sim.lib._name)
else:
sim = PyVerilator(rtlsim_so)
_reset_rtlsim(sim) _reset_rtlsim(sim)
_toggle_clk(sim) _toggle_clk(sim)
ret = _run_rtlsim(sim, packed_input, num_out_values, trace_file) ret = _run_rtlsim(sim, packed_input, num_out_values, trace_file)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment