[FIRRTL] Add OutputFile option GCT Sig. Map.

Add an output file option to the GCT Signal Mappings pass.  This pass
needs to know this information as it must generate a JSON configuration
which includes output file information.

Signed-off-by: Schuyler Eldridge <schuyler.eldridge@sifive.com>
This commit is contained in:
Schuyler Eldridge 2022-04-22 01:36:34 -04:00 committed by Schuyler Eldridge
parent f0a4b7e48a
commit 202f67c18d
4 changed files with 14 additions and 4 deletions

View File

@ -78,7 +78,8 @@ std::unique_ptr<mlir::Pass> createGrandCentralPass();
std::unique_ptr<mlir::Pass> createGrandCentralTapsPass();
std::unique_ptr<mlir::Pass> createGrandCentralSignalMappingsPass();
std::unique_ptr<mlir::Pass>
createGrandCentralSignalMappingsPass(StringRef outputFilename = "");
std::unique_ptr<mlir::Pass> createCheckCombCyclesPass();

View File

@ -365,6 +365,8 @@ def GrandCentralSignalMappings : Pass<"firrtl-grand-central-signal-mappings",
"firrtl::CircuitOp"> {
let summary = "Generate signal mappings that force/probe remote signals";
let constructor = "circt::firrtl::createGrandCentralSignalMappingsPass()";
let options = [Option<"outputFilename", "file", "std::string", "",
"Output file for the JSON-serialized OMIR data">];
}
def CheckCombCycles : Pass<"firrtl-check-comb-cycles", "firrtl::CircuitOp"> {

View File

@ -258,6 +258,9 @@ void ModuleSignalMappings::instantiateMappingsModule(FModuleOp mappingsModule) {
class GrandCentralSignalMappingsPass
: public GrandCentralSignalMappingsBase<GrandCentralSignalMappingsPass> {
void runOnOperation() override;
public:
std::string outputFilename;
};
void GrandCentralSignalMappingsPass::runOnOperation() {
@ -282,6 +285,9 @@ void GrandCentralSignalMappingsPass::runOnOperation() {
}
std::unique_ptr<mlir::Pass>
circt::firrtl::createGrandCentralSignalMappingsPass() {
return std::make_unique<GrandCentralSignalMappingsPass>();
circt::firrtl::createGrandCentralSignalMappingsPass(StringRef outputFilename) {
auto pass = std::make_unique<GrandCentralSignalMappingsPass>();
if (!outputFilename.empty())
pass->outputFilename = outputFilename;
return pass;
}

View File

@ -500,7 +500,8 @@ processBuffer(MLIRContext &context, TimingScope &ts, llvm::SourceMgr &sourceMgr,
auto &circuitPM = pm.nest<firrtl::CircuitOp>();
circuitPM.addPass(firrtl::createGrandCentralPass());
circuitPM.addPass(firrtl::createGrandCentralTapsPass());
circuitPM.addPass(firrtl::createGrandCentralSignalMappingsPass());
circuitPM.addPass(
firrtl::createGrandCentralSignalMappingsPass(outputFilename));
}
// Read black box source files into the IR.