From 0cef98373ffa3e9bef02f37bb45fbb5a956001ea Mon Sep 17 00:00:00 2001 From: Sebastien Bourdeauducq Date: Sat, 20 Jul 2013 17:01:58 +0200 Subject: [PATCH] doc/bus: update --- doc/asmi_topology.dia | Bin 2563 -> 0 bytes doc/asmi_topology.png | Bin 79436 -> 0 bytes doc/bus.rst | 98 ++++++++++++++++-------------------------- 3 files changed, 38 insertions(+), 60 deletions(-) delete mode 100644 doc/asmi_topology.dia delete mode 100644 doc/asmi_topology.png diff --git a/doc/asmi_topology.dia b/doc/asmi_topology.dia deleted file mode 100644 index 98de6f151ea137798249fdeddcbe8c850e839c28..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2563 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 Z2IbC#@ diff --git a/doc/asmi_topology.png b/doc/asmi_topology.png deleted file mode 100644 index 0c65d5e54e9d96b4f7c4e6535f41df5f0b0530a5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 79436 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 z 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

^Qho9=FMw9n+ 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 diff --git a/doc/bus.rst b/doc/bus.rst index 1e9811205..9f99a2302 100644 --- a/doc/bus.rst +++ b/doc/bus.rst @@ -5,7 +5,7 @@ Migen Bus contains classes providing a common structure for master and slave int * Wishbone [wishbone]_, the general purpose bus recommended by Opencores. * CSR-2 (see :ref:`csr2`), a low-bandwidth, resource-sensitive bus designed for accessing the configuration and status registers of cores from software. -* ASMIbus (see :ref:`asmi`), a split-transaction bus optimized for use with a high-performance, out-of-order SDRAM controller. +* LASMIbus (see :ref:`lasmi`), a bus optimized for use with a high-performance frequency-ratio SDRAM controller. * DFI [dfi]_ (partial), a standard interface protocol between memory controller logic and PHY interfaces. .. [wishbone] http://cdn.opencores.org/downloads/wbspec_b4.pdf @@ -13,13 +13,13 @@ Migen Bus contains classes providing a common structure for master and slave int It also provides interconnect components for these buses, such as arbiters and address decoders. The strength of the Migen procedurally generated logic can be illustrated by the following example: :: - wbcon = wishbone.InterconnectShared( + self.submodules.wbcon = wishbone.InterconnectShared( [cpu.ibus, cpu.dbus, ethernet.dma, audio.dma], [(lambda a: a[27:] == 0, norflash.bus), - (lambda a: a[27:] == 1, wishbone2asmi.wishbone), + (lambda a: a[27:] == 1, wishbone2lasmi.wishbone), (lambda a: a[27:] == 3, wishbone2csr.wishbone)]) -In this example, the interconnect component generates a 4-way round-robin arbiter, multiplexes the master bus signals into a shared bus, and connects all slave interfaces to the shared bus, inserting the address decoder logic in the bus cycle qualification signals and multiplexing the data return path. It can recognize the signals in each core's bus interface thanks to the common structure mandated by Migen Bus. All this happens automatically, using only that much user code. The resulting interconnect logic can be retrieved using ``wbcon.get_fragment()``, and combined with the fragments from the rest of the system. +In this example, the interconnect component generates a 4-way round-robin arbiter, multiplexes the master bus signals into a shared bus, and connects all slave interfaces to the shared bus, inserting the address decoder logic in the bus cycle qualification signals and multiplexing the data return path. It can recognize the signals in each core's bus interface thanks to the common structure mandated by Migen Bus. All this happens automatically, using only that much user code. Configuration and Status Registers @@ -46,20 +46,21 @@ Migen Bank is a system comparable to wishbone-gen [wbgen]_, which automates the Bank takes a description made up of a list of registers and generates logic implementing it with a slave interface compatible with Migen Bus. -A register can be "raw", which means that the core has direct access to it. It also means that the register width must be less or equal to the bus word width. In that case, the register object provides the following signals: +The lowest-level description of a register is provided by the ``CSR`` class, which maps to the value at a single address on the target bus. The width of the register needs to be inferior or equal to the bus word width. All accesses are atomic. It has the following signal properties as interface to the user design: * ``r``, which contains the data written from the bus interface. * ``re``, which is the strobe signal for ``r``. It is active for one cycle, after or during a write from the bus. ``r`` is only valid when ``re`` is high. * ``w``, which must provide at all times the value to be read from the bus. -Registers that are not raw are managed by Bank and contain fields. If the sum of the widths of all fields attached to a register exceeds the bus word width, the register will automatically be sliced into words of the maximum size and implemented at consecutive bus addresses, MSB first. Field objects have two parameters, ``access_bus`` and ``access_dev``, determining respectively the access policies for the bus and core sides. They can take the values ``READ_ONLY``, ``WRITE_ONLY`` and ``READ_WRITE``. -If the device can read, the field object provides the r signal, which contains at all times the current value of the field (kept by the logic generated by Bank). -If the device can write, the field object provides the following signals: +Compound CSRs (which are transformed into ``CSR`` plus additional logic for implementation) provide additional features optimized for common applications. -* ``w``, which provides the value to be written into the field. -* ``we``, which strobes the value into the field. +The ``CSRStatus`` class is meant to be used as a status register that is read-only from the CPU. The user design is expected to drive its ``status`` signal. The advantage of using ``CSRStatus`` instead of using ``CSR`` and driving ``w`` is that the width of ``CSRStatus`` can be arbitrary. Status registers larger than the bus word width are automatically broken down into several ``CSR`` registers to span several addresses. Be careful that the atomicity of reads is not guaranteed. -As a special exception, fields that are read-only from the bus and write-only for the device do not use the ``we`` signal. Instead, the device must permanently drive valid data on the ``w`` signal. +The ``CSRStorage`` class provides a memory location that can be read and written by the CPU, and read and optionally written by the design. It can also span several CSR addresses. An optional mechanism for atomic CPU writes is provided; when enabled, writes to the first CSR addresses go to a back-buffer whose contents are atomically copied to the main buffer when the last address is written. When ``CSRStorage`` can be written to by the design, the atomicity of reads by the CPU is not guaranteed. + +A module can provide bus-independent CSRs by implementing a ``get_csrs`` method that returns a list of instances of the classes described above. Similary, bus-independent memories can be returned as a list by a ``get_memories`` method. + +To avoid listing those manually, a module can inherit from the ``AutoCSR`` class, which provides ``get_csrs`` and ``get_memories`` methods that scan for CSR and memory attributes and return their list. If the module has child objects that implement ``get_csrs`` or ``get_memories``, they will be called by the ``AutoCSR`` methods and their CSR and memories added to the lists returned, with the child objects' names as prefixes. Generating interrupt controllers ================================ @@ -68,20 +69,21 @@ The event manager provides a systematic way to generate standard interrupt contr Its constructor takes as parameters one or several *event sources*. An event source is an instance of either: * ``EventSourcePulse``, which contains a signal ``trigger`` that generates an event when high. The event stays asserted after the ``trigger`` signal goes low, and until software acknowledges it. An example use is to pulse ``trigger`` high for 1 cycle after the reception of a character in a UART. -* ``EventSourceLevel``, which contains a signal ``trigger`` that generates an event on its falling edge. The purpose of this event source is to monitor the status of processes and generate an interrupt on their completion. The signal ``trigger`` can be connected to the ``busy`` signal of a dataflow actor, for example. +* ``EventSourceProcess``, which contains a signal ``trigger`` that generates an event on its falling edge. The purpose of this event source is to monitor the status of processes and generate an interrupt on their completion. The signal ``trigger`` can be connected to the ``busy`` signal of a dataflow actor, for example. +* ``EventSourceLevel``, whose ``trigger`` contains the instantaneous state of the event. It must be set and released by the user design. For example, a DMA controller with several slots can use this event source to signal that one or more slots require CPU attention. The ``EventManager`` provides a signal ``irq`` which is driven high whenever there is a pending and unmasked event. It is typically connected to an interrupt line of a CPU. -The ``EventManager`` provides a method ``get_registers``, that returns a list of registers to be used with Migen Bank. Each event source is assigned one bit in each of those registers. They are: +The ``EventManager`` provides a method ``get_csrs``, that returns a bus-independent list of CSRs to be used with Migen Bank as explained above. Each event source is assigned one bit in each of those registers. They are: -* ``status``: contains the current level of the trigger line of ``EventSourceLevel`` sources. It is 0 for ``EventSourcePulse``. This register is read-only. +* ``status``: contains the current level of the trigger line of ``EventSourceProcess`` and ``EventSourceLevel`` sources. It is 0 for ``EventSourcePulse``. This register is read-only. * ``pending``: contains the currently asserted events. Writing 1 to the bit assigned to an event clears it. * ``enable``: defines which asserted events will cause the ``irq`` line to be asserted. This register is read-write. -.. _asmi: +.. _lasmi: -Advanced System Memory Infrastructure -************************************* +Lightweight Advanced System Memory Infrastructure +************************************************* Rationale ========= @@ -103,58 +105,38 @@ The first two techniques are explained with more details in [drreorder]_. .. [drreorder] http://www.xilinx.com/txpatches/pub/documentation/misc/improving%20ddr%20sdram%20efficiency.pdf -To enable the efficient implementation of these mechanisms, a new communication protocol with the memory controller must be devised. Migen and Milkymist SoC (-NG) implement their own bus, called ASMIbus, based on the split-transaction principle. +Migen and milkymist-ng implement their own bus, called LASMIbus, that features the last two techniques. Grouping by row had been previously explored with ASMI, but difficulties in achieving timing closure at reasonable latencies in FPGA combined with uncertain performance pay-off for some applications discouraged work in that direction. -Topology -======== -The ASMI consists of a memory controller (e.g. ASMIcon) containing a hub that connects the multiple masters, handles transaction tags, and presents a view of the pending requests to the rest of the memory controller. +Topology and transactions +========================= +The LASMI consists of one or several memory controllers (e.g. LASMIcon from milkymist-ng), multiple masters, and crossbar interconnect. -Each master has a number of dedicated transaction slots allocated inside the hub. Each slot is assigned a tag, that is later used in the data transfer to identify the slot the data belongs to. +Each memory controller can expose several bank machines to the crossbar. This way, requests to different SDRAM banks can be processed in parallel. -It is suggested that memory controllers use an interface to a PHY compatible with DFI [dfi]_. The DFI clock can be the same as the ASMIbus clock, with optional serialization and deserialization taking place across the PHY, as specified in the DFI standard. +Transactions on LASMI work as follows: -.. figure:: asmi_topology.png - :scale: 85 % +1. The master presents a valid address and write enable signals, and asserts its strobe signal. +2. The crossbar decodes the bank address and, in a multi-controller configuration, the controller address and connects the master to the appropriate bank machine. +3. The bank machine acknowledges the request from the master. The master can immediately issue a new request to the same bank machine, without waiting for data. +4. The bank machine sends data acknowledgements to the master, in the same order as it issued requests. After receiving a data acknowldegement, the master must either: - ASMI topology. + * present valid data after a fixed number of cycles (for writes). Masters must hold their data lines at 0 at all other times so that they can be simply ORed for each controller to produce the final SDRAM write data. + * sample the data bus after a fixed number of cycles (for reads). -Signals -======= -The ASMIbus consists of two parts: the control signals, and the data signals. +5. In a multi-controller configuration, the crossbar multiplexes write and data signals to route data to and from the appropriate controller. -The control signals are used to issue requests. +When there are queued requests (i.e. more request acknowledgements than data acknowledgements), the bank machine asserts its ``lock`` signal which freezes the crossbar connection between the master and the bank machine. This simplifies two problems: -* Master-to-Hub: +#. Determining to which master a data acknowledgement from a bank machine should be sent. +#. Having to deal with a master queuing requests into multiple different bank machines which may collectively complete them in a different order than the master issued them. - * ``adr`` communicates the memory address to be accessed. The unit is the word width of the particular implementation of ASMIbus. - * ``we`` is the write enable signal. - * ``stb`` qualifies the transaction request, and should be asserted until ``ack`` goes high. +For each master, transactions are completed in-order by the memory system. Reordering may only occur between masters, e.g. a master issuing a request that hits a page may have it completed sooner than a master requesting earlier a precharge/activate cycle of another bank. -* Hub-to-Master - - * ``tag_issue`` is an integer representing the transaction ("tag") attributed by the hub. The width of this signal is determined by the maximum number of in-flight transactions that the hub port can handle. - * ``ack`` is asserted when ``tag_issue`` is valid and the transaction has been registered by the hub. A hub may assert ``ack`` even when ``stb`` is low, which means it is ready to accept any new transaction and will do as soon as ``stb`` goes high. - -The data signals are used to complete requests. - -* Hub-to-Master - - * ``tag_call`` is used to identify the transaction for which the data is "called". It takes the tag value that has been previously attributed by the hub to that transaction during the issue phase. - * ``call`` qualifies ``tag_call``. - * ``data_r`` returns data from the DRAM in the case of a read transaction. It is valid for one cycle after CALL has been asserted and ``tag_call`` has identified the transaction. The value of this signal is undefined for the cycle after a write transaction data have been called. - -* Master-to-Hub - - * ``data_w`` must supply data to the controller from the appropriate write transaction, on the cycle after they have been called using ``call`` and ``tag_call``. - * ``data_wm`` are the byte-granular write data masks. They are used in combination with ``data_w`` to identify the bytes that should be modified in the memory. The ``data_wm`` bit should be low for its corresponding ``data_w`` byte to be written. - -In order to avoid duplicating the tag matching and tracking logic, the master-to-hub data signals must be driven low when they are not in use, so that they can be simply ORed together inside the memory controller. This way, only masters have to track (their own) transactions for arbitrating the data lines. - -Tags represent in-flight transactions. The hub can reissue a tag as soon as the cycle when it appears on ``tag_call``. +It is suggested that memory controllers use an interface to a PHY compatible with DFI [dfi]_. The DFI clock can be the same as the LASMIbus clock, with optional serialization and deserialization taking place across the PHY, as specified in the DFI standard. SDRAM burst length and clock ratios =================================== -A system using ASMI must set the SDRAM burst length B, the ASMIbus word width W and the ratio between the ASMIbus clock frequency Fa and the SDRAM I/O frequency Fi so that all data transfers last for exactly one ASMIbus cycle. +A system using LASMI must set the SDRAM burst length B, the LASMIbus word width W and the ratio between the LASMIbus clock frequency Fa and the SDRAM I/O frequency Fi so that all data transfers last for exactly one LASMIbus cycle. More explicitly, these relations must be verified: @@ -163,7 +145,3 @@ B = Fi/Fa W = B*[number of SDRAM I/O pins] For DDR memories, the I/O frequency is twice the logic frequency. - -Using ASMI with Migen -===================== -TODO: please document me! \ No newline at end of file