Jump to content

Search the Community

Showing results for tags 'porridge'.

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • Accellera Systems Initiative
    • Information
    • Announcements
    • In the News
  • SystemC
    • SystemC Language
    • SystemC AMS (Analog/Mixed-Signal)
    • SystemC TLM (Transaction-level Modeling)
    • SystemC Verification (UVM-SystemC, SCV, CRAVE, FC4SC)
    • SystemC CCI (Configuration, Control & Inspection)
    • SystemC Datatypes
  • UVM (Universal Verification Methodology)
    • UVM (IEEE 1800.2) - Methodology and BCL Forum
    • UVM SystemVerilog Discussions
    • UVM Simulator Specific Issues
    • UVM Commercial Announcements
    • UVM (Pre-IEEE) Methodology and BCL Forum
  • Portable Stimulus
    • Portable Stimulus Discussion
    • Portable Stimulus 2.0 Public Review Feedback
  • SystemVerilog-AMS
    • Verilog-AMS 2023 Public Review
  • IP-XACT
    • IP-XACT Discussion
  • SystemRDL
    • SystemRDL Discussion
  • Clock Domain Crossing (CDC)
    • CDC Draft LRM Release Discussion
  • IP Security
    • SA-EDI Standard Discussion
    • IP Security Assurance Whitepaper Discussion
  • IEEE 1735/IP Encryption
    • IEEE 1735/IP Encryption Discussion
  • Commercial Announcements
    • Announcements

Categories

  • SystemC
  • UVM
  • UCIS
  • IEEE 1735/IP Encryption

Calendars

  • Community Calendar

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


Jabber


Skype


AIM


Yahoo


ICQ


Website URL


MSN


Interests


Location


Biography


Location


Interests


Occupation


Company

Found 1 result

  1. I had expected all 3 of these calls to randomize to return values using the constraint. However, the first does not. Can anyone tell me why? (note: In the following code, there is no local randomize method defined. So, I think that all randomize functions are the same...and perhaps only scope varies.) Code, followed by sim results: class thursday_seq extends junk_seq_seq; //which extends uvm_sequence rand int count; constraint c1 { count >= 2; count <= 9; } function new(string name="thursday_seq"); super.new(name); if (std::randomize(count)) begin `uvm_info("",$psprintf(" cnt=%0d .....",count),UVM_LOW) end else $finish; if (randomize(count)) begin `uvm_info("",$psprintf(" cnt=%0d .....",count),UVM_LOW) end else $finish; if (this.randomize()) begin `uvm_info("",$psprintf(" cnt=%0d .....",count),UVM_LOW) end else $finish; $finish; endfunction:new `uvm_object_utils(thursday_seq) UVM_INFO @ 0: reporter@ [] cnt=415747889 ..... UVM_INFO @ 0: reporter@ [] cnt=9 ..... UVM_INFO @ 0: reporter@ [] cnt=2 ..... It seems what is happening is that while std::randomize and randomize are calling the same method in the standard package, the standard version is oblivious to local constraints. I see in 1800-2012.pdf (SV spec), sec. 18.5.2 "The randomize() method is virtual and therefore honors constraints of the object on which it was called, ..." (highlighting mine) Later in the spec, there is reference to the 'scope of the randomize(' which confuses me a bit, if the constraints are always to be honored. (Although, I suppose in the first two cases above "of the object on which it was called" is not true, b/c I don't call it on the object, but on a property of the object.) Is that correct? After doing a bunch more reading, I am going to continue with this post for feedback. Here is something more I learned. This quote in section "18.12 Randomization of scope variables—std::randomize()" I think explains it all for me. "The scope randomize function, std::randomize(), enables users to randomize data in the current scope without the need to define a class or instantiate a class object." I'm a bit unsure, but I think the answer to my question is this. "without the need to define a class" and "in the current scope", from above, imply that std::randomize performs only on the scope that is passed to it. i.e. if I pass it a class object, then it knows of that object's constraints. If I pass it a data-member of a class, then the scope that data-member exists in is not seen (i.e. any constraints which are in the scope above that data-member are not seen). Though they could be replicated as inline constraints.). The local randomize knows of all the constraints in the object from which it is called. Do I understand this correctly? I think I just walked myself through understanding this. Comments welcome. thx, note: using Cadence's IUS12.1-s004
×
×
  • Create New...