Article Details

ID: 5063
Case Type: faq
Category: Implementation
Related To: Synthesis
Family: MachXO2

Search Answer Database

Why does the suffixes of the signal change when compiling a project on the other PC?

There are two things to consider here:

1. Bus signal Representation

Example, For a signal declared in the RTL as below;

reg [3:0] clk_div;

The bus signals representation in the latest Diamond version is as follows:

In the latest Diamond version, the above bus signal is represented as clk_div[0], clk_div[1],clk_div[2], clk_div[3]. Please note that square brackets "[]" are used while representing a bus signal. The Synplify in the older Diamond versions used clk_div_0, clk_div_1, clk_div_2, clk_div_3. The underscore "_" is used to represent a bus signal.

If there is a change in the bus representation style, then Synplify would assume them as a different signal, and hence will give out an error.

2. Bus signal name Preservation

For the same example,

reg [3:0] clk_div;

When the run the Synplify synthesis process, the tool would usually modify the net name. So, a constraint applied in one version of tool might not work exactly when you migrate to another version.

This can be avoided by applying "syn_keep" attribute on the net name. The syn_keep attribute would preserve the net name, throughout the synthesis process, and by doing so, the constraints/preference applied on net-type would be also immune to the automatic net name changes by the tool, and you need not have to worry about changing the preference while migrating to another version of the tool.

But the syn_keep would work only on the "wire" types, and not on the "reg" types.So, in order for this to work, the user could declare wire-type signal or bus in the RTL,then assign the "Reg" types to the"wire" types, as below:

wire [3:0] clk_div_net /*synthesis syn_keep=1*/; //syn_keep would preserve the net name

assign clk_div_net = clk_div; // clk_div is a reg-type, clk_div_net is a wire-type

Apply constraints on the wire/net type "clk_div_net", and use it as the clock source. This would make the preference immune to the automatic net-name modification by the tool.
Like most websites, we use cookies and similar technologies to enhance your user experience. We also allow third parties to place cookies on our website. By continuing to use this website you consent to the use of cookies as described in our Cookie Policy.