yosys.git
5 years agoAdd 'cinput' and 'coutput' to symbols file for boxes
Eddie Hung [Mon, 27 May 2019 18:38:52 +0000 (11:38 -0700)]
Add 'cinput' and 'coutput' to symbols file for boxes

5 years agoFix "a" connectivity
Eddie Hung [Sun, 26 May 2019 21:14:13 +0000 (14:14 -0700)]
Fix "a" connectivity

5 years agoBlackboxes
Eddie Hung [Sun, 26 May 2019 18:32:02 +0000 (11:32 -0700)]
Blackboxes

5 years agoABC9 to call &sweep
Eddie Hung [Sun, 26 May 2019 18:31:35 +0000 (11:31 -0700)]
ABC9 to call &sweep

5 years agoFix padding, remove CIs from undriven_bits before erasing undriven POs
Eddie Hung [Sun, 26 May 2019 18:26:38 +0000 (11:26 -0700)]
Fix padding, remove CIs from undriven_bits before erasing undriven POs

5 years agoTypo
Eddie Hung [Sun, 26 May 2019 10:17:20 +0000 (03:17 -0700)]
Typo

5 years agoMuck about with LUT delays some more
Eddie Hung [Sun, 26 May 2019 09:52:48 +0000 (02:52 -0700)]
Muck about with LUT delays some more

5 years agoCombine ABC_COMMAND_LUT
Eddie Hung [Sun, 26 May 2019 09:47:06 +0000 (02:47 -0700)]
Combine ABC_COMMAND_LUT

5 years agoFix "a" extension
Eddie Hung [Sun, 26 May 2019 09:44:36 +0000 (02:44 -0700)]
Fix "a" extension

5 years agoFix "write_xaiger", and to write each box contents into holes
Eddie Hung [Sun, 26 May 2019 05:34:50 +0000 (22:34 -0700)]
Fix "write_xaiger", and to write each box contents into holes

5 years agoMerge remote-tracking branch 'origin/master' into xc7mux
Eddie Hung [Sun, 26 May 2019 03:50:47 +0000 (20:50 -0700)]
Merge remote-tracking branch 'origin/master' into xc7mux

5 years agoMerge pull request #1041 from YosysHQ/clifford/fix1040
Clifford Wolf [Sat, 25 May 2019 17:17:05 +0000 (19:17 +0200)]
Merge pull request #1041 from YosysHQ/clifford/fix1040

Fix handling of offset and upto module ports in write_blif

5 years agoFix handling of offset and upto module ports in write_blif, fixes #1040
Clifford Wolf [Sat, 25 May 2019 15:45:14 +0000 (17:45 +0200)]
Fix handling of offset and upto module ports in write_blif, fixes #1040

Signed-off-by: Clifford Wolf <clifford@clifford.at>
5 years agoTry new LUT delays
Eddie Hung [Sat, 25 May 2019 03:39:55 +0000 (20:39 -0700)]
Try new LUT delays

5 years agoAdd &fraig and &mfs back
Eddie Hung [Fri, 24 May 2019 22:10:18 +0000 (15:10 -0700)]
Add &fraig and &mfs back

5 years agoTranspose CARRY4 delays
Eddie Hung [Fri, 24 May 2019 21:09:15 +0000 (14:09 -0700)]
Transpose CARRY4 delays

5 years agoAdd proper error message for btor recursion_guard
Clifford Wolf [Fri, 24 May 2019 14:22:34 +0000 (16:22 +0200)]
Add proper error message for btor recursion_guard

Signed-off-by: Clifford Wolf <clifford@clifford.at>
5 years agoMerge remote-tracking branch 'origin/master' into xc7mux
Eddie Hung [Thu, 23 May 2019 20:38:04 +0000 (13:38 -0700)]
Merge remote-tracking branch 'origin/master' into xc7mux

5 years agoMerge remote-tracking branch 'origin/eddie/opt_rmdff' into xc7mux
Eddie Hung [Thu, 23 May 2019 20:37:53 +0000 (13:37 -0700)]
Merge remote-tracking branch 'origin/eddie/opt_rmdff' into xc7mux

5 years agoMerge pull request #1036 from YosysHQ/eddie/xilinx_dram
Eddie Hung [Thu, 23 May 2019 20:13:10 +0000 (13:13 -0700)]
Merge pull request #1036 from YosysHQ/eddie/xilinx_dram

