Esempio n. 1
0
 def build_read_version(self):
     TMP1 = "let v = `NicVersion;"
     TMP2 = "indication.read_version_rsp(v);"
     name = "read_version"
     rtype = "Action"
     params = "Bit#(32) version"
     stmt = []
     stmt.append(ast.Template(TMP1))
     stmt.append(ast.Template(TMP2))
     req = ast.Method(name, rtype, stmt=stmt)
     rsp = ast.Method(name + "_rsp", rtype, params)
     return req, rsp
 def emitInterface(self, builder):
     iname = CamelCase(self.name)
     table_intf = ast.Interface(typedef=iname)
     intf0 = ast.Interface("next",
                           "Client#(MetadataRequest, MetadataResponse)")
     intf1 = ast.Method("set_verbosity", "Action", "int verbosity")
     table_intf.subinterfaces.append(intf0)
     table_intf.subinterfaces.append(intf1)
     table_intf.emitInterfaceDecl(builder)
Esempio n. 3
0
 def emitInterface(self, builder):
     logger.info("emitBasicBlockIntf: {}".format(self.name))
     iname = CamelCase(self.name)
     stmt = []
     stmt += self.clientInterfaces
     stmt += self.serverInterfaces
     intf = ast.Interface(typedef=iname)
     intf.subinterfaces = stmt
     intf1 = ast.Method("set_verbosity", "Action", "int verbosity")
     intf.subinterfaces.append(intf1)
     intf.emitInterfaceDecl(builder)
Esempio n. 4
0
 def build_verbosity(self):
     TMP = []
     TMP.append("hostchan.set_verbosity(unpack(verbosity));")
     TMP.append("txchan.set_verbosity(unpack(verbosity));")
     TMP.append("ingress.set_verbosity(unpack(verbosity));")
     stmt = []
     for t in TMP:
         stmt.append(ast.Template(t))
     name = "set_verbosity"
     rtype = "Action"
     params = "Bit#(32) verbosity"
     req = ast.Method(name, rtype, params, stmt=stmt)
     return req
Esempio n. 5
0
 def build_writePacketData(self):
     TMP = []
     TMP.append("EtherData beat = defaultValue;")
     TMP.append("beat.data = pack(reverse(data));")
     TMP.append("beat.mask = pack(reverse(mask));")
     TMP.append("beat.sop = unpack(sop);")
     TMP.append("beat.eop = unpack(eop);")
     TMP.append("hostchan.writeServer.writeData.put(beat);")
     name = "writePacketData"
     rtype = "Action"
     params = "Vector#(2, Bit#(64)) data, Vector#(2, Bit#(8)) mask, Bit#(1) sop, Bit#(1) eop"
     stmt = []
     for t in TMP:
         stmt.append(ast.Template(t))
     req = ast.Method(name, rtype, params, stmt=stmt)
     return req
Esempio n. 6
0
 def emitInterface(self, builder):
     logger.info("emitTable: {}".format(self.name))
     TMP1 = "prev_control_state_%(id)s"
     TMP2 = "Server #(MetadataRequest, %(ty_metadata)s)"
     TMP3 = "next_control_state_%(id)s"
     TMP4 = "Client #(BBRequest, BBResponse)"
     iname = CamelCase(self.name)
     intf = ast.Interface(typedef=iname)
     s_intf = ast.Interface(TMP1 % {"id": 0},
                            TMP2 % {"ty_metadata": iname + "Response"})
     intf.subinterfaces.append(s_intf)
     for idx, _ in enumerate(self.actions):
         c_intf = ast.Interface(TMP3 % {"id": idx}, TMP4)
         intf.subinterfaces.append(c_intf)
     intf1 = ast.Method("set_verbosity", "Action", "int verbosity")
     intf.subinterfaces.append(intf1)
     intf.emitInterfaceDecl(builder)