ChISL chisel

 

Chip Interface Specification Language

 
 

Now live at chisl.io

Generate driver firmware

  • for SPI, I2C, UART, etc. interfaces

  • from single abstract definition

  • with output in C, C++, Python, etc.

  • including documentation

Why?

  • Abstract definition focuses on device details, avoids boilerplate

  • Driver firmware is automatically generated:

    • provably correct

    • documented

    • available in any programming language and versions

Other use-cases

  • Creation of searchable, browsable documentation

  • Debugging of new or existing hardware

  • Collaborative work on enhancements/features

  • User feedback results in actionable improvements with immediate updates

Workflow

chisl languages

Abstract definition of:

  • Registers

    • Bits

    • Bit definitions

    • Comments/documentation

  • Functions

Example:

REG '1 = ID:
  § This is the ID register §
  BIT 7..0 = ID

REG '1 = ID

Register address 1, name 'ID'

§ …​ §

A comment

BIT 7..0 = ID

Bits 7..0 get name 'ID'

Example 2

Bits can be named, documented, and individual values can be assigned to declarative names:

REG '2 = CONFIG:
  BIT 7 = Setting:
    § This is some device setting §
    1'b0 = OFF
    1'b1 = ON
  BIT 6..0 = Other

Connect