<?xml version="1.0" encoding="iso-8859-1"?>
<rss version="2.0">
<channel>
  <title>bluespec.com</title>
  <link>http://www.bluespec.com/forum/index.php</link>
  <description>Bluespec Forums</description>
  <language>english</language>
  <copyright>(c) Copyright 2012 by bluespec.com</copyright>
  <managingEditor>support@bluespec.com</managingEditor>
  <webMaster>support@bluespec.com</webMaster>
  <pubDate>Sat Feb 04, 2012 5:11 pm</pubDate>
  <lastBuildDate>Sat Feb 04, 2012 5:11 pm</lastBuildDate>
  <docs>http://backend.userland.com/rss</docs>
  <generator>phpBB2 RSS Syndication Mod by Lucas</generator>
  <ttl>1</ttl>

  <image>
    <title>bluespec.com</title>
    <url></url>
    <link>http://www.bluespec.com/forum/</link>
    <description>Bluespec Forums</description>
  </image>

                                      <item>
                                        <title>New Release 2012.01.A is posted</title>
                                        <link>http://www.bluespec.com/forum/viewtopic.php?p=959#959</link>
                                        <description>&lt;br /&gt;
                                      &lt;b&gt;Author:&lt;/b&gt; &lt;a href='http://www.bluespec.com/forum/profile.php?mode=viewprofile&amp;u=5'&gt;kczeck&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;
                                      &lt;b&gt;Posted:&lt;/b&gt; Fri Feb 03, 2012 11:18 am&lt;br /&gt;&lt;br /&gt;
                                      &lt;br /&gt;&lt;br /&gt;
                                      The latest Bluespec release 2012.01.A is available to registered users of the forum via Software Releases at &lt;a href=&quot;http://bluespec.com/forum/viewtopic.php?t=306.&quot; target=&quot;_blank&quot;&gt;http://bluespec.com/forum/viewtopic.php?t=306.&lt;/a&gt;  You must be logged in to the forum to see and download the files.</description>
                                        <comments>http://www.bluespec.com/forum/viewtopic.php?p=959#959</comments>
                                        <author>kczeck</author>
                                        <pubDate>Fri Feb 03, 2012 11:18 am</pubDate>
                                        <guid isPermaLink="true">http://www.bluespec.com/forum/viewtopic.php?p=959#959</guid>
                                      </item>
                                      <item>
                                        <title>Bluespec Tools &amp;amp; Doc Release - 2012.01.A (LATEST)</title>
                                        <link>http://www.bluespec.com/forum/viewtopic.php?p=958#958</link>
                                        <description>&lt;br /&gt;
                                      &lt;b&gt;Author:&lt;/b&gt; &lt;a href='http://www.bluespec.com/forum/profile.php?mode=viewprofile&amp;u=3'&gt;crimsoncardinal&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;
                                      &lt;b&gt;Posted:&lt;/b&gt; Mon Jan 30, 2012 6:06 pm&lt;br /&gt;&lt;br /&gt;
                                      &lt;br /&gt;&lt;br /&gt;
                                      Minimum Recommended System:&lt;br /&gt;
&lt;br /&gt;
  CPU   -- 1 GHz Pentium x86 processor (32 bit or 64 bit)&lt;br /&gt;
  RAM   -- 512 MB memory for labs, 1 GB memory for design work&lt;br /&gt;
  Disk  -- 512 MB free disk space&lt;br /&gt;
  OS    -- 32-bit or 64 bit RedHat Enterprise 4.0&lt;br /&gt;
&lt;br /&gt;
  Bluesim has the additional requirement:&lt;br /&gt;
  32-bit or 64 bit: gcc 3.4 - 4.6&lt;br /&gt;
&lt;br /&gt;
  Verilog simulation tool&lt;br /&gt;
  Verilog synthesis tool&lt;br /&gt;
&lt;br /&gt;
  FlexLM License Server Host&lt;br /&gt;
          Solaris (32-bit only) or Linux Enterprise, (32 or 64 bit)&lt;br /&gt;
          Flex Software included with Bluespec Release.&lt;br /&gt;
&lt;br /&gt;
  BSV-to-SystemC requirements:&lt;br /&gt;
          32 bit:  gcc 3.4-4.6, SystemC 2.11, 2.2.0&lt;br /&gt;
          64 bit:  gcc 3.4-4.6, SystemC 2.2.0&lt;br /&gt;
&lt;br /&gt;
  Development Workstation Graphs requirement:&lt;br /&gt;
          TclDot 2.21 or later &lt;br /&gt;
&lt;br /&gt;
  build utility requirement:&lt;br /&gt;
          python 2.4 or later &lt;br /&gt;
