Exemple #1
0
        /// <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));
        }