Forum Discussion

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

Warning (13004): Presettable and clearable registers converted to equivalent circuits

Warning (13004): Presettable and clearable registers converted to equivalent circuits with latches. Registers power-up to an undefined state, and DEVCLRn places the registers in an undefined state.

There are a few components impacted by this warning. Doing a search on the Altera Site, this is what it has to say:

CAUSE:

One or more registers in the design have one of the following conditions:

The current device family does not support any of these conditions. As a result, Analysis & Synthesis converts the register to equivalent circuits with a latch, a register and logic, and the resulting register powers-up to an undefined state (X). In addition to that, dev_clrn (http://quartushelp.altera.com/13.1/mergedprojects/comp/comp/comp_db_device_pin_options.htm) places the register in an undefined state, and the resulting circuit is prone to glitches because the there are different paths from the asynchronous signals to the output of the logic representing the register. Since these paths have different delays, glitches can occur, especially if the asynchronous signals are coming from combinational logic, or if the register is feeding combinational logic. See submessages for details.

ACTION:

No action is required. If you want to prevent glitches, put KEEP attributes on the asynchronous signals that feeds the register, and on the register itself. This action is necessary only if the asynchronous signals come from combinational logic or if the register feeds combinational logic. Make sure that you perform timing simulation to verify that no unexpected glitches occur.

The main component impacted (largest number of originating warnings) is a 16-bit shift register with asynchronous load. An AND gate feeds the Load Signal. I put a /* synthesis keep */ on the load line but this did not resolve the issue. Any suggestions on this?

10 Replies

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

    What exactly are you asking - the notes you posted answer the question as to why this is happening...

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

    --- Quote Start ---

    What exactly are you asking - the notes you posted answer the question as to why this is happening...

    --- Quote End ---

    The Entry /*synthesis keep*/ on the asynchronous line of the shift register does not resolve the issue, while the notes claim they should.
  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    --- Quote Start ---

    The Entry /*synthesis keep*/ on the asynchronous line of the shift register does not resolve the issue, while the notes claim they should.

    --- Quote End ---

    • It occurred to me that putting the /*synthesis keep*/ will not clear up the error message, simply prevent glitches. I however don’t want these registers converted to latches; neither do I want these coming up in undefined states. My violation is the 3
  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    --- Quote Start ---

    • It occurred to me that putting the /*synthesis keep*/ will not clear up the error message, simply prevent glitches. I however don’t want these registers converted to latches; neither do I want these coming up in undefined states. My violation is the 3

    --- Quote End ---

    it says the power up is undefined but you can apply reset to start in a defined state. This is because some devices' registers do not support those features in their registers and so has to be implemented in logic which can't support power up value.

    and for glitches apply a second register following the node.
  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    --- Quote Start ---

    it says the power up is undefined but you can apply reset to start in a defined state. This is because some devices' registers do not support those features in their registers and so has to be implemented in logic which can't support power up value.

    and for glitches apply a second register following the node.

    --- Quote End ---

    I can ask the question another way. How do I model a register/counter with asynchronous load without running into this type of warning? Thanks.
  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    So, let me get this right. You can't create your own synthesizable counter/shift register with asynchronous load but you can use the Mega-Wizard to create one??? I take it back. Ony the Mega-Wizard counter allows for asynchronous load, not the shift register

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

    --- Quote Start ---

    So, let me get this right. You can't create your own synthesizable counter/shift register with asynchronous load but you can use the Mega-Wizard to create one??? I take it back. Ony the Mega-Wizard counter allows for asynchronous load, not the shift register

    --- Quote End ---

    The wizard name is misleading. whether you infer a design or use wizard it eventually targets same device resources. Though there are some features available in wizard that may not be available with inference (currently) such as pipelining a mult but I doubt you can have your asynchrnonously loadable counter using the wizard. Try it and tell us.
  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    --- Quote Start ---

    The wizard name is misleading. whether you infer a design or use wizard it eventually targets same device resources. Though there are some features available in wizard that may not be available with inference (currently) such as pipelining a mult but I doubt you can have your asynchrnonously loadable counter using the wizard. Try it and tell us.

    --- Quote End ---

    Yes, I tried it and it works.