How to avoid unwanted logic removal during synthesis?

Status
Not open for further replies.

KHDAK

Junior Member level 1
Joined
Dec 14, 2011
Messages
16
Helped
0
Reputation
0
Reaction score
0
Trophy points
1,281
Visit site
Activity points
1,390
Hi All,

I am synthesizing a processor design with Cadence RTL compiler. The synthesized netlist works fine (in simulation) and contains all necessary logic when I set a loose clock constraint (5000ps). But when I synthesized the same files with a tighter clock constraint (1800- 3000ps) the RTL compiler meets the timing constraint but randomly removes some of the registers(i.e Register file of the processor) in the synthesized netlist, which are required for proper operation of the design and are not some undriven or extra logic. Is there a way to instruct RTL compiler what not to remove?

The attributes I am using are as follows:

set_attribute hdl_track_filename_row_col true /

set_attribute hdl_undriven_signal_value 0

set_attribute hdl_infer_unresolved_from_logic_abstract false /

set_attribute information_level 2



Thanks.
 

Re: How to avoid unwanted logic removal during synthesis

I'm more of an FPGA guy, but some optimizations -- retiming in particular -- modify the design in logically safe ways in order to meet timing. The nets may still be in the design under a different name.

Secondly, are you certain you are building/testing the correct files? "randomly removing used logic" often occurs when there are accidental duplicates of modules/files/netlists where the simulation is done with a different set than the synthesis/implementation.
 

Re: How to avoid unwanted logic removal during synthesis


Thanks for the reply permute! Yes I am sure I am using the right files as the Netlist with looser timing constraint is also built from the same files. Is there a command in RTL compiler for "Retaining Hierarchy" as there is in Xilinx ISE ?
 

Re: How to avoid unwanted logic removal during synthesis

I would check the logfile to identify the reason for which the register is removed. TRy setting the information level to 9 and search that register. RC will tell you a reason why the registers where optimized.

Retaining hierachies you mean avoid ungrouping. I would say yes, set the attr auto_ungroup to none.
 
Reactions: KHDAK

    KHDAK

    Points: 2
    Helpful Answer Positive Rating
Re: How to avoid unwanted logic removal during synthesis


I think you should carefully define the clock constraint, its the only single way to tell design compiler something u want to tell.
 

Re: How to avoid unwanted logic removal during synthesis


Thanks englishdogg! As it turns out synthesizer had renamed/grouped some of the registers hence it is not possible to locate them in Netlist. So I am now saving the results to external memory where I can easily check them.
 

Re: How to avoid unwanted logic removal during synthesis

To my knowledge of RTL Compiler, it would not rename the register entirely just add a suffix "_reg" and the bit number in "[1]" or something like that, which is also controllable using some attributes. But glad that you could proceed
 

Status
Not open for further replies.
Cookies are required to use this site. You must accept them to continue using the site. Learn more…