SlideShare uma empresa Scribd logo
1 de 14
Mike Mintz Co-author,  Hardware Verification with C++ and  Hardware Verification with SystemVerilog [email_address] OOP for Hardware Verification   ̶   Demystified!
Overview ,[object Object],[object Object],[object Object],[object Object],[object Object]
Common Currency  *There is nothing new under the sun. Sub sole nihil novi est.*
Data Abstraction ,[object Object],[object Object],[object Object],[object Object]
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
Virtual Function ,[object Object],[object Object],[object Object],[object Object]
Virtual Functions Monitor class Derived for printing struct usb_printer: public usb_monitor {  virtual void packet_completed (int length, int* data) { for (int i(0); i < length; ++i) { printf (“Packet [%d]:0x%x”, i, data[i]); } } }; Derived for checker struct usb_checker : public usb_monitor { virtual void packet_completed (int length, int* data) { checker_->check (length, data); } checker* checker_; }; Derived for channel struct usb_monitor_agent : public usb_monitor {  virtual void packet_completed (int length, int* data) { channel_->put (data_packet (length, data)); } usb_channel* channel_; }; struct usb_monitor  { wire d_plus, d_minus; void start_monitor_thread (); virtual void packet_completed (int length, int* data) =0; };
Base Class ,[object Object],[object Object],[object Object],[object Object]
Base Classes – Code Details struct irritator  { virtual void out_of_reset () =0; virtual void start () =0; virtual void stop () =0; virtual void wait_for_completion () =0; }; Irritator class Derived for USB Derived for PCIE Derived for Ethernet struct usb_irritator : public irritator { virtual void out_of_reset (); virtual void start (); virtual void stop (); virtual void wait_for_completion (); }; struct pcie_irritator: public irritator { virtual void out_of_reset (); virtual void start (); virtual void stop (); virtual void wait_for_completion (); }; struct ethernet_irritator: public irritator { virtual void out_of_reset (); virtual void start (); virtual void stop (); virtual void wait_for_completion (); };
Using OOP – Truss Top-Level Components Source:  Hardware Verification with C++, page 95,  page 100 class verification_component { public: verification_component  (const std::string&); virtual void randomize  () = 0; virtual void time_zero_setup  () = 0; virtual void out_of_reset  (reset r) =  0; virtual void start  () =  0; virtual void wait_for_completion  () =  0; virtual void report  (const std::string) =  0; };
The “Dance” Source:  Hardware Verification with C++, page 97 Source:  Hardware Verification with C++, page 117
The “Dance”  ̶  painfully detailed Source:  Hardware Verification with C++, page 120 Source:  Hardware Verification with C++, page 121
Summary ,[object Object],[object Object],[object Object],[object Object]
Q & A* *shameless plug

Mais conteúdo relacionado

Mais procurados

Trip itparsing
Trip itparsingTrip itparsing
Trip itparsingCapIpad
 
Study of aloha protocol using ns2 network java proram
Study of aloha protocol using ns2 network java proramStudy of aloha protocol using ns2 network java proram
Study of aloha protocol using ns2 network java proramMeenakshi Devi
 
Implementing Software Machines in Go and C
Implementing Software Machines in Go and CImplementing Software Machines in Go and C
Implementing Software Machines in Go and CEleanor McHugh
 
Broken windows de práticas ágeis
Broken windows de práticas ágeisBroken windows de práticas ágeis
Broken windows de práticas ágeisCecilia Fernandes
 
Advance features of C++
Advance features of C++Advance features of C++
Advance features of C++vidyamittal
 
DATASTRUCTURES PPTS PREPARED BY M V BRAHMANANDA REDDY
DATASTRUCTURES PPTS PREPARED BY M V BRAHMANANDA REDDYDATASTRUCTURES PPTS PREPARED BY M V BRAHMANANDA REDDY
DATASTRUCTURES PPTS PREPARED BY M V BRAHMANANDA REDDYMalikireddy Bramhananda Reddy
 
Advance C++notes
Advance C++notesAdvance C++notes
Advance C++notesRajiv Gupta
 
