Getting Started with RISC-V

RISC-V is an exciting new open source processor design which will be of particular interest to developers of custom IP. This short overview will help you understand RISC-V,  its eco system, and the opportunities it presents.

RISC-V Foundation

Technical Overview

  • Wikipedia has a good technical overview, including a list of open-source implementations which could be useful for bootstraping a project instead of starting from scratch with the low-level instruction set specification (the “ISA”).

Some RISC-V Users

  • Google’s OpenTitan project seeks to provide an open-source silicon root of trust (RoT) using a RISC-V-based RoT design with integration guidelines for use in data center servers, storage devices and peripherals.
  • Kneron is a California-based company known for its impressive line of AI SoCs. Kneron’s KL530 targets the autonomous vehicle edge computing market specifically. In addition to a RISC-V AI-coprocessor, the chip also includes a neural processing unit, a Cortex M4 core for system control, an image signal processor, and a dedicated security block.
  • Western Digital is moving its consumption of IP cores (1B per year!) to RISC-V, as well as offering commercial RISC-V IP.
  • SiFive provides three families of RISK-V IP, covering high-performance application processors, area-optimized, low-power embedded 64- and 32-bit microcontrollers, as well as vector processors.
  • Apple posted in September for a “RISC-V High Performance Programmer” to work in their Vector and Numerics Group (which is responsible for “designing, enhancing and improving various embedded subsystems running on iOS, macOS, watchOS and tvOS.”). Candidates should be experienced with RISC-V architectures, and ideally have a working knowledge of NEON micro architecture in ARM CPU cores.

Mentions in Popular Media

Examples of Development Boards

Software Development


Please let me know in the comments section if you have found this overview useful,


Using Tryton to Manage Parts & Vendors

This post is one in a series on Tryton. Tryton is a mature open source business software generally called Enterprise Resource Planning software, or  ERP, which includes the functionality needed by an engineering design team to manage parts, vendors and bills of materials (BOMs), also known as product lifecycle management (PLM). 

Tryton is composed of a set of core modules with additional modules included as needed for less common functionality not all situations will require (in the world of software, generally less is better).

Two characteristics of high-tech product development are:

  • The road to large scale production is iterative, typically starting with a feasibility or proof-of-concept prototype, then one to three development prototypes, one or more pilot manufacturing builds, and finally production. 
  • Many of the parts incorporated in a product are Commercial-off-the-Shelf (COTS) items, manufactured by an Original Equipment Manufacturer (OEM) and sold through distributors and other re-sellers.

The process of design is itself iterative, working from the known, such as it needs to do this, it should be about X big, it must be able to provide X much output power, it must last X long between charges, the display must be X inches in size, it must be waterproof, it must be loud (or quiet), etc.

During development what is unknown will become known, and a design will emerge that meets requirements. At some point, it may become necessary to build a prototype to understand some aspect of the design in more detail, and design decisions made based on the prototype (generally either “that actually works great, don’t change a thing” or “that’s not good enough, find another solution”).  Building low volume prototypes efficiently is a detailed persnickedly job, missing only one is all that is needed to bring a finely tuned development or new product introduction (NPI) process to a grinding halt. 

A product is typically made from a mix of COTS parts and custom parts. Custom parts are used when no suitable COTS part exists or is unsuitable for one reason or another. Often custom parts are used to create a product identity, such as the enclosure, labelling, and user accessories, but they may also may be hidden, such as an internal mounting bracket or an integrated circuit that implements new technology. COTS items are typically general purpose electronics parts (e.g. resistors, capacitors, transistors, switches, display panels, many integrated circuits,  etc.) as well as general purpose hardware (e.g. screws and washers). The same OEM product is often available from several vendors, and often severa; OEM manufactures will produce a product similar enough be used interchangeably.  Custom parts will be sourced from the vendor selected to manufacture the custom part, while for COTS parts the designer must specify a source. Providing more sources will provide greater purchasing flexibility, which can be critical to staying on schedule when parts are in short supply or time is of the essence (or both).

A spreadsheet is often the first tool reached for to manage New Product Introduction (NPI) and new product bill of materials (BOMs).  If the product and part supply chain are simple, a spreadsheet approach will be manageable. However, a complex product structure, with separate sub-assemblies re-using common parts each with potentially multiple alternates and vendors, quickly eclipses a spreadsheet solution and a domain-specific Product Lifecycle Management (PLM) tool becomes necessary to prevent bottlenecks.

Tryton Modules

The figure below shows the Tryton standard modules. The modules needed for basic PLM and prototype manufacturing have been circled, and will support basic PLM and manufacturing. PLM support includes defining and managing parts and hierarchical BOMs, specifying approved sources for purchase, providing common access to part documentation such as OEM datasheets, engineering drawings and work instructions, and include a controlled change management  process when a design change is needed. Manufacturing support includes Material Requirements Planning (MRP), managing vendor Request-for-Quotations (RFQs), purchasing raw material, manufacturing and QA testing, product serialization if needed, and sales. The project management module has been included to report on product development, release and maintenance project costs, for control and business decision making.

