CIRCT 23.0.0git
Loading...
Searching...
No Matches
test_advanced.py
Go to the documentation of this file.
1from __future__ import annotations
2
3from pathlib import Path
4import sys
5
6import esiaccel as esi
7from esiaccel.accelerator import Accelerator
8from esiaccel.cosim.pytest import cosim_test
9
10HW_DIR = Path(__file__).resolve().parent.parent / "hw"
11
12
13def run(acc: Accelerator) -> None:
14
15 merge_a = acc.ports[esi.AppID("merge_a")].write_port("data")
16 merge_a.connect()
17 merge_b = acc.ports[esi.AppID("merge_b")].write_port("data")
18 merge_b.connect()
19 merge_x = acc.ports[esi.AppID("merge_x")].read_port("data")
20 merge_x.connect()
21
22 for i in range(10, 15):
23 merge_a.write(i)
24 merge_b.write(i + 10)
25 x1 = merge_x.read()
26 x2 = merge_x.read()
27 print(f"merge_a: {i}, merge_b: {i + 10}, "
28 f"merge_x 1: {x1}, merge_x 2: {x2}")
29 assert x1 == i + 10 or x1 == i
30 assert x2 == i + 10 or x2 == i
31 assert x1 != x2
32
33 join_a = acc.ports[esi.AppID("join_a")].write_port("data")
34 join_a.connect()
35 join_b = acc.ports[esi.AppID("join_b")].write_port("data")
36 join_b.connect()
37 join_x = acc.ports[esi.AppID("join_x")].read_port("data")
38 join_x.connect()
39
40 for i in range(15, 27):
41 join_a.write(i)
42 join_b.write(i + 10)
43 x = join_x.read()
44 print(f"join_a: {i}, join_b: {i + 10}, join_x: {x}")
45 assert x == (i + i + 10) & 0xFFFF
46
47 fork_a = acc.ports[esi.AppID("fork_a")].write_port("data")
48 fork_a.connect()
49 fork_x = acc.ports[esi.AppID("fork_x")].read_port("data")
50 fork_x.connect()
51 fork_y = acc.ports[esi.AppID("fork_y")].read_port("data")
52 fork_y.connect()
53
54 for i in range(27, 33):
55 fork_a.write(i)
56 x = fork_x.read()
57 y = fork_y.read()
58 print(f"fork_a: {i}, fork_x: {x}, fork_y: {y}")
59 assert x == y
60
61
62@cosim_test(HW_DIR / "esi_advanced.py")
63def test_cosim_advanced(accelerator: Accelerator) -> None:
64 run(accelerator)
65
66
67if __name__ == "__main__":
68 platform = sys.argv[1]
69 conn_str = sys.argv[2]
70 conn = esi.connect(platform, conn_str)
71 run(conn)
static void print(TypedAttr val, llvm::raw_ostream &os)
static mlir::Operation * resolve(Context &context, mlir::SymbolRefAttr sym)
None test_cosim_advanced(Accelerator accelerator)
None run(Accelerator acc)