ChatGPT and Code

In my previous blog post about ChatGPT and Simics, I tested it on its knowledge and abilities with a fairly niche subject. Not unsurprisingly it did not do all that well. However, one area where ChatGPT appears to really work well is when dealing with program code. This seems more practically useful as well, especially as a generator of starting points and boiler-plate code. It can also sometimes do a decent job explaining code, subject to quite common bizarre mistakes and errors.

Continue reading “ChatGPT and Code”

ChatGPT and Simics

It is an understatement to say that ChatGPT has been a hot topic since it was launched a few months back. Everyone seems to be seeing what it can do in their favorite domain, so I had to try it on what I work with, Simics and virtual platforms. The results did not live up to the hype some people think the technology deserves, but it was very impressive and a little scary nevertheless. This is the first post in what looks like it will be a series about ChatGPT. Update: Part 2, ChatGPT and Code, is now out.

Continue reading “ChatGPT and Simics”

The NUC12 Enthusiast

Right when our old NUC5 died, its replacement had been delivered and brought online – a new Intel NUC12 Enthusiast, also known as the NUC12SNKi72 (I work at Intel, but even I find that name a bit obtuse). This is a seriously fast machine in a fairly compact package, even though admittedly not as small as the old NUC5. On the other hand, as a machine with an ambition to be a replacement for a dedicated gaming PC, it sports a dedicated graphics card and not just the integrated graphics typical for the classic NUCs.  

Continue reading “The NUC12 Enthusiast”

“100 Ways to Improve Your Writing”

Just before Christmas I stumbled on a most excellent little book: “100 Ways to Improve Your Writing” by Gary Provost. I wish I found it earlier, as it has been available for almost forty years. It is a little gem of good advice on how to write better (and how to communicate better general).

Continue reading ““100 Ways to Improve Your Writing””

This NUC is Dead

Computers can wear out given enough time. I just had an old NUC basically fall apart – on the very day it was being replaced by a new one. The timing is rather too good to be believed, but basically the machine stopped working just when we transitioned to a new NUC. The old one still booted… but running it was questionable due to its many concurrent failure modes.

Continue reading “This NUC is Dead”

DVCon Europe 2022. Verification, System Simulation, and People!

The 2022 DVCon (Design and Verification) Europe conference was back in physical form at its usual venue at the Holiday Inn München. It was a great conference, and just like at the 2022 DAC people were very happy to be back in person.

Continue reading “DVCon Europe 2022. Verification, System Simulation, and People!”

Notes from our DVCon Europe 2022 Tutorial

I presented a tutorial about the “verification of virtual platforms models” at DVCon Europe last week. The tutorial was prepared by me and Ola Dahl at Ericsson, but Ola unfortunately could not attend and present his part – so I had to learn his slides and style and do my best to be an Ola stand-in (tall order, we really missed you there Ola!). The title maybe did not entirely describe the contents – it was more a discussion around how to think about correctness and in particular specifications vs implementations. The best part was the animated discussion that we got going in the room, including some new insights from the audience that really added to the presented content.

Updated: Included an important point on software correctness that I forgot in the first publication.

Continue reading “Notes from our DVCon Europe 2022 Tutorial”

Elektroniktidningen Magazine Article about DML

The November 2022 on-paper magazine from Swedish electronics news site Elektroniktidningen features an article I wrote about the Device Modeling Language (DML). Among many other really good articles.

Update: The article is now available online in HTML format.

Cover of Elektroniktidningen 11/2022
Continue reading “Elektroniktidningen Magazine Article about DML”

Setting the Font in Windows 11 “Terminal”

I finally got updated to Windows 11 on my work machine, and suddenly I have to figure out how to use Windows 11 for real work. The redesigned start menu is terribly bad compared to the Windows 10 variant. What is nice though is the new Terminal app, along with the quite pleasing Cascadia font. However, I found the default size of Cascadia to be a tad big. Which lead to the question: “just how on earth are you supposed to control the font on this thing?” The font adjustment is probably the least logical I have ever found, and without some help from the Internet I would never have figured out. So here is how you do it.

Continue reading “Setting the Font in Windows 11 “Terminal””

Two Presentations at DVCON Europe 2022

DVCon (Design and Verification Conference) Europe is coming up in early December, in person, in München, Germany. The selection of papers and posters is finished, and the program is firming up. I am happy to report that I am part of two items on the menu, a personal record for DVCon! For more on DVCon Europe in general and how it has been in the past, see my previous blog post on DVCon Europe 2022.   

Continue reading “Two Presentations at DVCON Europe 2022”

The Mathworks Automotive Conference (MAC) 2022

The Mathworks Automotive Conference (MAC) 2022 was one-day vendor-specific conference about how Mathworks products can be/are used in the automotive sector. The set of companies represented was truly impressive. There were presentations from Lightyear, MAN, Mercedes-Benz, Volvo, Infineon, Toyota, Bosch, Continental, Real-Time Innovations, and of course the Mathworks themselves. It was a day well-spent listening to interesting talks. Here is my personal summary.

