UPGRADE YOUR BROWSER

We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

AR# 2649

SYNPLIFY: How to change the bus-notation using syn_edif_bit_format and syn_edif_scalar_format attributes?

Description

Keywords: Synplify, syn_edif_bit_format

Urgency: Standard

General Description:
How to change the bus-notation using syn_edif_bit_format
and syn_edif_scalar_format attributes?

There are several commonly used conventions for delimiting
busses in netlists such as EDIF. Mixing conventions can
cause problems with your design flow, so Synplicity has added
additional user control to allow easier conformance to your
chosen convention. Synplicity now provides you with the
ability to control the formatting of EDIF netlists for use with
Xilinx FPGAs.

As of Synplify 5.1.4 and later releases, you can specify the bus
format and the case of nets in the Xilinx EDIF netlist. The 2 new
attributes, syn_edif_bit_format and syn_edif_scalar_format, allow
you to specify the format either directly in the HDL code or by
applying the attribute preferences graphically in Synplify's
constraints editor (SCOPE).

The syn_edif_bit_format attribute is applied to the top level and
all black box modules/components in a design, syn_edif_bit_format
can be specified for vectors and takes the following values:

"%C<%i>" : Use <> to delimit bits of a bus

"%C[%i]" : Use [ ] to delimit bits of a bus

"%C(%i)" : Use ( ) to delimit bits of a bus

"%C_%i": Use _ to delimit bits of a bus [implies syn_noarray_ports=1]

"%C%i": Append bit to the name of a bus [implies syn_noarray_ports = 1]

See (Xilinx Solution 504) regarding the syn_noarray_ports attribute

The value of C can be:
u : to upshift the case of the base name of a bus
d : to downshift the case of the base name of a bus
n : to preserve the case of the base name of a bus

For example, given a bus definition: My_Bus[1:0]

%n<%i> should rename My_Bus to
My_Bus<1:0>

%u(%i) should rename My_Bus to
MY_BUS(1:0)

%d[%i] should rename My_Bus to
my_bus[1:0]

%n_%i should rename My_Bus to
My_Bus_1
My_Bus_0

%u%i should rename My_Bus to
MY_BUS1
MY_BUS0

解决方案

1

SDC
---

# syn_edif_bit_format attribute
define_global_attribute syn_edif_bit_format {%n[%i]}

# syn_edif_scalar_format attribute
define_global_attribute syn_edif_scalar_format {%n}


Please note that %u and %d can be substituted for
%n for upshifting and downshifting of the base name.

2

Verilog
------

Apply on a module basis

module d_register (CLK, D_IN, Q_OUT)
/* synthesis syn_edif_bit_format="%u<%i>" */;
input CLK;
input [3:0] D_IN;
output [3:0] Q_OUT;

reg [3:0] Q_OUT;

always @ (posedge CLK)
Q_OUT <= D_IN;

endmodule

3

VHDL
----

Apply on an architecture/component basis

Component example:

component test
port ( ? );
end component;
attribute syn_edif_bit_format : string;
attribute syn_edif_scalar_format : string;
attribute syn_edif_bit_format of test : component is "%u(%i)";
attribute syn_edif_scalar_format of test : component is "%u";

Architecture example:

architecture XILINX of test is
attribute syn_edif_bit_format : string;
attribute syn_edif_scalar_format : string;
attribute syn_edif_bit_format of XILINX : architecture is "%u(%i)";
attribute syn_edif_scalar_format of XILINX : architecture is "%u";
AR# 2649
创建日期 08/07/1997
Last Updated 04/24/2007
状态 Archive
Type 综合文章