@@ -472,3 +472,39 @@ hw.module.generated @TestFragment, @FIRRTLMem(
472
472
473
473
// CHECK-LABEL: hw.module private @TestFragment
474
474
// 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