diff options
Diffstat (limited to 'machxo2/examples/write_fasm.py')
-rw-r--r-- | machxo2/examples/write_fasm.py | 51 |
1 files changed, 0 insertions, 51 deletions
diff --git a/machxo2/examples/write_fasm.py b/machxo2/examples/write_fasm.py deleted file mode 100644 index ede8f16b..00000000 --- a/machxo2/examples/write_fasm.py +++ /dev/null @@ -1,51 +0,0 @@ -from collections import namedtuple - -""" - write: set to True to enable writing this parameter to FASM - - numeric: set to True to write this parameter as a bit array (width>1) or - single bit (width==1) named after the parameter. Otherwise this - parameter will be written as `name.value` - - width: width of numeric parameter (ignored for non-numeric parameters) - - alias: an alternative name for this parameter (parameter name used if alias - is None) -""" -ParameterConfig = namedtuple('ParameterConfig', 'write numeric width alias') - -# FIXME use defaults= once Python 3.7 is standard -ParameterConfig.__new__.__defaults__ = (False, True, 1, None) - - -""" -Write a design as FASM - - ctx: nextpnr context - paramCfg: map from (celltype, parametername) -> ParameterConfig describing how to write parameters - f: output file -""" -def write_fasm(ctx, paramCfg, f): - for nname, net in sorted(ctx.nets, key=lambda x: str(x[1].name)): - print("# Net %s" % nname, file=f) - for wire, pip in sorted(net.wires, key=lambda x: str(x[1])): - if pip.pip != "": - print("%s" % pip.pip, file=f) - print("", file=f) - for cname, cell in sorted(ctx.cells, key=lambda x: str(x[1].name)): - print("# Cell %s at %s" % (cname, cell.bel), file=f) - for param, val in sorted(cell.params, key=lambda x: str(x)): - cfg = paramCfg[(cell.type, param)] - if not cfg.write: - continue - fasm_name = cfg.alias if cfg.alias is not None else param - if cfg.numeric: - if cfg.width == 1: - if int(val) != 0: - print("%s.%s" % (cell.bel, fasm_name), file=f) - else: - # Parameters with width >32 are direct binary, otherwise denary - print("%s.%s[%d:0] = %d'b%s" % (cell.bel, fasm_name, cfg.width-1, cfg.width, val), file=f) - else: - print("%s.%s.%s" % (cell.bel, fasm_name, val), file=f) - print("", file=f)
\ No newline at end of file |