Continue reading “The Mathworks Automotive Conference (MAC) 2022”

Finding the Cursor on Windows…

In the last year, I noticed that my Windows machines started to grey the screen and show a highlight around the cursor when I accidentally hit the CTRL key twice. At first, I had no idea what was going on, but then I figured out it was connected to CTRL. So I assumed that this was a brilliant new feature added by Microsoft in some recent Windows update (to both Windows 10 and 11, thank you very much!). However, then I tried to help a colleague find the function and realized it was missing on his machine. What was going on?

Continue reading “Finding the Cursor on Windows…”

What’s in a Kilowatt Hour?

The current price spikes for electricity in Europe has driven a new interest in saving energy, and part of doing that is to understand just how much energy different things use. I realized while I knew that modern LED lights are magically efficient, just how much electricity is used by other machines? No idea! So, I set out to find some examples the utility you get from a one kilowatt hour of electricity.

Updated in November 2022 with additional data.

Continue reading “What’s in a Kilowatt Hour?”

Testing what the User will See (and why it might not work out)

The other day, I checked out the web interface to the database of in-patient care diagnoses run by Swedish Socialstyrelsen. On first opening the site, it looked broken and unusable – the text was basically unreadable, mixing giant numbers with strange- looking regular characters, lines of text overlapping each other, and a general sense of being totally chaotic. That is not what you or I would expect from an official site of a government entity. They have no reason to play games with the look of the site. So how come it was all that broken?  Didn’t they test the site properly under all circumstances?

Continue reading “Testing what the User will See (and why it might not work out)”

A Study of Cognitive Biases in Software Development

I recently read a few articles on cognitive biases, decision making, and expert intuition from the field of management research. Then an article popped up from the Communications of the ACM (CACM) dealing with cognitive bias in software development. The CACM article is a small field study that serves up some interesting and potentially quite useful conclusions about how to think about thinking in software development.

Continue reading “A Study of Cognitive Biases in Software Development”

Blog: Grug Brained Developer Make Sense                  

A colleague pointed me at the grugbrain.dev website the other week. It is a very humorous set of observations on corporate life and advice to young developers – written in a silly “cave-man” style. It is obviously based on long experience. The text is also quite quote-worthy, with some passages even being quite poetic in their rough-hewn simplicity.

Continue reading “Blog: Grug Brained Developer Make Sense                  “

DAC 2022 – Back in Person, Chiplets, an Award, and Much More

The 59th Design Automation Conference (DAC) took place in San Francisco, July 10-14, 2022.  As always, the DAC provided a great place to learn about what is going on in EDA. The DAC is really three events in one: there is an industry trade-show/exhibition, a research conference that is considered the premier in EDA, and an engineering track where practitioners present their work in a less formal setting.

I had two talks in the engineering track – one on the Intel device modeling language (which actually won the best presentation award in the embedded sub-track), and one on using simulation technology to build hardware software-first. 

The DAC was almost overwhelming in the richness of people and companies, but this blog tries to summarize the most prominent observations.

Continue reading “DAC 2022 – Back in Person, Chiplets, an Award, and Much More”

Intel Blog: Catching a Tricky Bug by Running Simics on Simics

I recently published a long post on the Intel Community Blog, talking about how my colleague Evgeny solved a nicely complicated bug using Simics-on-Simics. The bug involved UEFI, an operating system, SMM, SMI, and virtualization. Just another day in the office (or more like a year, given how long it took to get this one resolved).

The ESA Schiaparelli Crash & Simulation

Back in 2016, the European Space Agency (ESA) lost the Schiaparelli Mars lander during its descent to the surface on Mars. From a software engineering and testing perspective, the story of why the landing failed (see for example the ESA final analysis, Space News, or the BBC) is instructive. It comes down to how software is written and tested to deal with unexpected inputs in unexpected circumstances. I published a blog post about this right after the event and before the final analysis was available. Thankfully, that has since been retired from its original location-it was a bit too full of speculation that turned out to be incorrect… So here is a mostly rewritten version of the post, quoting the final analysis and with new insights.  

Continue reading “The ESA Schiaparelli Crash & Simulation”

Building or Designing, Lego and IKEA

Back in April, I presented a talk about how you can use Lego as an analogy for software development in the ProductBeats Show. The talk was based on my previous musings about Lego and software. It was a great fun 15 minutes with a good after-discussion moderated by Magnus Billgren. As always at the ProductBeats show, Magnus nudged me and the audience to think. He kicked off the talk by asking the audience and me about the process of assembling IKEA furniture. Is that assembly about building or designing? That is a very god question. Here is my attempt at an answer.

Continue reading “Building or Designing, Lego and IKEA”

