![]() |
|
![]() |
|
Answers Database
M1/XSI v1.1.1a: Template runscripts in $XILINX/synopsys/examples are incorrect
Record #2037
Problem Title: /* ==================================================*/ /* Sample Script for Synopsys to Xilinx Using */ /* FPGA Compiler */ /* */ /* Targets the Xilinx XC4028EX-3 and assumes a VHDL */ /* source file by way of an example. */ /* *//* For general use with XC4000E/EX architectures. */ /* ================================================= */ /* Set the name of the design's top-level module. */ /* (Makes the script more readable and portable.) */ /* Also set some useful variables to record the */ /* designer and company name. */ /* ================================================= */ TOP = <design_name> /* ========================== */ /* Note: Assumes design file- */ /* name and entity name are */ /* the same (minus extension) */ /* ========================== */ designer = "XSI Team" company = "Xilinx, Inc" part = "4028expg299-3" /* ================================================= */ /* Analyze and Elaborate the design file and specify */ /* the design file format. */ /* ================================================= */ analyze -format vhdl TOP + ".vhd" /* ============================ */ /* You must analyze lower-level */ /* hierarchy modules here */ /* ============================ */ elaborate TOP /* ================================================= */ /* Set the current design to the top level. */ /* ================================================= */ current_design TOP /* ================================================= */ /* Set the synthesis design constraints. */ /* ================================================= */ remove_constraint -all /* Some example constraints */ create_clock <clock_port_name> -period 50 set_input_delay 5 -clock <clock_port_name> \ { <a_list_of_input_ports> } set_output_delay 5 -clock <clock_port_name> \ { <a_list_of_output_ports> } set_max_delay 100 -from <source> -to <destination> set_false_path -from <source> -to <destination> /* ================================================= */ /* Indicate those ports on the top-level module that */ /* should become chip-level I/O pads. Assign any I/O */ /* attributes or parameters and perform the I/O */ /* synthesis. */ /* ================================================= */ set_port_is_pad "*" /* Some example I/O parameters */ set_pad_type -pullup <port_name> set_pad_type -no_clock all_inputs() set_pad_type -clock <clock_port_name> set_pad_type -exact BUFGS_F <hi_fanout_port_name> set_pad_type -slewrate HIGH all_outputs() /* ============================= */ /* Note: Synopsys slew-control= */ /* HIGH is the same as Xilinx's */ /* slewrate=SLOW. Synopsys slew- */ /* control=LOW is same as Xilinx */ /* slewrate=FAST. */ /* ============================= */ insert_pads /* ================================================= */ /* Synthesize and optimize the design */ /* ================================================= */ compile -boundary_optimization /* ================================================= */ /* Write the design report files. */ /* ================================================= */ report_fpga > TOP + ".fpga" report_timing > TOP + ".timing" /* ================================================= */ /* Write out the design to a DB file. (Post compile) */ /* ================================================= */ write -format db -hierarchy -output TOP + "_compiled.db" /* ================================================= */ /* Replace CLBs and IOBs with gates. */ /* ================================================= */ replace_fpga /* ================================================= */ /* Set the part type for the output netlist. */ /* ================================================= */ set_attribute TOP "part" -type string part /* ================================================= */ /* Optional attribute to remove the FPGA Compiler's */ /* mapping structures from the design. This permits */ /* The Xilinx design implementation tools to map the */ /* design instead. */ /* ================================================= */ /* set_attribute find(design,"*") "xnfout_write_map_symbols" \ -type boolean FALSE */ /* ================================================= */ /* Add any I/O constraints to the design. */ /* ================================================= */ set_attribute <port_name> "pad_location" \ -type string "<pad_location>" /* ================================================= */ /* Write out the design to a DB. (Post replace_fpga) */ /* ================================================= */ write -format db -hierarchy -output TOP + ".db" /* ================================================= */ /* Write-out the timing constraints that were */ /* applied earlier. (Note that any design hierarchy */ /* needs to be flattened before the constraints are */ /* written-out.) */ /* ================================================= */ ungroup -all -flatten write_script > TOP + ".dc" /* ================================================= */ /* Save design in XNF format as <design>.sxnf */ /* ================================================= */ write -format xnf -hierarchy -output TOP + ".sxnf" /* ================================================= */ /* Call the Synopsys-to-Xilinx constraints translator*/ /* utility DC2NCF to convert the Synopsys constraints*/ /* to a Xilinx NCF file. You may like to view */ /* dc2ncf.log to review the translation process. */ /* ================================================= */ sh dc2ncf TOP + ".dc" /* ================================================= */ /* Exit the Compiler. */ /* ================================================= */ exit /* ================================================= */ /* Now run the Xilinx design implementation tools. */ /* ================================================= */ Solution 2: /* ==================================================*/ /* Sample Script for Synopsys to Xilinx Using */ /* FPGA Compiler */ /* */ /* Targets the Xilinx XC5210-5 and assumes a VHDL */ /* source file by way of an example. */ /* */ /* For general use with XC3000A/L and XC5200 */ /* architectures. */ /* Not suitable for use with XC4000E/EX */ /* architectures. */ /* ==================================================*/ /* ================================================= */ /* Set the name of the design's top-level module. */ /* (Makes the script more readable and portable.) */ /* Also set some useful variables to record the */ /* designer and company name. */ /* ================================================= */ TOP = <design_name> /* ========================== */ /* Note: Assumes design file- */ /* name and entity name are */ /* the same (minus extension) */ /* ========================== */ designer = "XSI Team" company = "Xilinx, Inc" part = "5210pq160-5" /* ================================================= */ /* Analyze and Elaborate the design file and specify */ /* the design file format. */ /* ================================================= */ analyze -format vhdl TOP + ".vhd" /* ============================ */ /* You must analyze lower-level */ /* hierarchy modules here */ /* ============================ */ elaborate TOP /* ================================================= */ /* Set the current design to the top level. */ /* ================================================= */ current_design TOP /* ================================================= */ /* Set the synthesis design constraints. */ /* ================================================= */ remove_constraint -all /* Some example constraints */ create_clock <clock_port_name> -period 50 set_input_delay 5 -clock <clock_port_name> \ { <a_list_of_input_ports> } set_output_delay 5 -clock <clock_port_name> \ { <a_list_of_output_ports> } set_max_delay 100 -from <source> -to <destination> set_false_path -from <source> -to <destination> /* ================================================= */ /* Indicate those ports on the top-level module that */ /* should become chip-level I/O pads. Assign any I/O */ /* attributes or parameters and perform the I/O */ /* synthesis. */ /* ================================================= */ set_port_is_pad "*" /* Some example I/O parameters */ set_pad_type -pullup <port_name> set_pad_type -no_clock all_inputs() set_pad_type -clock <clock_port_name> set_pad_type -exact BUFG_F <hi_fanout_port_name> set_pad_type -slewrate HIGH all_outputs() /* ============================= */ /* Note: Synopsys slew-control= */ /* HIGH is the same as Xilinx's */ /* slewrate=SLOW. Synopsys slew- */ /* control=LOW is same as Xilinx */ /* slewrate=FAST. */ /* ============================= */ insert_pads /* ================================================= */ /* Synthesize and optimize the design */ /* ================================================= */ compile -boundary_optimization /* ================================================= */ /* Write the design report files. */ /* ================================================= */ report_fpga > TOP + ".fpga" report_timing > TOP + ".timing" /* ================================================= */ /* Set the part type for the output netlist. */ /* ================================================= */ set_attribute TOP "part" -type string part /* ================================================= */ /* Optional attribute to remove the FPGA Compiler's */ /* mapping structures from the design. This permits */ /* The Xilinx design implementation tools to map the */ /* design instead. */ /* ================================================= */ /* set_attribute find(design,"*") "xnfout_write_map_symbols" \ -type boolean FALSE */ /* ================================================= */ /* Add any I/O constraints to the design. */ /* ================================================= */ set_attribute <port_name> "pad_location" \ -type string "<pad_location>" /* ================================================= */ /* Write out the design to a DB file. */ /* ================================================= */ write -format db -hierarchy -output TOP + ".db" /* ================================================= */ /* Write-out the timing constraints that were */ /* applied earlier. (Note that any design hierarchy */ /* needs to be flattened before the constraints are */ /* written-out.) */ /* ================================================= */ ungroup -all -flatten write_script > TOP + ".dc" /* ================================================= */ /* Save design in XNF format as <design>.sxnf */ /* ================================================= */ write -format xnf -hierarchy -output TOP + ".sxnf" /* ================================================= */ /* Call the Synopsys-to-Xilinx constraints translator*/ /* utility DC2NCF to convert the Synopsys constraints*/ /* to a Xilinx NCF file. You may like to view */ /* dc2ncf.log to review the translation process. */ /* ================================================= */ sh dc2ncf TOP + ".dc" /* ================================================= */ /* Exit the Compiler. */ /* ================================================= */ exit /* ================================================= */ /* Now run the Xilinx design implementation tools. */ /* ================================================= */ Solution 3: /* ==================================================*/ /* Sample Script for Synopsys to Xilinx Using */ /* Design Compiler */ /* */ /* Targets the Xilinx XC4028EX-3 and assumes a VHDL */ /* source file by way of an example. */ /* *//* For general use with all Xilinx architectures. */ /* ================================================= */ /* Set the name of the design's top-level module. */ /* (Makes the script more readable and portable.) */ /* Also set some useful variables to record the */ /* designer and company name. */ /* ================================================= */ TOP = <design_name> /* ========================== */ /* Note: Assumes design file- */ /* name and entity name are */ /* the same (minus extension) */ /* ========================== */ designer = "XSI Team" company = "Xilinx, Inc" part = "4028expg299-3" /* ================================================= */ /* Analyze and Elaborate the design file and specify */ /* the design file format. */ /* ================================================= */ analyze -format vhdl TOP + ".vhd" /* ============================ */ /* You must analyze lower-level */ /* hierarchy modules here */ /* ============================ */ elaborate TOP /* ================================================= */ /* Set the current design to the top level. */ /* ================================================= */ current_design TOP /* ================================================= */ /* Set the synthesis design constraints. */ /* ================================================= */ remove_constraint -all /* Some example constraints */ create_clock <clock_port_name> -period 50 set_input_delay 5 -clock <clock_port_name> \ { <a_list_of_input_ports> } set_output_delay 5 -clock <clock_port_name> \ { <a_list_of_output_ports> } set_max_delay 100 -from <source> -to <destination> set_false_path -from <source> -to <destination> /* ================================================= */ /* Indicate those ports on the top-level module that */ /* should become chip-level I/O pads. Assign any I/O */ /* attributes or parameters and perform the I/O */ /* synthesis. */ /* ================================================= */ set_port_is_pad "*" /* Some example I/O parameters */ set_pad_type -pullup <port_name> set_pad_type -no_clock all_inputs() set_pad_type -clock <clock_port_name> set_pad_type -exact BUFGS_F <hi_fanout_port_name> set_pad_type -slewrate HIGH all_outputs() /* ============================= */ /* Note: Synopsys slew-control= */ /* HIGH is the same as Xilinx's */ /* slewrate=SLOW. Synopsys slew- */ /* control=LOW is same as Xilinx */ /* slewrate=FAST. */ /* ============================= */ insert_pads /* ================================================= */ /* Synthesize and optimize the design */ /* ================================================= */ compile -boundary_optimization /* ================================================= */ /* Write the design report files. */ /* ================================================= */ report_area > TOP + ".area" report_timing > TOP + ".timing" /* ================================================= */ /* Set the part type for the output netlist. */ /* ================================================= */ set_attribute TOP "part" -type string part /* ================================================= */ /* Add any I/O constraints to the design. */ /* ================================================= */ set_attribute <port_name> "pad_location" \ -type string "<pad_location>" /* ================================================= */ /* Write out the design to a DB file. */ /* ================================================= */ write -format db -hierarchy -output TOP + ".db" /* ================================================= */ /* Write-out the timing constraints that were */ /* applied earlier. (Note that any design hierarchy */ /* needs to be flattened before the constraints are */ /* written-out.) */ /* ================================================= */ ungroup -all -flatten write_script > TOP + ".dc" /* ================================================= */ /* Save design in EDIF format as <design>.sedif */ /* ================================================= */ write -format edif -hierarchy -output TOP + ".sedif" /* ================================================= */ /* Call the Synopsys-to-Xilinx constraint translator */ /* utility DC2NCF to convert the Synopsys constraints*/ /* to a Xilinx NCF file. You may like to view */ /* dc2ncf.log to review the translation process. */ /* ================================================= */ sh dc2ncf TOP + ".dc" /* ================================================= */ /* Exit the Compiler. */ /* ================================================= */ exit /* ================================================= */ /* Now run the Xilinx design implementation tools. */ /* ================================================= */ Solution 4: If you have already compiled the design, and already written out the .sxnf/.sedif files(If you run write before ungroup -all -flatten, multiple .sxnf/.sedif files will be created, then another possible workaround is to append the string $1I13 to all register instance names. For example, if a FF was named U2/U5/U7 and write was done before ungroup, then the edit the name in the .ncf file to U2/U5/U7/$1I13. Solution 5: If you have already written out the .sxnf/.sedif files, another workaround is to re-read these files back into FPGA/Design Compiler, re-run ungroup -all -flatten, and the write out the .sxnf or .sedif file. This procedure will result in a single .sxnf or .sedif file being produced;This .sxnf or .sedif file will now correspond to the .ncf file produced earlier. End of Record #2037 - Last Modified: 01/27/00 10:45 |
| For the latest news, design tips, and patch information on the Xilinx design environment, check out the Technical Tips! |