Add "min bits" and "min wports" to xilinx dram rules

5 years agoFix spacing
Eddie Hung [Thu, 23 May 2019 19:58:30 +0000 (12:58 -0700)]
Fix spacing

5 years agoAdd "min bits" and "min wports" to xilinx dram rules
Eddie Hung [Thu, 23 May 2019 18:32:28 +0000 (11:32 -0700)]
Add "min bits" and "min wports" to xilinx dram rules

5 years agoAdd opt_rmdff tests
Eddie Hung [Thu, 23 May 2019 18:26:38 +0000 (11:26 -0700)]
Add opt_rmdff tests

5 years agoopt_rmdff to work on $dffe and $_DFFE_*
Eddie Hung [Thu, 23 May 2019 18:26:18 +0000 (11:26 -0700)]
opt_rmdff to work on $dffe and $_DFFE_*

5 years agoAdd whitebox support to DRAM
Eddie Hung [Thu, 23 May 2019 15:58:57 +0000 (08:58 -0700)]
Add whitebox support to DRAM

5 years agoMerge pull request #1031 from mdaiter/optimizeLookupTableBtor
Clifford Wolf [Thu, 23 May 2019 11:52:48 +0000 (13:52 +0200)]
Merge pull request #1031 from mdaiter/optimizeLookupTableBtor

Optimize numberOfPermutations

5 years agoOptimize numberOfPermutations
Matthew Daiter [Wed, 22 May 2019 21:14:13 +0000 (17:14 -0400)]
Optimize numberOfPermutations

5 years agoMerge pull request #1019 from YosysHQ/clifford/fix1016
Clifford Wolf [Wed, 22 May 2019 11:29:04 +0000 (13:29 +0200)]
Merge pull request #1019 from YosysHQ/clifford/fix1016

Add "wreduce -keepdc"

5 years agoMerge pull request #1021 from ucb-bar/fixfirrtl_shr,neg
Clifford Wolf [Wed, 22 May 2019 10:01:19 +0000 (12:01 +0200)]
Merge pull request #1021 from ucb-bar/fixfirrtl_shr,neg

Fix static shift operands, neg result type, minor formatting

5 years agoshift register inference before mux
Eddie Hung [Wed, 22 May 2019 09:36:28 +0000 (02:36 -0700)]
shift register inference before mux

5 years agoFix/workaround symptom unveiled by #1023
Eddie Hung [Wed, 22 May 2019 01:50:02 +0000 (18:50 -0700)]
Fix/workaround symptom unveiled by #1023

5 years agoMerge pull request #1024 from YosysHQ/eddie/fix_Wmissing_braces
Eddie Hung [Wed, 22 May 2019 01:20:58 +0000 (18:20 -0700)]
Merge pull request #1024 from YosysHQ/eddie/fix_Wmissing_braces

5 years agoRename label
Eddie Hung [Wed, 22 May 2019 01:20:31 +0000 (18:20 -0700)]
Rename label

5 years agoTry again
Eddie Hung [Wed, 22 May 2019 00:20:19 +0000 (17:20 -0700)]
Try again

5 years agoFix warning
Eddie Hung [Tue, 21 May 2019 23:26:20 +0000 (16:26 -0700)]
Fix warning

5 years agoInstead of MUXCY/XORCY use CARRY4 (with timing)
Eddie Hung [Tue, 21 May 2019 23:19:45 +0000 (16:19 -0700)]
Instead of MUXCY/XORCY use CARRY4 (with timing)

5 years agoPad all boxes so that all input/output connections specified
Eddie Hung [Tue, 21 May 2019 23:19:23 +0000 (16:19 -0700)]
Pad all boxes so that all input/output connections specified

5 years agoModify LUT area cost to be same as old abc
Eddie Hung [Tue, 21 May 2019 21:31:19 +0000 (14:31 -0700)]
Modify LUT area cost to be same as old abc

5 years agoMerge remote-tracking branch 'origin/master' into xc7mux
Eddie Hung [Tue, 21 May 2019 21:21:00 +0000 (14:21 -0700)]
Merge remote-tracking branch 'origin/master' into xc7mux