USS Massachusetts and Battleship Cove

I recently made a trip to the US to look at some interesting things like the USS Intrepid, the architecture or New York City, and Battleship Cove.  Battleship Cove is located in Fall River, Massachusetts, and hosts the South Dakota-class battleship USS Massachusetts. Additionally, the site holds the destroyer USS Joseph P Kennedy, the submarine USS Lionfish, and the East German missile corvette Hiddensee. Given that I only had an afternoon there, I ended up only looking at the battleship with a brief run through the submarine. It was that good, especially in company with an old friend who also had read up on how the ship worked.

Entry to Battleship Cove
Continue reading “USS Massachusetts and Battleship Cove”

Was this a UTF-8 WTF?

Today I observed something very odd in Powerpoint. I was pasting in some text from the Simics command-line interface into a text box in Powerpoint to show the output of some commands. Commands whose output relied on box-drawing characters to produce nice tables. But for some reason… it did not work in Powerpoint. Weird.

Continue reading “Was this a UTF-8 WTF?”

SystemC Evolution Fika: Parallel SystemC

The SystemC Evolution Fika on April 7 had threading/parallelism as its theme. There were four speakers who presented various angles on how to parallelize SystemC models. The presentations and following discussion provided a variety of perspectives on threading as it can be applied in virtual platforms and other computer architecture simulations. It was pretty clear that the presenters and audience had quite different ideas about just what the target domain looks like and the best way to introduce parallelism to SystemC. Here is my take on what was said.

Continue reading “SystemC Evolution Fika: Parallel SystemC”

Some Notes on Temporal Decoupling (Reposted)

This blog post was originally posted at Intel back in 2018, but it has since been retired from the Intel blog system. As it is of general interest (in my opinion), here is a reposting (with a few small updates here and there).

Temporal decoupling is a key technology in virtual platforms, and can speed up the execution of a system by several orders of magnitude. In my own experiments, I have seen it provide a speedup of more than 1000x. Here, I will dig a little deeper into temporal decoupling and its semantic effects.

Continue reading “Some Notes on Temporal Decoupling (Reposted)”

DVCon Europe 2022 – Come Join us in München in December

The Design and Verification Conference (DVCon) Europe is going to be in-person in München again in 2022. After two years of virtual conferences, we are going back to the Holiday Inn where we have had so many great events in the past. The conference takes place on December 6 and 7. The call for papers, tutorials, and panels is out now, with a deadline in May!

Continue reading “DVCon Europe 2022 – Come Join us in München in December”

Don’t Look behind the Curtain! (Please)

In a previous blog, I talked a bit about the hazards of coding to an implementation and not a specification, based on 1980s home computers. While the specifics and peculiarities of that case is hopefully confined to old hardware, the lessons are still worth contemplating. There is a modern variant of this phenomenon that is based on open-source software, and that I must admit to feeling a bit annoyed by. Fundamentally, the question is this: when figuring out how to use an API – should you look at the documentation or the implementation?

Continue reading “Don’t Look behind the Curtain! (Please)”

Easy to Assemble, just like Lego – Right…

When discussing the design and integration of systems on chip and models of systems on chip, the Lego analogy is often brought up. The idea being that with Lego, anyone can put together anything and every component can be combined with all other components. Right. My recent building of Lego set 21327, Typewriter, makes me wonder if the people who talk about Lego-like construction have actually built anything from Legos in the past few decades.

Continue reading “Easy to Assemble, just like Lego – Right…”

Blog – Damn the Torpedoes, Full Code Ahead!

I have recently got back to developing training labs for the Simics simulator (and related technologies).  During the process of developing a new accelerator model using as many of the latest frameworks and APIs as possible, it was basically guaranteed that I would hit some bugs and unexpected behaviors. That is a natural part of and benefit from creating training materials in the first place. It also provides a good illustration of two fundamentally different ways to look at software development. One is to play it safe and get things done in known ways, and the other is charge ahead, try the unknown, and see what happens. Damn the torpedoes, bugs are a benefit. No bug reports, no glory. In this post, I will share some recent examples of just coding ahead and breaking thing.

Continue reading “Blog – Damn the Torpedoes, Full Code Ahead!”

Minimum Viable (Replacement) Product – The Teams Example

During 2020 and 2021, Intel switched from using Microsoft Skype for Business (also known as Lync) to Microsoft Teams as the primary internal calling, chatting, and conferencing tool. While (finally) Teams has turned into quite a decent communications tool, the transition started a bit too early from a feature completeness perspective. Microsoft in essence gave us an enterprise Minimum Viable Product (MVP). Not a proper Replacement Product (RP). Teams left out many rather important and useful features, degrading the user experience and value, and making my life harder. I don’t think that was particularly well handled. I can understand it as a product manager, but as a user, I don’t like it all.

Continue reading “Minimum Viable (Replacement) Product – The Teams Example”