public void WriteSVInterface(EsiInterface iface, FileInfo to) { var svTypeWriter = new EsiSystemVerilogTypeWriter(C); string SimpleTypeString(EsiType type) { try { return(svTypeWriter.GetSVTypeSimple(type, useName: true)); } catch (Exception e) { C.Log.Error("Exception in getting a typestring for '{type}': {e}", type, e); return("<exception>"); } } C.Log.Information("Starting SV interface generation for {iface} to file {file}", iface, to.Name); var paramTypes = iface.Methods.SelectMany(m => m.Params.Select(p => p.Type)); var returnTypes = iface.Methods.SelectMany(m => m.Returns.Select(p => p.Type)); var usedTypes = paramTypes.Concat(returnTypes).Distinct(); var s = new ScriptObject(); s.Add("iface", iface); s.Add("usedTypes", usedTypes); s.Import("SimpleTypeString", new Func <EsiType, string>(SimpleTypeString)); SVUtils.RenderTemplate("sv/full_interface.sv.sbntxt", s, to); }
public ISet <EsiType> WriteSVType(EsiNamedType type, FileInfo fileInfo) { C.Log.Information("Starting SV type generation for {type} to file {file}", type, fileInfo.Name); var svTypeWriter = new EsiSystemVerilogTypeWriter(C); return(svTypeWriter.WriteSVHeader(type, fileInfo)); }