nan-gate
18 months agoFix synth_nan help message develop
Cassie Jones [Thu, 12 Mar 2020 05:01:41 +0000 (01:01 -0400)]
Fix synth_nan help message

18 months agoAdd -retime and -pre-flatten args
Cassie Jones [Fri, 6 Mar 2020 23:10:53 +0000 (00:10 +0100)]
Add -retime and -pre-flatten args

These are the synthesis options that I wanted to be able to run when I
added the -nosynth option, so I'm including them here.

18 months agoAdd -nosynth flag to skip internal synthesis
Cassie Jones [Fri, 6 Mar 2020 23:04:33 +0000 (00:04 +0100)]
Add -nosynth flag to skip internal synthesis

This is useful if you want to have control the initial coarse-grained
synthesis, you can disable the synthesis that synth_nan does and provide
your own.

18 months agoAdd README.md
Cassie Jones [Fri, 6 Mar 2020 22:24:51 +0000 (23:24 +0100)]
Add README.md

18 months agoAdd "mult" examples
Cassie Jones [Fri, 6 Mar 2020 22:24:38 +0000 (23:24 +0100)]
Add "mult" examples

18 months agoSupport multiple synthesis widths
Cassie Jones [Fri, 6 Mar 2020 21:53:14 +0000 (22:53 +0100)]
Support multiple synthesis widths

The original NaN gates paper describes 3-bit and 4-bit floating point
formats. The original synthesis was hard-coded for 3-bit synthesis, but
technically 5-bit floats are the smallest legal floating point values.
Allowing for different synthesis provides opportunities to compare the
different results.

18 months agoChange install directory
Cassie Jones [Fri, 6 Mar 2020 21:45:01 +0000 (22:45 +0100)]
Change install directory

Plugins in the yosys-plugins project install themselves into
datdir/plugins/..., so we should do the same.

Yosys seems to support this specifically, so now we can refer to the
plugin as simply "nangate" instead of specifying the full path. Use:

    yosys -m nangate

Or in your synthesis scripts, include:

    plugin -i nangate

18 months agoDo NaN synthesis pattern matching via attributes
Cassie Jones [Fri, 6 Mar 2020 17:29:46 +0000 (18:29 +0100)]
Do NaN synthesis pattern matching via attributes

The previous implementation of NaN synthesis used matching on cell
types, which wouldn't scale with adding support for larger cell types.
Using attributes allows for simply adding the appropriate width
attributes and figuring things out from there.

18 months agoFix errors in the synth_nan help message
Cassie Jones [Thu, 5 Mar 2020 17:25:26 +0000 (18:25 +0100)]
Fix errors in the synth_nan help message

18 months agoAdd install, use the installed cell libs
Cassie Jones [Wed, 4 Mar 2020 22:43:51 +0000 (23:43 +0100)]
Add install, use the installed cell libs

The extension needs to load a cell library in order to tech-map things,
and that means having a Verilog file at a locatable path. The Yosys
built-ins put them in the <share>/yosys directory, and so we install
things there and load them from there for convenience.

Using a path +/<path> will be rewritten inside Yosys to load from
<share>/yosys/<path>. I add a nangate/ sub-directory for namespacing
purposes during the install, and load things from +/nangate/<file>.

2 years agoImplement yosys passes to synthesize to NaN gates
Cassie Jones [Fri, 26 Apr 2019 06:01:46 +0000 (02:01 -0400)]
Implement yosys passes to synthesize to NaN gates