Standard Tryton Modules Required for PLM and Prototyping Manufacturing


Swift Construction Company

The fictional Swift Construction Company (SCC) manufactures a radio receiver product called the Aircraft Wireless. The SCC designed the Aircraft Wireless, does the final product assembly and ships finished product to customers. The Aircraft Wireless contains a printed circuit assembly (PCA) with the radio electronics, which is assembled by an electronic contract manufacturer (ECM). The ECM is provided with a BOM for the electronics PCA,  and depending on the situation the ECM may be provided with a kit of parts, or the ECM may have to purchase the parts themselves (turn-key production).

The Aircraft Wireless product as sold to customers is SCC part number 100-0003 . This is the top-level part number and includes not only the Aircraft Wireless itself, but also the shipping box, user manual and included accessories.

The SCC has historically used a software PLM application called Parts&Vendors[1] (P&V) to document engineering designs. P&V was the eminant engineering PLM database of the 90’s for startups and small-to-medium (SME) businesses, but unfortunately Trilogy Design no longer exists and the SCC knows it is running on borrowed time and is looking for a suitable replacement. The SCC has selected Tryton as a potential replacement for P&V, and is starting a detailed evaluation process using their historical P&V workflows for reference.

Top-Level PN 100-0003 Assembly Tree


Workflows and User Stories

A variety of common worflows and user stories have been identified to explore using Tryton to understand Tryton’s basic behavior and identify any constraints.  A general description is provided here, each workflow will be described in detail in a separate post and linked from the heading once it is avaiable.

Please post a comment at the bottom giving any specific behaviors you would like to see explored.

Create a Part with Alternates and Sources

Identify one or more Mfr/MfrPN with a part, as well as one or more vendors that the Mfr/MfrPN can be purchased from and for what price.

PN 900-0006 is an axial diode, with three alternates specified, and a different vendor for each Mfr/MfrPN. The concept and basic requirements can be understood from how sources are managed in Parts&Vendors[2] (P&V).

P&V provides for a Vendor to be marked as the Primary vendor, and the cost of the item is driven by the entered vendor cost. This is effective during the engineering stage of a project when sources are first being identified, long before actual purchase, but having cost forecasts of known accuracy is vital to validate development. When the product transitions from design to production, costing will transition to standard model driven by purchase orders and receipt of product into inventory.

Sources for PN-900-0006 Diode
Sources for PN 900-0006 Diode


Parts generally need multiple units of measure (UOM) to be defined, and the relationship between them, for example the “use unit of measure” on a BOM for a particular epoxy catalyst might be in milli-litre, the “stock unit of measure” is 100ml bottles, and the “purchase unit of measure” is a case of 12 bottles. The units and their relationships must be defined corrrectly, and it may be necessary to consider round-off and calculation errors when chosing units, such as when wire purchased in a 19,300 foot spool and used in centimeters. 

New Units of Measure (UOM)

Capture Supporting Part Documents

It is convenient to capture documents associated with a part (such as manufacturer’s datasheets and engineering drawings) with the part for convenient access. As well, keeping ad hoc notes on a part can often provide crucial information to unravelling a future issue. 

Files associated with PN 900-0006 DIODE

Create a Bill of Materials BOM

PN 200-0001 (IND,830UH,AIRCRAFT WIRELESS) is the lowest-level sub-assembly in the  hierarchical Aircraft Wireless BOM.

PN 200-0001 Parts List

Make a Major Release (Revision)

Update a part or bill of materials using a controlled atomic workflow. Generate a report showing which parts not yet “released” (approved for use) within a product structure.  

Support an Alternate Assembly

If there are no true second sources for a Part, it may be possible to design the product such that the same function is maintained by use of some other non-interchangeable part. Using alternates in a controlled process will maintain traceability, which various regulated industries may require. 

As an example, assume a product with an internal power supply printed circuit board (PCB), which uses a particular monolithic AC/DC power supply module. The module is an “old” design, and has no direct alternates (mechanical and electrical) available, and the best electrical  alternate would require a new incompatible PCB. It also seems the module is getting harder to purchase, and because supply risk is increasing, which affects the abiliity of the enterprise to product product, it is desired to have an alternate process in place should the current module be unavailable, which is also a growth strategy until then.

A simple solution chosen is often to simply design a new PCB for the the best electrical alternate, up-rev the BOM to use the new PCB and module and don’t look back.  A better solution would be to create a new part number for a new PCB assembly, using the new AC/DC power supply brick and its own BOM and fab file set for the PCB, and recognise the new part number as an alternate for the original part number. This will allows running out of  raw and WIP materials as efficiently as possible, and provides traceability should the old PCB assembly be buld again (don’t say it will wouldn’t happen, I won’t believe you anyway).

Perform Simple Purchasing

A lot of PN 200-0001 (IND, 830UH, AIRCRAFT WIRELESS) must be manufactured to have in stock before the Aircraft Wireless PCA can be manufactured. Tryton production planning can be used to issue purchase orders for the raw material, but as there are only three parts it will be faster to purchase them manually.  

