anchor.diff:          return issRes;
       endmethod
   
  -    method ActionValue#(LSQIssueInfo) getIssueLd;
  -        issueQ.deq;
  -        // reset ldInIssueQ
  -        let tag = issueQ.first.data.tag;
  -        ldInIssueQ[tag][inIssQ_issue_port] <= False;
  -        doAssert(ldInIssueQ[tag][inIssQ_issue_port], "Ld should be in issueQ");
  +    method ActionValue#(LSQIssueLdInfo) getIssueLd;
  +        issueLdQ.deq;
  +        // reset inIssueQ
  +        let tag = issueLdQ.first.data.tag;
  +        ld_inIssueQ_issue[tag] <= False;
  +        doAssert(ld_inIssueQ_issue[tag], "Ld should be in issueQ");
  +        doAssert(ld_memFunc[tag] == Ld, "must be Ld");
           return issueQ.first.data;
       endmethod
   
  -    method ActionValue#(LSQKillInfo) getKillLd;
  +    method ActionValue#(LSQKillLdInfo) getKillLd;
           killQ.deq;
           let lsqTag = killQ.first.data;
           doAssert(
  
positive.code:     // when it may do nothing
      rule findIssue;
          // find all can issue loads 
          function Bool canIssue(Integer i);
              return (
                  ld_valid_findIss[i] && ld_memFunc[i] == Ld && // (1) valid load
                  ld_computed_findIss[i] && // (2) computed
  
negative.code:     Maybe#(LdQTag)   depLdEx;
      // Ld stalled by St/Sc/Amo in SQ to same addr, wait for it to deq
      Maybe#(StQTag)   depStQDeq;
  `ifndef TSO_MM
      // WEAK model only: Ld stalled by store buffer entry, should wait it to
      // write cache
      Maybe#(SBIndex)  depSBDeq;
  `endif
  
      // ===================
      // Speculation related.
  