<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>my tech blog &#187; xilinx fpga par</title>
	<atom:link href="http://billauer.se/blog/tag/xilinx-fpga-par/feed/" rel="self" type="application/rss+xml" />
	<link>https://billauer.se/blog</link>
	<description>Anything I found worthy to write down.</description>
	<lastBuildDate>Thu, 12 Mar 2026 11:36:00 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.2</generator>
		<item>
		<title>Xilinx FPGA MPPR script</title>
		<link>https://billauer.se/blog/2009/02/xilinx-fpga-mppr-script/</link>
		<comments>https://billauer.se/blog/2009/02/xilinx-fpga-mppr-script/#comments</comments>
		<pubDate>Sat, 28 Feb 2009 08:29:42 +0000</pubDate>
		<dc:creator>eli</dc:creator>
				<category><![CDATA[FPGA]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[xilinx fpga par]]></category>

		<guid isPermaLink="false">https://billauer.se/blog/?p=3</guid>
		<description><![CDATA[I reached that point, at which place and route sometimes met timing, and sometimes it didn&#8217;t. It was all a matter of playing with the placer cost table number. The FPGA guy&#8217;s gambling for lucky numbers. The ISE tool (Xilinx&#8217; native IDE) supports an feature called Multi-Phase Place and Route (MPPR for short), which basically [...]]]></description>
			<content:encoded><![CDATA[<p>I reached that point, at which place and route sometimes met timing, and sometimes it didn&#8217;t. It was all a matter of playing with the placer cost table number. The FPGA guy&#8217;s gambling for lucky numbers.</p>
<p>The ISE tool (Xilinx&#8217; native IDE) supports an feature called Multi-Phase Place and Route (MPPR for short), which basically means that the tools will run several phases of place and route, with different placer cost table figures. I never tried it, to be honest. Since I&#8217;m not very fond of IDE&#8217;s in general, and not using ISE in particular, I preferred to do it myself.</p>
<p>Besides, MPPR will run for a given number of times. I want the computer to loop until the constraints are met. No more, no less.</p>
<p>So here is the script I used. If you&#8217;re using Linux or Cygwin, it will be pretty easy to modify it for your uses.</p>
<pre>#!/bin/bash

projectname=myproj
reportfile=$projectname.par
cost=1

while (( cost&lt;100 )) &amp;&amp; [ -e $reportfile ] &amp;&amp; ! grep -q 'All constraints were met' $reportfile ; do
  rm -f $reportfile;
  C:\\WINNT\\system32\\cmd.exe /c start "" /b /low /wait par -intstyle ise -w -ol med -pl med -rl med -t $cost "$projectname"_map.ncd $projectname.ncd $projectname.pcf
  if ! grep -q 'All signals are completely routed' $reportfile ; then
    echo PAR seems to have failed. Stopping.
    exit 1;
  fi
  echo Done PAR with cost table $((cost++))
done;

echo Done.</pre>
<p>Now, if you&#8217;re bothered by the line going</p>
<pre>C:\\WINNT\\system32\\cmd.exe /c start "" /b /low /wait par -intstyle ise (...)</pre>
<p>you may exchange it with simply</p>
<pre>par -intstyle ise -w -ol med -pl med -rl med -t $cost "$projectname"_map.ncd $projectname.ncd $projectname.pcf</pre>
<p>The only reason I use cmd.exe with all its parameters, is that I want the PAR process to run with a low priority. After all, I may want to do something else with my computer while this CPU hog is running.</p>
]]></content:encoded>
			<wfw:commentRss>https://billauer.se/blog/2009/02/xilinx-fpga-mppr-script/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
