Forum Discussion

Altera_Forum's avatar
Altera_Forum
Icon for Honored Contributor rankHonored Contributor
17 years ago

/* synthesis syn_noprune syn_preserve = 1 */ not preserving registers with SignalProb

The following lines in one of my verilog files attempt to use attributes to supposedly control synthesis but they are being ignored. At the end of a successful build when I open Tools - SignalProbe Pins - Source & list the available nodes, my registers are not in the list.

reg [6:0] ltssm_trans /* synthesis syn_noprune syn_preserve = 1 */;

reg [6:0] ltssm_trans_d1 /* synthesis syn_noprune syn_preserve = 1 */;

reg [4:0] compl_trans /* synthesis syn_noprune syn_preserve = 1 */;

reg [4:0] compl_trans_d1 /* synthesis syn_noprune syn_preserve = 1 */;

reg [NL-1:0] lre1 /* synthesis syn_noprune syn_preserve = 1 */;

reg [NL-1:0] lre2 /* synthesis syn_noprune syn_preserve = 1 */;

How do I get these attributes to be acted on correctly or am I misunderstanding their use?

5 Replies

  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    I've found that the registers do appear in the node list when the node finder's filter is set to "Post-synthesis", but not when it's set to "SignalProbe".

  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    SignalProbe filter uses the Post-fitting netlist. So my question seems to reduce to how to exercise control over the fitter. The Fitter Settings don't appear to have an option that "preserves registers".

  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    Maybe the registers exist but do not have routing connections available for use with SignalProbe.

    If you have physical synthesis enabled, then the Fitter could have modified the registers. If you want to see particular nodes with SignalProbe, SignalTap, or gate-level simulation when using physical synthesis, then set "Netlist Optimizations" to "Never Allow" for those nodes or their entity in the Assignment Editor.
  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    I can't get it to work in practice.

    After adding /* synthesis syn_noprune */ directive to a reg and rerunning synth & elab, the reg is still not available in Node Finder under any of the Signaltap II filters. It is only available under the post-synthesis filter.

    Likewise when assigning "preserve fan-out free register node" in the assignment editor.

    Does this capability actually work, or is it just in the manuals?
  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    if the register has no meaningful use, synthesizer will delete it regardless of protection you give to it. the register is useless in 2 cases. 1. it never receives any signal at all. 2.it's output is not connected to anything. to avoid such condition do the following assign some signal to the register or some binary value let's say 1'b1 ; and drive it's Q to the output PIN. place a pin and connect Q to it. if you don't want the fitter to assign processor's random pin to your "Pin object",you can do analysis and synthesis at first then located newly created pin into assignment editor and choose a Virtual Pin to it. so it will never reach actual processor's pin in the real world. also protect it by the command you said above, to avoid any synthesis on that register. this is the basic methodology about keeping the registers fixed.