Published 19 Jul 2013

Day 4 (7/18)

  • Yesterday I decided that the current state of the code couldn't handle all the interwoven decision making we wanted to do. The code base is separated into two distinct scripts that don't really interact well together, and it didn't make sense to keep passing variables back and forth between them when they should be shared. Also, there was a lot of repeated functions and methods and it didn't really make sense to have so many duplicate lines of code in the code base.
  • So today was a refactoring day! I am proud to say that I successfully merged the two files and improved a lot of the methods. I also reduced almost 100 lines of code out, while adding a lot of clarity to the flow and preparing for some new feautres.
  • I've only gotten up to picking implications based on activation probability and the high fault count of the implicand node. I still need to integrate some gauge of low fault count of implicant node, which requires running a new set of fault analysis and is a pretty frustrating thing to work in. I'm leaving that for tomorrow.
  • I also think it might be useful to just hand-produce some different test circuit designs prioritizing different aspects of implication selection to see which results work best. Another task for tomorrow.

Day 3 (7/17)

  • Had a meeting with Marco and Dr. Bahar and we discussed my current results and progress. I think the changes I've made are going over well, but in our discussion we decided that the order of priorities for the implications I choose should be switched up a little. The way the code is structured doesn't give much room to weigh activation probability as much as we'd like to, so I need to rework the flow slightly to reprioritize things.
  • After the meeting Marco showed me how to run a spice simulation on Oscar, my first time! It was not super exciting. But then I got my results and I was able to look at the simulations in SmartView. Unfortunately, the results were not good. It didn't look like there was a lot of noise reduction at all, even with 8 schmitt gates added. But I've outlined a bunch of different tests I can run to see what things are effective, and I still have a lot of reworking to do with the tools so hopefully these results can be improved a little.

Day 2 (7/16)

  • Busy day today. Stayed very late because simulations were taking a while and I wanted to have everything prepped for my meeting tomorrow.
  • Marco pointed me towards the tool used for drawing schematic block diagrams. I figure I'm going to need these circuits for my eventual poster and paper, so it wasn't lost time I spent painfully drawing these circuits, but it was very tedious. I did draw all of rd53 and rd73, which is good because now I can use these diagrams for when I show my results tomorrow at the meeting.
  • I added the code to remove duplicate implications, so now it does a check for implications that share an implicand and chooses the one with the higher probability of activation. I now see that I'll have to do this on a larger scale with my coverage code also, but it was pretty easy so that's good.
  • I also finished the coverage code! There's now a parameter that controls how many nodes we want reinforced, and if, after the outputs are initially covered, there is area left to be reinforced, it goes through and does a proportional insertion of more implications to high-fault nodes in each of the output. It's still slightly twitchy: sometimes two outputs have a shared high-fault node and an implication is output twice, and gates too close to the input just mess up fastscan, which is fine, but not nice programming. Also, I noticed that the script can sometimes miss an implication - I think I know where that's happening, but not why. Will need to investigate further.

Day 1 (7/15)

  • Last week right before I left I discovered that fastscan was choking on the pattern files for fault simulation. That was like a big hairy mess I didn't want to look at, so I tabled it for this week, and today I got started. I discovered that the pattern files being generated for testing had some syntax errors and were weirdly missing some lines. So first I dug around until I found where the lines were supposed to be written. Then I tested it again on rd53 to see if this was a circuit-specific problem or if some code accidentally was removed. It turned out that the script for parsing pattern files was very hard-coded and could not cope with the larger circuit pattern files. I made the script more flexible, and then it generated faults for rd73! Very exciting.
  • My next task was to generate the spice files for testing. Marco told me I needed a grey code for the input values, and since the rd73 circuit has 7 inputs, I needed a 7-bit grey code. Grey codes are a little confusing and scale in a really overwhelming way, so I spent a little while writing a script that generates the grey code, so I can add that to the automation also.
  • Then I realized that I'd have to manually remove the duplicate implications (not really duplicates, but they both cover the same gate) so I set to work automating that. I figure holding up my progress a little now is better than doing it on my own a few times and then having to automate it anyway. For some reason fastscan is running very slowly and it's having a negative effect on my productivity, but Marco and I troubleshot it for a while and couldn't figure out the source. Until then I'll just multitask a bit more with a few different problems.