1. Mike Mintz Co-author, Hardware Verification with C++ and Hardware Verification with SystemVerilog [email_address] OOP for Hardware Verification ̶ Demystified!
2.
3. Common Currency *There is nothing new under the sun. Sub sole nihil novi est.*
4.
5. Data Abstraction – Code Details Procedural Data Abstraction struct usb_driver {wire d_plus, d_minus;} void usb_init (usb_driver * d); void usb_send_packet (usb_driver * d, int type, int* data, int length); void usb_enumerate (usb_driver * d); struct usb_driver { wire d_plus, d_minus; void init (); void send_packet (int type, int* data, int length); void enumerate (); }; begin usb_driver driver; usb_init (&driver); usb_enumerate (&driver); usb_send (&driver, 0, {0,12}, 2); end begin usb_driver driver; driver. init (); driver.enumerate (); driver.send (0, {0,12}, 2); end
Mention taken heavily from the book. Mention condensing 2 years of writing 340 pages into one hour Mention relation to Verification – bigger projects, more complicated – OOP lets us be more productive
Note that information hiding and data abstraction were techniques within an existing language. Languages either allow, support, or encourage these techniques -- Bjarne’s paper OOP has been the best technique for over 20 years
Note that information hiding and data abstraction were techniques within an existing language. Languages either allow, support, or encourage these techniques -- Bjarne’s paper OOP has been the best technique for over 20 years
Note that information hiding and data abstraction were techniques within an existing language. Languages either allow, support, or encourage these techniques -- Bjarne’s paper OOP has been the best technique for over 20 years
Separates “when to do” from “what to do”
The monitor code is now maximally reusable. Could have one that just prints, or connects to a checker, or one that connects via a channel. There is now a separation between the monitor function and what to do with the results of monitoring
Separates “what to do” from “who does it”
The monitor code is now maximally reusable. Could have one that just prints, or connects to a checker, or one that connects via a channel. There is now a separation between the monitor function and what to do with the results of monitoring
Hope this talk was useful OOP is exciting and fun stuff