400 likes | 422 Views
Xilinx/Exemplar Logic FPGA Synthesis Solution. LeonardoSpectrum. Powerful Integrated Modular ASIC & FPGA. Leonardo Spectrum Bundles. LeonardoInsight. ASIC. Giving you a choice!. FlowTabs provide a step by step process. Leonardo Spectrum User Interface.
E N D
LeonardoSpectrum Powerful Integrated Modular ASIC & FPGA
Leonardo Spectrum Bundles LeonardoInsight ASIC Giving you a choice!
FlowTabs provide a step by step process Leonardo Spectrum User Interface When the run button isn’t enough! Leonardo Spectrum GUI • PowerTabs offer easy access to advanced functionality
Xilinx Place and Route Integration LeonardoSpectrum • Automatically: • Transfers Constraints • Creates P & R Script File • Runs P & R Xilinx Alliance Series
Part of FPGA Advantage • Includes all EDA Design Tools • Pushbutton Simulation, Synthesis and Place and Route • Provides Design Management • Cross probes to everything • One source for customer support
Pipeline Multipliers • New in 1999.1G (now on ftp site) • Supported for Virtex wait until clk'event and clk = '1'; temp1 <= a * b; c <= temp1; • area in slices • area and delay after place and route
Block RAM Inference (RAMB4_S1) • synchronous RAM is inferred as Block • ROMs are not inferred into Block RAM • Both single and Dual port RAMs are supported • Block RAMs include Timing arcs • Can be instantiated • Can infer distributed RAM blocks • 1 Mega-bit Block RAM inferred in 20 seconds
Verilog Coding Example module new_ram (clk, we, din, addr, dout); input clk, we; input [7:0] din; input [4:0] addr; output [7:0] dout; reg [4:0] addri; reg [7:0] data[0:31]; always @(posedge clk) begin if (we == 1’b1) data[addr] = din; addri = addr; end assign dout = data[addri]; endmodule New in v1999.1F Coding Style requires both registered address and data signals
Controlling Block RAM Inference • Disable RAM Inference Globally • > set extract_ram FALSE • Prevent RAM inference on a single instance • > Set_attribute i5 –name block_ram –value false • Will not be implemented in slice RAM • RTL Verilog Comment Example Reg [7:0] mem[63:0] //Exemplar attribute mem block_ram FALSE Attribute must be set on the memory storage signal
Slice RAM Inference • Asynchronous RAMs use the CLB RAM element • Subtracts from Logic resources • Library cells include timing arcs
DLL Cell • Inserted through instantiation • CLK_DIVIDE and DUTY_CYCLE_CORRECTION attributes are propagated to Alliance Series as EDIF properties • DLL cell does not contain timing arcs • Clock constraints must be set on internal nets Set_attribute clk_internal –name clock_cycle –value 20 –net
BUFGDLL & BUFGDLLH Cells • Special configurations of DLL • Included in the library as a special type of clock buffer • Use PAD command • PAD clk BUFGDLL • (Appears on wrong pull-down list)
SRL Inference • New in 1999.1f release • Turned on by Default • LUT can be used in place of registers to balance pipeline stages • Area Efficient Optimization • Controlled by 2 variables • Set virtex_map_srl TRUE • enables mapping • Set virtex_map_srl_pack TRUE • Packs SRL into single slice
SRL Example Area (slices)Delay (Mhz) previous flow 110 160 srl flow 16 185 % improvement 85% 16% begin process (clk) begin if clk'event and clk = '1' then int_sig <= input & int_sig(0 to cycle - 2); end if; end process; output <= int_sig(cycle -1); end behav;
Priority Encoders using MUXCY • Used for implementing fast priority encoders up to 10 levels • Available through a variable called map_muxcy (default:true) • To disable issue the following command from the tcl window > Set map_muxcy false • Also used for wide address decoders, wide AND gates with bubbled inputs. • Use for Alliance Series 2.1 and later
IOB Support • Global IOB Register Inference • Set virtex_map_iob_registers variable to TRUE • Can be done through GUI on Technology form • Tristate Enable Register : Replicates registers for the Tristate pins of IO Bus for fast Tcko. • Replicates internal registers driving multiple output ports. • Port by Port IOB Register Implementation • Set the attribute “IOB” = true on a specific port • > set_attribute out_a –name IOB –value TRUE -port
Virtex Optimization - F5MUX & F6MUX Advanced Opt Settings • F5 MUX • Any function of 5 inputs or some decomposable functions of upto 9 inputs. • F6 MUX • Any function of 6 inputs or some decomposable functions of upto 17 inputs • Implements upto 8x1 Mux in one CLB. module mux81 (a, sel, o); input [0:7] a; input [0:2] sel; output o; assign o = a[sel]; endmodule
MULTAND • Any multiplier with non-constant operands uses the MULTAND module mult8x8 (a,b,prod); input [0:7] a; input [0:7] b; output [0:15] prod; assign prod = a * b; endmodule
Registers • Now inferring negative edge registers • “_1” versions of cells, FD_1 • Inferring synchronous set/reset flops • Inferring asynchronous set/reset flops • > Set include_gates FDRS
Counters • All flavors of counters are implemented using 1 LUT per Bit. • Loadable • Synchronous Set/Reset • Up/Down • Count enable and clock enables • Exception include Counter with “both” asynchronous and synchronous reset and load signals.
Design Analysis with LeonardoInsight 2000 In Beta, Release March 2000
New Schematic Viewer Integrated Design Browser 10X Run time improvement Interactive to database
Hierarchy Schematics Default Schematic Hierarchy Schematic Shows Entire Hierarchical Schematic at once
Critical Path Highlighting Constraints and Timing info displayed on Schematic Both Filtered and Unfiltered views
Fan-in, Fan-out Fragment Views Generate concise fragments of important circuits
Interactive to Database • View connected to active database • Issue interactive commands such as group or don’t_touch • View automatically updated
A B C A B New C Creating Design Hierarchy • Use the Group Command • Will create new level of hierarchy • Original hierarchy will exist at lower level • Use to group area critical or timing critical blocks together • Can also group from the design browser Group {b c} –inst new
A B New C A New Removing Design Hierarchy • Use the “ungroup” command • Will dissolve all hierarchy • Can be done from the design browser ungroup {b c}
Hierarchy Manipulation from Schematics • Hierarchy commands can be executed from schematic viewer • Schematic will automatically update
Moving Within Hierarchy • Present_design command can “Swap” any module into the Optimizer • Can be used for re-optimization • Can be used to Separate Blocks • All hierarchy blocks can be set to “present_design • Issue command from Design Browser or Schematic Viewer A Optimization Engine Top B C > Present_design priority_encoder
Module Optimization Optimize Form • Cannot be done through Quicksetup • Disable IO Insertion during optimization • Hierarchy may be flattened • Save netlist as “XDB” • Exemplar Binary Database • No netlist processing is performed Output Form
PCI Core Flow • Best PCI Core flow in the industry • No code modifications • Extensive hierarchy & IO buffer control • Can be 100% scripted for single pass optimization New Appnote available at www.exemplar.com/support/appnotes
Team Design • Blocks optimized separately • Assembly done by Synthesis tool • IO Insertion, Design Analysis and Final Optimization done during synthesis New Appnote available at www.exemplar.com/support/appnotes
Incremental Place and Route • Preserved Hierarchy for Incremental Place and Route • LeonardoSpectrum supports Re-opt at block level • Use Guide Files to preserve place and route timing New Appnote available at www.exemplar.com/support/appnotes
Summary • Working with HDL Division to advance Methodology and ease of use • Focused on Optimization Technology • System architect for block based design • Leonardo Spectrum is the Power Tool for Virtex