private void InitLUTRouting() { m_grdViewLUTRouting.Rows.Clear(); // LUT routing requires wire lists if (FPGA.FPGA.Instance.WireListCount == 0) { return; } if (IdentifierManager.Instance.IsMatch(m_tile.Location, IdentifierManager.RegexTypes.CLB)) { Regex filter1 = null; Regex filter2 = null; Regex filter3 = null; Regex filter4 = null; bool filter1Valid = false; bool filter2Valid = false; bool filter3Valid = false; bool filter4Valid = false; GetFilter(m_txtLRLutOutFilter.Text, out filter1, out filter1Valid); GetFilter(m_txtLREndFilter.Text, out filter2, out filter2Valid); GetFilter(m_txtLRBegFilter.Text, out filter3, out filter3Valid); GetFilter(m_txtLRLUTInFilter.Text, out filter4, out filter4Valid); if (!filter1Valid || !filter2Valid || !filter3Valid || !filter4Valid) { return; } foreach (LUTRoutingInfo info in FPGATypes.GetLUTRouting(m_tile)) { string port1 = info.Port1 != null ? info.Port1.Name : ""; string port2 = info.Port2 != null ? info.Port2.Name : ""; string port3 = info.Port3 != null ? info.Port3.Name : ""; string port4 = info.Port4 != null ? info.Port4.Name : ""; if (filter1.IsMatch(port1) && filter2.IsMatch(port2) && filter3.IsMatch(port3) && filter4.IsMatch(port4)) { m_grdViewLUTRouting.Rows.Add(port1, port2, port3, port4); } } } }