• Skip to main content
  • Skip to search
  • Skip to footer
Cadence Home
  • This search text may be transcribed, used, stored, or accessed by our third-party service providers per our Cookie Policy and Privacy Policy.

  1. Community Forums
  2. Custom IC SKILL
  3. RexCompile Buffer Length Exceeds

Stats

  • Locked Locked
  • Replies 8
  • Subscribers 143
  • Views 4530
  • Members are here 0
This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

RexCompile Buffer Length Exceeds

Henry Monro
Henry Monro over 1 year ago

Error* rexCompile: pattern for regular expression exceeds buffer length.
Is there any way how i can increase the length/size of the rexcompile buffer?

  • Cancel
  • mbracht
    mbracht over 1 year ago

    Hi Henry,

    I don't think so - 512 characters is as far as I know the limit. Just out of curiosity - what pattern is it that exceeds 512 characters?
    You might also try the pcre version of rexCompile - pcreCompile(). Maybe it doesn't have that limitation.

    Max

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 1 year ago in reply to mbracht

    I just did some experiments and pcreCompile allows a pattern which is a maximum of 32764 (slightly less than 2^31) characters long. rexCompile is ancient and very limited, so I'd encourage you to use the pcre functions as Max suggested.

    Andrew

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Henry Monro
    Henry Monro over 1 year ago in reply to mbracht
    225-P1/225-P2/225-P3/225-P4/225-P5/225-P6/225-P7/225-P8/225-P9/225-P10/225-P11/225-P12/225-P13/225-P14/225-P15/225-P16/425-P1/425-P2/425-P3/425-P4/425-P5/425-P6/425-P7/425-P8/425-P9/425-P10/425-P11/425-P12/425-P13/425-P14/425-P15/425-P16/229-P1/229-P2/229-P3/229-P4/229-P5/229-P6/229-P7/229-P8/229-P9/229-P10/229-P11/229-P12/229-P13/229-P14/229-P15/229-P16/429-P1/429-P2/429-P3/429-P4/429-P5/429-P6/429-P7/429-P8/429-P9/429-P10/429-P11/429-P12/429-P13/429-P14/429-P15/429-P16/303-P1/303-P2/303-P3/303-P4/303-P5/303-P6/303-P7/303-P8/303-P9/303-P10/303-P11/303-P12/303-P13/303-P14/303-P15/303-P16

    This is the pattern
    i l'll try using it through pcrecompile()
    Thanks

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Henry Monro
    Henry Monro over 1 year ago in reply to Andrew Beckett

    Thanks Andrew

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • AurelBuche
    AurelBuche over 1 year ago in reply to Henry Monro

    Hi Henry,

    That doesn't look like a regular expression pattern... (at least not in most common formats, like PCRE)

    If you want to match something that matches all the values between '/' there might be a smarter way to write it

    Cheers

    Aurélien

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • AurelBuche
    AurelBuche over 1 year ago in reply to AurelBuche

    If you want to match all the values between '/', a much compact approach, would be to use the following pattern : 

    "(225|425|229|429|303)-P([1-9]|1[0-6])"

    If you want to match the whole string, this is not a regular expression, but a simple search for a string in another one

    _

    Also it seems you are tackling your problem the wrong way

    I don't know exactly what you are trying to achieve but you might want to use regular expressions to extract <num1>-P<num2> from whatever input string

    And then check if num1 belongs to '(225 425 229 429 303) and num2 is between 1 and 16

    Here's an example to do that (assuming the string is stored in the variable 'str') :

    (when (pcreMatchp "([0-9]+)-P([0-9]+)" str)
      (let ((num0 (atoi (pcreSubstitute "\\1")))
            (num1 (atoi (pcreSubstitute "\\2")))
            )
        (and (member num0 '(225 425 229 429 303))
             1 <= num1
             num1 <= 16
             )))
    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • mbracht
    mbracht over 1 year ago in reply to Henry Monro

    this is a regular expression of literal characters only - no quantifiers or character classes or anchors or anything that would require a regex engine. If you intend to compare this against whatever else you might as well make it a normal string and the use the equal() function.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 1 year ago in reply to mbracht

    Also, if it's a sub-string of the full string you're looking for (and not a regular expression as Max said), you could use nindex() to see whether it is contained within the candidate string..

    Andrew

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel

Community Guidelines

The Cadence Design Communities support Cadence users and technologists interacting to exchange ideas, news, technical information, and best practices to solve problems and get the most from Cadence technology. The community is open to everyone, and to provide the most value, we require participants to follow our Community Guidelines that facilitate a quality exchange of ideas and information. By accessing, contributing, using or downloading any materials from the site, you agree to be bound by the full Community Guidelines.

© 2025 Cadence Design Systems, Inc. All Rights Reserved.

  • Terms of Use
  • Privacy
  • Cookie Policy
  • US Trademarks
  • Do Not Sell or Share My Personal Information