1digraph {
2	node [shape="box"];
3	subgraph {
4		node [shape=plaintext];
5
6		ncsid [label=<
7			<table>
8				<tr>
9					<td bgcolor="lightblue" colspan="2" port="config">net::ConfigBase</td>
10					<td port="sockio" bgcolor="lightblue">net::SockIO</td>
11				</tr>
12				<tr><td bgcolor="lightblue" colspan="3">ncsi::StateMachine</td></tr>
13				<tr>
14					<td bgcolor="black"><font color="white">L2 FSM</font></td>
15					<td bgcolor="black"><font color="white">L3/4 FSM</font></td>
16					<td bgcolor="black"><font color="white">Test FSM</font></td>
17				</tr>
18			</table>
19		>];
20	}
21
22	subgraph notes {
23		node [shape="note" style="filled"];
24		core [label="NC-SId Core" fillcolor="lightblue"];
25		hardware [label="Hardware" fillcolor="limegreen"];
26		external [label="External Components" color="magenta" fillcolor="white"];
27		ec [label="EC" fillcolor="black" fontcolor="white"];
28	} -> NIC [style="invis"];
29
30	subgraph external {
31		node [color="magenta"];
32		p_networkd [label="phosphord-networkd"];
33		systemd;
34		d_bus [shape="doublecircle" label="DBus"];
35	}
36
37	subgraph core_comps {
38		node [fillcolor="lightblue" style="filled"];
39		p_config [label="net::PhosphorConfig"];
40		ncsi_sockio [label="ncsi::SockIO"];
41		net_ifacebase [label="net::IFaceBase"];
42		net_iface [label="net::IFace"];
43
44		net_iface -> net_ifacebase [arrowhead="diamond"];
45		ncsi_sockio -> net_iface [label="bind"];
46		ncsid;
47	}
48
49	NIC [shape="tab" fillcolor="limegreen" style="filled"];
50
51	ncsi_sockio -> ncsid:sockio [arrowhead="diamond"];
52	NIC -> ncsi_sockio [dir="both" label="NC-SI Cable" color="limegreen"];
53
54	p_config -> ncsid:config [arrowhead="diamond"];
55	p_config -> p_networkd [style="dashed"];
56	p_config -> d_bus;
57	p_networkd -> d_bus [dir="both"];
58	d_bus -> systemd;
59	p_networkd -> systemd [style="dashed"];
60}
61