The Really Useful Software and Hardware Company (RUSHC)

RUSHC (Tel 831 621 0999   / andy@rushc.com / http://www.linkedin.com/in/awfox) is a consulting company which does a mix of Hw and Sw projects. 


What We Offer:

Unusually strong mix of logic design, compiler knowledge and algorithmic skills including:

  • Strong FPGA logic design skills. (Verilog, VHDL,AMD/Xilinx, Intel/Altera, Microsemi/ Actel). Multiple FPGA projects eg High Speed Serial I/O, Accelerators (especially using HLS), Audio (including mclk recovery using various plls and audio format s/p dif, i2s and PCIe for host/audio interface).

  • LLVM development capability (including both front end operations on LLVM IR and backend code generation).

  • Experience with processor, DSP, high speed serial, memory interface logic design.

  • IP core development.

  • Strong algorithmic knowledge and experience in Logic Synthesis, Verification and Technology Mapper CAD tool development. Unusually strong in synthesis with complete synthesis systems developed for multiple clients, some published eg:  https://dl.acm.org/citation.cfm?id=2068721  and http://www.ispd.cc/slides/slides09/s5p2.pdf

  • Embedded processor project development and debug



Checkout some of our work !

Recent opensource contributions can be found here:
  • https://github.com/YosysHQ/yosys/blob/main/passes/techmap/booth.cc (radix 4 booth with wallace tree as module generator working on yosys structures).
  • https://github.com/the-openroad-project (been working on supporting hierarchy throughout flow, also some work on logic resutructuring).
Recently we have developed three interesting packages (mail andy@rushc.com to be added to git hub access list) including:
  1. Veriapps -- a package of chip design related algorithms working on verific netlists and using the UC Berkeley abc system. Includes formal verification of timing exceptions, lut mapping, asic mapping and a clean package for building abc structures from Verific netlists. Used extensively as a basis for EDA offerings by multiple clients.  paper:  http://www.techdesignforums.com/practice/technique/verific-templates-veriapps-abstraction/   https://github.com/andyfox-rushc/veriapps.git
  2. Powercompiler -- an llvm compiler flow for generating netlists of "Basic Block Processing Elements".  https://github.com/andyfox-rushc/powercompiler.git
  3. Accelerators --In the  past we did some work on using High Level Synthesis for accelerator design -- basically an array of PE's specified using C/System C: http://www.electronicdesign.com/eda/high-level-synthesis-uncovers-ppa-tradeoffs-various-hardware-accelerators  video: https://www.youtube.com/watch?v=tNzqo-pvLCg   We have recently been accelerating some interesting algorithms directly in Xilinx Ultrascale hardware using SDAccel and Vivado HLS. https://github.com/andyfox-rushc/sataccel.git  https://github.com/andyfox-rushc/matrixmulaccel.git As well as further exploring and extending our PE arrays to best use the Xilinx UltraScale + architectures. 
    Some documentation and other write ups on these projects can be found below. 

Document Library

NameDescription
DocumentLogic tools -- utilities for manipulating verific netlists. Documentation.Word Document. Logic tools is a package for manipulating Verific netlists including a source level hook up to abc (to get abc see: http://www.eecs.berkeley.edu/~alanmi/), various sat-sim utilities (verification, clock gate extraction) and lots of handy network manipulation functions all written in an easy to understand and maintain portable c++ style. No verific headers nor sources are included in this binary package so to use it you must first obtain a license (and they offer evaluation binary ones) from Verific.
Documentlogictools.zipZip of binary version of logictools library.
Documenttest_main.txtC++ sample of using logic tools library
DocumentAccelerators and HLSShort paper on using HLS for accelerator evaluation
Documenthls accelerator slidesSlides for notes on HLS and accelerators
Documentpowercompiler.pdfNotes on the power compiler (Basic Block PE generation)
DocumentveriappsVerific Applications using abc for formal verification, synthesis
Recent projects:

Acceleration of bitnet on novel logical datapath
High speed serial i/o (clock extraction, oversampling)
Various audio projects (s/p dif, i2s, pcie, packet queuing, routing).
LLVM compiler for new Machine Learning Chip
Novel dataflow chip simulator
Backend placement and routing system for dataflow chip (a star algorithm + annealing)
Matlab library for DUC/DDC for comms
Logic design (mostly Verilog rtl with FPGA implementations):
ARM peripherals (SPI, watchdog, timers, real time control).
Power PPC interfaces and AES decryption. (Altera tools).
Processor design (16 bit 2 stage pipeline processor: alu, reg file, controller, interrupt controller, memory i/f, i/o, bus interface).
Verilog 2001, ISE Xilinx prototype emulated. 1st silicon on ASIC.
DSP (Matlab, Xilinx system generator) for wireless base stations.

Logic optimization:
Rewriting logic for self-timed micro-pipelines (logic co-factoring, logic re-encoding).

Physical logic optimization (Encoding logic decomposition alternates, choice network optimization, logic remapping during placement, SAT-sim optimizations)

Formal verification:
Formal logic verification (Fixed point algorithm implementation, support for constraint solver, linerarization, convergence).
Formal verification of timing exceptions
Formal verification of Clock Domain Crossings (CDC)

Older projects:

Logic processing system for Hybrid ASIC/FPGA:
(i) Logic restructuring (bdd based)
(ii)Verification (bdd compare)
(iii)Retiming and pipelining algorithms.
(iv)Lut mapper/packer (cut-map type with area recovery)
(v) HDL (Verilog) processing sub-system
(vi) Timing analysis sub-system.

Logic Design for high speed serial links:
VHDL Design self-id section of IEEE 1394phy b.
Infiniband Phy model (serdes, pll, 8b/10b enc/dec, elastic buffer, training machines, system C).

Optimization of lut-mapper (flowmap type algorithm) in commercial 3rd party EDA system.

Embedded design: one wire protocol for cell phone battery pack.

Logic synthesis engine for novel dsp.

Even older projects:

Verilog Designs (packer queue, cam, Banyan Batcher sorting network)
Chip verification (Symbolic simulation and debug of novel DSP)
RTL processing sub-system (for reconfigurable computing chip)
Technology mappers (4 commercial including: Lut -based, ECL, Mux based, Reed-Muller xor tree mapper)
Hardware emulation (Flat panel controller model)
VHDL macro design.

For more information e-mail andy@rushc.com and see http://www.linkedin.com/in/awfox