Published 12 Jul 2013
Weekly Accomplishments:
- Officially automated the fault reinforcement tool!
- Moved on to adding more features and testing on more circuits
Week 6 TODOs:
- complete testing on rd73 and maybe some more circuits on the list,
add features and robustness as needed
- finish writing tool for adjusting fault coverage in implication selection
Day 5 (7/12)
- Today I set out to reformat the rd73 circuit verilog file so that I could test it.
It turns out that the tool used to convert the circuits to verilog was written by Dr.
Bahar herself a while ago so there may be some syntax errors. So, armed with some handy
vim find-and-replace and column-selection magic, I reformatted and corrected the verilog
file. Then, I ran the circuit again and realized I needed to replace all the 3+ input gates
with 2 input gates. This was all a tedious and complicated process because of naming
conventions for the circuits, remembering to add new wires, etc, etc. Finally, when
I had a working gate, the tool started hanging during both chain selection and the fault
simulation. Upon investigation, I saw that iterating through a circuit graph to find chains
scales very badly: the place where the code was hanging had two nested for loops set to
iterate a combined total of 60,000,000. The size of the circuit may also be the reason fastscan
crashes when doing fault analysis on the circuit I'm not sure if running on a faster computer will help,
but I will investigate this next week.
Day 4 (7/11)
- I made the (personal) discovery that in the current fault observability
workflow, all the resulting implications will be self-implications. This helped
me fill in all the blanks in my discrepancies with the hand-picked implications
from Lauren's thesis. I can
now reproduce all the implications after adding lots of conditions to the implication
selection to ensure it chooses only ideal implications.
The fault observability script now checks to ensure the high-fault node
is not a primary input or output or too close to a primary input, and that
the implicants chosen in the implication are not primary inputs.
- I worked on running a few new circuits through the tool, but all of them worked in
various places. I think the c-label circuits are all too large right now
to be handled by the tool, and there may have been some problems with the slightly
larger rd73 circuit.
Day 3 (7/10)
- I was still not able to produce implications for all outputs, so my task was to fix
that. At our team meeting, Dr. Bahar pointed out that even though Lauren didn't include a
specific list of implications in her thesis, I could parse them out by looking at her
included diagrams and the spice netlists, which I now have access to. If I'm able to
modify the script so it can effectively pick out all of Lauren's hand-picked implications,
I can be confident that it's functional to a good degree and then move on to improving
the script and testing it on other circuits.
- I thought I could easily reinforce a high-fault node by just picking any implication
that matches the node, but I had overlooked the critical criteria of the nodes probability
of being the implication value, and I also didn't ensure that the high-fault node would
only qualify as the implicand. It was also confusing to choose nodes that were
before the chosen node, but not necessarily in the fan-in cone (it's easy to pick out
in a picture, but takes some fancy graph manipulation). So I had to table that "improvement"
until I have more time to approach it.
- There was a strange thing that Lauren included in her code about "type switching" where
she would switch the type of the high fault node and the implication's type, and neither of us
could figure out why that happened (but luckily, left it in there). When we were discussing a
different problem, though, we figured out that the types are probably switched so that later,
when figuring out what type of CMOS gate to place in the spice netlist, it has to use the opposite
of the high-fault type. Thus, type switching in advance. I put in some useful comments that
explain the reasoning briefly.
- I spent the rest of my day carefully collecting a list of the hand-picked high-fault nodes, their gates,
positions in the graph, and other relevant information from Lauren's thesis and the SPICE netlists
so I could later carefully figure out how to parse them out.
Day 2 (7/9)
- In the morning I sat down and really concentrated on figuring out why one
output in the rd53 circuit, v5_0, was giving wrong outputs. I've been using
stickies to keep track of all the problems I'm encountering, which is helping
my workflow a lot. Back to v5_0, the script was making an implication file
for the output node, but not writing any implications to it. Upon deep investigation,
I found that it was choosing as v5_0's high fault node a node that only had inputs
as its node to reinforce, and the script did not like that. To solve this, I stuck
a few checks in to reject inputs and nodes that didn't have a sufficient distance from
the output or input to provide an interesting circuit. That solved the problem for v5_0!
- There was a weird confirmation in the "choose high-fault nodes" function that ensured
that all high-fault nodes were a distance of 5, exactly, away from the output. We're not
sure why that's there (as it was resulting in undesirable choices and did not seem like
a logical step) but Marco thinks it might be residual from the line of thinking that tried
to make implication chains with a length of 5 or 6. Since chains and fault-reinforcement
implications have different rules, I could eliminate that check, and things worked better.
Day 1 (7/8)
- My email things are almost set up! The ccv system is down today, but as
of tomorrow I will finally have access to Oscar. Of course, we've now decided
I won't be focusing on spice simulations so it's not critical for me anymore.
But I still need to learn how to run simulations so I can validate my generated
circuits, so I'm glad I have it. Hopefully I will be able to test my own circuits
with it soon!
- First I sat down with Marco and we discussed my adventures of
this past week and what I would do in the upcoming future. We discussed
how my goal for the next few weeks should be to figure out and maybe
improve the metrics used for chain evaluation in find-chains, figure out
and maybe improve the metrics used for fault-implication insertion,
and see if there's a way of deciding which is more optimal, and see if there's
a way of doing a mixture of the two for an optimal approach. This is all in
addition to the hopeful task of doing spice simulations once I get system
access.
- Then Dr. Bahar stopped by and we did some catch up on the project, and I met
a masters student who will be looking over more of the Spice simulations
side of the project. We decided that my priorities were to get the tool
going and add some more automation to it. We picked out a list of circuits
that I should also test on, and prioritized which ones were more important
(mostly conditional on how big they were) to get working.
- I spent most of the day stepping through the fault simulation script to
figure out why the methods were picking out the nodes they were picking
as "high-fault nodes" and pouring over fault reports to understand the
text parsing used to pick out nodes for implications.