@@ -336,6 +336,54 @@ firrtl.circuit "UnusedBitsAtEnd" {
336
336
337
337
// -----
338
338
339
+ firrtl.circuit " UnusedBitsOfSignedInteger" {
340
+ firrtl.module public @UnusedBitsOfSignedInteger (
341
+ in %clock: !firrtl.clock ,
342
+ in %addr: !firrtl.uint <4 >,
343
+ in %in_data: !firrtl.sint <42 >,
344
+ out %result_read: !firrtl.uint <5 >) {
345
+
346
+ %c1_ui1 = firrtl.constant 1 : !firrtl.uint <1 >
347
+
348
+ // CHECK: %Memory_read, %Memory_write = firrtl.mem Undefined
349
+ // CHECK-SAME: !firrtl.bundle<addr: uint<4>, en: uint<1>, clk: clock, data flip: sint<5>>
350
+ // CHECK-SAME: !firrtl.bundle<addr: uint<4>, en: uint<1>, clk: clock, data: sint<5>, mask: uint<1>>
351
+ %Memory_read , %Memory_write = firrtl.mem Undefined
352
+ {
353
+ depth = 12 : i64 ,
354
+ name = " Memory" ,
355
+ portNames = [" read" , " write" ],
356
+ readLatency = 0 : i32 ,
357
+ writeLatency = 1 : i32
358
+ } :
359
+ !firrtl.bundle <addr : uint <4 >, en : uint <1 >, clk : clock , data flip : sint <42 >>,
360
+ !firrtl.bundle <addr : uint <4 >, en : uint <1 >, clk : clock , data : sint <42 >, mask : uint <1 >>
361
+
362
+ %read_addr = firrtl.subfield %Memory_read [addr ] : !firrtl.bundle <addr : uint <4 >, en : uint <1 >, clk : clock , data flip : sint <42 >>
363
+ firrtl.connect %read_addr , %addr : !firrtl.uint <4 >, !firrtl.uint <4 >
364
+ %read_en = firrtl.subfield %Memory_read [en ] : !firrtl.bundle <addr : uint <4 >, en : uint <1 >, clk : clock , data flip : sint <42 >>
365
+ firrtl.connect %read_en , %c1_ui1 : !firrtl.uint <1 >, !firrtl.uint <1 >
366
+ %read_clk = firrtl.subfield %Memory_read [clk ] : !firrtl.bundle <addr : uint <4 >, en : uint <1 >, clk : clock , data flip : sint <42 >>
367
+ firrtl.connect %read_clk , %clock : !firrtl.clock , !firrtl.clock
368
+ %read_data = firrtl.subfield %Memory_read [data ] : !firrtl.bundle <addr : uint <4 >, en : uint <1 >, clk : clock , data flip : sint <42 >>
369
+ %read_data_slice = firrtl.bits %read_data 7 to 3 : (!firrtl.sint <42 >) -> !firrtl.uint <5 >
370
+ firrtl.connect %result_read , %read_data_slice : !firrtl.uint <5 >, !firrtl.uint <5 >
371
+
372
+ %write_addr = firrtl.subfield %Memory_write [addr ] : !firrtl.bundle <addr : uint <4 >, en : uint <1 >, clk : clock , data : sint <42 >, mask : uint <1 >>
373
+ firrtl.connect %write_addr , %addr : !firrtl.uint <4 >, !firrtl.uint <4 >
374
+ %write_en = firrtl.subfield %Memory_write [en ] : !firrtl.bundle <addr : uint <4 >, en : uint <1 >, clk : clock , data : sint <42 >, mask : uint <1 >>
375
+ firrtl.connect %write_en , %c1_ui1 : !firrtl.uint <1 >, !firrtl.uint <1 >
376
+ %write_clk = firrtl.subfield %Memory_write [clk ] : !firrtl.bundle <addr : uint <4 >, en : uint <1 >, clk : clock , data : sint <42 >, mask : uint <1 >>
377
+ firrtl.connect %write_clk , %clock : !firrtl.clock , !firrtl.clock
378
+ %write_data = firrtl.subfield %Memory_write [data ] : !firrtl.bundle <addr : uint <4 >, en : uint <1 >, clk : clock , data : sint <42 >, mask : uint <1 >>
379
+ firrtl.connect %write_data , %in_data : !firrtl.sint <42 >, !firrtl.sint <42 >
380
+ %write_mask = firrtl.subfield %Memory_write [mask ] : !firrtl.bundle <addr : uint <4 >, en : uint <1 >, clk : clock , data : sint <42 >, mask : uint <1 >>
381
+ firrtl.connect %write_mask , %c1_ui1 : !firrtl.uint <1 >, !firrtl.uint <1 >
382
+ }
383
+ }
384
+
385
+ // -----
386
+
339
387
firrtl.circuit " OneAddressMasked" {
340
388
firrtl.module public @OneAddressMasked (
341
389
in %clock: !firrtl.clock ,
0 commit comments