Over the last few months, I have written several blogs which examine the key aspects of setting up and running your own consultancy/company. In these blogs we have examined a wide range of subjects from cashflow and insurance, to processes and estimating.
In this blog we are going to take a look at tools and IT Infrastructure which may be needed to run a functional company. Just a heads up that some of the tools mentioned may be expensive while others are not. I have selected what works for me and my business, and it might be slightly different for you of course.
To get started, we need to define the services which you want to offer. At Adiuvo, we offer SoC/FPGA design, electronic circuit board design and software development.
To provide these services, we need a range of software applications which cover everything project management to implementation. At a high level, we can group the tools into the function they help support.
Project Management – Planning and schedules, bug tracking, documentation and change control.
System Engineering – Requirement management, architectural design, flow and sequence diagrams.
Design Capture – This includes editors, source control, technical documentation and comparison tools.
Design Verification – Simulation of the design to verify requirements are achieved.
Design Implementation Tools – Vivado, Vitis, PetaLinux etc.
When it comes to project management, bug tracking and documentation, we use a cloud-based application called Atlassian. This enables the data to be stored centrally (unless of course the project prohibits it). Typically we store our company processes, how-to guides, IP documentation, and project documentation in Atlassian. Using Jira, we are able to manage the project and track issues and bugs on our projects. This environment provides us with a central repository which employees, contractors and partners can access.
Readers of the blog will be aware that I am a big advocate of systems engineering. To help perform our systems engineering tasks we use Enterprise Architect which enables us to manage requirements, create system models for model-based engineering and even generate architectural/structural VHDL code.
When it comes to design capture, we use VSCode to write both our RTL and test benches. To ensure we have source control, we use Bitbucket and GitHub. We have several add ons with VSCode such as TerosHDL to help create documentation, Python and remote development add ins etc. To further aid our interest in model-based design, we have also invested in MathWorks MATLAB and Simulink along with HDL coder and a range of tool boxes which enable us to go from model to HDL for an array of applications from image and signal processing to machine learning inference.
One of the key things you need if offering professional design services is a simulator. This is especially true if you wish to work with frameworks such as cocotb, UVVM, OSVVM or UVM.
We use ModelSim DE when simulation is necessary because it provides dual-language support and provides code coverage which is essential for many of our mission-critical developments. To keep costs sensible, we also often use GHDL and Vivado simulator. In fact, we used these pretty much exclusively for many years. Along with simulation, we also use Blue Pearl Visual Verification Suite for static analysis, coding rules enforcement and CDC verification.
Of course, when it comes to implementation of the design, we use Vivado and Vitis with Enterprise and Model Composer licenses.
When it comes to board design, we often alternate between Altium for professional projects and KiCAD for designs we intend to make open source. Our Leonidas board was designed in KiCAD, for example.
When purchasing tools, you need to work out how you want to purchase them (i.e., will you pay annually or purchase perpetual licenses). Whenever possible I try to purchase a perpetual license. This can reduce your risk if for example, it’s a difficult year and the company is unable to afford this particular capability any longer but you still have maintenance and support to pay for. This approach does, however, come with a larger upfront payment, so it’s one to discuss with your accountant.
Outside of the tools, we also need to consider the IT infrastructure necessary to effectively use these software tools. This includes VPN, remote access and enabling technologies such as continuous integration. By default, we use high-end laptops (typically XPS) to ensure we can create, build and simulate our designs. For larger and more complex builds, however, we have several high-performance machines in our office that we can access via a VPN to perform builds and simulations.
One key takeaway from this is that I have invested in tools and infrastructure slowly over the last nine years. It’s possible to start out using free and open-source development tools and grow in capability as your customer base and reserves grow.
Workshops and Webinars
If you enjoyed the blog why not take a look at the free webinars, workshops and training courses we have created over the years. Highlights include
Professional PYNQ Learn how to use PYNQ in your developments
Introduction to Vivado learn how to use AMD Vivado
Ultra96, MiniZed & ZU1 three day course looking at HW, SW and Petalinux
Arty Z7-20 Class looking at HW, SW and Petalinux
Mastering MicroBlaze learn how to create MicroBlaze solutions
HLS Hero Workshop learn how to create High Level Synthesis based solutions
Perfecting Petalinux learn how to create and work with petalinux OS
Embedded System Book Do you want to know more about designing embedded systems from scratch? Check out our book on creating embedded systems. This book will walk you through all the stages of requirements, architecture, component selection, schematics, layout, and FPGA / software design. We designed and manufactured the board at the heart of the book! The schematics and layout are available in Altium here Learn more about the board (see previous blogs on Bring up, DDR validation, USB, Sensors) and view the schematics here.
Sponsored by AMD
Комментарии