-
Notifications
You must be signed in to change notification settings - Fork 140
RegSysExSRAMOutputQueues
Adam edited this page Apr 10, 2012
·
2 revisions
(Current as of 5 Apr, 2010.)
%CODE{lang="xml" el="textarea"}%
<nf:module xmlns:nf="http://www.NetFPGA.org/NF2_register_system" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.NetFPGA.org/NF2_register_system NF2_register_system.xsd "> <nf:name>output_queues</nf:name> <nf:prefix>oq</nf:prefix> <nf:location>udp</nf:location> <nf:description>SRAM-based output queue using round-robin removal</nf:description> <nf:blocksize>4k</nf:blocksize> <nf:registers> &lt;nf:register_group&gt; &amp;lt;nf:name&amp;gt;queue&amp;lt;/nf:name&amp;gt; &amp;lt;nf:instances&amp;gt;:NUM_OUTPUT_QUEUES&amp;lt;/nf:instances&amp;gt; &amp;lt;nf:register&amp;gt; &amp;amp;lt;nf:name&amp;amp;gt;ctrl&amp;amp;lt;/nf:name&amp;amp;gt; &amp;amp;lt;nf:description&amp;amp;gt;Control register&amp;amp;lt;/nf:description&amp;amp;gt; &amp;amp;lt;nf:type&amp;amp;gt;oq_control&amp;amp;lt;/nf:type&amp;amp;gt; &amp;lt;/nf:register&amp;gt; &amp;lt;nf:register&amp;gt; &amp;amp;lt;nf:name&amp;amp;gt;num_pkt_bytes_stored&amp;amp;lt;/nf:name&amp;amp;gt; &amp;amp;lt;nf:description&amp;amp;gt;Number of packet bytes stored&amp;amp;lt;/nf:description&amp;amp;gt; &amp;amp;lt;nf:type&amp;amp;gt;sram_byte_cnt&amp;amp;lt;/nf:type&amp;amp;gt; &amp;lt;/nf:register&amp;gt; &amp;lt;nf:register&amp;gt; &amp;amp;lt;nf:name&amp;amp;gt;num_overhead_bytes_stored&amp;amp;lt;/nf:name&amp;amp;gt; &amp;amp;lt;nf:description&amp;amp;gt;Number of overhead (control) bytes stored&amp;amp;lt;/nf:description&amp;amp;gt; &amp;amp;lt;nf:type&amp;amp;gt;sram_byte_cnt&amp;amp;lt;/nf:type&amp;amp;gt; &amp;lt;/nf:register&amp;gt; &amp;lt;nf:register&amp;gt; &amp;amp;lt;nf:name&amp;amp;gt;num_pkt_bytes_removed&amp;amp;lt;/nf:name&amp;amp;gt; &amp;amp;lt;nf:description&amp;amp;gt;Number of packet bytes removed&amp;amp;lt;/nf:description&amp;amp;gt; &amp;amp;lt;nf:type&amp;amp;gt;sram_byte_cnt&amp;amp;lt;/nf:type&amp;amp;gt; &amp;lt;/nf:register&amp;gt; &amp;lt;nf:register&amp;gt; &amp;amp;lt;nf:name&amp;amp;gt;num_overhead_bytes_removed&amp;amp;lt;/nf:name&amp;amp;gt; &amp;amp;lt;nf:description&amp;amp;gt;Number of overhead (control) bytes removed&amp;amp;lt;/nf:description&amp;amp;gt; &amp;amp;lt;nf:type&amp;amp;gt;sram_byte_cnt&amp;amp;lt;/nf:type&amp;amp;gt; &amp;lt;/nf:register&amp;gt; &amp;lt;nf:register&amp;gt; &amp;amp;lt;nf:name&amp;amp;gt;num_pkts_stored&amp;amp;lt;/nf:name&amp;amp;gt; &amp;amp;lt;nf:description&amp;amp;gt;Number of packets stored&amp;amp;lt;/nf:description&amp;amp;gt; &amp;amp;lt;nf:type&amp;amp;gt;sram_pkt_cnt&amp;amp;lt;/nf:type&amp;amp;gt; &amp;lt;/nf:register&amp;gt; &amp;lt;nf:register&amp;gt; &amp;amp;lt;nf:name&amp;amp;gt;num_pkts_dropped&amp;amp;lt;/nf:name&amp;amp;gt; &amp;amp;lt;nf:description&amp;amp;gt;Number of packets dropped&amp;amp;lt;/nf:description&amp;amp;gt; &amp;amp;lt;nf:type&amp;amp;gt;sram_pkt_cnt&amp;amp;lt;/nf:type&amp;amp;gt; &amp;lt;/nf:register&amp;gt; &amp;lt;nf:register&amp;gt; &amp;amp;lt;nf:name&amp;amp;gt;num_pkts_removed&amp;amp;lt;/nf:name&amp;amp;gt; &amp;amp;lt;nf:description&amp;amp;gt;Number of packets removed&amp;amp;lt;/nf:description&amp;amp;gt; &amp;amp;lt;nf:type&amp;amp;gt;sram_pkt_cnt&amp;amp;lt;/nf:type&amp;amp;gt; &amp;lt;/nf:register&amp;gt; &amp;lt;nf:register&amp;gt; &amp;amp;lt;nf:name&amp;amp;gt;addr_lo&amp;amp;lt;/nf:name&amp;amp;gt; &amp;amp;lt;nf:description&amp;amp;gt;Queue low address&amp;amp;lt;/nf:description&amp;amp;gt; &amp;amp;lt;nf:type&amp;amp;gt;sram_addr&amp;amp;lt;/nf:type&amp;amp;gt; &amp;lt;/nf:register&amp;gt; &amp;lt;nf:register&amp;gt; &amp;amp;lt;nf:name&amp;amp;gt;addr_hi&amp;amp;lt;/nf:name&amp;amp;gt; &amp;amp;lt;nf:description&amp;amp;gt;Queue high address&amp;amp;lt;/nf:description&amp;amp;gt; &amp;amp;lt;nf:type&amp;amp;gt;sram_addr&amp;amp;lt;/nf:type&amp;amp;gt; &amp;lt;/nf:register&amp;gt; &amp;lt;nf:register&amp;gt; &amp;amp;lt;nf:name&amp;amp;gt;rd_addr&amp;amp;lt;/nf:name&amp;amp;gt; &amp;amp;lt;nf:description&amp;amp;gt;Queue read address&amp;amp;lt;/nf:description&amp;amp;gt; &amp;amp;lt;nf:type&amp;amp;gt;sram_addr&amp;amp;lt;/nf:type&amp;amp;gt; &amp;lt;/nf:register&amp;gt; &amp;lt;nf:register&amp;gt; &amp;amp;lt;nf:name&amp;amp;gt;wr_addr&amp;amp;lt;/nf:name&amp;amp;gt; &amp;amp;lt;nf:description&amp;amp;gt;Queue write address&amp;amp;lt;/nf:description&amp;amp;gt; &amp;amp;lt;nf:type&amp;amp;gt;sram_addr&amp;amp;lt;/nf:type&amp;amp;gt; &amp;lt;/nf:register&amp;gt; &amp;lt;nf:register&amp;gt; &amp;amp;lt;nf:name&amp;amp;gt;num_pkts_in_q&amp;amp;lt;/nf:name&amp;amp;gt; &amp;amp;lt;nf:description&amp;amp;gt;Number of packets in the queue&amp;amp;lt;/nf:description&amp;amp;gt; &amp;amp;lt;nf:type&amp;amp;gt;sram_pkt_cnt&amp;amp;lt;/nf:type&amp;amp;gt; &amp;lt;/nf:register&amp;gt; &amp;lt;nf:register&amp;gt; &amp;amp;lt;nf:name&amp;amp;gt;max_pkts_in_q&amp;amp;lt;/nf:name&amp;amp;gt; &amp;amp;lt;nf:description&amp;amp;gt;Maximum number of packets allowed in queue&amp;amp;lt;/nf:description&amp;amp;gt; &amp;amp;lt;nf:type&amp;amp;gt;sram_pkt_cnt&amp;amp;lt;/nf:type&amp;amp;gt; &amp;lt;/nf:register&amp;gt; &amp;lt;nf:register&amp;gt; &amp;amp;lt;nf:name&amp;amp;gt;num_words_in_q&amp;amp;lt;/nf:name&amp;amp;gt; &amp;amp;lt;nf:description&amp;amp;gt;Number of words in the queue&amp;amp;lt;/nf:description&amp;amp;gt; &amp;amp;lt;nf:type&amp;amp;gt;sram_word_cnt&amp;amp;lt;/nf:type&amp;amp;gt; &amp;lt;/nf:register&amp;gt; &amp;lt;nf:register&amp;gt; &amp;amp;lt;nf:name&amp;amp;gt;num_words_left&amp;amp;lt;/nf:name&amp;amp;gt; &amp;amp;lt;nf:description&amp;amp;gt;Number of words of space left&amp;amp;lt;/nf:description&amp;amp;gt; &amp;amp;lt;nf:type&amp;amp;gt;sram_word_cnt&amp;amp;lt;/nf:type&amp;amp;gt; &amp;lt;/nf:register&amp;gt; &amp;lt;nf:register&amp;gt; &amp;amp;lt;nf:name&amp;amp;gt;full_thresh&amp;amp;lt;/nf:name&amp;amp;gt; &amp;amp;lt;nf:description&amp;amp;gt;Full threshold (minimum number of words)&amp;amp;lt;/nf:description&amp;amp;gt; &amp;amp;lt;nf:type&amp;amp;gt;sram_word_cnt&amp;amp;lt;/nf:type&amp;amp;gt; &amp;lt;/nf:register&amp;gt; &lt;/nf:register_group&gt; </nf:registers> <nf:constants> &lt;nf:constant&gt; &amp;lt;nf:name&amp;gt;:NUM_OUTPUT_QUEUES&amp;lt;/nf:name&amp;gt; &amp;lt;nf:value&amp;gt;8&amp;lt;/nf:value&amp;gt; &lt;/nf:constant&gt; &lt;nf:constant&gt; &amp;lt;nf:name&amp;gt;DEFAULT_MAX_PKTS&amp;lt;/nf:name&amp;gt; &amp;lt;nf:width&amp;gt;SRAM_PKT_CNT_WIDTH&amp;lt;/nf:width&amp;gt; &amp;lt;nf:value&amp;gt;0xffffffff&amp;lt;/nf:value&amp;gt; &lt;/nf:constant&gt; &lt;nf:constant&gt; &amp;lt;nf:name&amp;gt;SRAM_PKT_CNT_WIDTH&amp;lt;/nf:name&amp;gt; &amp;lt;nf:value&amp;gt;:SRAM_ADDR_WIDTH&amp;lt;/nf:value&amp;gt; &lt;/nf:constant&gt; &lt;nf:constant&gt; &amp;lt;nf:name&amp;gt;SRAM_WORD_CNT_WIDTH&amp;lt;/nf:name&amp;gt; &amp;lt;nf:value&amp;gt;:SRAM_ADDR_WIDTH&amp;lt;/nf:value&amp;gt; &lt;/nf:constant&gt; &lt;nf:constant&gt; &amp;lt;nf:name&amp;gt;SRAM_BYTE_CNT_WIDTH&amp;lt;/nf:name&amp;gt; &amp;lt;nf:value&amp;gt;:SRAM_ADDR_WIDTH&amp;lt;/nf:value&amp;gt; &lt;/nf:constant&gt; &lt;nf:constant&gt; &amp;lt;nf:name&amp;gt;ENABLE_SEND_BIT_NUM&amp;lt;/nf:name&amp;gt; &amp;lt;nf:value&amp;gt;0&amp;lt;/nf:value&amp;gt; &lt;/nf:constant&gt; &lt;nf:constant&gt; &amp;lt;nf:name&amp;gt;INITIALIZE_OQ_BIT_NUM&amp;lt;/nf:name&amp;gt; &amp;lt;nf:value&amp;gt;1&amp;lt;/nf:value&amp;gt; &lt;/nf:constant&gt; </nf:constants> <nf:types> &lt;nf:type xsi:type=&quot;nf:SimpleType&quot;&gt; &amp;lt;nf:name&amp;gt;sram_pkt_cnt&amp;lt;/nf:name&amp;gt; &amp;lt;nf:width&amp;gt;SRAM_PKT_CNT_WIDTH&amp;lt;/nf:width&amp;gt; &lt;/nf:type&gt; &lt;nf:type xsi:type=&quot;nf:SimpleType&quot;&gt; &amp;lt;nf:name&amp;gt;sram_word_cnt&amp;lt;/nf:name&amp;gt; &amp;lt;nf:width&amp;gt;SRAM_WORD_CNT_WIDTH&amp;lt;/nf:width&amp;gt; &lt;/nf:type&gt; &lt;nf:type xsi:type=&quot;nf:SimpleType&quot;&gt; &amp;lt;nf:name&amp;gt;sram_byte_cnt&amp;lt;/nf:name&amp;gt; &amp;lt;nf:width&amp;gt;SRAM_BYTE_CNT_WIDTH&amp;lt;/nf:width&amp;gt; &lt;/nf:type&gt; &lt;nf:type xsi:type=&quot;nf:SimpleType&quot;&gt; &amp;lt;nf:name&amp;gt;sram_addr&amp;lt;/nf:name&amp;gt; &amp;lt;nf:width&amp;gt;:SRAM_ADDR_WIDTH&amp;lt;/nf:width&amp;gt; &lt;/nf:type&gt; &lt;nf:type xsi:type=&quot;nf:SimpleType&quot;&gt; &amp;lt;nf:name&amp;gt;oq_control&amp;lt;/nf:name&amp;gt; &amp;lt;nf:width&amp;gt;2&amp;lt;/nf:width&amp;gt; &amp;lt;nf:bitmask&amp;gt; &amp;amp;lt;nf:name&amp;amp;gt;enable_send&amp;amp;lt;/nf:name&amp;amp;gt; &amp;amp;lt;nf:pos&amp;amp;gt;0&amp;amp;lt;/nf:pos&amp;amp;gt; &amp;lt;/nf:bitmask&amp;gt; &amp;lt;nf:bitmask&amp;gt; &amp;amp;lt;nf:name&amp;amp;gt;initialize_oq&amp;amp;lt;/nf:name&amp;amp;gt; &amp;amp;lt;nf:pos&amp;amp;gt;1&amp;amp;lt;/nf:pos&amp;amp;gt; &amp;lt;/nf:bitmask&amp;gt; &lt;/nf:type&gt; </nf:types> </nf:module>%ENDCODE%