Basic Programs of C++
Basic Programs of C++Basic Programs of C++
Basic Programs of C++Bharat Kalia
 
Program for hamming code using c
Program for hamming code using cProgram for hamming code using c
Program for hamming code using csnsanth
 
Timur Shemsedinov "Пишу на колбеках, а что... (Асинхронное программирование)"
Timur Shemsedinov "Пишу на колбеках, а что... (Асинхронное программирование)"Timur Shemsedinov "Пишу на колбеках, а что... (Асинхронное программирование)"
Timur Shemsedinov "Пишу на колбеках, а что... (Асинхронное программирование)"OdessaJS Conf
 
Ee 3122 numerical methods and statistics sessional credit
Ee 3122 numerical methods and statistics sessional  creditEe 3122 numerical methods and statistics sessional  credit
Ee 3122 numerical methods and statistics sessional creditRaihan Bin-Mofidul
 
C++totural file
C++totural fileC++totural file
C++totural filehalaisumit
 

Mais procurados (20)

Trip itparsing
Trip itparsingTrip itparsing
Trip itparsing
 
Whispered secrets
Whispered secretsWhispered secrets
Whispered secrets
 
Study of aloha protocol using ns2 network java proram
Study of aloha protocol using ns2 network java proramStudy of aloha protocol using ns2 network java proram
Study of aloha protocol using ns2 network java proram
 
Implementing Software Machines in Go and C
Implementing Software Machines in Go and CImplementing Software Machines in Go and C
Implementing Software Machines in Go and C
 
Whispered secrets
Whispered secretsWhispered secrets
Whispered secrets
 
Broken windows de práticas ágeis
Broken windows de práticas ágeisBroken windows de práticas ágeis
Broken windows de práticas ágeis
 
Cpp tutorial
Cpp tutorialCpp tutorial
Cpp tutorial
 
2 a networkflow
2 a networkflow2 a networkflow
2 a networkflow
 
Advance features of C++
Advance features of C++Advance features of C++
Advance features of C++
 
DATASTRUCTURES PPTS PREPARED BY M V BRAHMANANDA REDDY
DATASTRUCTURES PPTS PREPARED BY M V BRAHMANANDA REDDYDATASTRUCTURES PPTS PREPARED BY M V BRAHMANANDA REDDY
DATASTRUCTURES PPTS PREPARED BY M V BRAHMANANDA REDDY
 
Advance C++notes
Advance C++notesAdvance C++notes
Advance C++notes
 
Basic Programs of C++
Basic Programs of C++Basic Programs of C++
Basic Programs of C++
 
JVM Architecture - Java
JVM Architecture - JavaJVM Architecture - Java
JVM Architecture - Java
 
C++ programs
C++ programsC++ programs
C++ programs
 
C sharp 8
C sharp 8C sharp 8
C sharp 8
 
Program for hamming code using c
Program for hamming code using cProgram for hamming code using c
Program for hamming code using c
 
C++ TUTORIAL 3
C++ TUTORIAL 3C++ TUTORIAL 3
C++ TUTORIAL 3
 
Timur Shemsedinov "Пишу на колбеках, а что... (Асинхронное программирование)"
Timur Shemsedinov "Пишу на колбеках, а что... (Асинхронное программирование)"Timur Shemsedinov "Пишу на колбеках, а что... (Асинхронное программирование)"
Timur Shemsedinov "Пишу на колбеках, а что... (Асинхронное программирование)"
 
Ee 3122 numerical methods and statistics sessional credit
Ee 3122 numerical methods and statistics sessional  creditEe 3122 numerical methods and statistics sessional  credit
Ee 3122 numerical methods and statistics sessional credit
 
C++totural file
C++totural fileC++totural file
C++totural file
 

Destaque (7)

Thaker q3 2008
Thaker q3 2008Thaker q3 2008
Thaker q3 2008
 
Boston 2009 q1_kappler_chris
Boston 2009 q1_kappler_chrisBoston 2009 q1_kappler_chris
Boston 2009 q1_kappler_chris
 
