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); }
public void GenerateHeirarchySnapshotKey() { this.SnapshotKey = this.root.GenerateSnapshotKey(); }