SoC Roadmap
From Milkymist Wiki
[edit] Milkymist SoC 0.x series
[edit] 0.1 (August 20th, 2009)
- First release (pre-alpha)
- Can render a simplified version of "Geiss - Cosmic Dust 2"
- Xilinx ML401 support only
[edit] 0.1.1 (August 24th, 2009)
- Support of a small SoC on the Avnet Spartan-3A board for educational purposes (http://www.tmplab.org/wiki/index.php/FPGA_Workshop)
- Minor bugfixes
[edit] 0.1.2 (September 12th, 2009)
- BIOS boot screen
- Chroma key support in TMU
- Documentation for TMU improvements in 0.3
- Minor bugfixes
[edit] 0.1.3 (November 14th, 2009)
- Directory reorganization
- GPLv3 license
- Preliminary support for external software emulation library
- Support for warm boot (from Takeshi)
- Support for PS/2 (from Takeshi)
- Edge-sensitive interrupts on all cores
- Documentation update
[edit] 0.2 (January 16th, 2010)
- Support for Ethernet (using Opencores ethmac)
- PS/2 write support (Takeshi)
- Hard reset support
- Dropped support for the Avnet Spartan-3A board, now available as a fork
- flterm 1.1 (now has default load addresses)
- Upgraded to LatticeMico32 3.5
- Reduced drive strength for SystemACE
- New splash screen
[edit] 0.2.1 (January 31st, 2010)
- Fixed DRAM write-to-read timing violation (Zeus)
- Improved DRAM read-to-write and write-to-write timing (Zeus)
- Cache coherent VGA framebuffer transactions
- Minor fixes and cleanups
[edit] 0.3 (February 18th, 2010)
- Major TMU redesign (TMU2):
- Improved performance (2-3 times faster)
- Rectangular rendering primitive
- Bilinear texture filtering
- Texture wrapping
- Subpixel texture resolution
- New vertex format
- PFPU modified to support the new TMU vertex format
- Additional MilkDrop features in the demo firmware:
- More wave modes
- Borders
- Motion vectors (experimental)
- Texture wrapping
- Random preset chooser
- Fine-grained decay
[edit] 0.4 (March 8th, 2010)
- New, light Ethernet MAC (Minimac)
- TFTP network boot from the BIOS
- Fixed TMU2 interpolation (bug reported by Jacky)
[edit] 0.5 (April 18th, 2010)
- System capabilities register
- Memory performance monitoring (retrieves memory bandwidth utilization and average memory access time from the live system)
- New PFPU instructions:
- QUAKE (Quake-III style inverse square root approximation)
- IF (conditional)
- TSIGN (sign manipulation)
- Translucency (alpha) support in TMU
- Faster FastMemoryLink arbiter
- Fixed DRAM write-to-read (tWTR) timing violation on fully pipelined transfers
- New FPVM (Floating Point Virtual Machine) library for runtime compilation of PFPU programs
- High-level API makes it easy to use the PFPU
- Supports addition, subtraction, multiplication, fast inverse square root, square root, division (experimental), modulo (experimental), integer/float conversions, comparisons (above/below/equal), conditional statements (if), absolute value, sine, cosine, integer part, min(), max()
- New patch parser
- New renderer features
- Configurable per-vertex equations
- Video echo
- Warp
- Scale (sx/sy)
- Q variables
- New patches included
- irender command to input patch code on the serial console
- Build host tools using clang instead of GCC
- Software bugfixes
- TFTP boot in QEMU
- Correct placement of motion vectors
- LCD user interface race conditions
- Renderer stop race conditions
[edit] 0.5.1 (June 10th, 2010)
- Complete thesis report in documentation
- 8kB->16kB texel cache
- TMU performance monitoring
- Fixed texel cache initialization bug
- Fixed handling of variables read before written in per-vertex equations
- All peripherals enabled by default (including Ethernet)
- New SDRAM initialization system, easy compatibility with 3rd party bootloaders
- Removed on-chip SRAM (no longer needed)
- Increased Minimac FIFO sizes to prevent xflows
- Faster line drawing code
- Now comes with 62 patches
[edit] 0.6 (June 27th, 2010)
- Support for the Milkymist One
- OSD patch selection
- New asynchronous FIFO design
- Improved TMU2 rounding mode
- Improved decay handling
- 16kB->32kB texel cache
- 32kB L2 cache
- Smaller and direct mapped L1 cache
- Limit FPS to 25 instead of 30 to ensure smooth execution on more presets
- More patches
[edit] 0.7 (July 23rd, 2010)
- Support for video input (not used by the demo renderer)
- Support for MIDI (not used by the demo renderer)
- Support for VESA DDC (not used by the demo renderer)
- Support for RC5 infrared remote control (usable in OSD menu)
- Flash write support (contributed by Michael Walle)
- New memory map (contributed by Michael Walle)
- Experimental "softusb" USB core (no functional firmware yet)
- Increased Minimac FIFO sizes
- Improved netboot code
[edit] 0.8 (August 14th, 2010)
- Support for DMX
- Support for memory card
- Support for Synplify synthesis
- Fixed a bug that prevented access to the upper 64M of SDRAM. The whole 128M are addressable now.
- Rewritten USB PHY
- All AVR Classic instructions in Navré, except conditional jumps on I/O registers
- Navré bugfixes
[edit] 0.9 (October 3rd, 2010)
- Extensive Navré core testing
- Navré bugfixes
- Wishbone burst support in L2 cache
- Crossbar Wishbone switch
- LM32 JTAG debugger support (Michael Walle)
- Support for USB input devices (mouse + keyboard)
- Text console in BIOS and demo firmware
- MIDI THRU support
- New memory map (Michael Walle)
- New flash map
- Standby and rescue bitstreams
- ICAP write support
- Fixed DDC EDID read, now works reliably with all monitors
- Reduced frequency to 80MHz
- Memory tester core
- Board revision readout
- Fixed SDRAM reset bug
- Code cleanups
[edit] Milkymist SoC 1.x series
[edit] 1.0RC1 (November 18th, 2010)
- USB bugfixes
- MAC address readout
- SoC version readout
- Debugger bugfixes (Michael Walle)
- Documentation update
[edit] 1.0RC2 (December 23rd, 2010)
- Fix makeraw extension detection
- Do not require LCK_cycle for standby bitstream
- TMU: additive drawing
- Generate byte-swapped raw bitstream images for Flickernoise flashing
- Non-essential cores disabled in standby bitstream to ease timing closure
[edit] 1.0RC3 (April 6th, 2011)
- Support video mode switching up to 1024x768
- Support WM9707 audio codec
- Support GDB serial debugging (Michael Walle)
- flterm GDB pass-through (Michael Walle)
- Full support for UrJTAG loading and flashing
- Support LZMA decompression of flash boot images
- GSI LM32 patches
- Re-enabled all cores in rescue mode (works with ISE 13.1)
- Support PCB revision 2 (RC3 run)
- Memory card bugfixes
[edit] 1.0RC4 (May 23rd, 2011)
- New Ethernet MAC (minimac2)
- BIOS: report rescue mode to booted application
- BIOS: disable splash screen display with a short press of the power button
- GDB: fix max packet size reporting
- Standby: debounce keys, only power up on rising edge
[edit] 1.0 (July 10th, 2011)
- Fixed RC5 sampling point
- Fixed BT656CAP IRQ timing
- Reset Ethernet PHY during BIOS startup
- gdbstub: disable break on entering debug ROM
[edit] 1.0.1 (November 13th, 2011)
- Catch NULL pointers and generate bus errors
- flterm: log support (Xiangfu Liu)
- LM32: update to upstream 3.6 sources (Michael Walle)
- Enable ISE 13.2 BRAM silicon bug workaround (Xilinx AR 39999)
- gdbstub: save and restore IE/IM/IP (Michael Walle)
- gdbstub: fix off-by-one error (Michael Walle)
[edit] 1.1 (November 29th, 2011)
- TMU prefetch
- New UART core (Michael Walle)
- USB firmware bugfixes (Werner Almesberger)
- USB DPLL fixes
- 8K softusb program memory
- Auto-on
- gdbstub: set correct uart speed (Michael Walle)
- SoC frequency readable from sysctl (Michael Walle)
- Writable gdbstub (Michael Walle)
- flterm: make kernel image optional (Michael Walle)
[edit] 1.2 (March 1st, 2012)
- Experimental support for USB-MIDI devices (Werner Almesberger)
- New PFPU compiler (Werner Almesberger)
- Adjusted VGA timings for compatibility with more screens (Xiangfu Liu)
- Removed demo firmware
- Makefile cleanup (Werner Almesberger, Xiangfu Liu)
[edit] Other ideas
- More precise VGA timings
- Support for video encoding and network streaming
- Support for scaled video output
- Support for color inversion in TMU
- Digital video output
[edit] Milkymist SoC 2.x series?
- PHT: Pluggable HDL Templates (automatically generates interconnect, arbiters, etc.)
- HPDMC2: out-of-order SDRAM controller with QoS and page hit optimization
- Split transaction FML2 bus
- Further resource-optimized CSR2 bus
- Separate DMA backbone
- Scatter-gather DMA controller
- Mico32 MMU
- 32bpp RGBA graphics everywhere
[edit] Milkymist SoC 3.x series?
- On-the-fly hardware compilation of shaders + partial reconfiguration