Using FSS to debug Sputnik's integer multiplier has not allowed me to find the root cause of the current problem (the cycle when product_valid is first asserted is not consistent, even with the same operands). I'm asking myself how FSS could have provided all of the necessary debug features, because you will require those. Cheating by using a source-level debugger, I found an unexpected intra-cycle transition. But the Software Requirements Specification requires that FSS be a cycle-based simulator.

In order to allow even minor changes to the SRS, I don't think the Waterfall model is going to work for me anymore. The Sashimi approach looks promising ...

But let me take you through this chronologically from the point of my last blog entry on the topic.

The owner of the aforementioned "damn hotel room" solved my VPN issue by moving me into one of their corporate furnished apartments on 2007-12-28. Here, I was connecting by Ethernet through a wall jack to equipment unknown (primary) and that was working ... for a while. Then the LAN connection became unreliable. The owner solved that problem by giving me a cable modem (secondary). I put a router in between the cable modem and the laptop for firewall protection. This secondary solution reestablished a reliable connection to the Internet, but broke my VPN connection again! That started another nightmare with Linksys that was finally solved on 2008-02-27. Contact me if you want details.

Right-click on waveform viewer caused NullPointerException. I hadn't seen that problem on Solaris, but now was observing it on Windows. The solution was that I needed to better handle the case where releasing the right mouse button is the popup trigger. The Java API documentation clearly states that the choice of whether it is pressing or releasing, is implementation dependent. You will see the fix in Version_0-007.

J. Peterman has had VPN access all along, but has yet to solve his CVS access issue. To do some trailblazing for him, I decided to increase the priority of performing a remote CVS checkout for the first time (Anyway, I needed Confluence for my other project, automated Verilog to JHDL translation). I successfully worked through my WinCvs/SSH issues. Again, contact me if you want details.

Now I had a vertical scrollbar, even for a short signal list. That was the problem I was working on when I left Austin. Scrollable client (a.k.a. data model) was too tall when the cursor was on, because I had failed to account for the area below the JScrollPane that is used by the cursor for displaying the cycle number of the cursor position. I fixed that.

Then I solved another WinCvs issue when committing. The sandbox had been checked out when I was still in Austin, and now I wanted to commit remotely. If you want details ...

I tried to debug the integer multiplier using FSS and saw an AssertionError in my Waveform class. Atomicity was needed when adding to xPoints and adding to yPoints (i.e. don't add to one without the other). Selectively used synchronized methods to guarantee that other threads (e.g. AWT-EventQueue-0) attempting to enter any synchronized method on the same Waveform object are placed in the blocked state.

Again, I tried to debug the multiplier. I found that WaveformPanelWireNames was not wide enough to accommodate
fullChip/iu/multiplicationHardware/MULTIPLIERCONTROL2PRODUCTREGISTERadd[0]
and that its horizontal scroll bar did not help enough. I needed to widen the scrollable client to accommodate a long string.

On 2008-01-13, I learned that J. Peterman had broken his wrist and hand. I saw him on 2008-02-17 and he still looked pretty bad.

I studied the multiplier's state diagram and selected additional signals to trace.

Using the conditional breakpoints of the NetBeans IDE, I found the unexpected intra-cycle transition and reasoned that the FSS user needs to see those. JHDL provides the simulator kernel and it is phase-based rather than cycle-based. That is, a cycle consists of multiple phases. Hiding that detail from the FSS user seems unwise. A minor change to the SRS will be necessary, but the Waterfall model doesn't allow that.

According to Wicked Problems, Righteous Solutions, "The Japanese ... adapted [the Waterfall model] to their own style." Because of the copyright, I'll stop here and recommend that you buy the book for more about the Sashimi approach.