sequence and property operator summary

    技术2024-12-29  52

    sequence:

    concatenation:              seq1 ##1 seq2

    overlap:                         seq1 ##0 seq2

    ended detection:           seq1 ##1 seq2.ended    

    repetition:                      seq1[*n:m]

    first match detection:     first_match(seq1)            

    or:                                  seq1 or seq2                     一个满足就行了

    and:                               seq1 and seq2                   起始时间一致,终止时间可以不一致

    length-matching and:    seq1 intersect seq2            seq1和seq2起始和终止时间一致

    conditional qualification:    cond throughout seq       条件在seq期间始终成立

    within:                                seq1 within seq2            时间跨度上seq2 包含 seq1

     

    此外还有triggered,例如:

    property  p_data_xfr(req,ack,enb,done);

         @(posedge clk) disable iff(qAbort.triggered)

              $rose(req)|=>qDataXfr(ack,enb,done);

    endproperty

     

    property operators

    not:              not(read && write)    property is never occur

    and:             prop1 and prop2

    or:                prop1 or  prop2

    if ... else ... :      if (expr) prop1  else prop2

    if ... else if ... else     

    |->:                    seq1|->prop

    |=>:                   seq1|=>prop

     

     

    下面举几个复杂的property

    1. 条件

    property p_busAbusB_allocation;

       if($rose(req_busA) && !busyA && !busyB)

            ##1 lock_busB && busyA ##[0:5] ackA ##[1:10] doneA && !busyA

       else if ($rose(req_busB) && !busyA && !busyB)

            ##1 lock_busA && busyB ##[0:10] ackB ##[1:20] doneB && !busyB

       else

            busyA||busyB |->buses_busy;

    endproperty

     

    2. 分布

    property p_switch_prop;

       if(switch_enb)

           if(switch_select inside {2'b00,2'b01,2'b10,2'b11} )

                if(switch_select==2'b00 && $past(switch_select==2'b11))

                        ##1 lock_enb[*1:10]##1 done;

                else

                        lock_enb[*1:2] ##1 done;

    endproperty

     

    最新回复(0)