{"id":371521,"date":"2024-05-21T04:50:42","date_gmt":"2024-05-21T04:50:42","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=371521"},"modified":"-0001-11-30T00:00:00","modified_gmt":"2024-05-21T04:50:42","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=371521","title":{"rendered":"<span>The results of 7 Verilog meetups + the goals and the steps going forward<\/span>"},"content":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/458\/ab5\/817\/458ab58179bb5f3975025877994de601.jpg\" width=\"1024\" height=\"771\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/458\/ab5\/817\/458ab58179bb5f3975025877994de601.jpg\" data-blurred=\"true\"\/><\/figure>\n<p>Since the New Year we had <a href=\"https:\/\/www.linkedin.com\/groups\/14348665\/\" rel=\"noopener noreferrer nofollow\">7 Verilog meetups<\/a> at <a href=\"https:\/\/hackerdojo.org\/\" rel=\"noopener noreferrer nofollow\">HackerDojo<\/a>. We discussed the modern way of designing digital circuits using hardware description languages, the exercises on FPGA boards and the topic of microarchitecture. For the last two sessions we went over the most basic CPU core that can be used as a baseline for further exercises.<\/p>\n<p>There are <a href=\"https:\/\/youtube.com\/playlist?list=PLYY_gpkLUbYeS_y_IhNd-eiHIk7GeATrD&amp;si=Qj5DdomiaLqeWBHk\" rel=\"noopener noreferrer nofollow\">video recordings available for some meetups and Zoom calls<\/a>. Particularly I recommend to see <a href=\"https:\/\/youtu.be\/M2P1bijhROU?si=xusEEIlXdJKJZSXW\" rel=\"noopener noreferrer nofollow\">the first<\/a> video (it gives a general overview) and <a href=\"https:\/\/youtu.be\/jDxubjQ2unk?si=EZ9x0wKr-t2DKKQb\" rel=\"noopener noreferrer nofollow\">a video about a baseline CPU core <\/a>we can use for a number of exercises.<\/p>\n<p><strong>From the beginning we planned to split the meetups into two types of sessions:<\/strong><\/p>\n<p>1.Regular meetings of a small R&amp;D team that develops multiple open-source repositories of SystemVerilog examples. Two focuses: compatibility (boards, ASIC and FPGA toolchains, peripherals) and microarchitecture (what the electronic companies ask you during a job interview &#8212; pipelines, FIFO queues, arbiters etc).<\/p>\n<p>2) Occasional Show-and-Tell sessions for a wider audience interested in reconfigurable hardware as a way of computing different from software. Displaying graphics and recognizing music using FPGA boards, together with some presentations from the members of the regular R&amp;D meetings: How do FPGAs work? What is their role in the electronic industry? How is it related to mass-market electronic devices? Can you make your own ASIC (Tiny Tapeout, OpenLane, eFabless etc)?<\/p>\n<p><strong>During the meetups there were three kinds of participants:<\/strong><\/p>\n<p>1) People who are curious about the technology but not interested in doing exercises. This is the prime audience for show-and-tell sessions.<\/p>\n<p>2) People who are interested in learning new things to get additional career options. They can take some projects, but they may not be interested in coming every Sunday. Many prefer to work at home and communicate via email or Zoom.<\/p>\n<p>3) People who already work in the field (like CPU designers) who can be interested in more advanced material (like new branch predictors or design verification techniques for multithreading), but who get bored when the discussion moves around basic topics or discussions about the example infrastructure (pins, toolchain details).<\/p>\n<p><strong>On the necessity of doing exercises<\/strong><\/p>\n<p>At this moment, in order to make progress toward both goals (implementing new examples and show-and-tell sessions) it is essential for the regular participants (mostly from group 2) to solve all the homework exercises (see the list here) in parallel with studying the recommended materials. I can review the results over the internet and during Zoom sessions.<\/p>\n<p>There is no other way. I can spend a year talking, but if a listener does not do the exercises, there is no progress. In fact it happens all the time with recent college graduates: a graduate may have in his resume some sophisticated microarchitectural things (Tomasulo algorithm, MOESI cache coherence protocol), but when he is asked during a job interview to implement something straightforward (like a serial adder with valid and last signals, or a static pipeline to compute a formula with dependencies between the pipelined blocks) many struggle with such tasks.<\/p>\n<p>In my opinion it is a bad idea to teach from high-level (Tomasulo and MESI models) to low-level (Verilog implementation) because on the transaction level a student does not have intuition about static timing analysis, does not have knowledge of how to verify the corner cases of what he designs, does not know how to measure the bandwidth etc. It is better to start from simple sequential logic tasks, then static pipelines, master them well, add flow control (including credit counters), and move to something more complicated. A person who knows only how to write very trivial things in Verilog (like a simple mux or an FSM) and can talk about superscalar CPUs &#8212; has very limited use in the industry, so you need to practically master the things in the middle.<\/p>\n<p>There is no silver bullet and no way to skip SystemVerilog RTL exercises. High-level synthesis (C algorithms &#8212; to &#8212; hardware translation) was never adopted into the mainstream, new languages (Chisel, etc) do not substitute knowledge of sequential logic behavior, ChatGPT writes nonsense etc. If you want to design hardware for AI, or work in hardware to accelerate text search, DSP or graphics, you cannot skip the exercises with sequential logic, pipelines, FIFOs etc.<\/p>\n<p><strong>So the next steps are:<\/strong><\/p>\n<p>1) We are going to do Zoom call on each Sunday starting March 24, 2024 at 11 am California time (summer time). <a href=\"https:\/\/zoom.us\/j\/5412567027?pwd=MnVqb05uR2NDM0N1QmltWTZRTnQzdz09\" rel=\"noopener noreferrer nofollow\">The link.<\/a> During this call we are going to discuss the SystemVerilog Homework and the individual projects.<\/p>\n<p>2) Once we get more materials, we are going to organize Show-and-Tell sessions in Hacker Dojo, for a wider audience. During the session several participants from the core team will present demos on various FPGA boards and explain to the curious how FPGA and ASIC work.<\/p>\n<p>Now I would like to copy a fragment of the previous post <a href=\"https:\/\/habr.com\/en\/articles\/790570\/\" rel=\"noopener noreferrer nofollow\">&#171;Verilog Meetups @ Hacker Dojo: the status and the plans for February 2024&#187;<\/a> which has all the necessary links and a list of the recommended literature:<\/p>\n<p><strong>Self Education to Guarantee the Quality<\/strong><\/p>\n<p>To ensure everybody&#8217;s quality, we expect every member who is new to the field, to go through the following steps in his education. Those who already know the basics can review the materials to ensure their quality:<\/p>\n<ol>\n<li>\n<p>Do all the homework from\u00a0<a href=\"https:\/\/github.com\/yuri-panchul\/systemverilog-homework\" rel=\"noopener noreferrer nofollow\">https:\/\/github.com\/yuri-panchul\/systemverilog-homework<\/a>.<\/p>\n<\/li>\n<li>\n<p>Run and review all the examples in\u00a0<a href=\"https:\/\/github.com\/yuri-panchul\/basics-graphics-music\" rel=\"noopener noreferrer nofollow\">https:\/\/github.com\/yuri-panchul\/basics-graphics-music<\/a><\/p>\n<\/li>\n<li>\n<p>Get a tutorial in Bash if you have not done this before. We use Bash scripts to isolate users from vendor-specific toolchains.<\/p>\n<\/li>\n<li>\n<p>Get a tutorial in Git if you have not done this before. We use Git and GitHub Forks \/ Pull requests as the vehicle of collaboration inside the team and to publish the examples.<\/p>\n<\/li>\n<li>\n<p>Get a tutorial in Markdown markup language as we use it for documentation.<\/p>\n<\/li>\n<li>\n<p>Study a diagram editor for microarchitecture diagrams such as Lucidspark or draw.io.<\/p>\n<\/li>\n<li>\n<p>Learn how to use\u00a0<a href=\"https:\/\/wavedrom.com\/\" rel=\"noopener noreferrer nofollow\">wavedrom.com<\/a>\u00a0for microarchitecture diagrams.<\/p>\n<\/li>\n<li>\n<p>Learn how to use\u00a0<a href=\"https:\/\/edaplayground.com\/\" rel=\"noopener noreferrer nofollow\">edaplayground.com<\/a>\u00a0useful to create verification examples with full-featured SystemVerilog.<\/p>\n<\/li>\n<\/ol>\n<p><strong>The Recommended Literature<\/strong><\/p>\n<p>In parallel with going through the problems and examples, we recommend studying the following books and online articles:<\/p>\n<ol>\n<li>\n<p><a href=\"https:\/\/www.amazon.com\/Digital-Design-Computer-Architecture-RISC-V\/dp\/0128200642\/\" rel=\"noopener noreferrer nofollow\">Digital Design and Computer Architecture, RISC-V Edition by Sarah Harris and David Harris<\/a>.<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/www.amazon.com\/Logic-Design-Verification-SystemVerilog-Revised\/dp\/1523364025\" rel=\"noopener noreferrer nofollow\">Logic Design and Verification Using SystemVerilog \u2013 March 1, 2016 by Donald Thomas<\/a>. Not to be confused with the old (starting 1980s) books of the same author.<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/www.amazon.com\/Digital-Design-Approach-William-Dally\/dp\/0521199506\" rel=\"noopener noreferrer nofollow\">Digital Design: A Systems Approach by William James Dally and R. Curtis Harting<\/a>.<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/fpga.mit.edu\/6205\/_static\/F23\/documentation\/1800-2017.pdf\" rel=\"noopener noreferrer nofollow\">IEEE 1800-2017 &#8212; Standard for SystemVerilog<\/a>\u00a0should be used as a reference.<\/p>\n<\/li>\n<li>\n<p>Verilog Gotcha articles by Stuart Sutherland, Don Mills and Chris Spear:\u00a0<a href=\"https:\/\/lcdm-eng.com\/papers\/snug06_Verilog%20Gotchas%20Part1.pdf\" rel=\"noopener noreferrer nofollow\">Part 1<\/a>\u00a0and\u00a0<a href=\"https:\/\/www.sutherland-hdl.com\/papers\/2007-SNUG-SanJose_gotcha_again_paper.pdf\" rel=\"noopener noreferrer nofollow\">Part 2<\/a>.<\/p>\n<\/li>\n<li>\n<p><a href=\"http:\/\/www.sunburst-design.com\/papers\/\" rel=\"noopener noreferrer nofollow\">The articles of Cliff Cummings<\/a>.<\/p>\n<p>Once we get to verification examples:<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/www.amazon.com\/SystemVerilog-Verification-Learning-Testbench-Language\/dp\/1489995005\" rel=\"noopener noreferrer nofollow\">SystemVerilog for Verification: A Guide to Learning the Testbench Language Features 3rd ed. 2012 Edition by Chris Spear and Greg Tumbush<\/a>.<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/www.amazon.com\/Writing-Testbenches-SystemVerilog-Janick-Bergeron\/dp\/0387292217\" rel=\"noopener noreferrer nofollow\">Writing Testbenches using SystemVerilog 2006th Edition by Janick Bergeron<\/a>.<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/www.amazon.com\/Getting-Started-UVM-Beginners-Guide\/dp\/0615819974\" rel=\"noopener noreferrer nofollow\">Getting Started with UVM: A Beginner&#8217;s Guide<\/a>\u00a0&#8212; May 22, 2013 by Vanessa R. Cooper. This book does an excellent job of setting up the minimum necessary skeleton for the UVM testbench. However, the BFM driver code in this book is not good for pipelined and out-of-order protocols. There are no good books on BFMs for pipelined and out-of-order protocols &#8212; we have examples of how to do this right\u00a0<a href=\"https:\/\/gitflic.ru\/project\/yuri-panchul\/valid-ready-etc\/file?file=boards%2Fomdazz%2F08_axi_master_slave_monitor%2F50_axi_pipelined_wr_out_of_order_rd&amp;branch=master\" rel=\"noopener noreferrer nofollow\">here<\/a>, but we need to convert this example into UVM using Vanessa R. Cooper&#8217;s UVM skeleton example.<\/p>\n<p>Once we get to CPU-specific examples (like branch predictors, caches and Tomasulo), we recommend:<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/www.amazon.com\/Modern-Processor-Design-Fundamentals-Superscalar\/dp\/1478607831\" rel=\"noopener noreferrer nofollow\">Modern Processor Design: Fundamentals of Superscalar Processors by John Paul Shen and Mikko H. Lipasti.<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/www.arm.com\/resources\/education\/books\/modern-soc\" rel=\"noopener noreferrer nofollow\">Modern System-on-Chip Design by David J. Greaves<\/a>.<\/p>\n<\/li>\n<\/ol>\n<p>Talk to you on Sunday&#8217;s Zoom call at 11 am California time (summer time) &#8212; <a href=\"https:\/\/zoom.us\/j\/5412567027?pwd=MnVqb05uR2NDM0N1QmltWTZRTnQzdz09\" rel=\"noopener noreferrer nofollow\">The link.<\/a> During this call we are going to discuss the SystemVerilog Homework and the individual projects.<\/p>\n<\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><!----><!----><\/div>\n<p><!----><!----><br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/articles\/802117\/\"> https:\/\/habr.com\/ru\/articles\/802117\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<figure class=\"full-width\"><\/figure>\n<p>Since the New Year we had <a href=\"https:\/\/www.linkedin.com\/groups\/14348665\/\" rel=\"noopener noreferrer nofollow\">7 Verilog meetups<\/a> at <a href=\"https:\/\/hackerdojo.org\/\" rel=\"noopener noreferrer nofollow\">HackerDojo<\/a>. We discussed the modern way of designing digital circuits using hardware description languages, the exercises on FPGA boards and the topic of microarchitecture. For the last two sessions we went over the most basic CPU core that can be used as a baseline for further exercises.<\/p>\n<p>There are <a href=\"https:\/\/youtube.com\/playlist?list=PLYY_gpkLUbYeS_y_IhNd-eiHIk7GeATrD&amp;si=Qj5DdomiaLqeWBHk\" rel=\"noopener noreferrer nofollow\">video recordings available for some meetups and Zoom calls<\/a>. Particularly I recommend to see <a href=\"https:\/\/youtu.be\/M2P1bijhROU?si=xusEEIlXdJKJZSXW\" rel=\"noopener noreferrer nofollow\">the first<\/a> video (it gives a general overview) and <a href=\"https:\/\/youtu.be\/jDxubjQ2unk?si=EZ9x0wKr-t2DKKQb\" rel=\"noopener noreferrer nofollow\">a video about a baseline CPU core <\/a>we can use for a number of exercises.<\/p>\n<p><strong>From the beginning we planned to split the meetups into two types of sessions:<\/strong><\/p>\n<p>1.Regular meetings of a small R&amp;D team that develops multiple open-source repositories of SystemVerilog examples. Two focuses: compatibility (boards, ASIC and FPGA toolchains, peripherals) and microarchitecture (what the electronic companies ask you during a job interview &#8212; pipelines, FIFO queues, arbiters etc).<\/p>\n<p>2) Occasional Show-and-Tell sessions for a wider audience interested in reconfigurable hardware as a way of computing different from software. Displaying graphics and recognizing music using FPGA boards, together with some presentations from the members of the regular R&amp;D meetings: How do FPGAs work? What is their role in the electronic industry? How is it related to mass-market electronic devices? Can you make your own ASIC (Tiny Tapeout, OpenLane, eFabless etc)?<\/p>\n<p><strong>During the meetups there were three kinds of participants:<\/strong><\/p>\n<p>1) People who are curious about the technology but not interested in doing exercises. This is the prime audience for show-and-tell sessions.<\/p>\n<p>2) People who are interested in learning new things to get additional career options. They can take some projects, but they may not be interested in coming every Sunday. Many prefer to work at home and communicate via email or Zoom.<\/p>\n<p>3) People who already work in the field (like CPU designers) who can be interested in more advanced material (like new branch predictors or design verification techniques for multithreading), but who get bored when the discussion moves around basic topics or discussions about the example infrastructure (pins, toolchain details).<\/p>\n<p><strong>On the necessity of doing exercises<\/strong><\/p>\n<p>At this moment, in order to make progress toward both goals (implementing new examples and show-and-tell sessions) it is essential for the regular participants (mostly from group 2) to solve all the homework exercises (see the list here) in parallel with studying the recommended materials. I can review the results over the internet and during Zoom sessions.<\/p>\n<p>There is no other way. I can spend a year talking, but if a listener does not do the exercises, there is no progress. In fact it happens all the time with recent college graduates: a graduate may have in his resume some sophisticated microarchitectural things (Tomasulo algorithm, MOESI cache coherence protocol), but when he is asked during a job interview to implement something straightforward (like a serial adder with valid and last signals, or a static pipeline to compute a formula with dependencies between the pipelined blocks) many struggle with such tasks.<\/p>\n<p>In my opinion it is a bad idea to teach from high-level (Tomasulo and MESI models) to low-level (Verilog implementation) because on the transaction level a student does not have intuition about static timing analysis, does not have knowledge of how to verify the corner cases of what he designs, does not know how to measure the bandwidth etc. It is better to start from simple sequential logic tasks, then static pipelines, master them well, add flow control (including credit counters), and move to something more complicated. A person who knows only how to write very trivial things in Verilog (like a simple mux or an FSM) and can talk about superscalar CPUs &#8212; has very limited use in the industry, so you need to practically master the things in the middle.<\/p>\n<p>There is no silver bullet and no way to skip SystemVerilog RTL exercises. High-level synthesis (C algorithms &#8212; to &#8212; hardware translation) was never adopted into the mainstream, new languages (Chisel, etc) do not substitute knowledge of sequential logic behavior, ChatGPT writes nonsense etc. If you want to design hardware for AI, or work in hardware to accelerate text search, DSP or graphics, you cannot skip the exercises with sequential logic, pipelines, FIFOs etc.<\/p>\n<p><strong>So the next steps are:<\/strong><\/p>\n<p>1) We are going to do Zoom call on each Sunday starting March 24, 2024 at 11 am California time (summer time). <a href=\"https:\/\/zoom.us\/j\/5412567027?pwd=MnVqb05uR2NDM0N1QmltWTZRTnQzdz09\" rel=\"noopener noreferrer nofollow\">The link.<\/a> During this call we are going to discuss the SystemVerilog Homework and the individual projects.<\/p>\n<p>2) Once we get more materials, we are going to organize Show-and-Tell sessions in Hacker Dojo, for a wider audience. During the session several participants from the core team will present demos on various FPGA boards and explain to the curious how FPGA and ASIC work.<\/p>\n<p>Now I would like to copy a fragment of the previous post <a href=\"https:\/\/habr.com\/en\/articles\/790570\/\" rel=\"noopener noreferrer nofollow\">&#171;Verilog Meetups @ Hacker Dojo: the status and the plans for February 2024&#187;<\/a> which has all the necessary links and a list of the recommended literature:<\/p>\n<p><strong>Self Education to Guarantee the Quality<\/strong><\/p>\n<p>To ensure everybody&#8217;s quality, we expect every member who is new to the field, to go through the following steps in his education. Those who already know the basics can review the materials to ensure their quality:<\/p>\n<ol>\n<li>\n<p>Do all the homework from\u00a0<a href=\"https:\/\/github.com\/yuri-panchul\/systemverilog-homework\" rel=\"noopener noreferrer nofollow\">https:\/\/github.com\/yuri-panchul\/systemverilog-homework<\/a>.<\/p>\n<\/li>\n<li>\n<p>Run and review all the examples in\u00a0<a href=\"https:\/\/github.com\/yuri-panchul\/basics-graphics-music\" rel=\"noopener noreferrer nofollow\">https:\/\/github.com\/yuri-panchul\/basics-graphics-music<\/a><\/p>\n<\/li>\n<li>\n<p>Get a tutorial in Bash if you have not done this before. We use Bash scripts to isolate users from vendor-specific toolchains.<\/p>\n<\/li>\n<li>\n<p>Get a tutorial in Git if you have not done this before. We use Git and GitHub Forks \/ Pull requests as the vehicle of collaboration inside the team and to publish the examples.<\/p>\n<\/li>\n<li>\n<p>Get a tutorial in Markdown markup language as we use it for documentation.<\/p>\n<\/li>\n<li>\n<p>Study a diagram editor for microarchitecture diagrams such as Lucidspark or draw.io.<\/p>\n<\/li>\n<li>\n<p>Learn how to use\u00a0<a href=\"https:\/\/wavedrom.com\/\" rel=\"noopener noreferrer nofollow\">wavedrom.com<\/a>\u00a0for microarchitecture diagrams.<\/p>\n<\/li>\n<li>\n<p>Learn how to use\u00a0<a href=\"https:\/\/edaplayground.com\/\" rel=\"noopener noreferrer nofollow\">edaplayground.com<\/a>\u00a0useful to create verification examples with full-featured SystemVerilog.<\/p>\n<\/li>\n<\/ol>\n<p><strong>The Recommended Literature<\/strong><\/p>\n<p>In parallel with going through the problems and examples, we recommend studying the following books and online articles:<\/p>\n<ol>\n<li>\n<p><a href=\"https:\/\/www.amazon.com\/Digital-Design-Computer-Architecture-RISC-V\/dp\/0128200642\/\" rel=\"noopener noreferrer nofollow\">Digital Design and Computer Architecture, RISC-V Edition by Sarah Harris and David Harris<\/a>.<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/www.amazon.com\/Logic-Design-Verification-SystemVerilog-Revised\/dp\/1523364025\" rel=\"noopener noreferrer nofollow\">Logic Design and Verification Using SystemVerilog \u2013 March 1, 2016 by Donald Thomas<\/a>. Not to be confused with the old (starting 1980s) books of the same author.<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/www.amazon.com\/Digital-Design-Approach-William-Dally\/dp\/0521199506\" rel=\"noopener noreferrer nofollow\">Digital Design: A Systems Approach by William James Dally and R. Curtis Harting<\/a>.<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/fpga.mit.edu\/6205\/_static\/F23\/documentation\/1800-2017.pdf\" rel=\"noopener noreferrer nofollow\">IEEE 1800-2017 &#8212; Standard for SystemVerilog<\/a>\u00a0should be used as a reference.<\/p>\n<\/li>\n<li>\n<p>Verilog Gotcha articles by Stuart Sutherland, Don Mills and Chris Spear:\u00a0<a href=\"https:\/\/lcdm-eng.com\/papers\/snug06_Verilog%20Gotchas%20Part1.pdf\" rel=\"noopener noreferrer nofollow\">Part 1<\/a>\u00a0and\u00a0<a href=\"https:\/\/www.sutherland-hdl.com\/papers\/2007-SNUG-SanJose_gotcha_again_paper.pdf\" rel=\"noopener noreferrer nofollow\">Part 2<\/a>.<\/p>\n<\/li>\n<li>\n<p><a href=\"http:\/\/www.sunburst-design.com\/papers\/\" rel=\"noopener noreferrer nofollow\">The articles of Cliff Cummings<\/a>.<\/p>\n<p>Once we get to verification examples:<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/www.amazon.com\/SystemVerilog-Verification-Learning-Testbench-Language\/dp\/1489995005\" rel=\"noopener noreferrer nofollow\">SystemVerilog for Verification: A Guide to Learning the Testbench Language Features 3rd ed. 2012 Edition by Chris Spear and Greg Tumbush<\/a>.<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/www.amazon.com\/Writing-Testbenches-SystemVerilog-Janick-Bergeron\/dp\/0387292217\" rel=\"noopener noreferrer nofollow\">Writing Testbenches using SystemVerilog 2006th Edition by Janick Bergeron<\/a>.<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/www.amazon.com\/Getting-Started-UVM-Beginners-Guide\/dp\/0615819974\" rel=\"noopener noreferrer nofollow\">Getting Started with UVM: A Beginner&#8217;s Guide<\/a>\u00a0&#8212; May 22, 2013 by Vanessa R. Cooper. This book does an excellent job of setting up the minimum necessary skeleton for the UVM testbench. However, the BFM driver code in this book is not good for pipelined and out-of-order protocols. There are no good books on BFMs for pipelined and out-of-order protocols &#8212; we have examples of how to do this right\u00a0<a href=\"https:\/\/gitflic.ru\/project\/yuri-panchul\/valid-ready-etc\/file?file=boards%2Fomdazz%2F08_axi_master_slave_monitor%2F50_axi_pipelined_wr_out_of_order_rd&amp;branch=master\" rel=\"noopener noreferrer nofollow\">here<\/a>, but we need to convert this example into UVM using Vanessa R. Cooper&#8217;s UVM skeleton example.<\/p>\n<p>Once we get to CPU-specific examples (like branch predictors, caches and Tomasulo), we recommend:<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/www.amazon.com\/Modern-Processor-Design-Fundamentals-Superscalar\/dp\/1478607831\" rel=\"noopener noreferrer nofollow\">Modern Processor Design: Fundamentals of Superscalar Processors by John Paul Shen and Mikko H. Lipasti.<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/www.arm.com\/resources\/education\/books\/modern-soc\" rel=\"noopener noreferrer nofollow\">Modern System-on-Chip Design by David J. Greaves<\/a>.<\/p>\n<\/li>\n<\/ol>\n<p>Talk to you on Sunday&#8217;s Zoom call at 11 am California time (summer time) &#8212; <a href=\"https:\/\/zoom.us\/j\/5412567027?pwd=MnVqb05uR2NDM0N1QmltWTZRTnQzdz09\" rel=\"noopener noreferrer nofollow\">The link.<\/a> During this call we are going to discuss the SystemVerilog Homework and the individual projects.<\/p>\n<\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><!----><!----><\/div>\n<p><!----><!----><br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/articles\/802117\/\"> https:\/\/habr.com\/ru\/articles\/802117\/<\/a><br \/><\/br><\/br><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-371521","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/371521","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=371521"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/371521\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=371521"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=371521"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=371521"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}