• 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 does not make use of "non-conventional" multiple...

Stats

  • Locked Locked
  • Replies 3
  • Subscribers 62
  • Views 1536
  • 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 does not make use of "non-conventional" multiple-output cells

vdbem
vdbem over 14 years ago

Hi,

I will try to be brief, but if you need any detail please ask me,

in summary, the problem is: if I describe in my liberty file a cell with multiple-outputs, the mapper (RTL Compiler) is not able to make use of it ... (if I put them together with convetional single-output cells, the tool just use the single-output cells, if I put only the multiple-output cells, it is not able to complete the mapping because does nor recognize the fundamental basic functions needed)

probable important points:
    1) There is no syntax error during the execution
    2) The logic functions of the outputs does not share inputs, an example is S1 = !(A & B) and S2 = !(C + D), so they are not like a Full-Adder..
    3) I've been using functional liberties (.lib with no information about power or timing, just the logic functions and the area set to "1"),

If I use a liberty like this one below, which is basically a cell with two "encapsulated" inverters, the tool does not even recognize the existence of inverters in the library,

  cell(two_encapsulated_invs){
    area : 1;
    pin(a){ direction : input; }
    pin(b){ direction : input; }
    pin(Z0){   direction : output;
                  function : "!a";
                  timing(){  related_pin : "a";  }
              }
    pin(Z1){  direction : output;
                 function : "!b";
                 timing(){  related_pin : "b";  }
              }
  }

so my question is:
 - Is it possible to make RTL Compiler able to use multiple-output cells if they are not the "expected kind" like a full-adder?
   (in any version of it, ours is v08.10-s222_1 (32-bit), built Mar 25 2009 (32-bit), but the question is more like to know if the map algorithm is aware of such situation, or what command would make it aware)

thank you,
best regards

  • Cancel
  • eklikeroomys
    eklikeroomys over 13 years ago

     Hi, have you found a solution to this problem? I am currently having similar problems in the design of a T flip flop which has two outputs, where one of the outputs has a combinational timing arc and acts as an enable for another T flip flop when used in a binary counter. 

     Unfortunately, this is not my only concern since RTL compiler is also unable to identify the function of the T flip flop even when the combinational arc is removed from the cell.

    I used Encounter Library Characterizer to characterize the T flip flop and a .lib was written without any problems. 

     Is there limitations to the types of cells that RTL Compiler is able to use for synthesis?

    Thank you

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • vdbem
    vdbem over 13 years ago

    Hi,

    I never had an answer for that problem.. and it would still be useful for me.

    What I've been doing is mapping the design with a "conventional" library, and then recombining/exchanging cells out of RTL Compiler, by scripts, directly in the structural HDL. A very unsatisfactory flow... 

    regards,
    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • grasshopper
    grasshopper over 13 years ago

     Hi vdbem,

     

     RC does indeed support MOGs (multi-output gates) such as compressor cells, etc. However your versions is 2-3 years old and officially unsupported. I suggest you move to RC10.1.302 from http://downloads.cadence.com

     

    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