![]() |
Tips & HintsSynplify Premier Software Q. Can you use the Synplify Premier Design Planner for IO placement? A. Yes. Assigning logical ports to physical pins is facilitated by the interaction of the Design Planner and the RTL View. The following steps can be used for this purpose. Notice that only usable IO pins are displayed In the Design Plan:
2. Adjust the pin view to modify pin size by selecting: View->Adjust Pin View.
3. Drag & Drop ports to pin locations. To assign ports, do one of the following:
Since there are other methods of assigning I/O pins, the following is an example of a pin assignment conflict you might encounter: The .sdc file might contain I/O pin locks that conflict with the pin locks specified in the .sfp file. The SCOPE constraint file (.sdc) takes precedence over the Design Plan file (.sfp) when conflicts exist after pin assignments. It is highly recommended that you avoid creating mismatches in the .sdc and .sfp files by choosing only one format. Synplify Pro Software Q. Can you use the 64-bit version of Quartus with Synplify Pro on a 64-bit UNIX platform? A. Yes. To use the 64 bit version of Quartus with Synplify Pro on a 64 bit UNIX platform, set the environment variable “QUARTUS_64BIT” TO 1 For example: .bashrc => export QUARTUS_64BIT=1 Now the Quartus used by Synplify Pro in all of the following combinations will be 64-bit version Quartus.
To confirm that Quartus is being run in 64 bit mode, you can observe the following line in the .rpt files (ex <design>.fit.rpt, <design>.map.rpt, etc) However, compiling designs with 64-bit versions of Quartus II executables can require 50-100% more memory than the same design compiled with 32-bit versions. For example, if your design requires more than 3 GB of memory with the 32-bit version, you should have at least 6 GB of memory installed for a 64-bit compilation.
Q. Does Synplify Pro Software Infer EBRs For Lattice Devices? A. Yes. Starting from Synplify Pro version 8.8.1, the tool infers Lattice Embedded Block Rams (18KB memories with input and output registers) from your RTL code. EBRs can be implemented as Single Port, Dual Port, or Pseudo Dual Port memories. EBRs are initialized with a $readmemb/h in the code, which gets translated to INITVAL_00=320'h070601C7980F1921876E06018070F000AC000A800……….” format in verilog simulation netlist file. EBR memory supports three forms of write behavior for single port or dual port operation:
Example 1 (Single port ram in “NORMAL” mode): module test02 (clk,we,addr,data_in,data_out); parameter addr_width = 10; input clk,we; output [data_width - 1 : 0] data_out; reg [data_width - 1 : 0] data_out; always @ (posedge clk) always @ (posedge clk) endmodule
Example 2 (Single port ram in “Read Before Write” mode): module test04(clk,we,addr,data_in,data_out); parameter addr_width = 10; input clk,we; output [data_width - 1 : 0] data_out; reg [data_width - 1 : 0] data_out; always @ (posedge clk) always @ (posedge clk) Example 3 (Single port ram in “Write Through” mode): module test05 (clk,we,addr,data_in,data_out); parameter addr_width = 10; input clk,we; output [data_width - 1 : 0] data_out; reg [addr_width - 1 : 0] addr_reg; always @ (posedge clk) assign data_out = mem[addr_reg];
|
|
From The Syndicated Q1, 2008,
published quarterly by Synplicity, Inc., www.synplicity.com. |