12.07.2015 Views

Online proceedings - EDA Publishing Association

Online proceedings - EDA Publishing Association

Online proceedings - EDA Publishing Association

SHOW MORE
SHOW LESS
  • No tags were found...

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

in the next. It can also be used to generate the 3D matrix orcube mentioned earlier.C. The simulation cycleWhen the simulator engine is supplied with the input filesthat describe the design, it processes them and generates thedata structures representing the circuit and the layout.Then the simulation process is started. The engine needsto be supplied with one or more loggers to produce anyoutput. Output can be written to the screen, to memory or toa file depending on the logger.During the simulation the same sequence of operations isexecuted in each cycle:1. The simulation time is advanced by the time stepof the logic engine given by the user in thesimulation definition.2. The engine asks the thermal solver to refresh thetemperature values of the gates. The thermalsolver possesses access to the list of the gates inthe circuit and is able to retrieve informationconcerning the activity of the gates in the mostrecent simulation cycle and their actualtemperature. Using the methods outlined above,it determines the new temperature values of thegates and sets them (or possibly returns valuescalculated earlier, as seen before).3. The gates recalculate their delays upon receivingtheir new temperature values. This is done by thedelay descriptors mentioned earlier.4. The activity values of the gates are cleared. Thisisn’t done by the gates automatically because aschanges spread in the circuit asynchronously, thatcould cause errors.5. The gates are notified about the changed time.This is done one-by-one, but the time is alsospread by the gates. If a gate receives an inputsignal, it also receives a time stamp along with it,and if the stamp is more recent than the actualtime in the gate, then it refreshes its clock.6. If a signal transition was registered in anInputGate for the new time instance, it sends it tothe gates on its output thus starting an event flow.7. When every transition has ended, the loggers arenotified. They take a snapshot of the circuit andrecord it.The logic engine contacts the thermal engine through avery simple interface thus the classes behind this interfacecan be altered or changed entirely with ease and without thelogic side noticing it. This means that several engines can beused and the one best suiting a certain design can be chosen.D. PathfindersCircuits can be analyzed in several ways. For a thoroughexamination certain parts or the whole circuit needs to beroamed in pursuit of information. Sometimes special pathsneed to be found (e.g. the critical path, the path with the24-26 September 2008, Rome, Italylongest delay from an input to an output, asynchronousfeedbacks), sometimes the entire schematic has to be walkedthrough to find certain elements (e.g. elements with thehighest temperature). Sometimes the same route has to bedone but the data collected along the way is different.In order to avoid the repetition of algorithms which bloatsthe code and makes it prone to errors, a special mechanismwas developed. The very core of the roaming algorithm isbuilt into the engine. This core is controlled by an interface(called PathFinderRules) which determines eventually theroute to be taken. Thus by simply overriding a few methods,a new pathfinder can be created.The data to be collected is defined by yet anotherinterface, thus the same pathfinder can be used with differentdata collectors. This way it is very easy to extend theanalyzers in the engine and it is ensured that no coderepetition is needed to do that.The core algorithm does the following: it iterates throughthe gates in the circuits and starts roaming starting fromthose that the actual rules mark as starting gates. Starting apath means, that a PathFinderInstance is created, stored in acollection and sent to roam starting from each output of thegates marked by the rules.The pathfinder instances will go from gate to gate throughoutputs and inputs and register the gates that they pass. Theway they progress is also determined by the rules. First,when they arrive at a gate, they check if the gate is anendpoint of a path. For example if the task is to find a certainoutput gate, then it checks the type and name of each gate,and stops immediately if the goal is reached.Next it checks whether it has gone on a false path. Stayingwith the previous example, if the path has reached an outputgate, but not the one that is was aimed to, then it is surely awrong way, because it cannot go on from there in hope offinding the goal. So this path can be removed immediatelyfrom the collection.If neither of the above has happened then it is time to goon. This means that the pathfinder instance has to clone itselfas many times as many outputs there are in the actual gate.This ensures that the path done until the actual gate is copiedand carried on in all the directions that start from the actualstanding point.Roaming will not start in every direction though: the rulesare consulted at every output whether a new pathfinderinstance should be sent that way. This is how circles in thepath can be avoided for example.When all paths have reached a resting point, a final task isdone by the rules: they purge the collection of the paths.They look for paths that are unneeded but were not detectedby the rule that removes paths immediately during theroaming. If no pathfinders are sent out from a certain gatethen the one that reached it will stay in the collection, thoughit surely have not reached its goal, because otherwise itstravel would have been terminated by the rule that checks forthe endpoints. This is when it has to be purged at the end.The pathfinder rules consist of six elements:©<strong>EDA</strong> <strong>Publishing</strong>/THERMINIC 2008 232ISBN: 978-2-35500-008-9

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!