Herrington dv club_sept19-1
Herrington dv club_sept19-1Herrington dv club_sept19-1
Herrington dv club_sept19-1
 
Roy omap validation_dvc_lub_092106
Roy omap validation_dvc_lub_092106Roy omap validation_dvc_lub_092106
Roy omap validation_dvc_lub_092106
 
Lafauci dv club oct 2006
Lafauci dv club oct 2006Lafauci dv club oct 2006
Lafauci dv club oct 2006
 
The validation attitude
The validation attitudeThe validation attitude
The validation attitude
 
Arthur q207
Arthur q207Arthur q207
Arthur q207
 

Semelhante a Mintz q207

OOP for Hardware Verification--Demystified!
OOP for Hardware Verification--Demystified! OOP for Hardware Verification--Demystified!
OOP for Hardware Verification--Demystified! DVClub
 
Chapter i(introduction to java)
Chapter i(introduction to java)Chapter i(introduction to java)
Chapter i(introduction to java)Chhom Karath
 
ISCA Final Presentaiton - Compilations
ISCA Final Presentaiton -  CompilationsISCA Final Presentaiton -  Compilations
ISCA Final Presentaiton - CompilationsHSA Foundation
 
Distributed systems
Distributed systemsDistributed systems
Distributed systemsSonali Parab
 
Assignment no39
Assignment no39Assignment no39
Assignment no39Jay Patel
 
InterConnect2016: WebApp Architectures with Java and Node.js
InterConnect2016: WebApp Architectures with Java and Node.jsInterConnect2016: WebApp Architectures with Java and Node.js
InterConnect2016: WebApp Architectures with Java and Node.jsChris Bailey
 
Static analysis: looking for errors ... and vulnerabilities?
Static analysis: looking for errors ... and vulnerabilities? Static analysis: looking for errors ... and vulnerabilities?
Static analysis: looking for errors ... and vulnerabilities? Andrey Karpov
 
PVS-Studio, a solution for resource intensive applications development
PVS-Studio, a solution for resource intensive applications developmentPVS-Studio, a solution for resource intensive applications development
PVS-Studio, a solution for resource intensive applications developmentOOO "Program Verification Systems"
 
Static analysis of C++ source code
Static analysis of C++ source codeStatic analysis of C++ source code
Static analysis of C++ source codePVS-Studio
 
Static analysis of C++ source code
Static analysis of C++ source codeStatic analysis of C++ source code
Static analysis of C++ source codeAndrey Karpov
 
A miało być tak... bez wycieków
A miało być tak... bez wyciekówA miało być tak... bez wycieków
A miało być tak... bez wyciekówKonrad Kokosa
 
Wap to implement bitwise operators
Wap to implement bitwise operatorsWap to implement bitwise operators
Wap to implement bitwise operatorsHarleen Sodhi
 
Java Airline Reservation System – Travel Smarter, Not Harder.pdf
Java Airline Reservation System – Travel Smarter, Not Harder.pdfJava Airline Reservation System – Travel Smarter, Not Harder.pdf
Java Airline Reservation System – Travel Smarter, Not Harder.pdfSudhanshiBakre1
 
A la découverte de TypeScript
A la découverte de TypeScriptA la découverte de TypeScript
A la découverte de TypeScriptDenis Voituron
 
How Automated Vulnerability Analysis Discovered Hundreds of Android 0-days
How Automated Vulnerability Analysis Discovered Hundreds of Android 0-daysHow Automated Vulnerability Analysis Discovered Hundreds of Android 0-days
How Automated Vulnerability Analysis Discovered Hundreds of Android 0-daysPriyanka Aash
 
Tech Talk: App Functionality (Android)
Tech Talk: App Functionality (Android)Tech Talk: App Functionality (Android)
Tech Talk: App Functionality (Android)Lifeparticle
 
Node.js Jaram Winter Workshop 2014
Node.js Jaram Winter Workshop 2014Node.js Jaram Winter Workshop 2014
Node.js Jaram Winter Workshop 2014Chulwoo Park
 

Semelhante a Mintz q207 (20)