5 years agoFix static shift operands, neg result type, minor formatting
Jim Lawson [Tue, 21 May 2019 20:04:56 +0000 (13:04 -0700)]
Fix static shift operands, neg result type, minor formatting
Static shift operands must be constants.
The result of FIRRTL's neg operator is signed.
Fix poor indentation for gen_read().

5 years agoMerge remote-tracking branch 'upstream/master'
Jim Lawson [Tue, 21 May 2019 19:47:55 +0000 (12:47 -0700)]
Merge remote-tracking branch 'upstream/master'

5 years agoAdd "wreduce -keepdc", fixes #1016
Clifford Wolf [Mon, 20 May 2019 13:36:13 +0000 (15:36 +0200)]
Add "wreduce -keepdc", fixes #1016

Signed-off-by: Clifford Wolf <clifford@clifford.at>
5 years agoMerge pull request #1017 from Kmanfi/bigger_verilog_files
Clifford Wolf [Sat, 18 May 2019 14:54:47 +0000 (16:54 +0200)]
Merge pull request #1017 from Kmanfi/bigger_verilog_files

Read bigger Verilog files.

5 years agoRead bigger Verilog files.
Kaj Tuomi [Sat, 18 May 2019 11:20:30 +0000 (14:20 +0300)]
Read bigger Verilog files.

Hit parser limit with 3M gate design. This commit fix it.

5 years agoMerge pull request #1013 from antmicro/parameter_attributes
Clifford Wolf [Thu, 16 May 2019 12:21:18 +0000 (14:21 +0200)]
Merge pull request #1013 from antmicro/parameter_attributes

Support for attributes on parameters and localparams for Verilog frontend

5 years agoAdded tests for Verilog frontent for attributes on parameters and localparams
Maciej Kurc [Thu, 16 May 2019 10:53:43 +0000 (12:53 +0200)]
Added tests for Verilog frontent for attributes on parameters and localparams

Signed-off-by: Maciej Kurc <mkurc@antmicro.com>
5 years agoAdded support for parsing attributes on parameters in Verilog frontent. Content of...
Maciej Kurc [Thu, 16 May 2019 10:44:16 +0000 (12:44 +0200)]
Added support for parsing attributes on parameters in Verilog frontent. Content of those attributes is ignored.

Signed-off-by: Maciej Kurc <mkurc@antmicro.com>
5 years agoMerge pull request #1012 from YosysHQ/clifford/sigspecrw
Clifford Wolf [Wed, 15 May 2019 19:00:56 +0000 (21:00 +0200)]
Merge pull request #1012 from YosysHQ/clifford/sigspecrw

Another rounds of opt_clean improvements

5 years agoImprovements in opt_clean
Clifford Wolf [Wed, 15 May 2019 14:01:28 +0000 (16:01 +0200)]
Improvements in opt_clean

Signed-off-by: Clifford Wolf <clifford@clifford.at>
5 years agoAdd rewrite_sigspecs2, Improve remove() wires
Clifford Wolf [Wed, 15 May 2019 14:01:00 +0000 (16:01 +0200)]
Add rewrite_sigspecs2, Improve remove() wires

Signed-off-by: Clifford Wolf <clifford@clifford.at>
5 years agoDo not leak file descriptors in cover.cc
Clifford Wolf [Wed, 15 May 2019 11:51:02 +0000 (13:51 +0200)]
Do not leak file descriptors in cover.cc

Signed-off-by: Clifford Wolf <clifford@clifford.at>
5 years agoMerge pull request #1011 from hzeller/fix-constructing-string-from-int
Clifford Wolf [Wed, 15 May 2019 11:35:52 +0000 (13:35 +0200)]
Merge pull request #1011 from hzeller/fix-constructing-string-from-int

Fix two instances of integer-assignment to string.

5 years agoMerge pull request #1010 from hzeller/yacc-self-contained
Clifford Wolf [Wed, 15 May 2019 11:29:55 +0000 (13:29 +0200)]
Merge pull request #1010 from hzeller/yacc-self-contained

Make the generated *.tab.hh include all the headers needed

5 years agoMerge pull request #1008 from thasti/fix_libyosys_build
Clifford Wolf [Wed, 15 May 2019 11:28:52 +0000 (13:28 +0200)]
Merge pull request #1008 from thasti/fix_libyosys_build

Create $(LIBDIR) to fix broken build in isolated environments

