circt/test/Dialect/Arc/add-taps.mlir

47 lines
1.3 KiB
MLIR

// RUN: circt-opt %s --arc-add-taps | FileCheck %s
// CHECK-LABEL: hw.module @ObservePorts
hw.module @ObservePorts(in %x: i4, in %y: i4, out u: i4, out v: i4) {
// CHECK-NEXT: arc.tap %x {name = "x"} : i4
// CHECK-NEXT: arc.tap %y {name = "y"} : i4
// CHECK-NEXT: %0 = comb.add
// CHECK-NEXT: %1 = comb.sub
%0 = comb.add %x, %y : i4
%1 = comb.sub %x, %y : i4
// CHECK-NEXT: arc.tap %0 {name = "u"} : i4
// CHECK-NEXT: arc.tap %1 {name = "v"} : i4
// CHECK-NEXT: hw.output
hw.output %0, %1 : i4, i4
}
// CHECK-NEXT: }
// CHECK-LABEL: hw.module @ObserveWires
hw.module @ObserveWires() {
// CHECK-NEXT: arc.tap [[RD:%.+]] {name = "x"} : i4
// CHECK-NEXT: %x = sv.wire
// CHECK-NEXT: [[RD]] = sv.read_inout %x
%x = sv.wire : !hw.inout<i4>
%0 = sv.read_inout %x : !hw.inout<i4>
// CHECK-NEXT: [[RD:%.+]] = sv.read_inout %y
// CHECK-NEXT: arc.tap [[RD]] {name = "y"} : i4
// CHECK-NEXT: %y = sv.wire
%y = sv.wire : !hw.inout<i4>
// CHECK-NEXT: hw.constant
// CHECK-NEXT: arc.tap %c0_i4 {name = "z"} : i4
// CHECK-NOT: hw.wire
%c0_i4 = hw.constant 0 : i4
%z = hw.wire %c0_i4 : i4
// CHECK-NEXT: hw.output
}
// CHECK-NEXT: }
// CHECK-LABEL: hw.module @Clocks
hw.module @Clocks(in %clk: !seq.clock) {
// CHECK-NEXT: [[CAST:%.+]] = seq.from_clock %clk
// CHECK-NEXT: arc.tap [[CAST]] {name = "clk"} : i1
}