OOP for Hardware Verification--Demystified!
OOP for Hardware Verification--Demystified! OOP for Hardware Verification--Demystified!
OOP for Hardware Verification--Demystified!
 
Chapter i(introduction to java)
Chapter i(introduction to java)Chapter i(introduction to java)
Chapter i(introduction to java)
 
ISCA Final Presentaiton - Compilations
ISCA Final Presentaiton -  CompilationsISCA Final Presentaiton -  Compilations
ISCA Final Presentaiton - Compilations
 
Distributed systems
Distributed systemsDistributed systems
Distributed systems
 
Assignment no39
Assignment no39Assignment no39
Assignment no39
 
InterConnect2016: WebApp Architectures with Java and Node.js
InterConnect2016: WebApp Architectures with Java and Node.jsInterConnect2016: WebApp Architectures with Java and Node.js
InterConnect2016: WebApp Architectures with Java and Node.js
 
Static analysis: looking for errors ... and vulnerabilities?
Static analysis: looking for errors ... and vulnerabilities? Static analysis: looking for errors ... and vulnerabilities?
Static analysis: looking for errors ... and vulnerabilities?
 
PVS-Studio, a solution for resource intensive applications development
PVS-Studio, a solution for resource intensive applications developmentPVS-Studio, a solution for resource intensive applications development
PVS-Studio, a solution for resource intensive applications development
 
Static analysis of C++ source code
Static analysis of C++ source codeStatic analysis of C++ source code
Static analysis of C++ source code
 
Static analysis of C++ source code
Static analysis of C++ source codeStatic analysis of C++ source code
Static analysis of C++ source code
 
A miało być tak... bez wycieków
A miało być tak... bez wyciekówA miało być tak... bez wycieków
A miało być tak... bez wycieków
 
Wap to implement bitwise operators
Wap to implement bitwise operatorsWap to implement bitwise operators
Wap to implement bitwise operators
 
Java Airline Reservation System – Travel Smarter, Not Harder.pdf
Java Airline Reservation System – Travel Smarter, Not Harder.pdfJava Airline Reservation System – Travel Smarter, Not Harder.pdf
Java Airline Reservation System – Travel Smarter, Not Harder.pdf
 
C# 6.0 Preview
C# 6.0 PreviewC# 6.0 Preview
C# 6.0 Preview
 
Data struture lab
Data struture labData struture lab
Data struture lab
 
Oop Presentation
Oop PresentationOop Presentation
Oop Presentation
 
A la découverte de TypeScript
A la découverte de TypeScriptA la découverte de TypeScript
A la découverte de TypeScript
 
How Automated Vulnerability Analysis Discovered Hundreds of Android 0-days
How Automated Vulnerability Analysis Discovered Hundreds of Android 0-daysHow Automated Vulnerability Analysis Discovered Hundreds of Android 0-days
How Automated Vulnerability Analysis Discovered Hundreds of Android 0-days
 
Tech Talk: App Functionality (Android)
Tech Talk: App Functionality (Android)Tech Talk: App Functionality (Android)
Tech Talk: App Functionality (Android)
 
Node.js Jaram Winter Workshop 2014
Node.js Jaram Winter Workshop 2014Node.js Jaram Winter Workshop 2014
Node.js Jaram Winter Workshop 2014
 

Mais de Obsidian Software (20)

Zhang rtp q307
Zhang rtp q307Zhang rtp q307
Zhang rtp q307
 
Zehr dv club_12052006
Zehr dv club_12052006Zehr dv club_12052006
Zehr dv club_12052006
 
Yang greenstein part_2
Yang greenstein part_2Yang greenstein part_2
Yang greenstein part_2
 
Yang greenstein part_1
Yang greenstein part_1Yang greenstein part_1
Yang greenstein part_1
 
Williamson arm validation metrics
Williamson arm validation metricsWilliamson arm validation metrics
Williamson arm validation metrics
 
Whipp q3 2008_sv
Whipp q3 2008_svWhipp q3 2008_sv
Whipp q3 2008_sv
 
