<?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>sks blog &#187; Verilog</title>
	<atom:link href="http://sks.s201.xrea.com/blog/archives/tag/verilog/feed" rel="self" type="application/rss+xml" />
	<link>http://sks.s201.xrea.com/blog</link>
	<description>気になったこと、役に立ちそうだなと思ったことなどを公開しています。</description>
	<lastBuildDate>Sun, 19 Apr 2009 06:55:21 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.5</generator>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Emacsのalignが便利</title>
		<link>http://sks.s201.xrea.com/blog/archives/602</link>
		<comments>http://sks.s201.xrea.com/blog/archives/602#comments</comments>
		<pubDate>Wed, 08 Apr 2009 12:50:34 +0000</pubDate>
		<dc:creator>shuichi</dc:creator>
				<category><![CDATA[その他]]></category>
		<category><![CDATA[Emacs]]></category>
		<category><![CDATA[Verilog]]></category>
		<category><![CDATA[ソフトウェア]]></category>
		<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[小技]]></category>

		<guid isPermaLink="false">http://sks.s201.xrea.com/blog/?p=602</guid>
		<description><![CDATA[Emacsのalignがけっこう便利。桁揃えが簡単になるので、特にコーディングするときに重宝する。例えば次のようなコードがあるとする。

input HCLK; // Clock
output [31:0] HADDR; [...]]]></description>
			<content:encoded><![CDATA[<p>Emacsのalignがけっこう便利。桁揃えが簡単になるので、特にコーディングするときに重宝する。例えば次のようなコードがあるとする。</p>
<pre>
input HCLK; // Clock
output [31:0] HADDR; // Address
output [1:0] HTRANS; // Transfer type
output HWRITE; // Transfer direction
output [2:0] HSIZE; // Transfer size
output [2:0] HBURST; // Burst type
output [31:0] HWDATA; // Write data
input [31:0] HRDATA; // Read data
input HREADY; // Transfer done
</pre>
<p>そして次に示すコマンドを実行してみる。</p>
<pre>
コードをリージョンで選択→M-x align-regexp→Align regexp: \[
コードをリージョンで選択→M-x align-regexp→Align regexp: H
コードをリージョンで選択→M-x align-regexp→Align regexp: //
</pre>
<p>するとコードが次のように桁揃えされる。</p>
<pre>
input         HCLK;   // Clock
output [31:0] HADDR;  // Address
output [1:0]  HTRANS; // Transfer type
output        HWRITE; // Transfer direction
output [2:0]  HSIZE;  // Transfer size
output [2:0]  HBURST; // Burst type
output [31:0] HWDATA; // Write data
input  [31:0] HRDATA; // Read data
input         HREADY; // Transfer done
</pre>
<p>
同じようなことを3回繰り返しているのでちょっと面倒だが、手作業でやるよりはマシだと思う。どこで桁揃えするかを正規表現で指定できるのでかなり応用が利く。場合によっては余計面倒になるかもしれないが…。
</p>
<p>
ちなみに<code>C-u M-x align-regexp</code>でもう少し複雑なことができる。詳細は<a href="http://www.emacswiki.org/emacs/AlignCommands">EmacsWiki: Align Commands</a>を参照。さらに、桁揃えのルールをあらかじめ定義しておくことができるので、これを定義しておけばもっと便利になりそう。</p>
]]></content:encoded>
			<wfw:commentRss>http://sks.s201.xrea.com/blog/archives/602/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Emacs(verilog-mode)でVerilogの数値リテラルを強調表示</title>
		<link>http://sks.s201.xrea.com/blog/archives/598</link>
		<comments>http://sks.s201.xrea.com/blog/archives/598#comments</comments>
		<pubDate>Wed, 01 Apr 2009 17:01:12 +0000</pubDate>
		<dc:creator>shuichi</dc:creator>
				<category><![CDATA[その他]]></category>
		<category><![CDATA[Emacs]]></category>
		<category><![CDATA[Verilog]]></category>
		<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[小技]]></category>

		<guid isPermaLink="false">http://sks.s201.xrea.com/blog/?p=598</guid>
		<description><![CDATA[Emacsのverilog-modeでは数値リテラルが強調表示されないので、以下のコードで対応。

(font-lock-add-keywords
 'verilog-mode
 '(("\\(\\]]></description>
			<content:encoded><![CDATA[<p>Emacsのverilog-modeでは数値リテラルが強調表示されないので、以下のコードで対応。</p>
<pre>
(font-lock-add-keywords
 'verilog-mode
 '(("\\(\\<[1-9][0-9_]*\\)?'h[0-9_a-fxz]+\\>" . font-lock-number-face)
   ("\\(\\<[1-9][0-9_]*\\)?'d[0-9_xz]+\\>"    . font-lock-number-face)
   ("\\(\\<[1-9][0-9_]*\\)?'o[0-7_xz]+\\>"    . font-lock-number-face)
   ("\\(\\<[1-9][0-9_]*\\)?'b[01_xz]+\\>"     . font-lock-number-face)
   ("\\<[0-9][0-9_]*\\>"                      . font-lock-number-face)))
</pre>
<p>フェイスは好きなものを指定する。ちなみに<code>32'D0</code>とか<code>5e3</code>とか<code>0x</code>とかには未対応。使わないので。</p>
<p>Emacsを本格的に使い始めて1ヶ月もたっていないので間違いがあるかもしれないけど、とりあえず強調表示はできてる。Verilogを書くにはEmacsのverilog-modeが一番便利っぽい。</p>
]]></content:encoded>
			<wfw:commentRss>http://sks.s201.xrea.com/blog/archives/598/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
