• 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 Design
  3. expression syntax for schPatchExpr

Stats

  • Locked Locked
  • Replies 6
  • Subscribers 125
  • Views 17282
  • 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

expression syntax for schPatchExpr

prashantpd
prashantpd over 8 years ago

I am designing a circuit, where I need to connect a 32 bit wide bus to another bus which is 32 bits wide. I am trying to use a patch with the appropriate schPatchExpr, but I am not able to get the syntax right.

I tried the following

and get the following error

Error: Patch cord "I20" -270004): Illegal name syntax - Syntax error in connection expression.

If I try creating the patch with the following expression in schPatchExpr

I get the error

Error: (SCH-3489): Shorted terminals - memTerms 'address_lrc_ram<31>' & 'address_i<31>' thru signals 'address_lrc_ram<31>' & 'address_i<31>'

Could somebody help me with the syntax for the schPatchExpr so that I am able to connect all 32 bits of the bus correctly.

Thanks

Prashant

  • Cancel
Parents
  • Andrew Beckett
    Andrew Beckett over 8 years ago

    The documentation is clear on this too (this is copied from the documentation):

    Note: Only one of the nets can be connected to a schematic pin (I/O pin). Also, in the schematic editor, you cannot connect an input pin to an output pin even though you use a patchcord in the middle.

    If you want to connect two pins together and rename them, the only way of doing this is to have a component in the way (such as basic/cds_thru, for example), You'd have to give the instance name of cds_thru I1<31:0> for example so that it has the same width as the bus. Note that cds_thru isn't a true short - it's designed for this kind of application though.

    Regards,

    Andrew.

    • Cancel
    • Vote Up +1 Vote Down
    • Cancel
  • JanPrummel
    JanPrummel over 5 years ago in reply to Andrew Beckett

    Hi Andrew,

    I try to redefine a bus A<3:0> to B<1:0>,C<1:0> and am having trouble with the description of the example in the documentation.

    It seems that the net expression in the patch-cord needs to be "0:1=0:1" for the part that converts A<3:2> to B<1:0> and "2:3=0:1" for the branch that converts A<1:0> to C<1:0>.

    However, when I take A as the source and B and C as the destinations of the patch-cord as per the example (with SYSBUS<15:0>), I get an error. If I invert the direction of the patch-cords, it is accepted. In my case A is connected to an input pin, B and C are not connected to pins.

    I try to remember this convention as: "No matter how you define your busses on either side of the patch-cord, the net expression will index the bits from left to right as written as 0 up to n-1. You can merge several smaller busses into a large one, but not the other way around." Does this summarize it correctly?

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Reply
  • JanPrummel
    JanPrummel over 5 years ago in reply to Andrew Beckett

    Hi Andrew,

    I try to redefine a bus A<3:0> to B<1:0>,C<1:0> and am having trouble with the description of the example in the documentation.

    It seems that the net expression in the patch-cord needs to be "0:1=0:1" for the part that converts A<3:2> to B<1:0> and "2:3=0:1" for the branch that converts A<1:0> to C<1:0>.

    However, when I take A as the source and B and C as the destinations of the patch-cord as per the example (with SYSBUS<15:0>), I get an error. If I invert the direction of the patch-cords, it is accepted. In my case A is connected to an input pin, B and C are not connected to pins.

    I try to remember this convention as: "No matter how you define your busses on either side of the patch-cord, the net expression will index the bits from left to right as written as 0 up to n-1. You can merge several smaller busses into a large one, but not the other way around." Does this summarize it correctly?

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Children
  • Andrew Beckett
    Andrew Beckett over 5 years ago in reply to JanPrummel

    All you need to do is label one side A<3:0> and the other side B<1:0>,C<1:0> and set the patch cord expression to 0:3=0:3. Or it could be 3:0=3:0. The only fancy thing you could do is use 0:3=3:0 which is if you want to reverse the order.

    It's not as complicated as it might appear, to be honest.

    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