Vishakantaiah validating
Vishakantaiah validatingVishakantaiah validating
Vishakantaiah validating
 
Validation and-design-in-a-small-team-environment
Validation and-design-in-a-small-team-environmentValidation and-design-in-a-small-team-environment
Validation and-design-in-a-small-team-environment
 
Tobin verification isglobal
Tobin verification isglobalTobin verification isglobal
Tobin verification isglobal
 
Tierney bq207
Tierney bq207Tierney bq207
Tierney bq207
 
Thaker q3 2008
Thaker q3 2008Thaker q3 2008
Thaker q3 2008
 
Strickland dvclub
Strickland dvclubStrickland dvclub
Strickland dvclub
 
Stinson post si and verification
Stinson post si and verificationStinson post si and verification
Stinson post si and verification
 
Shultz dallas q108
Shultz dallas q108Shultz dallas q108
Shultz dallas q108
 
Shreeve dv club_ams
Shreeve dv club_amsShreeve dv club_ams
Shreeve dv club_ams
 
Sharam salamian
Sharam salamianSharam salamian
Sharam salamian
 
Schulz sv q2_2009
Schulz sv q2_2009Schulz sv q2_2009
Schulz sv q2_2009
 
Schulz dallas q1_2008
Schulz dallas q1_2008Schulz dallas q1_2008
Schulz dallas q1_2008
 
Salamian dv club_foils_intel_austin
Salamian dv club_foils_intel_austinSalamian dv club_foils_intel_austin
Salamian dv club_foils_intel_austin
 
Sakar jain
Sakar jainSakar jain
Sakar jain
 

Mintz q207

  • 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
  • 6.
  • 7. Virtual Functions Monitor class Derived for printing struct usb_printer: public usb_monitor { virtual void packet_completed (int length, int* data) { for (int i(0); i < length; ++i) { printf (“Packet [%d]:0x%x”, i, data[i]); } } }; Derived for checker struct usb_checker : public usb_monitor { virtual void packet_completed (int length, int* data) { checker_->check (length, data); } checker* checker_; }; Derived for channel struct usb_monitor_agent : public usb_monitor { virtual void packet_completed (int length, int* data) { channel_->put (data_packet (length, data)); } usb_channel* channel_; }; struct usb_monitor { wire d_plus, d_minus; void start_monitor_thread (); virtual void packet_completed (int length, int* data) =0; };
  • 8.
  • 9. Base Classes – Code Details struct irritator { virtual void out_of_reset () =0; virtual void start () =0; virtual void stop () =0; virtual void wait_for_completion () =0; }; Irritator class Derived for USB Derived for PCIE Derived for Ethernet struct usb_irritator : public irritator { virtual void out_of_reset (); virtual void start (); virtual void stop (); virtual void wait_for_completion (); }; struct pcie_irritator: public irritator { virtual void out_of_reset (); virtual void start (); virtual void stop (); virtual void wait_for_completion (); }; struct ethernet_irritator: public irritator { virtual void out_of_reset (); virtual void start (); virtual void stop (); virtual void wait_for_completion (); };
  • 10. Using OOP – Truss Top-Level Components Source: Hardware Verification with C++, page 95, page 100 class verification_component { public: verification_component (const std::string&); virtual void randomize () = 0; virtual void time_zero_setup () = 0; virtual void out_of_reset (reset r) = 0; virtual void start () = 0; virtual void wait_for_completion () = 0; virtual void report (const std::string) = 0; };
  • 11. The “Dance” Source: Hardware Verification with C++, page 97 Source: Hardware Verification with C++, page 117
  • 12. The “Dance” ̶ painfully detailed Source: Hardware Verification with C++, page 120 Source: Hardware Verification with C++, page 121
  • 13.
  • 14. Q & A* *shameless plug

Notas do Editor

  1. 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
  2. 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
  3. 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
  4. 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
  5. Separates “when to do” from “what to do”
  6. 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
  7. Separates “what to do” from “who does it”
  8. 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
  9. Hope this talk was useful OOP is exciting and fun stuff
  10. Separates “what to do” from “who does it”