Debugging magma

"How do I get all the debug information in the coreir json?"

Two functions need to be called with the argument True: * m.config.set_debug_mode * m.set_codegen_debug_info

Here's a code example:

# main.py
import magma as m

m.config.set_debug_mode(True)
m.set_codegen_debug_info(True)
And2 = m.DeclareCircuit('And2', "I0", m.In(m.Bit), "I1", m.In(m.Bit),
                        "O", m.Out(m.Bit))

main = m.DefineCircuit("main", "I", m.In(m.Bits[2]), "O", m.Out(m.Bit))

and2 = And2()

m.wire(main.I[0], and2.I0)
m.wire(main.I[1], and2.I1)
m.wire(and2.O, main.O)

m.EndCircuit()

m.compile("main", main, output="coreir-verilog")

run with python main.py to produce

{"top":"global.main",
"namespaces":{
  "global":{
    "modules":{
      "And2":{
        "type":["Record",[
          ["I0","BitIn"],
          ["I1","BitIn"],
          ["O","Bit"]
        ]],
        "metadata":{"filename":"main.py","lineno":"6"}
      },
      "main":{
        "type":["Record",[
          ["I",["Array",2,"BitIn"]],
          ["O","Bit"]
        ]],
        "instances":{
          "And2_inst0":{
            "modref":"global.And2",
            "metadata":{"filename":"main.py","lineno":"10"}
          }
        },
        "connections":[
          ["self.I.0","And2_inst0.I0",{"filename":"main.py","lineno":"12"}],
          ["self.I.1","And2_inst0.I1",{"filename":"main.py","lineno":"13"}],
          ["self.O","And2_inst0.O",{"filename":"main.py","lineno":"14"}]
        ],
        "metadata":{"filename":"main.py","lineno":"8"}
      }
    }
  }
}
}