&lt;br /&gt;
Note: the above is the &amp;quot;standard&amp;quot; platform, but the Bluespec tools&lt;br /&gt;
also work on other Unix-like platforms; please contact us for details&lt;br /&gt;
if necessary.&lt;br /&gt;
&lt;br /&gt;
License&lt;br /&gt;
&lt;br /&gt;
Bluespec is licensed using the FlexLM system.  To enable the Bluespec&lt;br /&gt;
environment, you should have received (in a separate email) a license&lt;br /&gt;
file, which must be installed on the license manager host.  The&lt;br /&gt;
util/flexlm directory contains additional instructions on installing&lt;br /&gt;
the license manager and license file.</description>
                                        <comments>http://www.bluespec.com/forum/viewtopic.php?p=958#958</comments>
                                        <author>crimsoncardinal</author>
                                        <pubDate>Mon Jan 30, 2012 6:06 pm</pubDate>
                                        <guid isPermaLink="true">http://www.bluespec.com/forum/viewtopic.php?p=958#958</guid>
                                      </item>
                                      <item>
                                        <title>BSV Training Labs</title>
                                        <link>http://www.bluespec.com/forum/viewtopic.php?p=956#956</link>
                                        <description>&lt;br /&gt;
                                      &lt;b&gt;Author:&lt;/b&gt; &lt;a href='http://www.bluespec.com/forum/profile.php?mode=viewprofile&amp;u=5'&gt;kczeck&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;
                                      &lt;b&gt;Posted:&lt;/b&gt; Tue Jan 24, 2012 3:26 pm&lt;br /&gt;&lt;br /&gt;
                                      &lt;br /&gt;&lt;br /&gt;
                                      This lab leads you through basic aspects writing a BSV program  by building a DMA controller.  The lab uses the Bluespec Development Workstation for Bluesim and Verilog simulations.</description>
                                        <comments>http://www.bluespec.com/forum/viewtopic.php?p=956#956</comments>
                                        <author>kczeck</author>
                                        <pubDate>Tue Jan 24, 2012 3:26 pm</pubDate>
                                        <guid isPermaLink="true">http://www.bluespec.com/forum/viewtopic.php?p=956#956</guid>
                                      </item>
                                      <item>
                                        <title>BSV Tutorials</title>
                                        <link>http://www.bluespec.com/forum/viewtopic.php?p=954#954</link>
                                        <description>&lt;br /&gt;
                                      &lt;b&gt;Author:&lt;/b&gt; &lt;a href='http://www.bluespec.com/forum/profile.php?mode=viewprofile&amp;u=1105'&gt;seshukumar6039&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;
                                      &lt;b&gt;Posted:&lt;/b&gt; Sat Jan 21, 2012 5:03 am&lt;br /&gt;&lt;br /&gt;
                                      &lt;br /&gt;&lt;br /&gt;
                                      package seshu;&lt;br /&gt;
