Esempio n. 1
0
        public SnapshotKey Generate(String instanceName)
        {
            Dictionary <int, SnapshotKey.ChainKey> key = new Dictionary <int, SnapshotKey.ChainKey>();

            if (this.numChainsOut == 0)
            {
                return(new SnapshotKey(key, 0, 0));
            }
            int chainLength = (this.numDffBits / this.numChainsOut);
            int extraBits   = this.numDffBits - chainLength * this.numChainsOut;

            for (int i = 0; i < this.numDffBits; i++)
            {
                bool extraBit = i >= numDffBits - extraBits;
                int  chain    = extraBit ? numChainsOut - 1 : i / chainLength;
                int  cycle    = i - chain * chainLength;
                if (!key.ContainsKey(chain))
                {
                    key.Add(chain, new SnapshotKey.ChainKey(extraBit ? chainLength + extraBits : chainLength));
                }
                key[chain][cycle] = GetBitEntry(instanceName, i);
            }
            SnapshotKey        snapshotKey = new SnapshotKey(key, this.numChainsOut, chainLength + extraBits);
            List <SnapshotKey> childKeys   = new List <SnapshotKey>();

            for (int i = 0; i < vMod.InstantiatedModules.Count; i++)
            {
                VerilogModuleInstance vmi = vMod.InstantiatedModules[i];
                childKeys.Add(vmi.Type.GenerateSnapshotKey(instanceName + "/" + vmi.InstanceName));
            }
            snapshotKey.AppendChildKeys(childKeys);
            return(snapshotKey);
        }
Esempio n. 2
0
 public void GenerateHeirarchySnapshotKey()
 {
     this.SnapshotKey = this.root.GenerateSnapshotKey();
 }