/// <summary> /// Replaces the data symbol of a value-flow with the specified symbol. /// If the old data symbol is a logic vector, the specified symbol is replicated to a vector. /// </summary> /// <param name="vflow">a value-flow</param> /// <param name="symbol">replacement symbol</param> /// <returns>new value-flow - same target, but different data symbol</returns> public static ValueFlow AsDontCareFlow(ValueFlow vflow, StdLogic symbol) { StdLogicVector?slvdata = vflow.Value as StdLogicVector?; StdLogic? sldata = vflow.Value as StdLogic?; if (slvdata.HasValue) { return(new ValueFlow(StdLogicVector.AllSame(symbol, slvdata.Value.Size), vflow.Target)); } if (sldata.HasValue) { return(new ValueFlow(symbol, vflow.Target)); } return(new ValueFlow(StdLogicVector.AllSame(symbol, Marshal.SerializeForHW(vflow.Value).Size), vflow.Target)); }