• 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. Logic Design
  3. Conformal

Stats

  • Locked Locked
  • Replies 5
  • Subscribers 61
  • Views 14652
  • 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

Conformal

archive
archive over 18 years ago

I have run into an issue: there is an 8-bit
input bus.  The 4 MSBs and the 4 LSBs are related: the LSBs are simply the
inversion of the MSBs.  So sel[7] = ~sel[3], sel[6] = ~sel[2], etc.

The original code used all 8 bits of sel (for reasons that I can only
guess).  There isn't any reason to do this in the behavioral code, and in
fact it makes the code a lot less readable.  The problem is that sel is an
input port, so LEC won't pass unless either:
  1. I use sel the way it was used in the original code
  2. I can tell Conformal the relationship between sel[7:4] and
sel[3:0].

Do anyone know a way to achieve the second option?  I'd guess that conformal
supports this, but I have no idea how.

Thanks,
Prasad


Originally posted in cdnusers.org by anssprasad
  • Cancel
  • archive
    archive over 18 years ago

    I see that there is some formatting problem, so I am reposting with numerics replaced by english words:

    I have run into an issue: there is an 8-bit
    input bus. The 4 MSBs and the 4 LSBs are related: the LSBs are simply the
    inversion of the MSBs. So sel[seven] = ~sel[three], sel[six] = ~sel[two], etc.

    The original code used all 8 bits of sel (for reasons that I can only
    guess). There isn't any reason to do this in the behavioral code, and in
    fact it makes the code a lot less readable. The problem is that sel is an
    input port, so LEC won't pass unless either:
    1. I use sel the way it was used in the original code
    2. I can tell Conformal the relationship between sel[seven:four] and
    sel[three:zero].

    Do anyone know a way to achieve the second option? I'd guess that conformal
    supports this, but I have no idea how.

    Thanks,
    Prasad


    Originally posted in cdnusers.org by anssprasad
    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • archive
    archive over 18 years ago

    Hi Prasad

    Here's one way to handle it in Conformal:

    add pin constraint one_hot sel[7] sel[3] -golden
    add pin constraint one_hot sel[6] sel[2] -golden
    add pin constraint one_hot sel[5] sel[1] -golden
    add pin constraint one_hot sel[4] sel[0] -golden

    With these set then logic like this would pass:

    golden
    assign out1 = sel[7]&sel[3] | sel[6]&sel[2] | sel[5]&sel[1] | sel[4]&sel[0];

    revised
    assign out1 = 1'b0;

    Chrystian


    Originally posted in cdnusers.org by croy
    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • archive
    archive over 18 years ago

    Chystian,

    There isn't a way to state inverted equivalence? Seems that would be more appropriate and provide more positive checking.


    Originally posted in cdnusers.org by bryan
    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • archive
    archive over 18 years ago

    Hi Bryan

    Yep, there is. That's why I said 'here's *one* way' :-)

    Here's another:

    add pin equi sel[7] -invert sel[3] -golden
    add pin equi sel[6] -invert sel[2] -golden
    add pin equi sel[5] -invert sel[1] -golden
    add pin equi sel[4] -invert sel[0] -golden

    The end result is the same but you're right that this is more explicit than 'one_hot'.

    Chrystian


    Originally posted in cdnusers.org by croy
    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • archive
    archive over 18 years ago

    Thanks Chrystian,

    It was of great help.

    Prasad.


    Originally posted in cdnusers.org by anssprasad
    • 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