5 years agoMerge pull request #1005 from smunaut/ice40_hfosc_trim
David Shah [Wed, 15 May 2019 07:20:50 +0000 (08:20 +0100)]
Merge pull request #1005 from smunaut/ice40_hfosc_trim

ice40/cells_sim.v: Add support for TRIM input to SB_HFOSC

5 years agoFix two instances of integer-assignment to string.
Henner Zeller [Wed, 15 May 2019 05:01:15 +0000 (22:01 -0700)]
Fix two instances of integer-assignment to string.

o In cover.cc, the int-result of mkstemps() was assigned to a string
  and silently interpreted as a single-character filename with a funny
  value. Fix with the intent: assign the filename.
o in libparse.cc, an int was assigned to a string, but depending on
  visible constructors, this is ambiguous. Explicitly cast this to
  a char.

5 years agoMake the generated *.tab.hh include all the headers needed to define the union.
Henner Zeller [Wed, 15 May 2019 04:07:26 +0000 (21:07 -0700)]
Make the generated *.tab.hh include all the headers needed to define the union.

5 years agoextract python prefix to allow overriding
Stefan Biereigel [Tue, 14 May 2019 13:28:03 +0000 (15:28 +0200)]
extract python prefix to allow overriding

5 years agoremove ldconfig call
Stefan Biereigel [Tue, 14 May 2019 12:49:40 +0000 (14:49 +0200)]
remove ldconfig call

5 years agoadd mkdir for libyosys target, explicitly copy to target folder
Stefan Biereigel [Tue, 14 May 2019 12:36:31 +0000 (14:36 +0200)]
add mkdir for libyosys target, explicitly copy to target folder

5 years agobugpoint: check for -script option.
whitequark [Mon, 13 May 2019 16:55:15 +0000 (16:55 +0000)]
bugpoint: check for -script option.

Fixes #925.

5 years agoice40/cells_sim.v: Add support for TRIM input to SB_HFOSC
Sylvain Munaut [Mon, 13 May 2019 10:51:06 +0000 (12:51 +0200)]
ice40/cells_sim.v: Add support for TRIM input to SB_HFOSC

Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
5 years agoMerge pull request #1004 from YosysHQ/clifford/fix1002
Clifford Wolf [Sun, 12 May 2019 13:33:53 +0000 (15:33 +0200)]
Merge pull request #1004 from YosysHQ/clifford/fix1002

Fix handling of glob_abort_cnt in opt_muxtree

5 years agoFix handling of glob_abort_cnt in opt_muxtree, fixes #1002
Clifford Wolf [Sun, 12 May 2019 11:51:12 +0000 (13:51 +0200)]
Fix handling of glob_abort_cnt in opt_muxtree, fixes #1002

Signed-off-by: Clifford Wolf <clifford@clifford.at>
5 years agoMerge pull request #1003 from makaimann/zinit-all
Clifford Wolf [Sat, 11 May 2019 11:56:51 +0000 (13:56 +0200)]
Merge pull request #1003 from makaimann/zinit-all

Zinit option '-singleton' -> '-all'

5 years agoAdd "fmcombine -initeq -anyeq"
Clifford Wolf [Sat, 11 May 2019 07:28:55 +0000 (09:28 +0200)]
Add "fmcombine -initeq -anyeq"

Signed-off-by: Clifford Wolf <clifford@clifford.at>
5 years agoAdd "stat -tech xilinx"
Clifford Wolf [Sat, 11 May 2019 07:24:52 +0000 (09:24 +0200)]
Add "stat -tech xilinx"

Signed-off-by: Clifford Wolf <clifford@clifford.at>
5 years agoZinit option '-singleton' -> '-all'
Makai Mann [Fri, 10 May 2019 17:23:14 +0000 (10:23 -0700)]
Zinit option '-singleton' -> '-all'

5 years agoMerge pull request #1000 from bwidawsk/synth-format
Clifford Wolf [Thu, 9 May 2019 16:41:38 +0000 (18:41 +0200)]
Merge pull request #1000 from bwidawsk/synth-format

Add clang format, and use on intel_synth (v2)

5 years agoFix formatting for synth_intel.cc
Ben Widawsky [Sat, 4 May 2019 17:36:06 +0000 (10:36 -0700)]
Fix formatting for synth_intel.cc

