tag:blogger.com,1999:blog-967177542865624465.comments2023-09-15T04:37:45.970-07:00The Ultimate Hitchhiker's Guide to VerificationSubashhttp://www.blogger.com/profile/03095917153942037871noreply@blogger.comBlogger28125tag:blogger.com,1999:blog-967177542865624465.post-28434818278586176052014-05-22T16:15:30.616-07:002014-05-22T16:15:30.616-07:00this post starts off really good to describe the F...this post starts off really good to describe the Factory, then it falls short and describes inheritance without really concluding what the purpose of a factory is. In short, a factory is a methodology that is used to return an object. Instead of using new() directly, the factory is usually the method used to create and get a handle to the object. If new() is used to construct the object, then the specifics of the constructor is used and is hardcoded throughout the code. With the factory, it is basically a lookup table - in systemverilog/UVM, the type_id::create() factory method is used to create the object. If a class or subclass is "registered" with the factory, then create() indirectly calls its constructor. If you register and use a different sub-class in place later, the call to type_id::create() will call a different constructor. This allows for "overriding" component and data-type classes via the factory. Anyway, this is basically more detail. Would be nice to see some examples in the post to really show the idea of a factory. Anonymoushttps://www.blogger.com/profile/18254391999300225854noreply@blogger.comtag:blogger.com,1999:blog-967177542865624465.post-73739357822659545422013-07-29T08:26:33.359-07:002013-07-29T08:26:33.359-07:00should't
this.string be this.type instead?should't <br /><br />this.string be this.type instead?Hamedhttps://www.blogger.com/profile/03248790950396459821noreply@blogger.comtag:blogger.com,1999:blog-967177542865624465.post-14745388588096490782013-02-05T23:02:34.467-08:002013-02-05T23:02:34.467-08:00http://wavedrom.googlecode.com
WaveDrom is Free an...http://wavedrom.googlecode.com<br />WaveDrom is Free and Open Source online digital timing diagram editor.Anonymoushttps://www.blogger.com/profile/17375287646911668597noreply@blogger.comtag:blogger.com,1999:blog-967177542865624465.post-6001329806701846732013-02-05T23:00:19.092-08:002013-02-05T23:00:19.092-08:00WaveDrom is Free and Open Source online digital ti...WaveDrom is Free and Open Source online digital timing diagram rendering engine that uses javascript, HTML5 and SVG to convert WaveJSON input text description into SVG vector graphics.Anonymoushttps://www.blogger.com/profile/17375287646911668597noreply@blogger.comtag:blogger.com,1999:blog-967177542865624465.post-82200569213032789642012-07-12T23:36:46.297-07:002012-07-12T23:36:46.297-07:00Very informative..Thanks..!!Very informative..Thanks..!!Dipesh Handahttps://www.blogger.com/profile/16439884913928351545noreply@blogger.comtag:blogger.com,1999:blog-967177542865624465.post-33126435708757853262012-04-10T08:45:21.784-07:002012-04-10T08:45:21.784-07:00Thank you!
Nice description and structured!Thank you!<br />Nice description and structured!أسامةhttps://www.blogger.com/profile/00941652189609129685noreply@blogger.comtag:blogger.com,1999:blog-967177542865624465.post-79431135905119019032012-03-20T22:41:24.332-07:002012-03-20T22:41:24.332-07:00In question What are the types of coverages availa...In question What are the types of coverages available in SV? May be the quest or answer is incorrect. <br />The questions what are the types of coverage.<br />The answer talks about how functional coverage is done!music4soulhttps://www.blogger.com/profile/07362852240157925576noreply@blogger.comtag:blogger.com,1999:blog-967177542865624465.post-61868215844983051292012-03-14T06:07:53.214-07:002012-03-14T06:07:53.214-07:00Everything is first class here !!Everything is first class here !!Subashhttps://www.blogger.com/profile/03095917153942037871noreply@blogger.comtag:blogger.com,1999:blog-967177542865624465.post-81668991854543496332012-02-08T21:44:16.960-08:002012-02-08T21:44:16.960-08:00hey Subhash,
Congrates on joining Mentor Graphics....hey Subhash,<br />Congrates on joining Mentor Graphics.<br />howz the work in your company?Amiteshhttps://www.blogger.com/profile/06497455931089612126noreply@blogger.comtag:blogger.com,1999:blog-967177542865624465.post-59440359878989119702011-07-20T21:31:33.062-07:002011-07-20T21:31:33.062-07:00nicely described ! thanks!!nicely described ! thanks!!javahttps://www.blogger.com/profile/16147070392349934379noreply@blogger.comtag:blogger.com,1999:blog-967177542865624465.post-73198141432581417282011-03-22T04:26:22.550-07:002011-03-22T04:26:22.550-07:00Even on the Cadence Tool(NC-Verilog) is giving som...Even on the Cadence Tool(NC-Verilog) is giving some non-sense errorsrikanthhttps://www.blogger.com/profile/13256711632394920509noreply@blogger.comtag:blogger.com,1999:blog-967177542865624465.post-81327380991044965662011-03-06T08:47:26.103-08:002011-03-06T08:47:26.103-08:00The requirement for the backslash to be the absolu...The requirement for the backslash to be the absolute last character on the line (without allowing whitespace) is actually a common requirement in any language that allows multi-line macros (C, Unix shell scripts, etc). I guess that either the people who wrote vcs are used to this practice and didn't think much of it, or maybe there is even a good reason for the strict requirement.Amirhttps://www.blogger.com/profile/01432680358300890404noreply@blogger.comtag:blogger.com,1999:blog-967177542865624465.post-37041169326843512442011-01-27T09:20:06.394-08:002011-01-27T09:20:06.394-08:0071. What are the simulation phases in your verific...71. What are the simulation phases in your verification environment?<br /><br />Prepone (sample) : Sampling signals before design activity. For testbench input.<br />Active (design) : Simulation of design code in modules<br />Observed (assertions) : Evaluation of System Verilog Assertions<br />Reactive(testbench) : Execution of testbench code in programsAnonymoushttps://www.blogger.com/profile/11007785052080450918noreply@blogger.comtag:blogger.com,1999:blog-967177542865624465.post-16466361307322120152011-01-27T09:15:23.051-08:002011-01-27T09:15:23.051-08:0077. What is streaming operator and what is its use...77. What is streaming operator and what is its use?<br /><br />The streaming operators (pack/unpack) can be used to translate to and from a series of discrete variables, such as a set of class properties, and a stream of physical-level values. The streaming operators perform packing of bit-stream types into a sequence of bits in a user-specified order (OR) unpack a stream of bits into one or more variables. The stream operator determines the order in which data are streamed: >> causes data to be streamed in left-to-right order, while << causes data to be streamed in right-to-left order.Anonymoushttps://www.blogger.com/profile/11007785052080450918noreply@blogger.comtag:blogger.com,1999:blog-967177542865624465.post-6931786364693034342011-01-27T09:14:44.062-08:002011-01-27T09:14:44.062-08:0076. Explain how the timescale unit and precision a...76. Explain how the timescale unit and precision are taken when a module does not have any timescale declaration in RTL?<br /><br />If a timeunit is not specified in the module, program, package, or interface definition, then the time unit shall be determined using the following rules of precedence:<br />a) If the module or interface definition is nested, then the time unit shall be inherited from the enclosing module or interface (programs and packages cannot be nested).<br />b) Else, if a ‘timescale directive has been previously specified (within the compilation unit), then the time unit shall be set to the units of the last ‘timescale directive.<br />c) Else, if the compilation-unit scope specifies a time unit (outside all other declarations), then the time unit shall be set to the time units of the compilation unit.<br />d) Else, the default time unit shall be used.Anonymoushttps://www.blogger.com/profile/11007785052080450918noreply@blogger.comtag:blogger.com,1999:blog-967177542865624465.post-73956055440738970782011-01-27T09:13:33.430-08:002011-01-27T09:13:33.430-08:0079. How to make sure that a function argument pass...79. How to make sure that a function argument passed has ref is not changed by the function?<br /><br />By using “const ref” type. With this, the compiler checks that your routine does not modify the array.<br />Eg:<br />function void print_sum (const ref int a[]);<br /> int sum = 0;<br /> for (int i=0; i<a.size; i++) begin<br /> sum += a[i];<br /> $display("The sum of the arrays is ", sum);<br />endfunctionAnonymoushttps://www.blogger.com/profile/11007785052080450918noreply@blogger.comtag:blogger.com,1999:blog-967177542865624465.post-31061574516601203692010-08-26T05:33:34.357-07:002010-08-26T05:33:34.357-07:00In my case i define the top level path for RTL as ...In my case i define the top level path for RTL as a macro whose value is passed from command line.<br />i need to use that value to pass to a string variable. for example<br />`define TOP x.y<br />string F;<br />F="`TOP.a";<br />how would this look like ?adwaithttps://www.blogger.com/profile/02310856990645739173noreply@blogger.comtag:blogger.com,1999:blog-967177542865624465.post-69656773788950400912010-08-22T12:21:32.941-07:002010-08-22T12:21:32.941-07:00In such situation I would have done this
`define ...In such situation I would have done this<br /><br />`define JOIN(__prefix,__name,__postfix) __prefix``__nanme``__posfix<br /><br />`define REG_CG(__Name) \<br />covergroup `JOIN(cgMy,__Name,OnWrite) @(Trigger); \<br />`JOIN(cpToggle,__Name,Bit0) : coverpoint `JOIN(My,__Name,[0]); \<br />`JOIN(cpToggle,__Name,Bit1) : coverpoint `JOIN(My,__Name,[1]); \<br />`JOIN(cpToggle,__Name,Bit2) : coverpoint `JOIN(My,__Name,[2]); \<br />`JOIN(cpToggle,__Name,Bit3) : coverpoint `JOIN(My,__Name,[3]); \<br />endgroupSubashhttps://www.blogger.com/profile/03095917153942037871noreply@blogger.comtag:blogger.com,1999:blog-967177542865624465.post-44830748674100806532010-08-19T03:43:51.431-07:002010-08-19T03:43:51.431-07:00Can I have a prefix and a suffix?
e.g. to cover i...Can I have a prefix and a suffix?<br /><br />e.g. to cover individual bits of a register, I might normally have:<br /><br />covergroup cgMyReg0OnWrite @(Trigger);<br /> cpToggleReg0Bit0 : coverpoint MyReg0[0];<br /> cpToggleReg0Bit1 : coverpoint MyReg0[1];<br /> cpToggleReg0Bit2 : coverpoint MyReg0[2];<br /> cpToggleReg0Bit3 : coverpoint MyReg0[3];<br />endgroup<br /><br />Repeat ad nauseum for MyReg1, MyReg2, MyReg3 etc.<br /><br />I'd like to just write `REG_CG(Reg0) to expand to the group above. The following doesn't work:<br /><br />`define REG_CG(Name) \<br /> covergroup `PREFIX(cgMy, Name)``OnWrite @(Trigger); \<br /> `PREFIX(cpToggle, Name``Bit0) : coverpoint `PREFIX(My, Name)``[0]; \<br /> `PREFIX(cpToggle, Name``Bit1) : coverpoint `PREFIX(My, Name)``[1]; \<br /> `PREFIX(cpToggle, Name``Bit2) : coverpoint `PREFIX(My, Name)``[2]; \<br /> `PREFIX(cpToggle, Name``Bit3) : coverpoint `PREFIX(My, Name)``[3]; \<br />endgroupUnknownhttps://www.blogger.com/profile/14716810095218228253noreply@blogger.comtag:blogger.com,1999:blog-967177542865624465.post-79728034335679921142010-07-09T11:57:09.190-07:002010-07-09T11:57:09.190-07:00Hi Ein,
You are welcome to do so.Hi Ein,<br />You are welcome to do so.Subashhttps://www.blogger.com/profile/03095917153942037871noreply@blogger.comtag:blogger.com,1999:blog-967177542865624465.post-64446070520577803972010-07-09T11:15:23.977-07:002010-07-09T11:15:23.977-07:00Thanks Huaxin for pointing me the typo. I will cor...Thanks Huaxin for pointing me the typo. I will correct the same.Subashhttps://www.blogger.com/profile/03095917153942037871noreply@blogger.comtag:blogger.com,1999:blog-967177542865624465.post-61329460217255988612010-06-16T14:41:40.099-07:002010-06-16T14:41:40.099-07:00#18 is there a typo or sth? $urandom looks like ge...#18 is there a typo or sth? $urandom looks like generating a UNSIGNED random number...Unknownhttps://www.blogger.com/profile/16254105082461366000noreply@blogger.comtag:blogger.com,1999:blog-967177542865624465.post-18283748674875455342010-04-04T18:34:21.086-07:002010-04-04T18:34:21.086-07:00Thank you for your comments to my blog.
Your arti...Thank you for your comments to my blog.<br /><br />Your articles are very informative.<br />I'd like to introduce your blog to more Japanese.Einhttps://www.blogger.com/profile/01701478433572724823noreply@blogger.comtag:blogger.com,1999:blog-967177542865624465.post-87342400943560129532010-03-31T08:33:08.896-07:002010-03-31T08:33:08.896-07:00This comment has been removed by a blog administrator.Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-967177542865624465.post-19153202765413121812010-03-29T05:28:22.954-07:002010-03-29T05:28:22.954-07:00Check again.Check again.gammaxhttps://www.blogger.com/profile/16125864640581616614noreply@blogger.com