FPGA design engineer and blogger, placing particular emphasis on test and formal verification

Gisselquist Technology, LLC,
Joined January 2017
Perhaps a picture would do a better job explaining what happened ... The good news is that regressions are now passing (again) following a simple fix (S/W change only) to move the sample clock earlier.
Today's bug: two simulators (XCelium, Icarus), same logic, one test case passes, one doesn't. Why? It's a race condition. The model sets its data on the same cycle as it gets sampled. One simulator samples the data before it gets set by the model, the other afterwards.
1
1
30
1,500
Today's bug of the week is a story. It starts with a commercial memory controller (built by yours truly), that passes all of its simulation tests. Reads tested, writes tested, WRAP tested, Exclusive access checked, etc. Many, but not all components were formally verified.
1
1
64
2,565
I can't say I've never made this mistake before Note that TFR_WRITE != TFR_TXPARITY ... otherwise this might've worked accidentally ...
4
1
15
951
What do you think, anyone see a bug here? It's a basic 2FF CDC crossing, from one clock to another ...
6
3
1
31
5,759
May God be praised.
5
544
Replying to @tadgirl23
Can you show me where AR changes while ARVALID && !ARREADY? As for reset, there's no requirement on when it can or cannot be asserted. It can be asserted at any time, and the design needs to respond appropriately.
25
"Righteous lips are the delight of kings; and they love him that speaketh right." Prov 16:13 There's a cost to telling the truth--even when it's not convenient. There's a greater cost to not speaking.
Elon Musk was asked how he handles employees who disagree with him publicly. His answer contradicts every leadership book written in the last 30 years. "I'd rather have someone who argues with me and is right than someone who agrees with me and is wrong." The room expected the diplomatic answer. That he values diverse perspectives. That healthy debate makes the team stronger. The standard CEO answer about psychological safety. He went further. He said the most dangerous person in any company is the one who agrees with you to protect their job. Because that person will let you drive the company off a cliff rather than risk being fired for telling you the cliff is there. The yes-man isn't loyal. He's selfish. He's trading the company's survival for his own comfort. He said SpaceX has a rule. If an engineer sees a problem and doesn't speak up, and the problem later causes a failure, the silence is treated as more serious than the mistake itself. The person who made the error was trying. The person who watched the error and said nothing was protecting themselves at the cost of the mission. Think about what that inverts. In most companies, the person who stays quiet and avoids conflict is rewarded with job security. At SpaceX, silence is the fireable offense and disagreement is the job requirement. Most leaders say they want honesty. Then they punish the first person who delivers it. He built a system where dishonesty through silence is the thing that gets punished. The culture didn't happen by accident. It was engineered to make agreement more dangerous than disagreement.
3
875
This had been tested before. Why hadn't this been caught? My best guess is that I had just resolved a race condition in the BFM, and once fixed/corrected, the BFM finally tested the behavior I wanted.
1
2
229
Here's a summary of what's going on:
1
1
268
Here's a bug to share. It surprised me when I found it, since this portion of the design had been (I thought) well tested. It only showed up after a change elsewhere, when running subsequent regression. Topic: AXI4 Exclusive access
2
1
37
2,061