

dsptools is one step in the right direction, with its ready-made traits for adding interfaces for a variety of bus protocols. Queues and shift registers are useful, but Chisel libraries should continue beyond those to offer frameworks that conform to the user's ultimate requirements more easily. So we have to add in more of these steps and take hardware generators a step further. So it feels like there's an owl-drawing problem, where the circles are the existing languages and documentation, and the owl is the processor. We don't want to just design hardware but also want to use them to run programs written by ourselves and others.

The abundance of open specifications, toolchains, and compatible software make processors a rewarding project. This is a problem because creating a processor is a logical first goal of a new designer. The concurrency of hardware is a hard thing to wrap your head around. Then the design becomes significantly more complex, especially for software developers, such as myself, who write mostly procedural programs. Improving performance with techniques such as pipelining or parallelization increase the number of elements that have to work together at all times. Interfaces between memories and caches and other blocks require synchronization or diplomacy, which involves keeping track of valid and/or ready signals in addition to internal state. The simple circuits that are taught in tutorials and bootcamps are fine for getting off the ground, but there is a big gap between those and what's required to create a processor or any block that's part of a larger system. Finally, Scala is a powerful language with many conveniences for writing clear and concise code.Īll of that being said, there are difficulties with hardware design that even Chisel does not fully address.
#WPILIB SMARTDASHBOARD PUTDATA VERIFICATION#
The testing facilities that come standard also enable verification at an early stage, which appeals to me as a Test-Driven Development fanatic.

The basic building blocks provided by the language and utilities make it easy to get started creating hardware from scratch.
#WPILIB SMARTDASHBOARD PUTDATA HOW TO#
The abundance of open-source Chisel projects also provide valuable examples of how to use certain features. The learning process for Chisel was much improved with the extensive documentation, including the Bootcamp and API docs. Though my knowledge of both languages is still limited, Chisel's focus on hardware generation rather than description satisfies my desire to parameterize and automate everything in sight. As a software developer who has dabbled in creating hardware only occasionally so far, I've found it much more enjoyable to learn and use than Verilog. First, I just want to say that I really like Chisel.
