@@ -472,3 +472,39 @@ hw.module.generated @TestFragment, @FIRRTLMem(
472472
473473// CHECK-LABEL: hw.module private @TestFragment
474474// CHECK-SAME: emit.fragments = [@Fragment]
475+
476+ // Test an i1 memory.
477+ hw.module.generated @ram_2x1 , @FIRRTLMem (
478+ in %R0_addr : i1 ,
479+ in %R0_en : i1 ,
480+ in %R0_clk : i1 ,
481+ out R0_data : i1 ,
482+ in %W0_addr : i1 ,
483+ in %W0_en : i1 ,
484+ in %W0_clk : i1 ,
485+ in %W0_data : i1
486+ ) attributes {
487+ depth = 2 : i64 ,
488+ initFilename = " " ,
489+ initIsBinary = false ,
490+ initIsInline = false ,
491+ maskGran = 1 : ui32 ,
492+ numReadPorts = 1 : ui32 ,
493+ numReadWritePorts = 0 : ui32 ,
494+ numWritePorts = 1 : ui32 ,
495+ readLatency = 0 : ui32 ,
496+ readUnderWrite = 0 : i32 ,
497+ width = 1 : ui32 ,
498+ writeClockIDs = [0 : i32 ],
499+ writeLatency = 1 : ui32 ,
500+ writeUnderWrite = 1 : i32 }
501+
502+ // CHECK-LABEL: hw.module private @ram_2x1
503+ // CHECK: %[[c0_i6:.+]] = hw.constant 0 : i6
504+ // CHECK-NEXT: %[[c_32_i6:.+]] = hw.constant -32 : i6
505+ // CHECK-NEXT: %[[c_32_i6_0:.+]] = hw.constant -32 : i6
506+ // CHECK-NEXT: sv.for %[[J:.+]] = %[[c0_i6]] to %[[c_32_i6]] step %[[c_32_i6_0]] : i6 {
507+ // CHECK-NEXT: %[[RANDOM:.+]] = sv.macro.ref.expr.se @RANDOM() : () -> i32
508+ // CHECK-NEXT: %false = hw.constant false
509+ // CHECK-NEXT: %[[V7:.+]] = sv.indexed_part_select_inout %_RANDOM_MEM[%false : 32] : !hw.inout<i32>, i1
510+ // CHECK-NEXT: sv.bpassign %[[V7]], %RANDOM : i32
0 commit comments