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# 14831

7.x Synplify - How do I infer the Virtex-II synchronous multiplier (MULT18X18S) in Synplify?

Description

Keywords: Synplify, VHDL, Verilog, multiply, multiplier, MULT18X18

Urgency: Standard

General Description:
How do I infer the Virtex-II synchronous multiplier in Synplify?

Solution

1

Synchronous Multiplier in Synplify - VHDL Example:

(NOTE: The "syn_pipeline" Synplify attribute must be used.)

library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;

entity xcv2_mult18x18s is
port (a : in std_logic_vector(7 downto 0);
b : in std_logic_vector(7 downto 0);
clk : in std_logic;
prod : out std_logic_vector(15 downto 0));
end xcv2_mult18x18s;

architecture arch_xcv2_mult18x18s of xcv2_mult18x18s is

signal reg_prod : std_logic_vector (15 downto 0);

attribute syn_pipeline : boolean;
attribute syn_pipeline of reg_prod : signal is true;

begin

process(clk) is begin
if clk'event and clk = '1' then
reg_prod <= a*b;
end if;
end process;

prod <= reg_prod;

end arch_xcv2_mult18x18s;

2

Synchronous Multiplier in Synplify - Verilog Example:

(NOTE: The "syn_pipeline" Synplify attribute must be used.)

module xcv2_mult18x18s (a,b,clk,prod);
input [7:0] a;
input [7:0] b;
input clk;
output [15:0] prod;

reg [15:0] prod /* synthesis syn_pipeline = 1 */;

always @(posedge clk) prod <= a*b;

endmodule
AR# 14831
Date Created 06/06/2002
Last Updated 04/23/2007
Status Archive
Type General Article