aboutsummaryrefslogtreecommitdiff
path: root/spec/firrtl.xml
diff options
context:
space:
mode:
authorJared Barocsi2022-03-01 16:28:33 -0800
committerGitHub2022-03-01 19:28:33 -0500
commitc56e341d25e35a5207c4eea12bac9bf0ddd8b652 (patch)
tree7af96942c4ae2641e5f08c8a26c9c9a8750c841e /spec/firrtl.xml
parent475c165ccf8a52f79a94766450c23090f15d1393 (diff)
Convert firrtl specification to Markdown file (#2236)
- Convert FIRRTL spec to Markdown file. - Add PDF generation via pandoc. - Remove old LaTeX specification. Co-authored-by: Schuyler Eldridge <schuyler.eldridge@sifive.com> Signed-off-by: Schuyler Eldridge <schuyler.eldridge@sifive.com>
Diffstat (limited to 'spec/firrtl.xml')
-rw-r--r--spec/firrtl.xml174
1 files changed, 174 insertions, 0 deletions
diff --git a/spec/firrtl.xml b/spec/firrtl.xml
new file mode 100644
index 00000000..a5c5f318
--- /dev/null
+++ b/spec/firrtl.xml
@@ -0,0 +1,174 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<language name="FIRRTL" version="1" kateversion="2.4" section="Sources" extensions="*.firrtl;*.fir">
+ <highlighting>
+ <list name="structure">
+ <item>circuit</item>
+ <item>module</item>
+ <item>extmodule</item>
+ </list>
+ <list name="keywords">
+ <item>input</item>
+ <item>output</item>
+ <item>defname</item>
+ <item>parameter</item>
+ <item>skip</item>
+ <item>is</item>
+ <item>invalid</item>
+ <item>inst</item>
+ <item>of</item>
+ <item>wire</item>
+ <item>node</item>
+ </list>
+ <list name="types">
+ <item>UInt</item>
+ <item>SInt</item>
+ <item>Fixed</item>
+ <item>Analog</item>
+ <item>Clock</item>
+ <item>Reset</item>
+ <item>AsyncReset</item>
+ </list>
+ <list name="conditionals">
+ <item>when</item>
+ <item>else</item>
+ </list>
+ <list name="primops">
+ <item>attach</item>
+ <item>add</item>
+ <item>sub</item>
+ <item>mul</item>
+ <item>div</item>
+ <item>rem</item>
+ <item>lt</item>
+ <item>leq</item>
+ <item>gt</item>
+ <item>geq</item>
+ <item>eq</item>
+ <item>neq</item>
+ <item>pad</item>
+ <item>asUInt</item>
+ <item>asSInt</item>
+ <item>asClock</item>
+ <item>shl</item>
+ <item>shr</item>
+ <item>dshl</item>
+ <item>dshr</item>
+ <item>cvt</item>
+ <item>neg</item>
+ <item>not</item>
+ <item>and</item>
+ <item>or</item>
+ <item>xor</item>
+ <item>andr</item>
+ <item>orr</item>
+ <item>xorr</item>
+ <item>cat</item>
+ <item>bits</item>
+ <item>head</item>
+ <item>tail</item>
+ <item>asFixedPoint</item>
+ <item>bpshl</item>
+ <item>bpshr</item>
+ <item>bpset</item>
+ <item>mux</item>
+ <item>validif</item>
+ <item>stop</item>
+ <item>printf</item>
+ <item>assert</item>
+ <item>assume</item>
+ <item>cover</item>
+ </list>
+ <contexts>
+ <context name="Normal Text" attribute="ID" lineEndContext="#pop">
+ <keyword attribute="Keyword" context="#stay" String="keywords" />
+ <keyword attribute="Keyword" context="type" String="types" />
+ <keyword attribute="Structure" context="#stay" String="structure" />
+ <keyword attribute="PrimOp" context="#stay" String="primops" />
+ <keyword attribute="Conditional" context="#stay" String="conditionals" />
+ <Detect2Chars char="(" char1="*" attribute="Info" context="info"/>
+ <DetectChar char= ";" context="comment" attribute="Comment"/>
+ <DetectChar char="{" context="field" attribute="Separator"/>
+ <Detect2Chars char="&lt;" char1="=" attribute="Operator" context="#stay"/>
+ <Detect2Chars char="&lt;" char1="-" attribute="Operator" context="#stay"/>
+ <Detect2Chars char="=" char1="&gt;" attribute="Operator" context="#stay"/>
+ <AnyChar String=":=.,()" attribute="Separator" context="#stay"/>
+ <DetectChar char="[" attribute="Operator" context="widthOrDepthOrLit"/>
+ <DetectChar char="&quot;" attribute="String" context="string"/>
+ <StringDetect String="reg" attribute="Keyword" context="register"/>
+ <StringDetect String="mem" attribute="Keyword" context="memoryFirst"/>
+ </context>
+ <context name="memoryFirst" attribute="ID" lineEndContext="#pop!memory">
+ </context>
+ <context name="memory" attribute="Keyword" lineEndContext="#stay">
+ <Detect2Chars char="=" char1="&gt;" attribute="Operator" context="memoryRHS"/>
+ <StringDetect String="read-under-write" attribute="Keyword" context="#pop!memoryLast"/>
+ </context>
+ <context name="memoryRHS" attribute="ID" lineEndContext="#pop">
+ <keyword String="types" attribute="Keyword" context="type"/>
+ </context>
+ <context name="memoryLast" attribute="Keyword" lineEndContext="#pop">
+ <Detect2Chars char="=" char1="&gt;" attribute="Operator" context="#stay"/>
+ </context>
+ <context name="register" attribute="ID" lineEndContext="#pop">
+ <keyword String="types" attribute="Keyword" context="type"/>
+ <AnyChar String=":=&gt;.,()" attribute="Separator" context="#stay"/>
+ <StringDetect String="with" attribute="Keyword" context="#pop!registerinit"/>
+ </context>
+ <context name="registerinit" attribute="comment" lineEndContext="#stay">
+ <AnyChar String=":=&gt;.,()" attribute="Separator" context="#stay"/>
+ <StringDetect String="reset" attribute="Keyword" context="#pop"/>
+ <DetectChar char= ";" context="comment" attribute="Comment"/>
+ </context>
+ <context name="comment" attribute="Comment" lineEndContext="#pop">
+ </context>
+ <context name="string" attribute="String" lineEndContext="#stay">
+ <DetectChar char="&quot;" attribute="String" context="#pop"/>
+ </context>
+ <context name="info" attribute="Info" lineEndContext="#stay">
+ <DetectChar char="]" context="#pop"/>
+ </context>
+ <context name="type" attribute="String" lineEndContext="#pop">
+ <AnyChar String="&lt;[(" attribute="Operator" context="widthOrDepthOrLit"/>
+ <AnyChar String="," attribute="Separator" context="#pop"/>
+ <AnyChar String="}" attribute="Separator" context="#pop#pop"/>
+ <DetectChar char= ";" context="comment" attribute="Comment"/>
+ </context>
+ <context name="widthOrDepthOrLit" attribute="String" lineEndContext="#stay">
+ <DetectChar char="&lt;" attribute="Operator" context="widthOrDepthOrLit"/>
+ <AnyChar String="&gt;])" attribute="Operator" context="#pop"/>
+ </context>
+ <context name="field" attribute="ID" lineEndContext="#stay">
+ <StringDetect String="flip" attribute="Keyword" context="#stay"/>
+ <keyword String="types" attribute="Keyword" context="type"/>
+ <DetectChar char="{" attribute="Separator" context="field"/>
+ <DetectChar char="}" attribute="Separator" context="#pop"/>
+ <AnyChar String=":," attribute="Separator" context="#stay"/>
+ <DetectChar char= ";" context="comment" attribute="Comment"/>
+ </context>
+ </contexts>
+ <itemDatas>
+ <itemData name="Normal Text" defStyleNum="dsNormal" />
+ <itemData name="Keyword" defStyleNum="dsKeyword" />
+ <itemData name="Structure" defStyleNum="dsKeyword" />
+ <itemData name="PrimOp" defStyleNum="dsOperator" />
+ <itemData name="Conditional" defStyleNum="dsControlFlow" />
+ <itemData name="String" defStyleNum="dsString" />
+ <itemData name="Comment" defStyleNum="dsComment" />
+ <itemData name="ID" defStyleNum="dsVariable" />
+ <itemData name="Operator" defStyleNum="dsOperator" />
+ </itemDatas>
+ </highlighting>
+ <general>
+ <comments>
+ <comment name="singleLine" start=";"/>
+ </comments>
+ <keywords casesensitive="1"/>
+ <folding indentationsensitive="0"/>
+ <emptyLines>
+ <emptyLine regexpr="\s+"/>
+ <emptyLine regexpr="\s*#.*"/>
+ </emptyLines>
+ <spellchecking>
+ </spellchecking>
+ </general>
+</language>