Skip to content

Commit

Permalink
Merge 95592eb into 104502c
Browse files Browse the repository at this point in the history
  • Loading branch information
leonardt committed Sep 12, 2018
2 parents 104502c + 95592eb commit 4e61b4f
Show file tree
Hide file tree
Showing 6 changed files with 40 additions and 11 deletions.
6 changes: 4 additions & 2 deletions fault/verilator_target.py
Original file line number Diff line number Diff line change
Expand Up @@ -37,11 +37,12 @@

class VerilatorTarget(Target):
def __init__(self, circuit, actions, directory="build/",
flags=[], skip_compile=False):
flags=[], skip_compile=False, include_verilog_files=[]):
super().__init__(circuit, actions)
self.directory = Path(directory)
self.flags = flags
self.skip_compile = skip_compile
self.include_verilog_files = include_verilog_files

@staticmethod
def generate_action_code(i, action):
Expand Down Expand Up @@ -110,7 +111,8 @@ def run(self):
# the Makefile output by verilator, and finally run the executable
# created by verilator.
verilator_cmd = verilator_utils.verilator_cmd(
top, verilog_file.name, driver_file.name, self.flags)
top, verilog_file.name, self.include_verilog_files,
driver_file.name, self.flags)
assert not self.run_from_directory(verilator_cmd)
verilator_make_cmd = verilator_utils.verilator_make_cmd(top)
assert not self.run_from_directory(verilator_make_cmd)
Expand Down
5 changes: 4 additions & 1 deletion fault/verilator_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@
import fault.actions as actions


def verilator_cmd(top, verilog_filename, driver_filename, verilator_flags):
def verilator_cmd(top, verilog_filename, include_verilog_files, driver_filename,
verilator_flags):
DEFAULT_FLAGS = [
"-Wall",
"-Wno-INCABSPATH",
Expand All @@ -11,8 +12,10 @@ def verilator_cmd(top, verilog_filename, driver_filename, verilator_flags):
flags = DEFAULT_FLAGS
flags.extend(verilator_flags)
flag_str = " ".join(flags)
include_str = ' '.join(f'-v {file_}' for file_ in include_verilog_files)
return (f"verilator {flag_str} "
f"--cc {verilog_filename} "
f"{include_str} "
f"--exe {driver_filename} "
f"--top-module {top}")

Expand Down
2 changes: 2 additions & 0 deletions tests/build/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
*
!.gitignore
7 changes: 7 additions & 0 deletions tests/sb_dff_sim.v
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
// From https://raw.githubusercontent.com/YosysHQ/yosys/master/techlibs/ice40/cells_sim.v
`define SB_DFF_REG reg Q = 0

module SB_DFF (output `SB_DFF_REG, input C, D);
always @(posedge C)
Q <= D;
endmodule
8 changes: 0 additions & 8 deletions tests/test_functional_tester.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,6 @@
import shutil


def setup_function():
os.mkdir("tests/build")


def teardown_function():
shutil.rmtree("tests/build")


def test_configuration():
class ConfigurationTester(FunctionalTester):
def configure(self, addr, data):
Expand Down
23 changes: 23 additions & 0 deletions tests/test_include_verilog.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
import fault
import magma as m
import shutil


def test_include_verilog():
SB_DFF = m.DeclareCircuit('SB_DFF', "D", m.In(m.Bit), "Q", m.Out(m.Bit),
"C", m.In(m.Clock))
main = m.DefineCircuit('main', "I", m.In(m.Bit), "O", m.Out(m.Bit),
*m.ClockInterface())
ff = SB_DFF()
m.wire(ff.D, main.I)
m.wire(ff.Q, main.O)
m.EndDefine()

tester = fault.Tester(main, main.CLK)
tester.poke(main.I, 1)
tester.eval()
tester.expect(main.O, 0)
tester.step(2)
tester.expect(main.O, 1)
tester.compile_and_run(target="verilator", directory="tests/build",
include_verilog_files=["../sb_dff_sim.v"])

0 comments on commit 4e61b4f

Please sign in to comment.