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"}
}
}
}
}
}