• 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. RTL Compiler: Manually Add Logic Gates

Stats

  • Locked Locked
  • Replies 2
  • Subscribers 63
  • Views 13827
  • 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

RTL Compiler: Manually Add Logic Gates

moogyd
moogyd over 14 years ago

Hi,

I am trying to update some old (bgx_shell) scripts to RTL compiler (10). 

This script basically performs some very basic logic isolation, but including AND gates.

e.g. Within i_subdes1 there is a net RC_TESTPORT

i_subdes1/RC_TESTPORT to connected to

- i_subdes1/i_subdes2/RC_TESTPORT

- i_subdes1/i_subdes3/RC_TESTPORT

I want to add an AND gate such that

i_subdes1/RC_TESTPORT connected to i_subdes/i_newgate/A1

i_subdes1/ISOLATE connected to i_subdes/i_newgate/A2

i_subdes1/i_newgate/X connected to  i_subdes1/i_subdes2/RC_TESTPORT

i_subdes1/i_newgate/X connected to  i_subdes1/i_subdes3/RC_TESTPORT

With bgx_shell, I used create_instance, delete_netconn, add_netconn and create_net. There are obvious alternatives for the first 3, but I am not sure about create_net. 

I tried a simple experiment, and it connected RC_TESTPORT to i_newgate/A1 OK, but didn't manage to connect the AND gate output - it seemed to try and connect RC_TESTPORT to both the input and output of the AND gate. 

I am not sure I understand where to use NETs and PORTs.

Does anyone have a script (or link) to a script that does something similar?

Thanks,

Steven

 

 

  • Cancel
  • moogyd
    moogyd over 14 years ago

    Hi,

    Just an update.

    I now have a solution - my previous problem was that I was confustion re pins/ports, and also not correctly making changes at the correct level of hierachy.

    I would still be interested in comparing my solution with other scripts that may be available.

     Thanks,

    Steven

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • grasshopper
    grasshopper over 14 years ago

    Hi Steven,

    as you indicated, I think there are many ways to skin the cat. I believe it really depends what your exact needs are:

    + using edit_netlist commands is perfectly adequate

    + for isolation in the context of power you could rely on CPF infrastructure which will do the insertion for you based on power constraints

    + for isolation in the context of DFT you could rely on the insert_dft command if it meets your needs. I believe your goal is one of 

       shadow logic support so check out the following command:

     c:/>  insert_dft shadow_logic -h
      insert_dft shadow_logic: inserts test logic to enable testing of shadow logic around a module

    Usage: insert_dft shadow_logic [-around <instance>+] [-mode <string>] [-auto] [-minimum_shadow_logic_pins <integer>]
               [-exclude_shadow_logic <instance>+] [-balance] [-preview] [-dont_map] [-test_control <test_signal>] [-test_clock_pin <pin|port>]
               [-rise] [-fall] [-group <pin>+]+ [-exclude <pin>+] [-only <pin>+]

        [-around <instance>+]:
            instances around which DFT shadow logic must be inserted
        [-mode <string>]:
            mode of operation {no_share|share|bypass}
        [-auto]:
            automatic shadow logic insertion
        [-minimum_shadow_logic_pins <integer>]:
            inserts shadow logic on blackboxes with pins exceeding this value (default: 10)
        [-exclude_shadow_logic <instance>+]:
            exclude shadow logic around these instances
        [-balance]:
            group unmatched inputs/outputs to have a balanced number of groups
        [-preview]:
            show what would be done only, but do not modify the design
        [-dont_map]:
            do not techmap the inserted logic even though design is mapped
        [-test_control <test_signal>]:
            test signal used to control the DFT logic
        [-test_clock_pin <pin|port>]:
            use this clock pin to trigger control/observation flops
        [-rise]:
            use rising edge of test clock
        [-fall]:
            use falling edge of test clock
        [-group <pin>+]:
            what pins to observe together and/or control to the same value
        [-exclude <pin>+]:
            do not control/observe these pins
        [-only <pin>+]:
            only control/observe these pins

    The nice thing about most insert_dft commands is they have a -preview option so you do not have to mangle your design and rerun to get it right. There are other insert_dft commands that may do what you want.

    + Finally there is insert_io_buffers for buffer-level isolation. This commands requires you to run 'include load_etc.tcl' to become accessible

     

    Please post back and report your findings.

     regards,

    gh-

    • 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