Manufacture an Edge Assembly

An edge assembly is one that does not contain sub-assemblies. The lowest level manufactured sub-assembly in the Aircraft Wireless is PN 200-0001, a custom 830uH inductor manufactured in-house by the SCC. 

Determine BOM Shortages for Manufacturing

Capture stock on hand by importing a stock count, and enter part purchase orders with expected delivery date. For a given date of manufacturing, generate a report showing required material taking into account stock-on-hand and parts on order.. 

Purchase an Assembled Printed Circuit Assembly

The assembled printed circuit assembly, or PCA (part number 200-0003) in the Aircraft Wireless is purchased in lots of 5 from an ECM. The SCC kits the necessary raw material for the build and consigns it to the ECM. When the finished PCAs are returned by the ECM, tey are received by the SCC, inspected, serialized and stocked in inventory.

Purchase Using a BOM

Generate a report of material required to manufacture a multi-level hierarchial BOM, taking into account stock on hand. Optionally generate purchase orders for required material taking into account minimimum stocking levels, minimum order quantities, price-quantity breaks, and order in multiples requirements. 

Sell a Serialized Product

This workflow explores serialized stock in the context of a customer purchase. B&E Submarines desires to purchase a spare parts kit for the Aircraft Wireless unit they previously purchased. A serialized circuit board is used in the assembly of the spare parts kit (preferably a phantom-type BoM to make the parts in it visible), which is then sold and delivered to B&E.

Sometime later, Ed Bentley calls from B&E. He says he found a circuit board, but he doesn’t know if it is the circuit board from the spares kit. Ed is not sure, but he thinks the original board might have failed and he swapped it with the one from the spare parts kit. Ed wants to know if the serial number on the board is the same as the board shipped in the spare parts kit he bought.

Report Use of Serialized Stock

Explore serial numbers in the context of a project. B&E Submarines plans to upgrade 5 of their submarines with Aircraft Wireless systems. A contract is negotiated between the SCC and B&E, and the SCC initiates a Project to capture all related activity (of which the physical receiver units are only one portion). Complete radio receivers PN 10000003 are manufactured, each with its own serial number, traceable to the serialized electronics circuit board within. The completed radio receivers are sold and delivered to B&E as part of the overall project.

Sometime later, Ed Bentley calls from B&E. He has a circuit board in his hand again, and wants to know where the serial number came from. Ed asks if the circuit board was from one of the 5 receivers delivered as part of the upgrade project.

Rent, Return, Inspect and Re-Stock a Field Support Kit

  • Create manufacturing order
  • Issue material to order (serialized PCA)
  • Deliver order to customer
  • Return order from customer
  • Inspect items, replace or repair as needed
  • Return material to stock (serialized PCA)

Act on Data from an IIoT Device

It is possible for an Industrial Internet of Things (IIoT) type device to interact directly with Tryton for a variety of tasks:

  • Create a service order when a device reports service is required in the case of non-optimal machinery operation.
  • Recognise asset transfer according to usage data a device  repots, such as sale of commodity such as electricity or oil, and automatically perform monthly customer billing.


[1] (active as of 2021-08-12)



Install Tryton using Docker on Ubuntu

The simplest method way to get Tryton up and running for a quick evaluation is to use the Docker image provided by the Tryton project on Ubuntu Linux, running as a virtual machine on a FreeBSD host.

Create Virtual Machine

Install Ubuntu 20.04 using the Ubuntu distribution DVD ISO and using the startup wizard configure appropriately.

Copy your user ssh key to the new server and disable password login.

Configure vm port forwarding.  Port forwarding with VirtualBox must be done with the vm powered off.

Name: ssh
Protocol: TCP
Host Port: 8000
Guest Port: 8000

Update Server OS

$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get dist-upgrade

Install Docker

$ sudo apt install

Install Tryton

$ sudo docker pull tryton/tryton

Start a PostgreSQL instance

The Tryton image will be pulled from library/postgres

$ sudo docker run --name tryton-postgres -e POSTGRES_PASSWORD=mysecretpassword -e POSTGRES_DB=tryton -d postgres

Setup the database

$ sudo docker run --link tryton-postgres:postgres -e DB_PASSWORD=mysecretpassword -it tryton/tryton trytond-admin -d tryton --all

The script will prompt for:

  • “admin” email for “tryton”
  • “admin” password for “tryton”

Store the password in a key vault for safe future reference.

Start Tryton Instance

$ sudo docker run --name tryton -p 8000:8000 --link tryton-postgres:postgres -e DB_PASSWORD=mysecretpassword -d tryton/tryton

Start Tryton cron Instance

$ sudo docker run --name tryton-cron --link tryton-postgres:postgres -e DB_PASSWORD=mysecretpassword -d tryton/tryton trytond-cron -d tryton

Create bash Startup Script

Without further configuration the Docker container will not start automatically when the server starts. While it is possible to configure Tryton to automatically start, I have created a simple bash script for convenience to start Tryton manually.

dale@starlord:~$ cat
# run using sudo
docker start tryton-postgres tryton tryton-cron