This is realized through the recently added .clang-format file.

Signed-off-by: Ben Widawsky <ben@bwidawsk.net>
5 years agoAdd a .clang-format
Ben Widawsky [Sat, 4 May 2019 05:07:05 +0000 (22:07 -0700)]
Add a .clang-format

Signed-off-by: Ben Widawsky <ben@bwidawsk.net>
5 years agoAdd $stop to documentation
Clifford Wolf [Thu, 9 May 2019 13:31:40 +0000 (15:31 +0200)]
Add $stop to documentation

Signed-off-by: Clifford Wolf <clifford@clifford.at>
5 years agoRemove added newline (by re-running minisat 00_UPDATE.sh)
Clifford Wolf [Wed, 8 May 2019 09:26:58 +0000 (11:26 +0200)]
Remove added newline (by re-running minisat 00_UPDATE.sh)

Signed-off-by: Clifford Wolf <clifford@clifford.at>
5 years agoMerge pull request #991 from kristofferkoch/gcc9-warnings
Clifford Wolf [Wed, 8 May 2019 09:25:22 +0000 (11:25 +0200)]
Merge pull request #991 from kristofferkoch/gcc9-warnings

Fix all warnings that occurred when compiling with gcc9

5 years agoFix all warnings that occurred when compiling with gcc9
Kristoffer Ellersgaard Koch [Sun, 5 May 2019 08:00:27 +0000 (10:00 +0200)]
Fix all warnings that occurred when compiling with gcc9

5 years agoMerge pull request #998 from mdaiter/get_bool_attribute_opts
Clifford Wolf [Wed, 8 May 2019 06:34:35 +0000 (08:34 +0200)]
Merge pull request #998 from mdaiter/get_bool_attribute_opts

Minor optimization to get_attribute_bool

5 years agoMinor optimization to get_attribute_bool
Matthew Daiter [Wed, 8 May 2019 03:04:28 +0000 (22:04 -0500)]
Minor optimization to get_attribute_bool

5 years agoAdd test case from #997
Clifford Wolf [Tue, 7 May 2019 17:58:04 +0000 (19:58 +0200)]
Add test case from #997

Signed-off-by: Clifford Wolf <clifford@clifford.at>
5 years agoFix handling of partial init attributes in write_verilog, fixes #997
Clifford Wolf [Tue, 7 May 2019 17:55:36 +0000 (19:55 +0200)]
Fix handling of partial init attributes in write_verilog, fixes #997

Signed-off-by: Clifford Wolf <clifford@clifford.at>
5 years agoMerge pull request #996 from mdaiter/ceil_log2_opts
Clifford Wolf [Tue, 7 May 2019 17:46:27 +0000 (19:46 +0200)]
Merge pull request #996 from mdaiter/ceil_log2_opts

Optimize ceil_log2 function

5 years agoOptimize ceil_log2 function
Matthew Daiter [Mon, 6 May 2019 23:33:56 +0000 (18:33 -0500)]
Optimize ceil_log2 function

5 years agoAdd "synth_xilinx -arch"
Clifford Wolf [Tue, 7 May 2019 13:04:36 +0000 (15:04 +0200)]
Add "synth_xilinx -arch"

Signed-off-by: Clifford Wolf <clifford@clifford.at>
5 years agoMore opt_clean cleanups
Clifford Wolf [Tue, 7 May 2019 12:41:58 +0000 (14:41 +0200)]
More opt_clean cleanups

Signed-off-by: Clifford Wolf <clifford@clifford.at>
5 years agoMerge pull request #946 from YosysHQ/clifford/specify
Clifford Wolf [Mon, 6 May 2019 18:57:15 +0000 (20:57 +0200)]
Merge pull request #946 from YosysHQ/clifford/specify

Add specify parser

5 years agoMerge pull request #975 from YosysHQ/clifford/fix968
Clifford Wolf [Mon, 6 May 2019 18:53:38 +0000 (20:53 +0200)]
Merge pull request #975 from YosysHQ/clifford/fix968

Re-enable "final loop assignment" feature and fix opt_clean warnings

5 years agoMerge pull request #871 from YosysHQ/verific_import
Clifford Wolf [Mon, 6 May 2019 18:51:59 +0000 (20:51 +0200)]
Merge pull request #871 from YosysHQ/verific_import

