Hello students. In this module, we will look at modelling using a language called SystemC, and we will hear guest speakers from Trimble Engineering presenting on their products. One thing to note, Trimble brought in some of their technology for my in-class students to get hands-on experience with, and after much debating I decided to remove this part of the lecture as it didn't translate well into this online format. Learning outcome is to start to just, and we're just really going to scratch the surface. This lecture probably won't take the whole class period. I wanted to introduce enough of the notions to you that you could, one, be aware of it and, two, start to gain some insight what you can do with it. We're going to take a look at how we can apply SystemC to model physical systems. So, here's a cartoon of an example industrial IoT platform, some physical plant. I got inputs coming in a series of processes that are interacting with the platform through sensors and actuators. I animated those so. Yeah, there you go. So, as these processes are working or collecting all of this data, and it can be a huge amount of data as we've seen, it could be terabytes and up to petabytes of data. We've spent last two weeks looking at machine-learning algorithms, and data analytics. How we can extract and tried to gain key insights and hidden insights into what might be going on in this physical process to improve operational efficiency, reduce costs, increase revenue. You're getting tired of hearing me say that. Well, what else can we do with it? We can take that data and we can use it to construct a model of the physical system. This simulated physical system can then be fed with simulated stimulus in the analysis based on the data that was collected to perform what if scenarios. Again, this is another way to look for ways to improve operational efficiency and study systems. When I was at Seagate, we use SystemC. We started with spreadsheets and you can only get so far with spreadsheets with complex systems that have characteristics that vary with time. Spreadsheet gave us a reasonable first order understanding of what was happening inside of our drives. Then, we realized that we needed to introduce time. So, we could do that by writing a model in Verilog or SystemVerilog. But that one cost money, takes up a licensed seat for those simulation tools and they're relatively slow in comparison to SystemC. So, we built a SystemC model that modeled the hardware of the SSD. So, here was the connection to the host and it could populate a bunch of flash back here. Then, we get two primary modules, the hardware that modeled all the actual behavior of the hardware, all the data movers in DMA, AES encryption algorithm. One of our designs had a lossless data compression engine in it, and processes that would be handled by firmware. So, there wasn't even a notion of some number of CPUs, there were just firmware processes that interacted the hardware. We had a lot of knobs that we could turn on this model. This hardware had a number of buffers in it, and I could turn the knobs on how big those buffers where, and I could run a particular host workload, and I could monitor the behavior of the whole system playing what if scenarios. We gained so much more insight into our designs by having a model we can simulate and turn a bunch of knobs on to see what happens because the spreadsheet didn't have a notion of time. We used a product called CoFluent, it was an independent company has since been acquired by Intel. It lays a graphical user interface over the top of SystemC, but underneath of it is SystemC. What you get at the end of the day with SystemC is C program, and it gets compiled to an executable, and runs very quickly in relationship to say, Verilog simulation. So, in the industrial world, we could do this and you can use SystemC to do that. I have forgotten that little animation there. So, we can run our process with simulated inputs or that were measured from the real world. We could change our simulated inputs and we can study how the system behaves.