&lt;br /&gt;
interface Samplerd;&lt;br /&gt;
method Action loadvalue(Bit#(10) newval);&lt;br /&gt;
method Action loaddata(Bit#(1) dat);&lt;br /&gt;
method Bit#(10) count();&lt;br /&gt;
method Bit#(10) read();&lt;br /&gt;
method Action increment();&lt;br /&gt;
method Bit#(1) dQrd();&lt;br /&gt;
method Bit#(1) dQwr();&lt;br /&gt;
method Bit#(1) dQrst();&lt;br /&gt;
&lt;br /&gt;
endinterface&lt;br /&gt;
&lt;br /&gt;
(* synthesize *)&lt;br /&gt;
&lt;br /&gt;
module mkread(Samplerd);&lt;br /&gt;
Reg#(Bit#(10)) value &amp;lt;- mkReg(0);&lt;br /&gt;
Reg#(bit) busread &amp;lt;- mkReg(0);&lt;br /&gt;
Reg#(bit) buswrite0 &amp;lt;- mkReg(0);&lt;br /&gt;
Reg#(bit) data &amp;lt;- mkReg(0);&lt;br /&gt;
Reg#(bit) busrst &amp;lt;- mkReg(0);&lt;br /&gt;
&lt;br /&gt;
rule level0(value &amp;gt;= 6 &amp;amp;&amp;amp; value &amp;lt;= 70);&lt;br /&gt;
busread &amp;lt;= 1;&lt;br /&gt;
endrule&lt;br /&gt;
&lt;br /&gt;
rule level1(value == 15);&lt;br /&gt;
data &amp;lt;= busread;&lt;br /&gt;
endrule&lt;br /&gt;
&lt;br /&gt;
rule level11(data == 1);&lt;br /&gt;
if(value &amp;lt;= 6)&lt;br /&gt;
busread &amp;lt;= 0;&lt;br /&gt;
else&lt;br /&gt;
begin&lt;br /&gt;
busread &amp;lt;= 1;&lt;br /&gt;
end&lt;br /&gt;
endrule&lt;br /&gt;
&lt;br /&gt;
rule level01(data == 0);&lt;br /&gt;
if(value &amp;lt;= 60)&lt;br /&gt;
buswrite0&amp;lt;= 0;&lt;br /&gt;
else&lt;br /&gt;
begin&lt;br /&gt;
buswrite0 &amp;lt;= 1;&lt;br /&gt;
end&lt;br /&gt;
endrule&lt;br /&gt;
&lt;br /&gt;
rule level;&lt;br /&gt;
if(value&amp;gt;480)&lt;br /&gt;
begin&lt;br /&gt;
if(value&amp;lt;550)&lt;br /&gt;
busrst &amp;lt;= 1;&lt;br /&gt;
else&lt;br /&gt;
if(value&amp;lt;580)&lt;br /&gt;
busrst &amp;lt;= 0;&lt;br /&gt;
else&lt;br /&gt;
busrst &amp;lt;= 1;&lt;br /&gt;
end&lt;br /&gt;
else&lt;br /&gt;
busrst &amp;lt;= 0;&lt;br /&gt;
endrule&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
method Bit#(10) count();&lt;br /&gt;
return value;&lt;br /&gt;
endmethod&lt;br /&gt;
&lt;br /&gt;
method Bit#(1) dQrd();&lt;br /&gt;
return busread;&lt;br /&gt;
endmethod&lt;br /&gt;
&lt;br /&gt;
method Bit#(1) dQwr();&lt;br /&gt;
return buswrite0;&lt;br /&gt;
endmethod&lt;br /&gt;
&lt;br /&gt;
method Bit#(1) dQrst();&lt;br /&gt;
return busrst;&lt;br /&gt;
endmethod&lt;br /&gt;
&lt;br /&gt;
method Bit#(10) read();&lt;br /&gt;
return value;&lt;br /&gt;
endmethod&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
method Action increment();&lt;br /&gt;
value &amp;lt;= value + 1;&lt;br /&gt;
endmethod&lt;br /&gt;
&lt;br /&gt;
method Action loadvalue(Bit#(10) newval);&lt;br /&gt;
value &amp;lt;= newval;&lt;br /&gt;
endmethod&lt;br /&gt;
&lt;br /&gt;
method Action loaddata(Bit#(1) dat);&lt;br /&gt;
data &amp;lt;= dat;&lt;br /&gt;
endmethod&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
endmodule&lt;br /&gt;
endpackage&lt;br /&gt;
package sss;&lt;br /&gt;
&lt;br /&gt;
interface Samplerd;&lt;br /&gt;
method Action loadvalue(Bit#(10) newval);&lt;br /&gt;
method Action loaddata(Bit#(1) dat);&lt;br /&gt;
method Bit#(10) count();&lt;br /&gt;
method Bit#(10) read();&lt;br /&gt;
method Action increment();&lt;br /&gt;
method Bit#(1) dQrd();&lt;br /&gt;
method Bit#(1) dQwr();&lt;br /&gt;
method Bit#(1) dQrst();&lt;br /&gt;
&lt;br /&gt;
endinterface&lt;br /&gt;
&lt;br /&gt;
(* synthesize *)&lt;br /&gt;
&lt;br /&gt;
module mkread(Samplerd);&lt;br /&gt;
Reg#(Bit#(10)) value &amp;lt;- mkReg(0);&lt;br /&gt;
Reg#(bit) busread &amp;lt;- mkReg(0);&lt;br /&gt;
Reg#(bit) buswrite0 &amp;lt;- mkReg(0);&lt;br /&gt;
Reg#(bit) data &amp;lt;- mkReg(0);&lt;br /&gt;
Reg#(bit) busrst &amp;lt;- mkReg(0);&lt;br /&gt;
&lt;br /&gt;
rule level0(value &amp;gt;= 6 &amp;amp;&amp;amp; value &amp;lt;= 70);&lt;br /&gt;
busread &amp;lt;= 1;&lt;br /&gt;
endrule&lt;br /&gt;
&lt;br /&gt;
rule level1(value == 15);&lt;br /&gt;
data &amp;lt;= busread;&lt;br /&gt;
endrule&lt;br /&gt;
&lt;br /&gt;
rule level11(data == 1);&lt;br /&gt;
if(value &amp;lt;= 6)&lt;br /&gt;
busread &amp;lt;= 0;&lt;br /&gt;
else&lt;br /&gt;
begin&lt;br /&gt;
busread &amp;lt;= 1;&lt;br /&gt;
end&lt;br /&gt;
endrule&lt;br /&gt;
&lt;br /&gt;
rule level01(data == 0);&lt;br /&gt;
if(value &amp;lt;= 60)&lt;br /&gt;
buswrite0&amp;lt;= 0;&lt;br /&gt;
else&lt;br /&gt;
begin&lt;br /&gt;
buswrite0 &amp;lt;= 1;&lt;br /&gt;
end&lt;br /&gt;
endrule&lt;br /&gt;
&lt;br /&gt;
rule level;&lt;br /&gt;
if(value&amp;gt;480)&lt;br /&gt;
begin&lt;br /&gt;
if(value&amp;lt;550)&lt;br /&gt;
busrst &amp;lt;= 1;&lt;br /&gt;
else&lt;br /&gt;
if(value&amp;lt;580)&lt;br /&gt;
busrst &amp;lt;= 0;&lt;br /&gt;
else&lt;br /&gt;
busrst &amp;lt;= 1;&lt;br /&gt;
end&lt;br /&gt;
else&lt;br /&gt;
busrst &amp;lt;= 0;&lt;br /&gt;
endrule&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
method Bit#(10) count();&lt;br /&gt;
return value;&lt;br /&gt;
endmethod&lt;br /&gt;
&lt;br /&gt;
method Bit#(1) dQrd();&lt;br /&gt;
return busread;&lt;br /&gt;
endmethod&lt;br /&gt;
&lt;br /&gt;
method Bit#(1) dQwr();&lt;br /&gt;
return buswrite0;&lt;br /&gt;
endmethod&lt;br /&gt;
&lt;br /&gt;
method Bit#(1) dQrst();&lt;br /&gt;
return busrst;&lt;br /&gt;
endmethod&lt;br /&gt;
&lt;br /&gt;
method Bit#(10) read();&lt;br /&gt;
return value;&lt;br /&gt;
endmethod&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
method Action increment();&lt;br /&gt;
value &amp;lt;= value + 1;&lt;br /&gt;
endmethod&lt;br /&gt;
&lt;br /&gt;
method Action loadvalue(Bit#(10) newval);&lt;br /&gt;
value &amp;lt;= newval;&lt;br /&gt;
endmethod&lt;br /&gt;
&lt;br /&gt;
method Action loaddata(Bit#(1) dat);&lt;br /&gt;
data &amp;lt;= dat;&lt;br /&gt;
endmethod&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
endmodule&lt;br /&gt;
endpackage</description>
                                        <comments>http://www.bluespec.com/forum/viewtopic.php?p=954#954</comments>
                                        <author>seshukumar6039</author>
                                        <pubDate>Sat Jan 21, 2012 5:03 am</pubDate>
                                        <guid isPermaLink="true">http://www.bluespec.com/forum/viewtopic.php?p=954#954</guid>
                                      </item>
                                      <item>
                                        <title>Static elaboration and use of Multiplier Module</title>
                                        <link>http://www.bluespec.com/forum/viewtopic.php?p=952#952</link>
                                        <description>&lt;br /&gt;
                                      &lt;b&gt;Author:&lt;/b&gt; &lt;a href='http://www.bluespec.com/forum/profile.php?mode=viewprofile&amp;u=1018'&gt;kevin5k&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;
                                      &lt;b&gt;Posted:&lt;/b&gt; Wed Dec 14, 2011 12:28 am&lt;br /&gt;&lt;br /&gt;
                                      &lt;br /&gt;&lt;br /&gt;
                                      Hi, I'm new to Bluespec  &lt;img src=&quot;images/smiles/icon_confused.gif&quot; alt=&quot;Confused&quot; border=&quot;0&quot; /&gt; and am trying to to replace existing MAC operations, for an FIR filter, with a pipelined multiplier which has the following code:&lt;br /&gt;
&lt;/span&gt;&lt;table width=&quot;90%&quot; cellspacing=&quot;1&quot; cellpadding=&quot;3&quot; border=&quot;0&quot; align=&quot;center&quot;&gt;&lt;tr&gt; 	  &lt;td&gt;&lt;span class=&quot;genmed&quot;&gt;&lt;b&gt;Code:&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;	&lt;/tr&gt;	&lt;tr&gt;	  &lt;td class=&quot;code&quot;&gt;FixedPoint#&amp;#40;16,16&amp;#41; accumulate =&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; c&amp;#91;0&amp;#93; * fromInt&amp;#40;sample&amp;#41;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; + c&amp;#91;1&amp;#93; * fromInt&amp;#40;r&amp;#91;0&amp;#93;&amp;#41;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; + c&amp;#91;2&amp;#93; * fromInt&amp;#40;r&amp;#91;1&amp;#93;&amp;#41;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; + c&amp;#91;3&amp;#93; * fromInt&amp;#40;r&amp;#91;2&amp;#93;&amp;#41;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; + c&amp;#91;4&amp;#93; * fromInt&amp;#40;r&amp;#91;3&amp;#93;&amp;#41;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; + c&amp;#91;5&amp;#93; * fromInt&amp;#40;r&amp;#91;4&amp;#93;&amp;#41;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; + c&amp;#91;6&amp;#93; * fromInt&amp;#40;r&amp;#91;5&amp;#93;&amp;#41;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; + c&amp;#91;7&amp;#93; * fromInt&amp;#40;r&amp;#91;6&amp;#93;&amp;#41;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; + c&amp;#91;8&amp;#93; * fromInt&amp;#40;r&amp;#91;7&amp;#93;&amp;#41;;&lt;/td&gt;	&lt;/tr&gt;&lt;/table&gt;&lt;span class=&quot;postbody&quot;&gt;&lt;br /&gt;
I seek advice as to how can I break apart the single rule (above) into multiple rules. First rule will initiate 9 multiplication operations using the &lt;span style=&quot;font-style: italic&quot;&gt;putOperands&lt;/span&gt; method for each multiplier instance. Second rule will collect the results using &lt;span style=&quot;font-style: italic&quot;&gt;getResult&lt;/span&gt;  and perform the sum of those. Simple example codes will be most helpful for my understanding. The multiplier code that I'm trying to implement is as follows:&lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;table width=&quot;90%&quot; cellspacing=&quot;1&quot; cellpadding=&quot;3&quot; border=&quot;0&quot; align=&quot;center&quot;&gt;&lt;tr&gt; 	  &lt;td&gt;&lt;span class=&quot;genmed&quot;&gt;&lt;b&gt;Code:&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;	&lt;/tr&gt;	&lt;tr&gt;	  &lt;td class=&quot;code&quot;&gt;&amp;#40;* synthesize *&amp;#41;&lt;br /&gt;
module mkMultiplier &amp;#40;Multiplier&amp;#41;;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; FIFO#&amp;#40;FixedPoint#&amp;#40;16, 16&amp;#41;&amp;#41; results &amp;lt;- mkFIFO&amp;#40;&amp;#41;;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;br /&gt;
&amp;nbsp; &amp;nbsp; method Action putOperands&amp;#40;FixedPoint#&amp;#40;16, 16&amp;#41; coeff, Int#&amp;#40;16&amp;#41; samp&amp;#41;;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; results.enq&amp;#40;coeff * fromInt&amp;#40;samp&amp;#41;&amp;#41;;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; endmethod&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; method ActionValue#&amp;#40;FixedPoint#&amp;#40;16, 16&amp;#41;&amp;#41; getResult&amp;#40;&amp;#41;;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; results.deq&amp;#40;&amp;#41;;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return results.first&amp;#40;&amp;#41;;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; endmethod&lt;br /&gt;
&lt;br /&gt;
endmodule&lt;/td&gt;	&lt;/tr&gt;&lt;/table&gt;&lt;span class=&quot;postbody&quot;&gt;</description>
                                        <comments>http://www.bluespec.com/forum/viewtopic.php?p=952#952</comments>
                                        <author>kevin5k</author>
                                        <pubDate>Wed Dec 14, 2011 12:28 am</pubDate>
                                        <guid isPermaLink="true">http://www.bluespec.com/forum/viewtopic.php?p=952#952</guid>
                                      </item>
                                      <item>
                                        <title>Unbound Variable</title>
                                        <link>http://www.bluespec.com/forum/viewtopic.php?p=951#951</link>
                                        <description>&lt;br /&gt;
                                      &lt;b&gt;Author:&lt;/b&gt; &lt;a href='http://www.bluespec.com/forum/profile.php?mode=viewprofile&amp;u=1018'&gt;kevin5k&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;
                                      &lt;b&gt;Posted:&lt;/b&gt; Wed Dec 14, 2011 12:12 am&lt;br /&gt;&lt;br /&gt;
                                      &lt;br /&gt;&lt;br /&gt;
                                      @quark: Thanks for the advice&lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;table width=&quot;90%&quot; cellspacing=&quot;1&quot; cellpadding=&quot;3&quot; border=&quot;0&quot; align=&quot;center&quot;&gt;&lt;tr&gt; 	  &lt;td&gt;&lt;span class=&quot;genmed&quot;&gt;&lt;b&gt;quark wrote:&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;	&lt;/tr&gt;	&lt;tr&gt;	  &lt;td class=&quot;quote&quot;&gt;You should change r0 (and r1, r2, etc) to r[0] (and r[1], r[2], etc).  The error about &amp;quot;unbound variable&amp;quot; means that you're using a variable name that was never declared anywhere (it was never &amp;quot;bound&amp;quot; to a value).  You never declared a variable &amp;quot;r0&amp;quot;.&lt;/td&gt;	&lt;/tr&gt;&lt;/table&gt;&lt;span class=&quot;postbody&quot;&gt;</description>
                                        <comments>http://www.bluespec.com/forum/viewtopic.php?p=951#951</comments>
                                        <author>kevin5k</author>
                                        <pubDate>Wed Dec 14, 2011 12:12 am</pubDate>
                                        <guid isPermaLink="true">http://www.bluespec.com/forum/viewtopic.php?p=951#951</guid>
                                      </item>
                                      <item>
                                        <title>Optional parameters</title>
                                        <link>http://www.bluespec.com/forum/viewtopic.php?p=948#948</link>
                                        <description>&lt;br /&gt;
                                      &lt;b&gt;Author:&lt;/b&gt; &lt;a href='http://www.bluespec.com/forum/profile.php?mode=viewprofile&amp;u=70'&gt;mcadler&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;
                                      &lt;b&gt;Posted:&lt;/b&gt; Tue Dec 06, 2011 6:13 pm&lt;br /&gt;&lt;br /&gt;
                                      &lt;br /&gt;&lt;br /&gt;
                                      Yes, that makes sense.  We've already done something similar for passing data between modules across a FIFO where we want to be able to plug in different instances of the code at either end and have the flexibility to update the data structure without changing every instance.&lt;br /&gt;
&lt;br /&gt;
Thank you.</description>
                                        <comments>http://www.bluespec.com/forum/viewtopic.php?p=948#948</comments>
                                        <author>mcadler</author>
                                        <pubDate>Tue Dec 06, 2011 6:13 pm</pubDate>
                                        <guid isPermaLink="true">http://www.bluespec.com/forum/viewtopic.php?p=948#948</guid>
                                      </item>
                                      <item>
                                        <title>BlueSim WaveViewer Problem</title>
                                        <link>http://www.bluespec.com/forum/viewtopic.php?p=945#945</link>
                                        <description>&lt;br /&gt;
                                      &lt;b&gt;Author:&lt;/b&gt; &lt;a href='http://www.bluespec.com/forum/profile.php?mode=viewprofile&amp;u=12'&gt;ewc&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;
                                      &lt;b&gt;Posted:&lt;/b&gt; Tue Dec 06, 2011 11:51 am&lt;br /&gt;&lt;br /&gt;
                                      &lt;br /&gt;&lt;br /&gt;
                                      Hi Kevin,&lt;br /&gt;
&lt;br /&gt;
I am not very familiar with the details of Mentor tools, but I do believe that they support .vcd file.   VCD (value change dump) files are an eda standard and I have never seen a eda tool which does not support them.   All tools seem to have a proprietary format for improved performance.  Bluesim generates a standard vcd file so will be able to used with Mentor's  tools.   &lt;br /&gt;
&lt;br /&gt;
The feature that is not supported for Mentor's wave view is Bluespec decoration of signals with type and field information.&lt;br /&gt;
&lt;br /&gt;
Ed.</description>
                                        <comments>http://www.bluespec.com/forum/viewtopic.php?p=945#945</comments>
                                        <author>ewc</author>
                                        <pubDate>Tue Dec 06, 2011 11:51 am</pubDate>
                                        <guid isPermaLink="true">http://www.bluespec.com/forum/viewtopic.php?p=945#945</guid>
                                      </item>
                                      <item>
                                        <title>Synthesizable, parametrizable module port width</title>
                                        <link>http://www.bluespec.com/forum/viewtopic.php?p=940#940</link>
                                        <description>&lt;br /&gt;
                                      &lt;b&gt;Author:&lt;/b&gt; &lt;a href='http://www.bluespec.com/forum/profile.php?mode=viewprofile&amp;u=915'&gt;vennsa&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;
                                      &lt;b&gt;Posted:&lt;/b&gt; Fri Nov 18, 2011 7:01 pm&lt;br /&gt;&lt;br /&gt;
                                      &lt;br /&gt;&lt;br /&gt;
                                      Okay. Thank you</description>
                                        <comments>http://www.bluespec.com/forum/viewtopic.php?p=940#940</comments>
                                        <author>vennsa</author>
                                        <pubDate>Fri Nov 18, 2011 7:01 pm</pubDate>
                                        <guid isPermaLink="true">http://www.bluespec.com/forum/viewtopic.php?p=940#940</guid>
                                      </item>
                                      <item>
                                        <title>Renewal of topic - use of AXI IP provided by Bluespec</title>
                                        <link>http://www.bluespec.com/forum/viewtopic.php?p=933#933</link>
                                        <description>&lt;br /&gt;
                                      &lt;b&gt;Author:&lt;/b&gt; &lt;a href='http://www.bluespec.com/forum/profile.php?mode=viewprofile&amp;u=783'&gt;ganeshgarg&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;
                                      &lt;b&gt;Posted:&lt;/b&gt; Tue Nov 15, 2011 8:01 am&lt;br /&gt;&lt;br /&gt;
                                      &lt;br /&gt;&lt;br /&gt;
                                      Thanks very much. Any help with the AXI issue is vital for me right now.</description>
                                        <comments>http://www.bluespec.com/forum/viewtopic.php?p=933#933</comments>
                                        <author>ganeshgarg</author>
                                        <pubDate>Tue Nov 15, 2011 8:01 am</pubDate>
                                        <guid isPermaLink="true">http://www.bluespec.com/forum/viewtopic.php?p=933#933</guid>
                                      </item>
                                      <item>
                                        <title>Use of AXI IP provided by Bluespec</title>
                                        <link>http://www.bluespec.com/forum/viewtopic.php?p=930#930</link>
                                        <description>&lt;br /&gt;
                                      &lt;b&gt;Author:&lt;/b&gt; &lt;a href='http://www.bluespec.com/forum/profile.php?mode=viewprofile&amp;u=783'&gt;ganeshgarg&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;
                                      &lt;b&gt;Posted:&lt;/b&gt; Wed Nov 09, 2011 5:42 am&lt;br /&gt;&lt;br /&gt;
                                      &lt;br /&gt;&lt;br /&gt;
                                      I forgot to mention in the previous mail - Thanks very much for responding to my query.</description>
                                        <comments>http://www.bluespec.com/forum/viewtopic.php?p=930#930</comments>
                                        <author>ganeshgarg</author>
                                        <pubDate>Wed Nov 09, 2011 5:42 am</pubDate>
                                        <guid isPermaLink="true">http://www.bluespec.com/forum/viewtopic.php?p=930#930</guid>
                                      </item>
                                      <item>
                                        <title>Scemi with XUPV5 and PCIe</title>
                                        <link>http://www.bluespec.com/forum/viewtopic.php?p=928#928</link>
                                        <description>&lt;br /&gt;
                                      &lt;b&gt;Author:&lt;/b&gt; &lt;a href='http://www.bluespec.com/forum/profile.php?mode=viewprofile&amp;u=14'&gt;hadar_agam&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;
                                      &lt;b&gt;Posted:&lt;/b&gt; Thu Nov 03, 2011 3:31 pm&lt;br /&gt;&lt;br /&gt;
                                      &lt;br /&gt;&lt;br /&gt;
                                      XUPV5 is one of our supported platforms, so creating a system like you are describing is fairly straightforward. Our EmVM document (in $BLUESPECDIR/../doc/BSV/emVM.pdf) is the document that you are seeking, which describes the full flow and many options.&lt;br /&gt;
&lt;br /&gt;
You might want to use the build script, specifying xupv5 as a target-platform.&lt;br /&gt;
(type &amp;quot;build --doc&amp;quot; in a shell for more info).</description>
                                        <comments>http://www.bluespec.com/forum/viewtopic.php?p=928#928</comments>
                                        <author>hadar_agam</author>
                                        <pubDate>Thu Nov 03, 2011 3:31 pm</pubDate>
                                        <guid isPermaLink="true">http://www.bluespec.com/forum/viewtopic.php?p=928#928</guid>
                                      </item>
                                      <item>
                                        <title>Nesting a vector of interfaces</title>
                                        <link>http://www.bluespec.com/forum/viewtopic.php?p=926#926</link>
                                        <description>&lt;br /&gt;
                                      &lt;b&gt;Author:&lt;/b&gt; &lt;a href='http://www.bluespec.com/forum/profile.php?mode=viewprofile&amp;u=166'&gt;quark&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;
                                      &lt;b&gt;Posted:&lt;/b&gt; Tue Nov 01, 2011 1:46 pm&lt;br /&gt;&lt;br /&gt;
                                      &lt;br /&gt;&lt;br /&gt;
                                      If you want to define them in a for-loop, you can declare a local variable which is a Vector of the interface, and assign to each element (in the for-loop) and then, at the end of the module you can define the interface with that local variable:&lt;br /&gt;
&lt;/span&gt;&lt;table width=&quot;90%&quot; cellspacing=&quot;1&quot; cellpadding=&quot;3&quot; border=&quot;0&quot; align=&quot;center&quot;&gt;&lt;tr&gt; 	  &lt;td&gt;&lt;span class=&quot;genmed&quot;&gt;&lt;b&gt;Code:&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;	&lt;/tr&gt;	&lt;tr&gt;	  &lt;td class=&quot;code&quot;&gt;&lt;br /&gt;
interface Ifc;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;interface Vector#&amp;#40;8, Reg#&amp;#40;Bool&amp;#41;&amp;#41; regs;&lt;br /&gt;
endinterface&lt;br /&gt;
&lt;br /&gt;
module mkMod&amp;#40;Ifc&amp;#41;;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;...&lt;br /&gt;
&amp;nbsp; &amp;nbsp;Vector#&amp;#40;8, Reg#&amp;#40;Bool&amp;#41;&amp;#41; ifcs;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;for &amp;#40;Integer i=0; i&amp;lt;8; i=i+1&amp;#41;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; ifcs&amp;#91;i&amp;#93; = interface&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;method Bool _read&amp;#40;&amp;#41;;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return ...;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;endmethod&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;method Action _write&amp;#40;&amp;#41;;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ...&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;endmethod&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; endinterface;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;...&lt;br /&gt;
&amp;nbsp; &amp;nbsp;interface regs = ifcs;&lt;br /&gt;
endmodule&lt;br /&gt;
&lt;/td&gt;	&lt;/tr&gt;&lt;/table&gt;&lt;span class=&quot;postbody&quot;&gt;</description>
                                        <comments>http://www.bluespec.com/forum/viewtopic.php?p=926#926</comments>
                                        <author>quark</author>
                                        <pubDate>Tue Nov 01, 2011 1:46 pm</pubDate>
                                        <guid isPermaLink="true">http://www.bluespec.com/forum/viewtopic.php?p=926#926</guid>
                                      </item>
                                      <item>
                                        <title>Why is Bit#(type n) more than bits?</title>
                                        <link>http://www.bluespec.com/forum/viewtopic.php?p=921#921</link>
                                        <description>&lt;br /&gt;
                                      &lt;b&gt;Author:&lt;/b&gt; &lt;a href='http://www.bluespec.com/forum/profile.php?mode=viewprofile&amp;u=958'&gt;chris&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;
                                      &lt;b&gt;Posted:&lt;/b&gt; Fri Oct 07, 2011 12:38 pm&lt;br /&gt;&lt;br /&gt;
                                      &lt;br /&gt;&lt;br /&gt;
                                      &lt;/span&gt;&lt;table width=&quot;90%&quot; cellspacing=&quot;1&quot; cellpadding=&quot;3&quot; border=&quot;0&quot; align=&quot;center&quot;&gt;&lt;tr&gt; 	  &lt;td&gt;&lt;span class=&quot;genmed&quot;&gt;&lt;b&gt;Quote:&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;	&lt;/tr&gt;	&lt;tr&gt;	  &lt;td class=&quot;quote&quot;&gt;But our customers are so used to the idea (inherited from Verilog) of doing arithmetic with bits, that I think there'd be a near-riot if we forbade it.&lt;/td&gt;	&lt;/tr&gt;&lt;/table&gt;&lt;span class=&quot;postbody&quot;&gt;&lt;br /&gt;
&lt;br /&gt;
That's unfortunate, but I can understand their initial frustration.&lt;br /&gt;
&lt;br /&gt;
Indeed using extended operation on Bits can get very confusing and I never did it before. And although the mere existence of the operations undermines the type system I was never really affected by it. Until I looked into the standard libraries where there are several situations where Arithmetic operations are used on Bits I was even convinced that adding Bits would throw and error.&lt;br /&gt;
&lt;br /&gt;
E.g. I was very astonished when I saw the following (lib/BSVSource/Misc/BRAMFIFO.bsv):&lt;br /&gt;
&lt;/span&gt;&lt;table width=&quot;90%&quot; cellspacing=&quot;1&quot; cellpadding=&quot;3&quot; border=&quot;0&quot; align=&quot;center&quot;&gt;&lt;tr&gt; 	  &lt;td&gt;&lt;span class=&quot;genmed&quot;&gt;&lt;b&gt;Code:&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;	&lt;/tr&gt;	&lt;tr&gt;	  &lt;td class=&quot;code&quot;&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;BRAM_DUAL_PORT#&amp;#40;Bit#&amp;#40;l&amp;#41;, t&amp;#41;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;memory&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;- mkBRAMCore2&amp;#40;memSize, False &amp;#41;;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;Reg#&amp;#40;Bit#&amp;#40;d&amp;#41;&amp;#41;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;rWrPtr&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;- mkReg&amp;#40;0&amp;#41;;&lt;br /&gt;
&lt;br /&gt;
&amp;#91;...&amp;#93;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;#40;* fire_when_enabled, no_implicit_conditions *&amp;#41;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;rule portA;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; if &amp;#40;pwEnqueue&amp;#41; begin&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;memory.a.put&amp;#40;True, truncate&amp;#40;rWrPtr&amp;#41;, wDataIn&amp;#41;;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;rCache &amp;lt;= tagged Valid tuple2&amp;#40;rWrPtr, wDataIn&amp;#41;;&amp;nbsp; // cache last write&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;rWrPtr &amp;lt;= rWrPtr + 1;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; end&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; else begin&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;memory.a.put&amp;#40;False, truncate&amp;#40;rWrPtr&amp;#41;, ?&amp;#41;;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; end&lt;br /&gt;
&amp;nbsp; &amp;nbsp;endrule&lt;br /&gt;
&lt;/td&gt;	&lt;/tr&gt;&lt;/table&gt;&lt;span class=&quot;postbody&quot;&gt;&lt;br /&gt;
&lt;br /&gt;
I even questioned myself if it is useful to use Bits as and BRAM index.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
And as far as I know (modern) VHDL also has a very strict numeric type system, where you have std_logic_vector, unsigned and signed (and a few more). You also have to explicitely convert between these types and arithmetic operations are not defined on std_logic_vector, which is the basic bit representation.&lt;br /&gt;
&lt;br /&gt;
I might be wrong here but I still have a very bad feeling about arithmetics on bits. It's true that with it beginners coming from Verilog can use bits intuitively right away, but just imagine somebody trying to assign a negative value to a bit and compare it afterwards with another bit variable. He might have a hard time to find his error especially when he is not yet used to the debug capabilities of bsv. In general it is very hard to get rid of bad practices when you have gotten used to them. Therefore I think we shouldn't implement features into the language that solely (it really is against the whole type safety principle) enable bad habits and should not allow them from the beginning. The example above shows that even core developers are affected by them.</description>
                                        <comments>http://www.bluespec.com/forum/viewtopic.php?p=921#921</comments>
                                        <author>chris</author>
                                        <pubDate>Fri Oct 07, 2011 12:38 pm</pubDate>
                                        <guid isPermaLink="true">http://www.bluespec.com/forum/viewtopic.php?p=921#921</guid>
                                      </item>
                                      <item>
                                        <title>Type system: Not worth to learn the details?</title>
                                        <link>http://www.bluespec.com/forum/viewtopic.php?p=920#920</link>
                                        <description>&lt;br /&gt;
                                      &lt;b&gt;Author:&lt;/b&gt; &lt;a href='http://www.bluespec.com/forum/profile.php?mode=viewprofile&amp;u=77'&gt;stoy&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;
                                      &lt;b&gt;Posted:&lt;/b&gt; Fri Sep 30, 2011 9:06 am&lt;br /&gt;&lt;br /&gt;
                                      &lt;br /&gt;&lt;br /&gt;
                                      Chris wonders whether Bluespec Inc. might be less &amp;quot;discouraging&amp;quot;, in the official documentation, about advanced features such as typeclasses.  He suggests that to use BSV well one needs to understand it, and that means being aware of all its features and how they are structured together into one coherent whole.  Of course, from the ideal point of view he's right.  And in fact learning any language is a non-terminating process -- one gets better at it all the time.  That's also true about languages like English, or music (compare late Mozart with his earlier writing).  The question is, how much is enough to get started effectively?  And then, what resources are there, or should there be, for our users to do &amp;quot;lifelong learning&amp;quot;, and what can the Company (with its limited resources) do to help?&lt;br /&gt;
&lt;br /&gt;
Our position is that designers can use BSV pretty effectively after a training lasting just two or three days.  And that's the kind of training we normally offer -- it sometimes expands to a week or so if we're also helping the trainees get to grips with their first project.  In a training that short there's simply not time to cover everything.  We feel that the most important thing to emphasize in our training is the concept of atomic transactions, as used in our rules and interface methods; and the idea that although many rules fire in a single clock cycle, the overall effect is as if they happened one at a time, in the so-called &amp;quot;logical execution order&amp;quot;.  We hope that other high-level features, which we don't have time to cover, will be gradually picked up later, as the designer's experience grows.&lt;br /&gt;
&lt;br /&gt;
Our &amp;quot;BSV By Examples&amp;quot; book, too, is designed to help new users by showing them BSV in action, and giving them templates for dealing with many of the issues that turn up in the course of a design.&lt;br /&gt;
&lt;br /&gt;
It would be quite different if we were teaching BSV over the course of a university term -- perhaps then we could even make understanding types a prerequisite, obtained from an earlier programming languages course.  And there'd be time to go into all the details.  But normally we don't have that luxury.  That's why in the Reference Guide we want to reinforce the notion that a designer can do a whole lot after only the initial training, which is why we put the disclaimers there.  But perhaps they could be worded a bit better -- we'll see what we can do.&lt;br /&gt;
&lt;br /&gt;
Incidentally, Chris is correct about our type inspection facilities not dealing adequately with typeclasses and instances.  This is something which is already on our enhancements list.&lt;br /&gt;
&lt;br /&gt;
INVITATION&lt;br /&gt;
&lt;br /&gt;
Chris and I have been having what seems to be a dialogue on this (and other topics).  Can I invite others to join in?  Tell us how we could do the training better; or what post-training resources would be useful.  And maybe more pointers to explanations of some language features, not necessarily specific to BSV (such as the two Haskell Type Basics articles Chris pointed to).&lt;br /&gt;
&lt;br /&gt;
TYPECLASSES&lt;br /&gt;
&lt;br /&gt;
It remains the case, of course, that although you can do lots of good things after only the initial training, if you have had the chance to learn some of the advanced features you can do even more fantastic things.  And, to come back to the detailed point Chris was making, it's true our documentation doesn't contain any examples of the sophisticated use of typeclasses.  So, for interested readers, let me give a few examples.&lt;br /&gt;
&lt;br /&gt;
(1) The DefaultValue package, in our release (see $BLUESPECDIR/BSVSource/Misc/DefaultValue.bsv).  For examples of the use of this feature, also in the release, see the $BLUESPECDIR/BSVSource/Axi directory.  AxiDefines.bsv contains declarations of some instances of DefaultValue, and AxiMaster.bsv some examples of their use.&lt;br /&gt;
&lt;br /&gt;
(2) A more intricate example, the HList package, also in our release (see $BLUESPECDIR/BSVSource/misc/HList.bsv).  This package is essentially transliterated from the equivalent package in the Haskell library, and &amp;quot;H&amp;quot; is for &amp;quot;heterogenous&amp;quot; -- it provides lists in which each element can be of a different type.  So, since there are an infinite number of such list types, the set of them all has to be a typeclass.  And since each of them has its own &amp;quot;head&amp;quot; and &amp;quot;tail&amp;quot; function types, they have to form typeclasses too.  I'm afraid the package isn't very extensively commented -- but see what you make of it!&lt;br /&gt;
&lt;br /&gt;
(3) The attached BuildVector package, which allows you to declare and initialize Vectors, in lines like&lt;br /&gt;
     Vector#(5, UInt#(4)) = vec(7, 3, 8, 1, 11);&lt;br /&gt;
This is perhaps even more complicated, but it's very useful.  You might ask why it isn't in our standard library.  The answer is that, since it uses &amp;quot;advanced features&amp;quot;, mistakes in its use might give rise to error messages which are unintelligible and therefore worrying to many of our users.  In fact, I think that our typeclass error messages have improved since that decision was taken, so that we might revisit it.  For example, if you get the number of elements different on the two sides of the definition, you still get an error message about provisos -- but now it ends with a strong hint as to what's gone wrong&lt;br /&gt;
(try it and see).&lt;br /&gt;
&lt;br /&gt;
CONCLUSION&lt;br /&gt;
&lt;br /&gt;
Finally, please don't hesitate to ask questions about any feature of BSV, advanced or otherwise, either on these forums or (if you prefer) to &lt;a href=&quot;mailto:support@bluespec.com&quot;&gt;support@bluespec.com&lt;/a&gt;.  If it prompts one of us (whether someone inside Bluespec or another user) to write a detailed reply, that might also have the extra value of becoming a draft of a new section of our documentation (subject of course to the permission of the author if non-Bluespec).  The more traffic these forums see, the more useful they are!&lt;br /&gt;
&lt;br /&gt;
Regards&lt;br /&gt;
&lt;br /&gt;
joe stoy&lt;br /&gt;
Bluespec Inc.</description>
                                        <comments>http://www.bluespec.com/forum/viewtopic.php?p=920#920</comments>
                                        <author>stoy</author>
                                        <pubDate>Fri Sep 30, 2011 9:06 am</pubDate>
                                        <guid isPermaLink="true">http://www.bluespec.com/forum/viewtopic.php?p=920#920</guid>
                                      </item></channel></rss>
