Skip to content

RegisterSystem20XMLExamples

Adam edited this page Apr 10, 2012 · 1 revision

Table of Contents

%INCLUDE{"RegisterSystem20Contents"}%

The reference router is used as an example to demonstrate the new register system.

 '''The examples on this page currently do not reflect the reference router.''' 

Constants

 <constant>
    <name>MAC_TABLE_SIZE</name>
    <width>5</width>
    <value>32</value>
 </constant>

Types

 <type>
    <name>mac_address</name>
    <width>48</width>
 </type>
 <type>
    <name>output_port_bitmask</name>
    <width>16</width>
 </type>
 <type>
    <name>mac_table_index</name>
    <width>MAC_TABLE_SIZE.width</width>
 </type>
 <type>
    <name>mac_table_entry</name>
    <field>mac_address</field>
    <field>output_port_bitmask</field>
    <field>mac_table_index</field>
 </type>

Modules

MAC Group

 <module>
    <name>MAC Group</name>
    <abbrev>mac_grp</abbrev>
    <location>core</location>
    <blocksize>1M</blocksize>
    <preferred_base>0x0600000</preferred_base>
    <registers>
       <register name="RX_QUEUE_NUM_PKTS_DROPPED" />
       <register name="RX_QUEUE_NUM_PKTS_STORED" />
       <register name="RX_QUEUE_NUM_PKTS_REMOVED" />
       <register name="TX_QUEUE_NUM_PKTS_ENQUEUED" />
       <register name="TX_QUEUE_NUM_PKTS_DEQUEUED" />
    </registers>
 </module>

Input arbiter

 <module>
    <name>Input arbiter<name>
    <abbrev>in_arb</abbrev>
    <location>udp</location>
    <registers>
    </registers>
 </module>

Switch output port lookup

 <module>
    <name>Switch output port lookup</name>
    <abbrev>switch_opl</abbrev>
    <location>udp</location>
    <registers>
       <register name="LAST_MAC" type="mac_address" />
       <register name="MAC_TABLE" type="mac_table_entry" />
    </registers>
 </module>

Output queues

 <module>
    <name>SRAM output queues</name>
    <name>OQ</name>
    <location>udp</location>
    <registers>
       <register_group name="oq_regs" instances="4" >
          <register>
             <name>CTRL</name>
             <bitmask name="ENABLE" value="0x1" />
          </register>
          <register name="RD_ADDR" width="12" />
          <register name="WR_ADDR" width="12" />
          <register name="LO_ADDR" width="12" />
          <register name="HI_ADDR" width="12" />
       </register_group>
    </registers>
 </module>

Project

 <?xml version="1.0" encoding="UTF-8"?>
 <nf:project xmlns:nf="http://www.NetFPGA.org/NF2_register_system" xmlns:xsi="http://www.w3.org/2001/XMLSchema-nstance" xsi:schemaLocation="http://www.NetFPGA.org/NF2_register_system NF2_register_system.xsd ">
  <nf:name>Reference router</nf:name>
  <nf:description>Reference IPv4 router</nf:description>
  <nf:use_modules>
    io_queues/cpu_dma_queue
    io_queues/ethernet_mac
    input_arbiter/rr_input_arbiter
    nf2/generic_top
    nf2/reference_core
    user_data_path/generic_cntr_reg
    output_port_lookup/cam_router
    output_queues/sram_rr_output_queues
    sram_arbiter/sram_weighted_rr
    user_data_path/reference_user_data_path
    io/mdio
    cpci_bus
    dma
    user_data_path/udp_reg_master
    io_queues/add_rm_hdr
    strip_headers/keep_length
  </nf:use_modules>
  <nf:local_modules>
  </nf:local_modules>
  <nf:memalloc layout="reference">
    <nf:group name="core1">
      <nf:instance name="device_id" />
      <nf:instance name="dma" />
      <nf:instance name="nf2_mdio" />
      <nf:instance name="ethernet_mac" count="4" />
      <nf:instance name="cpu_dma_queue" count="4" />
    </nf:group>
    <nf:group name="udp">
      <nf:instance name="input_arbiter" />
      <nf:instance name="ouput_port_lookup" />
      <nf:instance name="strip_headers" />
      <nf:instance name="output_queues" />
    </nf:group>
  </nf:memalloc>
 </nf:project>

Clone this wiki locally