Improve verific -chparam and add hierarchy -chparam

5 years agoAdd tests/various/chparam.sh
Clifford Wolf [Mon, 6 May 2019 14:03:15 +0000 (16:03 +0200)]
Add tests/various/chparam.sh

Signed-off-by: Clifford Wolf <clifford@clifford.at>
5 years agoMerge branch 'master' of github.com:YosysHQ/yosys into clifford/fix968
Clifford Wolf [Mon, 6 May 2019 13:41:13 +0000 (15:41 +0200)]
Merge branch 'master' of github.com:YosysHQ/yosys into clifford/fix968

5 years agoFix the other bison warning in ilang_parser.y
Clifford Wolf [Mon, 6 May 2019 13:38:43 +0000 (15:38 +0200)]
Fix the other bison warning in ilang_parser.y

Signed-off-by: Clifford Wolf <clifford@clifford.at>
5 years agoBugfix in peepopt_shiftmul.pmg
Clifford Wolf [Mon, 6 May 2019 13:34:19 +0000 (15:34 +0200)]
Bugfix in peepopt_shiftmul.pmg

Signed-off-by: Clifford Wolf <clifford@clifford.at>
5 years agoMerge pull request #992 from bwidawsk/bison-fix
Clifford Wolf [Mon, 6 May 2019 12:00:49 +0000 (14:00 +0200)]
Merge pull request #992 from bwidawsk/bison-fix

verilog_parser: Fix Bison warning

5 years agoMerge pull request #989 from YosysHQ/dave/abc_name_improve
Clifford Wolf [Mon, 6 May 2019 11:57:35 +0000 (13:57 +0200)]
Merge pull request #989 from YosysHQ/dave/abc_name_improve

ABC name recovery fixes

5 years agoFix bug in "expose -input"
Clifford Wolf [Mon, 6 May 2019 11:30:43 +0000 (13:30 +0200)]
Fix bug in "expose -input"

Signed-off-by: Clifford Wolf <clifford@clifford.at>
5 years agoCleanups in opt_clean
Clifford Wolf [Mon, 6 May 2019 10:45:22 +0000 (12:45 +0200)]
Cleanups in opt_clean

Signed-off-by: Clifford Wolf <clifford@clifford.at>
5 years agoImprove tests/various/specify.ys
Clifford Wolf [Mon, 6 May 2019 10:26:15 +0000 (12:26 +0200)]
Improve tests/various/specify.ys

Signed-off-by: Clifford Wolf <clifford@clifford.at>
5 years agoAdd "real" keyword to ilang format
Clifford Wolf [Mon, 6 May 2019 10:00:40 +0000 (12:00 +0200)]
Add "real" keyword to ilang format

Signed-off-by: Clifford Wolf <clifford@clifford.at>
5 years agoMerge branch 'master' of github.com:YosysHQ/yosys into clifford/specify
Clifford Wolf [Mon, 6 May 2019 09:46:10 +0000 (11:46 +0200)]
Merge branch 'master' of github.com:YosysHQ/yosys into clifford/specify

5 years agoverilog_parser: Fix Bison warning
Ben Widawsky [Mon, 6 May 2019 02:29:11 +0000 (19:29 -0700)]
verilog_parser: Fix Bison warning

As of Bison 2.6, name-prefix is deprecated. This fixes
frontends/verilog/verilog_parser.y:99.1-34: warning: deprecated directive, use ‘%define api.prefix {frontend_verilog_yy}’ [-Wdeprecated]
 %name-prefix "frontend_verilog_yy"

For details: https://www.gnu.org/software/bison/manual/html_node/Multiple-Parsers.html

Compile tested only.

Signed-off-by: Ben Widawsky <ben@bwidawsk.net>
5 years agoMerge pull request #988 from YosysHQ/clifford/fix987
Clifford Wolf [Sat, 4 May 2019 19:58:25 +0000 (21:58 +0200)]
Merge pull request #988 from YosysHQ/clifford/fix987

Add approximate support for SV "var" keyword

5 years agoabc: Fix handling of postfixed names (e.g. for retiming)
David Shah [Sat, 4 May 2019 16:17:30 +0000 (17:17 +0100)]
abc: Fix handling of postfixed names (e.g. for retiming)

Signed-off-by: David Shah <dave@ds0.me>