Experience with technologies below, and numerous others not mentioned, so ask for specific requirements.
FPGA brands
Major FPGA brands and the related tools for:
- Altera
- Xilinx
- Lattice
Architectural modelling
Creation of architectural model, based on mathematical descriptions, and high level design principles, in order to determine architecture and estimate resource for resulting design.
Ethernet and similar packet based communication
Architecture, design, and implementation of Ethernet and similar packet based communication systems, using SERDES technology and various IP blocks and custom design, for decoding at various ISO layers and deep packet inspection.
Image-stream processing
Mathematical operations on high-speed image streams, applying operations like convolution matrix, conversion through tables, bilinear-interpolation, and perspective correction.
CPU system
Embedded CPU system design, implementation and interface, with distributed bus connections for custom modules.
DDR memory interface
Architecture, design, and implementation of DDR memory interface, for various DDR revisions. These interface are usually implemented through the specific hard IP block available in the FPGA brand, and the PCB interface must be made correct for reliable high speed operation.
Asynchronous design and Clock-Domain-Crossing (CDC)
Asynchronous design and Clock-Domain-Crossing (CDC) implementation is a small but crucial design part of the system, and can result in sporadic and tough bugs if not implemented correctly.
Static Timing Analysis (STA) and timing closure
Timing analysis of the finished design is required for reliable operation across voltage, temperature and process ranges.
Proven design methodology
Use of well-defined and proven design methodology results in a predictable design implementation with fewer bugs.
High level verification
Verification quality can be increased and the time can be reduced significantly through use of high level verification, through use of for example regressions tests, advanced test benches, self-checking tests, assertion based verification, random stimuli, and reference models.
Automating synthesis and verification
Running the synthesis and verification using self checking and automated scripts speeds up repeated runs, with the advantage that less error-prone human interaction is made :-)