Skip to content

Commit 194a788

Browse files
authored
[FIRRTL] Remove circuit from macro used by inline layers (#8714)
We want to use the same macro for an inline layer across all compilation units (circuits) in a design. Remove the circuit name from the macro name.
1 parent c67c8b2 commit 194a788

File tree

3 files changed

+23
-24
lines changed

3 files changed

+23
-24
lines changed

lib/Dialect/FIRRTL/Transforms/LowerLayers.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -173,8 +173,7 @@ static SmallString<32> guardMacroNameForLayer(StringRef moduleName,
173173
static SmallString<32>
174174
macroNameForLayer(StringRef circuitName,
175175
ArrayRef<FlatSymbolRefAttr> layerName) {
176-
SmallString<32> result("layer_");
177-
result.append(circuitName);
176+
SmallString<32> result("layer");
178177
for (auto part : layerName)
179178
appendName(part, result, /*toLower=*/false,
180179
/*delimiter=*/Delimiter::InlineMacro);

test/Dialect/FIRRTL/lower-layers.mlir

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -329,9 +329,9 @@ firrtl.circuit "Test" {
329329
// Inline Layers
330330
//===--------------------------------------------------------------------===//
331331

332-
// CHECK: sv.macro.decl @layer_Test$Inline
333-
// CHECK-NEXT: sv.macro.decl @layer_Test$Inline$Inline
334-
// CHECK-NEXT: sv.macro.decl @layer_Test$Bound$Inline
332+
// CHECK: sv.macro.decl @layer$Inline
333+
// CHECK-NEXT: sv.macro.decl @layer$Inline$Inline
334+
// CHECK-NEXT: sv.macro.decl @layer$Bound$Inline
335335
firrtl.layer @Inline inline {
336336
firrtl.layer @Inline inline {}
337337
}
@@ -342,15 +342,15 @@ firrtl.circuit "Test" {
342342

343343
// CHECK: firrtl.module private @ModuleWithInlineLayerBlocks_Bound() {
344344
// CHECK-NEXT: %w3 = firrtl.wire
345-
// CHECK-NEXT: sv.ifdef @layer_Test$Bound$Inline {
345+
// CHECK-NEXT: sv.ifdef @layer$Bound$Inline {
346346
// CHECK-NEXT: %w4 = firrtl.wire
347347
// CHECK-NEXT: }
348348
// CHECK-NEXT: }
349349

350350
// CHECK-NEXT: firrtl.module @ModuleWithInlineLayerBlocks() {
351-
// CHECK-NEXT: sv.ifdef @layer_Test$Inline {
351+
// CHECK-NEXT: sv.ifdef @layer$Inline {
352352
// CHECK-NEXT: %w1 = firrtl.wire
353-
// CHECK-NEXT: sv.ifdef @layer_Test$Inline$Inline {
353+
// CHECK-NEXT: sv.ifdef @layer$Inline$Inline {
354354
// CHECK-NEXT: %w2 = firrtl.wire
355355
// CHECK-NEXT: }
356356
// CHECK-NEXT: }

test/firtool/reg-under-inline-layer.fir

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ circuit RegUnderInlineLayer:
1313
input data: UInt<1>
1414
output probe: Probe<UInt<1>, A>
1515

16-
; CHECK: `ifdef layer_RegUnderInlineLayer$A
16+
; CHECK: `ifdef layer$A
1717
; CHECK: reg myreg;
1818
; CHECK: wire myreg_probe = myreg;
1919
; CHECK: always @(posedge clock) begin
@@ -22,14 +22,14 @@ circuit RegUnderInlineLayer:
2222
; CHECK: else
2323
; CHECK: myreg <= data;
2424
; CHECK: end // always @(posedge)
25-
; CHECK: `endif // layer_RegUnderInlineLayer$A
25+
; CHECK: `endif // layer$A
2626

2727
; CHECK: initial begin
2828
; CHECK: automatic logic [31:0] _RANDOM[0:0];
2929
; CHECK: _RANDOM[/*Zero width*/ 1'b0] = `RANDOM;
30-
; CHECK: `ifdef layer_RegUnderInlineLayer$A
30+
; CHECK: `ifdef layer$A
3131
; CHECK: RegUnderInlineLayer.myreg = _RANDOM[/*Zero width*/ 1'b0][0];
32-
; CHECK: `endif // layer_RegUnderInlineLayer$A
32+
; CHECK: `endif // layer$A
3333
; CHECK: end // initial
3434
layerblock A:
3535
regreset myreg : UInt<1>, clock, reset, UInt<1>(0)
@@ -52,8 +52,8 @@ circuit RegUnderInlineLayer:
5252
input data: UInt<1>
5353
output probe: Probe<UInt<1>, A.B>
5454

55-
; CHECK: `ifdef layer_RegUnderInlineLayer$A
56-
; CHECK: `ifdef layer_RegUnderInlineLayer$A$B
55+
; CHECK: `ifdef layer$A
56+
; CHECK: `ifdef layer$A$B
5757
; CHECK: reg myreg;
5858
; CHECK: wire myreg_probe = myreg;
5959
; CHECK: always @(posedge clock) begin
@@ -62,17 +62,17 @@ circuit RegUnderInlineLayer:
6262
; CHECK: else
6363
; CHECK: myreg <= data;
6464
; CHECK: end // always @(posedge)
65-
; CHECK: `endif // layer_RegUnderInlineLayer$A$B
66-
; CHECK: `endif // layer_RegUnderInlineLayer$A
65+
; CHECK: `endif // layer$A$B
66+
; CHECK: `endif // layer$A
6767

6868
; CHECK: initial begin
6969
; CHECK: automatic logic [31:0] _RANDOM[0:0];
7070
; CHECK: _RANDOM[/*Zero width*/ 1'b0] = `RANDOM;
71-
; CHECK: `ifdef layer_RegUnderInlineLayer$A
72-
; CHECK: `ifdef layer_RegUnderInlineLayer$A$B
71+
; CHECK: `ifdef layer$A
72+
; CHECK: `ifdef layer$A$B
7373
; CHECK: RegUnderInlineLayer.myreg = _RANDOM[/*Zero width*/ 1'b0][0];
74-
; CHECK: `endif // layer_RegUnderInlineLayer$A$B
75-
; CHECK: `endif // layer_RegUnderInlineLayer$A
74+
; CHECK: `endif // layer$A$B
75+
; CHECK: `endif // layer$A
7676
; CHECK: end // initial
7777
layerblock A:
7878
layerblock B:
@@ -94,7 +94,7 @@ circuit RegUnderInlineLayer:
9494
; the register and its initialization.
9595

9696
; CHECK: module RegUnderInlineLayer_A();
97-
; CHECK: `ifdef layer_RegUnderInlineLayer$A$B
97+
; CHECK: `ifdef layer$A$B
9898
; CHECK: reg myreg;
9999
; CHECK: wire myreg_probe = myreg;
100100
; CHECK: always @(posedge RegUnderInlineLayer.clock) begin
@@ -103,14 +103,14 @@ circuit RegUnderInlineLayer:
103103
; CHECK: else
104104
; CHECK: myreg <= RegUnderInlineLayer.data;
105105
; CHECK: end // always @(posedge)
106-
; CHECK: `endif // layer_RegUnderInlineLayer$A$B
106+
; CHECK: `endif // layer$A$B
107107
; CHECK: initial begin
108108
; CHECK: automatic logic [31:0] _RANDOM[0:0];
109109
; CHECK: `ifdef RANDOMIZE_REG_INIT
110110
; CHECK: _RANDOM[/*Zero width*/ 1'b0] = `RANDOM;
111-
; CHECK: `ifdef layer_RegUnderInlineLayer$A$B
111+
; CHECK: `ifdef layer$A$B
112112
; CHECK: RegUnderInlineLayer_A.myreg = _RANDOM[/*Zero width*/ 1'b0][0];
113-
; CHECK: `endif // layer_RegUnderInlineLayer$A$B
113+
; CHECK: `endif // layer$A$B
114114
; CHECK: `endif // RANDOMIZE_REG_INIT
115115
; CHECK: end // initial
116116
; CHECK: endmodule

0 commit comments

Comments
 (0)