47 OpBuilder builder(mod);
50 uint64_t currentWidth = 0;
51 auto ui64Type = builder.getIntegerType(64,
false);
52 mod.walk([&](Operation *op) {
53 if (!isa<RegOp, RegResetOp>(op))
58 auto regType = type_cast<FIRRTLBaseType>(op->getResult(0).getType());
59 std::optional<int64_t> regWidth =
getBitWidth(regType);
60 assert(regWidth.has_value() &&
"register must have a valid FIRRTL width");
62 auto start = builder.getIntegerAttr(ui64Type, currentWidth);
63 op->setAttr(
"firrtl.random_init_start", start);
65 currentWidth += *regWidth;