<?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; timing</title>
	<atom:link href="http://billauer.se/blog/tag/timing/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>The PCF file: Xilinx timing constraints as the tools understood them</title>
		<link>https://billauer.se/blog/2009/07/xilinx-timing-constraints-ucf-pcf-tnm-period-from-to/</link>
		<comments>https://billauer.se/blog/2009/07/xilinx-timing-constraints-ucf-pcf-tnm-period-from-to/#comments</comments>
		<pubDate>Fri, 24 Jul 2009 09:39:53 +0000</pubDate>
		<dc:creator>eli</dc:creator>
				<category><![CDATA[FPGA]]></category>
		<category><![CDATA[constraints]]></category>
		<category><![CDATA[pcf]]></category>
		<category><![CDATA[timing]]></category>
		<category><![CDATA[UCF]]></category>
		<category><![CDATA[Xilinx]]></category>

		<guid isPermaLink="false">https://billauer.se/blog/?p=302</guid>
		<description><![CDATA[One of the problems with setting up timing constraints in the UCF file, is to be sure that you got the right elements in, and kept the unnecessary ones out. Suppose I wrote something like NET "the_clock" TNM_NET = "tnm_ctrl_clk"; TIMESPEC "TS_ctrl_clk" = PERIOD "tnm_ctrl_clk" 40 ns HIGH 50 %; What logic element does it [...]]]></description>
			<content:encoded><![CDATA[<p>One of the problems with setting up timing constraints in the UCF file, is to be sure that you got the right elements in, and kept the unnecessary ones out.</p>
<p>Suppose I wrote something like</p>
<pre>NET "the_clock" TNM_NET = "tnm_ctrl_clk";
TIMESPEC "TS_ctrl_clk" = PERIOD "tnm_ctrl_clk" 40 ns HIGH 50 %;</pre>
<p>What logic element does it apply to? Did it work like I expected?</p>
<p>The information can be obtained by creating a timegroup report in the Timing Analyzer, but it&#8217;s actually available in a much easier way: The PCF file, which is created by the MAP tool. This file has the same syntax as the UCF file, but it reflects the constraints as understood by the tools.</p>
<p>You will find the as-made pin placements there (not shown here), and the timing groups as TIMEGRP statements. It goes something like:</p>
<pre>TIMEGRP tnm_ctrl_clk = BEL "controller/bus_oe_16" BEL
        "controller/ctrl_dout_15" BEL "controller/bus_oe_15" BEL
        "controller/ctrl_dout_14" BEL "controller/bus_oe_14" BEL
        "controller/ctrl_dout_13" BEL "controller/bus_oe_13" BEL
        "controller/ctrl_dout_12" BEL "controller/bus_oe_12" BEL
        "controller/ctrl_dout_11" BEL "controller/bus_oe_11" BEL
        "controller/ctrl_dout_10" BEL "controller/bus_oe_10" BEL
        "controller/ctrl_dout_9" BEL "controller/bus_oe_9" BEL
        "controller/ctrl_dout_8" BEL "controller/bus_oe_8" BEL
        "controller/ctrl_dout_7" BEL "controller/bus_oe_7" BEL
        "controller/ctrl_dout_6" BEL "controller/bus_oe_6" BEL
        "controller/ctrl_dout_5" BEL "controller/bus_oe_5" BEL
        "controller/ctrl_dout_4" BEL "controller/bus_oe_4" BEL
        "controller/ctrl_dout_3" BEL "controller/bus_oe_3" BEL
        "controller/ctrl_dout_2" BEL "controller/bus_oe_2" BEL
        "controller/ctrl_dout_1" BEL "controller/bus_oe_1" BEL
        "controller/ctrl_dout_0";</pre>
<p>There you have it, in plain text. The relevant constraint is just a few rows away:</p>
<pre>TS_ctrl_clk = PERIOD TIMEGRP "tnm_ctrl_clk" 40 ns HIGH 50%;</pre>
<p>As simple as that.</p>
]]></content:encoded>
			<wfw:commentRss>https://billauer.se/blog/2009/07/xilinx-timing-constraints-ucf-pcf-tnm-period-from-to/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
